๐ŸŒฑ โ†’ ๐ŸŒณ

Algorithm) DFS/BFS ๋ณธ๋ฌธ

Algorithms

Algorithm) DFS/BFS

thals0 2022. 10. 25. 12:49
728x90

๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜: DFS/BFS

ํƒ์ƒ‰(search)์ด๋ž€ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๊ณผ์ •

๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ DFS/BFS๊ฐ€ ์กด์žฌ

 

์ž๋ฃŒ๊ตฌ์กฐ

์Šคํƒ(์„ ์ž…ํ›„์ถœ)

๋จผ์ € ๋“ค์–ด ์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์ค‘์— ๋‚˜๊ฐ€๋Š” ํ˜•์‹์˜ ์ž๋ฃŒ๊ตฌ์กฐ

์˜ˆ์‹œ) ๋ฐ•์Šค ์Œ“๊ธฐ

 

DFS method ์ •์˜ 

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)

 

BFS method ์ •์˜ 

๊ฐ„์„  ๋น„์šฉ์ด ๋ชจ๋‘ ๊ฐ™์„ ๋•Œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

from collections import deque

# BFS ๋ฉ”์„œ๋“œ ์ •์˜ 
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)

 

728x90

'Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Algorithm) Dynamic Programming  (1) 2022.10.25
Algorithm) Binary Search(์ด์ง„ํƒ์ƒ‰)  (0) 2022.10.25
Algorithm) Greedy  (0) 2022.10.25
Algorithm) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ  (0) 2022.10.25
[๋ฐฑ์ค€] 18870๋ฒˆ: ์ขŒํ‘œ ์••์ถ• python  (0) 2022.10.10