dfs c 예제

예를 들어 다음 그래프에서는 정점 2에서 통과를 시작합니다. 정점 0에 도달하면 인접한 모든 정점을 찾습니다. 도 2는 인접한 정점 0입니다. 방문한 정점을 표시하지 않으면 2가 다시 처리되고 종료되지 않는 프로세스가 됩니다. 다음 그래프의 깊이 첫 번째 순회는 2, 0, 1, 3입니다. 다이어그램에 제공된 예제를 고려하십시오. 그래프 G는 연결이 끊긴 그래프이며 다음과 같은 3개의 연결된 구성 요소가 있습니다. 위의 코드는 지정된 소스 정점에서 연결할 수 있는 정점만 트래버스합니다. 지정된 정점(예: 연결이 끊긴 그래프)에서 모든 정점에 연결할 수 없습니다.

이러한 그래프의 완전한 DFS 통과를 수행하려면 모든 정점마다 DFSUtil()을 호출해야 합니다. 또한 DFSUtil()을 호출하기 전에 DFSUtil()의 다른 호출에 의해 이미 인쇄되었는지 확인해야 합니다. 다음 구현은 노드에 연결할 수 없는 경우에도 전체 그래프 통과를 수행합니다. 위의 코드의 차이점은 아래 코드에서 강조 표시됩니다. 깊이 첫 번째 검색이 실제로 수행하는 작업을 검토하는 것이 좋습니다. 깊이 첫 번째 검색 우수 최소 줄 코드에 대 한 출력이 정확 합니다. 몇 년 후 나는 몇 가지 C 코드를 사용했다. 나는 9 노드가 81 요소를 입력하고 마침내 모두 사라얻을 그것을 시도했다.

나는이 두 번 시도하고 getch () 남아있는 것을 깨달았다. 이 라인을 삽입 한 후 출력을 볼 수 있었습니다. 그런 다음 내 사용을 위해 VB.net 변환했습니다. 나는 그것이 나를 위해 매우 큰 도움이 될 것이라고 확신합니다. 정말 고마워요. 정수 대신 문자 입력 데이터가 있는 경우 어떻게 해야 합니까? 여기에서 정수로 가져갔기 때문에 방문 [i]=1을 통해 이 작업을 수행할 수 있습니다. 문자는 무엇입니까?? DFS(int i) { int j; printf(“n%d”,i); 방문[i]=1; DFS가 하는 일을 이해하시겠습니까? 시작 및 정점 0, 그리고 정점 1에 가장자리에 여행 합니다. vertex 1에서 가장 왼쪽 모서리부터 정점 N인 분기의 마지막 정점까지 따릅니다. Vertex N에서 이어지는 모든 가장자리가 발견되지 않은 정점으로 이어집니다. 분기의 정점 N-1인 이전 정점으로 돌아갑니다. 그리고 정점 0으로 돌아갈 때까지 이 메서드를 계속하면 Vertex 0의 모든 가장자리가 검색된 것으로 표시될 때 완료됩니다. 아니, 우리가 `0`이 아닌 다른 시작 인덱스를 제공하면 우리는 i = 0에서 시작해야합니다.

위에 표시된 그래프가 아래에 언급 된 두 프로그램의 입력으로 촬영 될 때마다 : 텍스트 또는 그림에서 코드에 값을 입력하는 방법을 보여 줄 수 있습니까? 코드가 반복적으로 스캔됩니다. 1.모든 정점을 방문하지 않은 정점을 표시합니다. 2. 모든 버틱에서 그래프에 대한 DFS를 적용합니다. 3.어떤 버틱이 방문하지 않은 경우 다음 거짓 4.reverse 그래프를 반환하고 어떤 정점이 방문하지 않은 경우 2 6.6.if 같은 정점에서 반전 그래프에 대한 5.apply DFS를 방문하지 로 모든 정점을 표시 한 다음 거짓 7.return true DFS의 재귀 특성을 반환 할 수 있습니다 스택을 사용하여 구현할 수 있습니다.

Shares

Posted on 2nd August 2019 in Uncategorised

Share the Story

About the Author

Back to Top
Shares