java dfs 예제

(Last Updated On: August 1, 2019)

위의 코드는 지정된 소스 정점에서 연결할 수 있는 정점만 트래버스합니다. 지정된 정점(예: 연결이 끊긴 그래프)에서 모든 정점에 연결할 수 없습니다. 이러한 그래프의 완전한 DFS 통과를 수행하려면 모든 정점마다 DFSUtil()을 호출해야 합니다. 또한 DFSUtil()을 호출하기 전에 DFSUtil()의 다른 호출에 의해 이미 인쇄되었는지 확인해야 합니다. 다음 구현은 노드에 연결할 수 없는 경우에도 전체 그래프 통과를 수행합니다. 위의 코드의 차이점은 아래 코드에서 강조 표시됩니다. 다음은 Java 프로그램의 소스 코드로, 그래프에서 깊이 첫 번째 검색/순회를 반복하지 않습니다. 이 프로그램은 성공적으로 컴파일 및 윈도우 7에서 IDE IntelliJ 아이디어를 사용하여 테스트됩니다. 프로그램 출력도 아래와 같습니다. 이것은 비 재귀 그래프에 깊이 첫 번째 검색 / 순회를 수행하는 자바 프로그램입니다. 예를 들어, 아래 그래프의 DFS는 “0 3 4 2 1”, 다른 가능한 DFS는 “0 2 1 3 4″입니다.

DFS는 비최적의 솔루션을 생성하지만 더 깊은 검색 도메인으로 빠르게 통과하는 데 유용할 수 있는 또 다른 알지 못하는 그래프 순회 알고리즘입니다. 깊이 첫 번째 검색은 우리가이 튜토리얼에서 다루었던 이전에 적용 된 폭 첫 번째 검색과 매우 유사합니다 : 예를 들어, 다음 그래프에서 Java의 첫 번째 검색은 정점 2에서 통과를 시작합니다. 정점 0에 도달하면 인접한 모든 정점을 찾습니다. 도 2는 인접한 정점 0입니다. 방문한 정점을 표시하지 않으면 2가 다시 처리되고 종료되지 않는 프로세스가 됩니다. 다음 그래프의 깊이 첫 번째 순회는 2, 0, 1, 3입니다. 위의 구현은 지정된 정점에서 연결할 수 있는 정점만 인쇄합니다. 예를 들어 가장자리를 0-3 및 0-2로 제거하면 위의 프로그램은 0만 인쇄합니다. 그래프의 모든 정점을 인쇄하려면 모든 정점마다 DFS를 호출해야 합니다. 다음은 동일한 구현입니다. 깊이 우선 통과 – 깊이 우선 검색(DFS)은 트리 또는 그래프 데이터 구조를 트래버스 또는 검색하기 위한 알고리즘입니다.

하나는 루트에서 시작하여(그래프의 경우 임의의 노드를 루트로 선택) 역추적하기 전에 각 분기를 따라 가능한 한 멀리 탐색합니다. 출처 – 그래프에 대한 위키 깊이 첫 번째 순회(또는 검색)는 트리의 깊이 첫 번째 순회와 유사합니다. 여기서 유일한 캐치는 나무와 달리 그래프에 주기가 포함될 수 있으므로 동일한 노드에 다시 올 수 있습니다.

Rick

After many years of being a full time freelance writer, and a long time resident of this state, I've decided to turn my full attention toward California by exploring all that it has to offer. My goal is to inspire you to get out there and explore this amazing state. Please follow my adventures and news content by visiting Calexplornia daily or clicking on one of my Social Media accounts below.