java bfs 예제

우리는 자바에서 이렇게 같은 구조의이 종류를 나타낼 수 있습니다 : 예를 들어 이해하자 : 당신이 몇 가지 코드를 제공하면 이것은 자바에서 폭 첫 번째 검색의 예입니다 우리는 그래프에 대한 당신의 폭 첫 번째 통과 (또는 검색)에 적응하는 데 도움이 될 수 있습니다 s입니다 나무의 첫 번째 횡단에 imilar (이 게시물의 방법 2 참조). 여기서 유일한 캐치는 나무와 달리 그래프에 주기가 포함될 수 있으므로 동일한 노드에 다시 올 수 있습니다. 노드를 두 번 이상 처리하지 않으려면 부울 방문 배열을 사용합니다. 간단히 하기 위해 모든 정점이 시작 정점에서 연결할 수 있다고 가정합니다. 예를 들어 다음 그래프에서는 정점 2에서 통과를 시작합니다. 정점 0에 도달하면 인접한 모든 정점을 찾습니다. 도 2는 인접한 정점 0입니다. 방문한 정점을 표시하지 않으면 2가 다시 처리되고 종료되지 않는 프로세스가 됩니다. 다음 그래프의 너비 첫 번째 순회는 2, 0, 3, 1입니다. 예를 들어 웨스트민스터 역을 예로 들어 보겠습니다.

이 스테이션은 자식 노드 목록에서 STATION 1, STATION 2 및 STATION 3을 포함하는 노드로 나타낼 수 있습니다. 위의 코드는 지정된 소스 정점에서 연결할 수 있는 정점만 트래버스합니다. 지정된 정점(예: 연결이 끊긴 그래프)에서 모든 정점에 연결할 수 없습니다. 모든 정점을 인쇄하려면 BFS 함수를 수정하여 모든 노드에서 하나씩 씩씩하게 시작하여 (DFS 수정 버전과 유사) 할 수 있습니다. 이것은 비 재귀그래프에 폭 첫 번째 검색 / 순회를 수행하는 자바 프로그램입니다. 다음은 Java 프로그램의 소스 코드로, 그래프에서 무단으로 첫 번째 검색/순회를 수행합니다. 이 프로그램은 성공적으로 컴파일 및 윈도우 7에서 IDE IntelliJ 아이디어를 사용하여 테스트됩니다. 프로그램 출력도 아래와 같습니다. 그래프에는 주기를 포함할 수 있으며, 그래프를 통과하는 동안 다시 동일한 노드로 이동하게 될 수 있습니다. 동일한 노드가 다시 처리되지 않도록 하려면 처리 후 노드를 표시하는 부울 배열을 사용합니다.

그래프 레이어의 노드를 방문하는 동안 해당 하위 노드를 비슷한 순서로 탐색할 수 있도록 노드를 저장합니다. 폭 우선 검색은 연못의 중앙에 돌을 던지는 것과 같습니다. 탐색하는 노드는 시작 지점에서 “리플 아웃”됩니다. 인쇄 노드에 관해서는 aaronman이 노드 개체를 인쇄 메서드로 전달하고 Node 클래스가 보유 할 수있는 데이터를 표시하는 것이라고 가정합니다. 트래버스는 소스 노드에서 시작하여 큐에서 s를 푸시합니다. s는 `방문`으로 표시됩니다. BFS에서 알다시피, 당신은 현명한 레벨을 통과. BFS를 사용하여 각 노드의 수준을 결정할 수도 있습니다.

BFS의 시간 복잡성은 O(V + E)이며 V는 노드 수이고 E는 모서리 수입니다. 1. 함수 너비FirstSearch()에서 부울 배열이 만들어지고 소스의 방문 값이 true로 설정됩니다. 2. 그런 다음 큐가 만들어지고 소스 정점이 추가됩니다. 3. 루프 while(!queue.isEmpty())))은 큐가 비어 있는 때까지 다각적입니다. 4. 중첩 루프 for(i=0; i&ltmatrix.length; i++)는 큐에서 현재 폴링된 정점의 모든 이웃을 통과합니다. 5.

조건 (행렬[x-1][i] == 1 & 방문 [i] == false) 현재 폴링된 정점의 모든 이웃을 찾고 큐에 방문하지 않은 정점을 추가합니다. 정보 또는 휴리스틱 검색: 알고리즘이 문제 도메인에 대한 추가 지식을 가지고 있으며 목표 상태가 아닌 상태가 다른 상태보다 “더 유망”한지 여부를 구분할 수 있습니다. . 모든 즉시 자식(시작 노드에서 한 단계 떨어진 모든 노드)을 방문합니다: 이전 다이어그램에서는 0에서 탐색을 시작하고 자식 노드 1, 2 및 3을 방문합니다.

Comments are closed.