알고리즘

DFS/BFS

iemxl 2023. 8. 3. 15:58

자료구조: 데이터를 표현하고 관리하고 처리하기 위한 구조.

오버플로: 꽉 찼는데 더 넣음

언더플로: 없는데 뺌

 

스택(stack): 박스쌓기

큐(queue): 선입선출 >> import deque

 

재귀함수: 자기 자신을 다시 호출하는 함수

 

DFS(Depth-First Search) : 깊이 우선 탐색 = 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘

>>stack

>>재귀함수

 

#dfs

def dfs(graph, v, visited):
    visited[v]=True
    print(v,end=' ')
    for i in graph[v]:
        if not visited[i]:
            dfs(graph, i, visited)
graph=[[],[2,3,8],[1,7],[1,4,5],[3,5],[3,4],[7],[2,6,8],[1,7]]
visited=[False]*9
dfs(graph,1,visited)

 

>>12768345

 

BFS(Breadth First Search) : 너비 우선 탐색 = 가까운 노드부터 탐색하는 알고리즘  

>>queue

>>큐 자료구조

 

#bfs
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
graph=[[],[2,3,8],[1,7],[1,4,5],[3,5],[3,4],[7],[2,6,8],[1,7]]
visited=[False]*9
bfs(graph,1,visited)

 

>>12387456

 

#음료수 얼려 먹기

 

'알고리즘' 카테고리의 다른 글

HEAP #힙 자료구조 #heapq #Dijkstra #다익스트라 알고리즘  (0) 2024.05.10
정렬  (0) 2024.05.09
구현  (0) 2023.07.05
그리디 알고리즘  (0) 2023.06.28