λ…Έλ“œμ™€ κ·Έ λ…Έλ“œλ₯Ό μ—°κ²°ν•˜λŠ” 간선을 ν•˜λ‚˜λ‘œ λͺ¨μ•„ 놓은 자료ꡬ쑰.

μ—°κ²°λ˜μ–΄ μžˆλŠ” κ°μ²΄κ°„μ˜ 관계λ₯Ό ν‘œν˜„ν•  수 μžˆλŠ” 자료ꡬ쑰.

κ·Έλž˜ν”„(Graph) μš©μ–΄

  • 정점(vertex):
    • μœ„μΉ˜λΌλŠ” κ°œλ…. (node 라고도 뢀름)
  • κ°„μ„ (edge):
    • μœ„μΉ˜ κ°„μ˜ 관계. 즉, λ…Έλ“œλ₯Ό μ—°κ²°ν•˜λŠ” μ„  (link, branch 라고도 뢀름)
  • 인접(Adjacency) 
    • 정점 x와 정점 yκ°€ 간선에 μ˜ν•΄ μ—°κ²°λ˜μ–΄μ Έ μžˆλ‹€λ©΄, 이듀 두 정점 x와 yλ₯Ό 인접(Adjacent)λ˜μ–΄μžˆλ‹€κ³  ν•œλ‹€.
  • 인접 정점(adjacent vertex):
    • 간선에 의 ν•΄ 직접 μ—°κ²°λœ 정점
  • 뢀속(Incident)
    • 정점 사이에 μ—°κ²°λœ 간선을 두 정점 X와 Y에 λΆ€μ†λ˜μ–΄μžˆλ‹€κ³  ν•œλ‹€.
  • μ •μ μ˜ 차수(degree):
    • 무방ν–₯ κ·Έλž˜ν”„μ—μ„œ ν•˜λ‚˜μ˜ 정점에 μΈμ ‘ν•œ μ •μ μ˜ 수
    • 무방ν–₯ κ·Έλž˜ν”„μ— μ‘΄μž¬ν•˜λŠ” μ •μ μ˜ λͺ¨λ“  차수의 ν•© = κ·Έλž˜ν”„μ˜ κ°„μ„  수의 2λ°°
  • μ§„μž… 차수(in-degree):
    • λ°©ν–₯ κ·Έλž˜ν”„μ—μ„œ μ™ΈλΆ€μ—μ„œ μ˜€λŠ” κ°„μ„ μ˜ 수 (λ‚΄μ°¨μˆ˜ 라고도 뢀름)
  • μ§„μΆœ 차수(out-degree):
    • λ°©ν–₯ κ·Έλž˜ν”™μ—μ„œ μ™ΈλΆ€λ‘œ ν–₯ν•˜λŠ” κ°„μ„ μ˜ 수 (μ™Έμ°¨μˆ˜ 라고도 뢀름)
    • λ°©ν–₯ κ·Έλž˜ν”„μ— μžˆλŠ” μ •μ μ˜ μ§„μž… 차수 λ˜λŠ” μ§„μΆœ 차수의 ν•© = λ°©ν–₯ κ·Έλž˜ν”„μ˜ κ°„μ„ μ˜ 수(λ‚΄μ°¨μˆ˜ + μ™Έμ°¨μˆ˜)
  • 경둜 길이(path length):
    • 경둜λ₯Ό κ΅¬μ„±ν•˜λŠ” 데 μ‚¬μš©λœ κ°„μ„ μ˜ 수
  • λ‹¨μˆœ 경둜(simple path):
    • 경둜 μ€‘μ—μ„œ λ°˜λ³΅λ˜λŠ” 정점이 μ—†λŠ” 경우
  • 사이클(cycle):
    • λ‹¨μˆœ 경둜의 μ‹œμž‘ 정점과 μ’…λ£Œ 정점이 λ™μΌν•œ 경우

