깊이우선탐색 예제

이제 GPS 네비게이션이 경로 A, E, I, M, N, O, P 또는 A, B, C, D, H, L, P를 제안하지 않은 이유를 이해합니다. 깊이 우선 검색은 위상 분류, 스케줄링 문제, 그래프의 사이클 감지, 미로 또는 스도쿠 퍼즐과 같은 하나의 솔루션으로 퍼즐을 해결하는 데 사용됩니다. 그러나 GPS 네비게이션 또는 다른 디지털지도는 몇 가지 24 미터 길이와 세그먼트의 수백으로 분할합니다. GPS는 이 거리를 정점과 가장자리로 나눈 그래프로 봅니다. 깊이 우선 검색은 모든 정점을 한 번 방문하고 그래프의 모든 가장자리를 한 번 검사합니다. 따라서 DFS 복잡성은 O(V+E)O(V + E)O(V+E)입니다. 그래프가 인접 목록으로 표시된다고 가정합니다. 깊이 우선 검색(DFS)은 트리 또는 그래프 데이터 구조를 트래버스 또는 검색하기 위한 알고리즘입니다. 알고리즘은 루트 노드에서 시작하여(그래프의 경우 임의의 노드를 루트 노드로 선택) 역추적하기 전에 각 분기를 따라 가능한 한 멀리 탐색합니다.

깊이 우선 검색은 다른 복잡한 알고리즘의 서브루틴으로 자주 사용됩니다. 예를 들어 일치하는 알고리즘인 Hopcroft-Karp는 DFS를 알고리즘의 일부로 사용하여 그래프에서 일치하는 것을 찾는 데 도움을 줍니다. DFS는 트리-세일즈맨 문제 및 Ford-Fulkerson 알고리즘에 응용 프로그램이 있는 트리 탐색 알고리즘에도 사용됩니다. 다음은 DFS를 재귀적으로 또는 비재귀로 구현하는 의사 코드 및 파이썬 코드의 예입니다. 이 알고리즘은 일반적으로 스택을 사용하여 방문한 노드를 추적합니다. 다른 응용 프로그램에는 네트워크 분석(예: 그래프가 이원적인지 테스트)이 포함됩니다. 깊이 우선 검색은 포드-풀커슨 알고리즘과 같은 네트워크 흐름 알고리즘의 서브루틴으로 자주 사용됩니다. 내가 일반적으로 취하는 경로와 GPS가 가장 짧은 것으로 보이는 경로에는 아마도 사용되는 알고리즘으로 인해 차이가 있습니다. 나는 내 그래프 이론 데이터 구조 클래스에서 배운 (BFS) 폭 첫 번째 검색 예는 GPS 네비게이션 및 디지털지도입니다. 웹에서 GPS 네비게이션에 사용되는 알고리즘 (너비 우선 검색 예제 또는 A * 응용 프로그램)의 가능한 사용을 찾으려고했지만 많은 세부 사항을 찾을 수 없었습니다. 그래서 여기에 폭 첫 번째 검색GPS와 같은 실제 응용 프로그램에서 사용되는 방법입니다.

깊이 우선 검색의 주요 전략은 가능하면 그래프를 더 깊이 탐구하는 것입니다. 깊이 우선 검색은 가장 최근에 발견된 정점, sss에서 나온 가장자리를 탐색합니다. 탐색되지 않은 정점으로 가는 가장자리만 탐색됩니다. Sss의 가장자리를 모두 탐색하면 검색이 탐험되지 않은 이웃에 도달할 때까지 역추적됩니다. 이 프로세스는 원래 소스 정점에서 연결할 수 있는 모든 정점이 검색될 때까지 계속됩니다. 방문하지 않은 정점이 있는 경우 깊이 우선 검색은 그 중 하나를 새 소스로 선택하고 해당 정점에서 검색을 반복합니다. 알고리즘은 모든 정점을 발견할 때까지 이 전체 프로세스를 반복합니다. 이 알고리즘은 정점을 반복하지 않도록 주의하므로 각 정점을 한 번 탐색합니다. DFS는 스택 데이터 구조를 사용하여 정점을 추적합니다. 깊이 우선 검색은 많은 사람들이 자연스럽게 미로와 같은 문제를 해결하는 일반적인 방법입니다. 첫째, 우리는 미로에서 경로를 선택 (예를 들어, 우리가 미리 배치 몇 가지 규칙에 따라 경로를 선택하자) 우리는 막다른 길에 도달하거나 미로의 마무리 지점에 도달 할 때까지 우리는 그것을 따릅니다.

지정된 경로가 작동하지 않으면 과거 교차로에서 뒤로 추적하고 다른 경로를 취하고 해당 경로를 시도합니다. 다음은이 미로를 해결하기위한 DFS 접근 방식의 애니메이션입니다. 여기에서 GPS 네비게이션에서 너비 첫 번째 검색의 사용을 설명하는 비디오를 시청하십시오 – 깊이 우선 검색은 경로 매핑, 일정 설정 및 스패닝 트리 찾기에 사용됩니다.

This entry was posted in Uncategorized. Bookmark the permalink.