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
CS/Algorithm

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)
CS/Algorithm

๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)

2020. 9. 28. 20:29
๋ฐ˜์‘ํ˜•

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

  • ๊นŠ์ด๋ฅผ ์šฐ์„ ์œผ๋กœ ํ•˜์—ฌ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ํŠน์ • ๋…ธ๋“œ์—์„œ ์‹œ์ž‘ํ•ด์„œ ๋‹ค์Œ ๋ถ„๊ธฐ๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์— ํ•ด๋‹น ๋ถ„๊ธฐ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•!
  • ex) ๋ฏธ๋กœํƒ์ƒ‰ - ๋ง‰ํž ๋•Œ ๊นŒ์ง€ ๊ณ„์† ๊ฐ€๋‹ค๊ฐ€ ๋ง‰๋‹ค๋ฅธ ๊ธธ์ด ๋‚˜์˜ค๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ๊ฐˆ๋ฆผ๊ธธ๋กœ ๋Œ์•„๊ฐ€ ๋‹ค์‹œ ๊ธธ์„ ์ฐพ๋Š” ๊ฒƒ!
  • ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ  ์‹ถ์„ ๋–„
  • ์Šคํƒ์™€ ๊ทธ๋ž˜ํ”„๋กœ ํ•ด๊ฒฐํ•œ๋‹ค. ( ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์จ๋„ ๋จ )
    ์Šคํƒ์œผ๋กœ ์‚ฌ์šฉ์‹œ ์ด์›ƒ ์ค‘ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ๊ฒƒ๋ถ€ํ„ฐ,
    ์žฌ๊ท€ ์‚ฌ์šฉ์‹œ ์ด์›ƒ ์ค‘ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•œ๋‹ค.

๐Ÿ“” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS) ๊ตฌํ˜„

def dfs(c):
    print(c, end=' ')
    for neighbor in adj[c]:  # c์˜ ์ด์›ƒ ์ค‘
        if visited[neighbor] == 0:  # ๋ฐฉ๋ฌธ ์•„์ง ์•ˆํ•œ ์นœ๊ตฌ์ด๋ฉด
            visited[neighbor] = 1
            dfs(neighbor)


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

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

print(adj)

# 1๋ถ€ํ„ฐ ํƒ์ƒ‰
k = 1
visited = [0] * (n + 1)
visited[k] = 1
print('๋ฐฉ๋ฌธ ์ˆœ์„œ')
dfs(k)

 

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

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

ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(kruskal)  (0) 2020.09.30
์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint-set)  (0) 2020.09.29
๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(Breath First Search, BFS)  (0) 2020.09.27
๊ณ„์ˆ˜ ์ •๋ ฌ(counting sort)  (0) 2020.09.26
๋ณ‘ํ•ฉ ์ •๋ ฌ(merge sort)  (0) 2020.09.25
  • ๐Ÿ“” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS) ์ด๋ž€
  • ๐Ÿ“” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS) ๊ตฌํ˜„
'CS/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(kruskal)
  • ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint-set)
  • ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(Breath First Search, BFS)
  • ๊ณ„์ˆ˜ ์ •๋ ฌ(counting sort)
deo2kim
deo2kim
์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

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

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.