그래프 내에서
이러한 bfs는
이용한다는 점이 특징이구요
출발지점 즉 시작 노드를 큐에 넣고
2번에 과정을
자 큐에서 노드를 꺼낸뒤에 그 꺼낸 노드의 인접 노드중에서 방문하지 않는 노드를 모두
큐에 넣고 방문처리를 수행합니다
방문을 수행한다는 특징이 있었는데요
이 bfs는 한번에 전부 큐에 넣는다는점이 특징입니다
조건에서의 최단경로 문제를 해결하기 위한 목적으로도 효과적으로 사용될수 있습니다
또한 큐 자료구조가
숙지하실 필요가
동작예시를 이렇게 dfs때와 동일하게
노드 부터 출발한다고 해볼게요 자 그러면 가장 먼저 시작노드인 1번 노드를 큐에 넣고
의 원소가 위에서 들어와서 아래로 나간다고 가정할게요 자 그래서 이제
그 꺼낸 노드의 인접노드중에서
자 그래서 큐에 들어있던 원소 1을 꺼내서 이제 1에 대해서 처리를 하는거에요
칠했구요 이와같이 회색으로 칠했습니다
큐에서 노드 1을 꺼내 방문하지 않은 인접노드인 238을
큐에놓고 방문처리하는것을 확인할 수있습니다
작은번호부터 넣는다고
이어서 큐에서 노드 2를 꺼내서 현재인접한 노드인 1과 7을 확인하는데요 1은 이미
방문처리가 되어있기 때문에 이7만 큐에넣고 방문처리합니다
큐에서 꺼내서 인접한 노드를 확인해서
큐에 넣고 방문처리 합니다
그래서 8번노드를 꺼내지만
자그래서 이렇게 넓게 2 3 8 부터 차례대로 방문하는 것을 확인할수 있어요
1번 노드부터 이 가까운 노드부터
이시작노드인 1번으로부터 거리가 2인걸 확인할 수 있죠
그렇기 때문에 거리가 2인노드 7 4 5 가 차례대로 방문된걸 확인 할 수 있구요
거리가 가장먼 6번 노드가 가장 마지막으로 탐색되는걸 확인할 수 있습니다
이므로 꼭 기억해 주세요
자 이렇게 큐를 위해서 하나의 뎃 라이브러리를 불러와 주시고요
0번 노드에 대한 내용은
노드가 1번부터
총 원소가 9개인 객체를 만들어 주고요
[ ] 이렇게 0인덱스에 대한 내용은 사용하지 않습니다 자 그래서 이제 2차원
각각 노드와 연결된
그래서 1번 노드는 2번노드 3번노드 8번노드와 인접해 있고
그리고 2번노드는 1번노드 7번노드와 인접해 있습니다
방문처리 목적으로 visired 라는 이름의 하나의 리스트를 만들어준걸 확인 할 수 있습니다 자 실제로 bfs 메소드를 확인해 볼게요
이후에 큐가 빌때 까지
덱을 이용해서 큐를 구현할때는 popleft를 이용해서 가장 먼저
원소를
큐에서 원소를 꺼낸뒤에
큐에 다넣어줄
코드로 구현한걸 확인 할 수 있고요
이 bfs함수에 초점을
인접 리스트 방식
인접 노드들에 리스트를
이 bfs 함수를 확인해 보시면 큐에 넣어준 뒤에
수 있도록 합니다
인접노드를 방문하지 않았다면
하는걸 확인할 수 있습니다
로직으로 작성
어뤠이 리스트를
큐를 구현하고자 할때는
원소를 넣을때 offer메소드 를
로직으로
get메소드 점또한
bfs
Last Updated:
Summarize & share videos seamlessly
Loading...