Dijkstra Algorithm A*WARNING!Beware!Search algorithms have the ability to create in the average humanbrain terrible amounts of frustration and confusion, leading to headaches,nausea, and sleep deprivation. Spontaneous and excessive howling is not uncommon. Please be aware these symptoms are commonplace in the earlystages of the learning curve and are not generally cause for concern. Normal service is usually resumed within a reasonable length of time. (If symptoms persist, however, stay clear of busy roads, razor blades, andloaded weapons. Seek medical advice at the earliest opportunity.)경고! 탐색 알고리즘은 수많은 좌절과 혼동으로, 두통, 메스꺼움, 수면 결핍을 통하여 보통 사람의 두뇌로 생성될 수 있다. 자발적이고 과도한 울부짖음은 보통이다.이러한 증상은 배우는 초기 단계에서 동반되는 것으로 일반적으로 관심을 끌지 못함에 유의한다.보통의 서비스는 대개 합리적인 시간 내에 재개된다. ( 그러나 증상이 계속 된다면, 복잡한 도로, 레이저날, 장착된 무기를 제거하고, 기회가 있을 때 빨리 의사를 찾아간다)
Dijkstra Algorithm A*BreadthFirst Search너비 우선 탐색시작노드에서 인접한 각 노드들를 검사하고목표노드를 찾을때까지 시작 노드에서 - 하나의 에지만큼 떨어진 노드 - 두개의 에지만큼 떨어진 노드 - 세개의 에지만큼 떨어진 노드 등을 탐색한다.즉 이렇게 찾은 경로는 가장 적은 에지를 포함하도록 보장된다.너비 탐색 AlgorithmQueue FIFO
Edge relaxation에지 완화시작노드에서 목표까지의 경로에 있는 다른 노드들까지“지금까지 발견된 가장 좋은 경로 에 대한 정보” 를 수집한다.이 정보는 새로운 에지가 검사되면 갱신된다.경로가 기존의 최상 경로 대신 새롭게 검사되는 에지를 사용함으로써 더 짧아진다고 추론되면, 그 에지가 추가되고 경로가 갱신된다.노드4 의 시작을 3에서 5로 변경하면경로도 변경된다.
85.
Edge relaxationif (TotalCostToThisNode[t]> TotalCostToThisNode[n] + EdgeCost(n-to-t)){TotalCostToThisNode[t] = TotalCostToThisNode[n] + EdgeCost(n-to-t)); Parent(t) = n;}신축적으로 확장되는 일련의 고무줄이덜 팽팽해지는 방법과 유사
Dijkstra Algorithm A*Dikjstra’sAlgorithm“컴퓨터가 생각할수있는가에 대한 질문은 잠수함이 헤엄칠수 있는가의 질문과 같다”가중그래프에서 최단 경로를 찾는 알고리즘 - Shortest Path Tree 에 시작 노드를 추가 - 시작노드에서 아직 SPT 에 존재하지 않는 노드에 대해서그 둘사이의 최단경로를 가지는 에지를 추가 - 한번에 하나의 에지를 추가하여 최단경로트리를 구축SPTAlgorithmPriorityQueue
94.
Dikjstra’s Algorithm노드 5에서 3 으로 가는 경로 찾기1. 노드 5 를 SPT 에 추가2. 노드 5 에서 나가는 에지 5-2,5-6 을SearchFrontier에 추가3. 노드5 -> 노드2 가기위한 비용 1.9 와 노드5 -> 노드6 가기위한 비용 3.0 을 비교하고더 비용이 낮은 노드 2가 결정
95.
Dikjstra’s Algorithm노드 5에서 3 으로 가는 경로 찾기4. 결정된 노드 2 가 SPT 에 추가되고 노드 2 에서 나가는 에지 2-3도 SearchFrontier에 추가5. 노드5 -> 노드3 가기위한 비용 1.9 + 3.1 = 5.0 과 노드5 -> 노드6 가기위한 비용 3.0 비교한뒤 더 짧은 노드6 이 결정
96.
Dikjstra’s Algorithm노드 5에서 3 으로 가는 경로 찾기6. 결정된 노드 6 이 SPT 에 추가되고 노드 6 에서 나가는 에지 6-4도 SearchFrontier에 추가7. 노드5 -> 노드3 가기위한 비용 1.9 + 3.1 = 5.0 과 노드5 -> 노드4 가기위한 비용 3.0 + 1.1 = 4.1 을 비교한뒤 더 짧은 노드4 이 결정
97.
Dikjstra’s Algorithm노드 5에서 3 으로 가는 경로 찾기Edge relaxation에지 완화8. 결정된 노드 4 가 SPT 에 추가되고 노드 4 에서 나가는 에지 4-3도 SearchFrontier에 추가되면 좋겠지만 추가 안됨이유는 노드 3까지 가능한 경로를 둘다 검사하여 짧은노드만을선택하기 때문. 2-3 은 SF 에 있지만 4-3 은 SF 에 들어가지 않음9. 노드5 -> 노드3 가기위한 비용 1.9 + 3.1 = 5.0 과 노드5 -> 노드3 가기위한 비용 3.0 + 1.1 + 3.7= 7.8 을 비교한뒤 더 짧은 노드 3 이 결정 (5-2-3 의 노드3)
98.
Dikjstra’s Algorithm노드 5에서 3 으로 가는 경로 찾기10. 결정된 노드 3 이 Target 노드이므로 종료최단경로 : 5 – 2 -3비용 : 1.9 + 3.1 = 5.0 - 노드 1 은 노드1로 도달할수있는 에지가 없으므로 고려대상이 안된다
Dijkstra Algorithm A*Dikjstra’sAlgorithm : A*Heuristic각 노드에서 목표까지의 비용을 추정추정한 값을 토대로 경로를 계산하는 알고리즘A* AlgorithmEuclidean 거리ㅡ맨하탄 거리ㅡ맨하탄 거리 >ㅡ Euclideanㅡ맨하탄 거리