자료구조, 알고리즘

자료구조, 알고리즘

[자료구조] 큐(Queue) - 자바스크립트로 구현하기

설명 연결 리스트는 삽입과 삭제의 시간 복잡도가 O(1)이다. 따라서 큐를 배열이 아닌 연결리스트로 구현하면 성능상 이점이 있다. 단일 연결 리스트로 구현해서 삽입은 맨 뒤에, 삭제는 맨 앞에서 진행한다. (삭제를 뒤에서 하면 시간이 오래 걸리기 때문이다.) 코드 class Node { constructor(value){ this.value = value; this.next = null; } } class Queue { constructor(){ this.first = null; this.last = null; this.size = 0; } enqueue(val){ var newNode = new Node(val); if(!this.first){ this.first = newNode; this.last ..

자료구조, 알고리즘

왜 음의 간선이 있을 때 다익스트라 알고리즘을 사용하지 못하는가

서론 다익스트라 알고리즘에서 음의 간선이 안되는 이유가 궁금해졌다. 안된다고 하는것은 당연히 똑똑한 사람들이 이미 증명한 결과라 안되는것은 맞지만 보다 보면 왠지 될것같기도 하다. 음의 간선일 때 다익스트라 알고리즘을 사용할 수 있는 경우를 들어봐도 글이라서 쉽게 와닿지 않았다. 역시 백문이 불여일견인 것 같다. 1. 음의 간선이 안되는 경우 다음과 같은 경우에 다익스트라 알고리즘은 A->B->D 총 비용 22가 가장 최소 경로라고 생각 할 것이다. 하지만 A->B->C->D가 총-90 으로 값이 더 작다. 그러면 모든 간선에 200을 더해줘서 음수를 없애면 되지 않을까? 2. 어떤 값을 더해서 다 양수로 만들어도 안되는 경우 안된다. 위의 그림에서 모든 간선에 200을 더해서 음수를 없앴지만 A->B-..

리즈(Liz)
'자료구조, 알고리즘' 카테고리의 글 목록