알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - BFS

2023. 12. 8. 15:34·ALGORITHM

05-2 너비 우선 탐색

- 시작 노드에서 출발해 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘

- 목표 노드에 도착하는 경로가 여러 개일 때 최단 경로를 보장함

- 시간 복잡도: O(V + E), V는 노드 수 E는 엣지 수

 

특징

- FIFO 탐색

- Queue 자료구조 이용

 

동작 방식

1. BFS를 시작할 노드를 정한 후 사용할 자료구조 초기화하기

방문할 노드 체크를 위한 방문 배열, 그래프를 인접 리스트로 표현, 탐색을 위해 큐 사용

2. 큐에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 큐에 삽입하기

3. 큐 자료구조에 값이 없을 때까지 반복하기

 

 

구현

from collections import deque

def bfs(graph, start, visited):
	queue = deque([start])
	visited[start] = True
    
    while queue:
    	v = queue.popleft()
        print(v, end=' ')
        for i in graph[v]:
        	if not (visited[i]):
            	queue.append(i)
                visited[i] = True

참고 사이트

반응형

'ALGORITHM' 카테고리의 다른 글

알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 그리디 알고리즘  (0) 2023.12.09
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 이진 탐색  (2) 2023.12.08
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - DFS  (1) 2023.12.08
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 기수 정렬  (0) 2023.12.07
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 버블 정렬 프로그램 2  (0) 2023.12.07
'ALGORITHM' 카테고리의 다른 글
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 그리디 알고리즘
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 이진 탐색
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - DFS
  • 알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - 기수 정렬
진미
진미
  • 진미
    ABC
    진미
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • PROJECT (3)
      • ALGORITHM (43)
      • STUDY (3)
        • 리액트 (7)
        • 파이썬 (2)
      • 기타 (5)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 설정
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
진미
알고리즘 강의 | Do it! 알고리즘 코딩테스트 with Python - BFS
상단으로

티스토리툴바