deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(Breath First Search, BFS)
CS/Algorithm

๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(Breath First Search, BFS)

2020. 9. 27. 20:05
๋ฐ˜์‘ํ˜•

๐Ÿ“” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS) ์ด๋ž€

  • ๋„ˆ๋น„๋ฅผ ์šฐ์„ ์œผ๋กœ ํ•˜์—ฌ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์ตœ๋‹จ๊ฒฝ๋กœ(์ตœ๋‹จ๊ธธ์ด)๋ฅผ ์ฐพ์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ์™€ ๊ทธ๋ž˜ํ”„๋กœ ํ•ด๊ฒฐํ•œ๋‹ค. (ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฐํฌ(deque)๋ฅผ ์“ฐ๋ฉด ์†๋„๊ฐ€ ๋น ๋ฆ„)

 

๐Ÿ“” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS) ๊ตฌํ˜„

from collections import deque

# ์ธ์ ‘๋ฆฌ์ŠคํŠธ
# ๋…ธ๋“œ: 1,2,3,4,5,6,7
n = 7
adj = {x: [] for x in range(1, n + 1)}
edges = [
    [1, 2],
    [1, 3],
    [2, 4],
    [2, 5],
    [3, 6],
    [3, 7]
]

# ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์ด๋ฏ€๋กœ ๋ฐ˜๋Œ€์ชฝ๋„ ์„ฑ๋ฆฝ
for edge in edges:
    s, e = edge
    adj[s].append(e)
    adj[e].append(s)

print(adj)

# bfs ๋Š” queue๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์†๋„๊ฐ€ ๋น ๋ฅธ๋ฐํฌ๋ฅผ ์‚ฌ์šฉ
q = deque()
q.append(1)
visited = [False] * (n + 1)  # ๊ฐ ์ธ๋ฑ์Šค ๋ฐฉ๋ฌธํ•œ ์ ์ด ์žˆ๋Š”์ง€
visited[1] = True
visited_seq = []
while q:
    c = q.popleft()  # ํ ๊ตฌ์กฐ ์ด๋ฏ€๋กœ ๊ฐ€์žฅ ์•ž์˜์›์†Œ(์ œ์ผ ์ฒ˜์Œ์— ๋“ค์–ด์˜จ)๋ฅผ ๊บผ๋‚ธ๋‹ค.

    for neighbor in adj[c]:  # c์˜ ์ด์›ƒ ๋…ธ๋“œ(c์—์„œ ๋ฐ”๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ณณ)
        if not visited[neighbor]:  # ๋ฐฉ๋ฌธํ•œ์ ์ด ์—†์œผ๋ฉด
            q.append(neighbor)  # ํ์— ๋„ฃ์–ด์ฃผ๊ณ 
            visited[neighbor] = True  # ๋ฐฉ๋ฌธ ํ‘œ์‹œ

    visited_seq.append(c)  # ์—ฌ๊ธด ์•ˆ์จ์ค˜๋„ ๋œ๋‹ค. ๋‹จ์ง€ ๋ฐฉ๋ฌธ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ๊ฒƒ

print(f'๋ฐฉ๋ฌธ์ˆœ์„œ {visited_seq}')
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint-set)  (0) 2020.09.29
๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)  (0) 2020.09.28
๊ณ„์ˆ˜ ์ •๋ ฌ(counting sort)  (0) 2020.09.26
๋ณ‘ํ•ฉ ์ •๋ ฌ(merge sort)  (0) 2020.09.25
ํ€ต ์ •๋ ฌ(quick sort)  (1) 2020.09.24
    'CS/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint-set)
    • ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)
    • ๊ณ„์ˆ˜ ์ •๋ ฌ(counting sort)
    • ๋ณ‘ํ•ฉ ์ •๋ ฌ(merge sort)
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”