κ·Έλž˜ν”„(Graph)의 νŠΉμ§•

  • κ·Έλž˜ν”„λŠ” λ„€νŠΈμ›Œν¬ λͺ¨λΈ 이닀.
  • 2개 μ΄μƒμ˜ κ²½λ‘œκ°€ κ°€λŠ₯ν•˜λ‹€.
    • 즉, λ…Έλ“œλ“€ 사이에 무방ν–₯/λ°©ν–₯μ—μ„œ μ–‘λ°©ν–₯ 경둜λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.
  • self-loop 뿐 μ•„λ‹ˆλΌ loop/circuit λͺ¨λ‘ κ°€λŠ₯ν•˜λ‹€.
  • 루트 λ…Έλ“œλΌλŠ” κ°œλ…μ΄ μ—†λ‹€.
  • λΆ€λͺ¨-μžμ‹ κ΄€κ³„λΌλŠ” κ°œλ…μ΄ μ—†λ‹€.
  • μˆœνšŒλŠ” DFSλ‚˜ BFS둜 이루어진닀.
  • κ·Έλž˜ν”„λŠ” μˆœν™˜(Cyclic) ν˜Ήμ€ λΉ„μˆœν™˜(Acyclic)이닀.
  • κ·Έλž˜ν”„λŠ” 크게 λ°©ν–₯ κ·Έλž˜ν”„μ™€ 무방ν–₯ κ·Έλž˜ν”„κ°€ μžˆλ‹€.
  • κ°„μ„ μ˜ μœ λ¬΄λŠ” κ·Έλž˜ν”„μ— 따라 λ‹€λ₯΄λ‹€.

κ·Έλž˜ν”„(Graph)의 탐색

  • 깊이 μš°μ„  탐색(DFS, Depth-First Search)
    • 루트 λ…Έλ“œ(ν˜Ήμ€ λ‹€λ₯Έ μž„μ˜μ˜ λ…Έλ“œ)μ—μ„œ μ‹œμž‘ν•΄μ„œ λ‹€μŒ λΆ„κΈ°(branch)둜 λ„˜μ–΄κ°€κΈ° 전에 ν•΄λ‹Ή λΆ„κΈ°λ₯Ό μ™„λ²½ν•˜κ²Œ νƒμƒ‰ν•˜λŠ” 방법
    • 즉, λ„“κ²Œ(wide) νƒμƒ‰ν•˜κΈ° 전에 깊게(deep) νƒμƒ‰ν•˜λŠ” 것이닀.
    • μ‚¬μš©ν•˜λŠ” 경우: λͺ¨λ“  λ…Έλ“œλ₯Ό λ°©λ¬Έ ν•˜κ³ μž ν•˜λŠ” κ²½μš°μ— 이 방법을 μ„ νƒν•œλ‹€. 깊이 μš°μ„  탐색이 λ„ˆλΉ„ μš°μ„  탐색보닀 μ’€ 더 κ°„λ‹¨ν•˜λ‹€.

  • λ„ˆλΉ„ μš°μ„  탐색(BFS, Breadth-First Search) 루트 λ…Έλ“œ(ν˜Ήμ€ λ‹€λ₯Έ μž„μ˜μ˜ λ…Έλ“œ)μ—μ„œ μ‹œμž‘ν•΄μ„œ μΈμ ‘ν•œ λ…Έλ“œλ₯Ό λ¨Όμ € νƒμƒ‰ν•˜λŠ” 방법
    • 즉, 깊게(deep) νƒμƒ‰ν•˜κΈ° 전에 λ„“κ²Œ(wide) νƒμƒ‰ν•˜λŠ” 것이닀.
    • μ‚¬μš©ν•˜λŠ” 경우: 두 λ…Έλ“œ μ‚¬μ΄μ˜ μ΅œλ‹¨ 경둜 ν˜Ήμ€ μž„μ˜μ˜ 경둜λ₯Ό μ°Ύκ³  싢을 λ•Œ 이 방법을 μ„ νƒν•œλ‹€.
    • Ex) 지ꡬ상에 μ‘΄μž¬ν•˜λŠ” λͺ¨λ“  친ꡬ 관계λ₯Ό κ·Έλž˜ν”„λ‘œ ν‘œν˜„ν•œ ν›„ Ash와 Vanessa 사이에 μ‘΄μž¬ν•˜λŠ” 경둜λ₯Ό μ°ΎλŠ” 경우
    • 깊이 μš°μ„  νƒμƒ‰μ˜ 경우 - λͺ¨λ“  친ꡬ 관계λ₯Ό λ‹€ μ‚΄νŽ΄λ΄μ•Ό 할지도 λͺ¨λ₯Έλ‹€.
    • λ„ˆλΉ„ μš°μ„  νƒμƒ‰μ˜ 경우 - Ash와 κ°€κΉŒμš΄ 관계뢀터 탐색

728x90
λ°˜μ‘ν˜•
Liky