πŸ’» Computer Science/- Data Structure, Algorithm

[자료 ꡬ쑰] κ·Έλž˜ν”„ 자료ꡬ쑰 :: Graph Data Structure

Wonit 2020. 6. 25. 11:41

κ·Έλž˜ν”„(Graph)λž€?

좜처 : stackoverflow

κ·Έλž˜ν”„λž€? μ‰½κ²Œ ν•œ λ¬Έμž₯으둜 μ„€λͺ…ν•œλ‹€λ©΄, ν˜„μ‹€ μ„Έκ³„μ˜ 관계λ₯Ό μ‹œκ°μ μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλŠ” ꡬ쑰. 라고 ν•  수 μžˆλ‹€.


μš°λ¦¬λŠ” μΌμƒμ—μ„œ λ‹€μŒκ³Ό 같은 κ³³μ—μ„œ κ·Έλž˜ν”„λ₯Ό μ‚¬μš©ν•œλ‹€.

  • λ„€λΉ„κ²Œμ΄μ…˜ μ΅œλ‹¨ 경둜
  • λ„€νŠΈμ›Œν¬ 톡신
  • 친ꡬ 관계

κ·Έλž˜ν”„λ₯Ό μ‚¬μš©ν•˜λ©΄ κ°μ²΄κ°„μ˜ 관계λ₯Ό μ‰½κ²Œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€λŠ” μž₯점으둜 많이 μ‚¬μš©ν•œλ‹€.

 

이λ₯Ό 전문적인 μš©μ–΄λ‘œ 말 ν•œλ‹€λ©΄ 정점과 κ°„μ„ μ˜ μ§‘ν•©μœΌλ‘œ κ΅¬μ„±λ˜λ©° μˆ˜ν•™μ μœΌλ‘œλŠ” G = (V, E)의 κ΄€κ³„λ‘œ λ‚˜νƒ€λ‚œλ‹€. 처음 λ³΄λŠ” μ‚¬λžŒλ“€μ€ 이해가 μ•ˆ 갈 μˆ˜λ„ μžˆλŠ”λ°, ν•œ 번 따라가 보자.

κ·Έλž˜ν”„μ˜ μ’…λ₯˜

κ·Έλž˜ν”„μ˜ μ’…λ₯˜λŠ” λ‹€μŒκ³Ό 같은 μ„Έ κ°€μ§€λ‘œ λ‚˜λ‰œλ‹€.

좜처 : https://www.ritambhara.in/adjacency-matrix-implementation-of-graph-data-structure/

무방ν–₯ κ·Έλž˜ν”„ (Undirected Graph)

무항ν–₯ κ·Έλž˜ν”„λŠ” 간선에 λ°©ν–₯이 ν‘œμ‹œλ˜μ–΄μžˆμ§€ μ•Šμ€ κ·Έλž˜ν”„λ₯Ό 무방ν–₯ κ·Έλž˜ν”„λΌκ³  ν•œλ‹€.


μ—¬κΈ°μ„œ ν•˜λ‚˜μ˜ 간선은 μ–‘λ°©ν–₯으둜 갈수 μžˆλŠ” 길을 μ˜λ―Έν•˜κ³  (A, B)λ‚˜ (B, A)은 같은 간선이 λœλ‹€.

λ°©ν–₯ κ·Έλž˜ν”„ (Directed Graph)

간선에 λ°©ν–₯이 μ‘΄μž¬ν•˜λŠ” κ·Έλž˜ν”„λ₯Ό λ°©ν–₯ κ·Έλž˜ν”„λΌκ³  ν•œλ‹€.


보톡 ν™”μ‚΄ν‘œλ‘œ ν‘œμ‹œλ˜λŠ”λ° μ°¨λ„μ˜ 일방톡행이라고 μƒκ°ν•˜λ©΄ 쉽닀.

 

<A, B>λ₯Ό λ°©ν–₯이 μžˆλŠ” κ·Έλž˜ν”„μ—μ„œ ν‘œμ‹œν•˜λŠ”λ° <A, B>λŠ” 정점 Aμ—μ„œ B둜만 갈 수 μžˆλŠ” 간선을 λ‚˜νƒ€λ‚Έλ‹€. κ·Έ 말은 λ‹Ήμ—°νžˆ <A, B>와 <B, A>λŠ” λ‹€λ₯Έ κ·Έλž˜ν”„λ₯Ό λœ»ν•œλ‹€.

κ°€μ€‘μΉ˜ κ·Έλž˜ν”„ (Weighted Graph)

κ°„μ„ μ˜ λΉ„μš©μ΄λ‚˜ κ°€μ€‘μΉ˜κ°€ ν• λ‹Ήλœ κ·Έλž˜ν”„λ₯Ό κ°€μ€‘μΉ˜ κ·Έλž˜ν”„λΌκ³  ν•œλ‹€.

κ·Έλž˜ν”„μ˜ μš©μ–΄

  • 인접 정점

    간선에 μ˜ν•΄ 직접 μ—°κ²°λœ κ·Έλž˜ν”„

  • μ •μ μ˜ 차수

    정점에 μ—°κ²°λœ κ°„μ„ μ˜ 수

  • 경둜

    간선을 따라 갈 수 μžˆλŠ” κΈΈ

  • 경둜의 길이

    경둜λ₯Ό κ΅¬μ„±ν•˜λŠ”λ˜ μ‚¬μš©λœ κ°„μ„ μ˜ 수

  • λ‹¨μˆœ κ²½λ‘œμ™€ 사이클

    경둜 μ€‘μ—μ„œ λ°˜λ³΅λ˜λŠ” 간선이 μ—†λŠ” 경둜

  • μ—°κ²° κ·Έλž˜ν”„

    λͺ¨λ“  정점듀 사이에 κ²½λ‘œκ°€ μ‘΄μž¬ν•˜λ©΄ μ—°κ²° κ·Έλž˜ν”„

  • 트리

    사이클을 κ°€μ§€μ§€ μ•ŠλŠ” μ—°κ²° κ·Έλž˜ν”„

  • μ™„μ „ κ·Έλž˜ν”„

    λͺ¨λ“  정점 간에 간선이 μ‘΄μž¬ν•˜λŠ” κ·Έλž˜ν”„