자바 bfs 예제

    다음은 Java 프로그램의 소스 코드로, 그래프에서 무단으로 첫 번째 검색/순회를 수행합니다. 이 프로그램은 성공적으로 컴파일 및 윈도우 7에서 IDE IntelliJ 아이디어를 사용하여 테스트됩니다. 프로그램 출력도 아래와 같습니다. 이것은 비 재귀그래프에 폭 첫 번째 검색 / 순회를 수행하는 자바 프로그램입니다. 우리는 자바에서와 같은 구조의이 종류를 나타낼 수 있습니다 : 위의 코드는 주어진 소스 정점에서 도달 할 수있는 정점만 트래버스. 지정된 정점(예: 연결이 끊긴 그래프)에서 모든 정점에 연결할 수 없습니다. 모든 정점을 인쇄하려면 BFS 함수를 수정하여 모든 노드에서 하나씩 씩씩하게 시작하여 (DFS 수정 버전과 유사) 할 수 있습니다. 그래프의 너비 첫 번째 순회(또는 검색)는 트리의 너비 첫 번째 순회와 유사합니다(이 게시물의 방법 2 참조). 여기서 유일한 캐치는 나무와 달리 그래프에 주기가 포함될 수 있으므로 동일한 노드에 다시 올 수 있습니다. 노드를 두 번 이상 처리하지 않으려면 부울 방문 배열을 사용합니다. 간단히 하기 위해 모든 정점이 시작 정점에서 연결할 수 있다고 가정합니다.

    예를 들어 다음 그래프에서는 정점 2에서 통과를 시작합니다. 정점 0에 도달하면 인접한 모든 정점을 찾습니다. 도 2는 인접한 정점 0입니다. 방문한 정점을 표시하지 않으면 2가 다시 처리되고 종료되지 않는 프로세스가 됩니다. 다음 그래프의 너비 첫 번째 순회는 2, 0, 3, 1입니다. 예를 들어 웨스트민스터 역을 예로 들어 보겠습니다. 이 스테이션은 자식 노드 목록에서 STATION 1, STATION 2 및 STATION 3을 포함하는 노드로 나타낼 수 있습니다. 이것은 자바에서 폭 첫 번째 검색의 예입니다 우리가 당신에 적응하는 데 도움이 될 수 있습니다 당신이 예를 들어 이해할 수 있습니다 : 그래프를 말할 수 있습니다 : 이, 당신은 목록 아래와 같이 노드 클래스의 이웃으로 가질 수 있습니다. BFS는 루트 노드가 먼저 확장된 다음 루트 노드의 모든 후속 항목이 다음에 확장된 다음 최상의 경로가 발견될 때까지 후속 노드가 확장되는 간단한 전략입니다. 그래프 순회 전략에는 문제 정의에 제공된 상태 이외의 상태에 대한 추가 정보가 없기 때문에 너비 우선 검색은 정보를 얻지 못하거나 블라인드 검색으로 분류됩니다. 그래프를 통과하는 방법에는 여러 가지가 있습니다. BFS는 가장 일반적으로 사용되는 접근 방식입니다.

    3은 큐에서 팝업되고 동일한 프로세스가 이웃에 적용됩니다. . 너비 우선 검색(BFS)은 트리 또는 그래프를 탐색하는 방법입니다. BFS에서는 먼저 모든 노드를 한 단계 떨어진 다음 모든 노드를 두 단계 떨어진 곳에 탐색합니다. 순회 중에 방문한 정점을 추적하는 것이 중요합니다. 정점을 추적하는 가장 일반적인 방법은 정점을 표시하는 것입니다. 그래프에는 주기를 포함할 수 있으며, 그래프를 통과하는 동안 다시 동일한 노드로 이동하게 될 수 있습니다. 동일한 노드가 다시 처리되지 않도록 하려면 처리 후 노드를 표시하는 부울 배열을 사용합니다. 그래프 레이어의 노드를 방문하는 동안 해당 하위 노드를 비슷한 순서로 탐색할 수 있도록 노드를 저장합니다. BFS에서 알다시피, 당신은 현명한 레벨을 통과.

    BFS를 사용하여 각 노드의 수준을 결정할 수도 있습니다. 이 아이디어는 큐에 소스 정점을 저장하는 것입니다. 이제 큐가 비어 질 때까지 반복합니다.