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

λ§žμ™œν‹€

깊이 μš°μ„  탐색(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
    'CS/Algorithm' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • 크루슀칼 μ•Œκ³ λ¦¬μ¦˜(kruskal)
    • μ„œλ‘œμ†Œ μ§‘ν•©(Disjoint-set)
    • λ„ˆλΉ„ μš°μ„  탐색(Breath First Search, BFS)
    • κ³„μˆ˜ μ •λ ¬(counting sort)
    deo2kim
    deo2kim
    μ½”λ”© κΈ°λ‘ν•˜κΈ°

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”