🌷🌼λͺ¨μ—¬λ΄μš” 개발의숲🌷🌼

κ·Έλž˜ν”„μ™€ 인접행렬 λ³Έλ¬Έ

개발/μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œν’€μ΄ JAVA

κ·Έλž˜ν”„μ™€ 인접행렬

μš”μΌμ΄ 2021. 8. 1. 23:51
λ°˜μ‘ν˜•

κ·Έλž˜ν”„λ₯Ό ν‘œν˜„ν•  λ•ŒλŠ” 기본적으둜 G(V, E)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

Graph(vertice, Edge)

κ·Έλž˜ν”„λž€?

κ·Έλž˜ν”„λŠ” 정점과 κ°„μ„ μœΌλ‘œ 이루어진 μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€. μ •ν™•νžˆλŠ” 정점(Vertex)κ°„μ˜ 관계λ₯Ό ν‘œν˜„ν•˜λŠ” 쑰직도라고 λ³Όμˆ˜λ„ μžˆκ² μŠ΅λ‹ˆλ‹€. κ·ΈλŸ°λ©΄μ—μ„œ νŠΈλ¦¬λŠ” κ·Έλž˜ν”„μ˜ 일쒅인 μ…ˆμž…λ‹ˆλ‹€. λ‹€λ§Œ νŠΈλ¦¬μ™€λŠ” 달리 κ·Έλž˜ν”„λŠ” μ •μ λ§ˆλ‹€ 간선이 μ—†μ„μˆ˜λ„ 있고 μžˆμ„μˆ˜λ„ 있으며 루트 λ…Έλ“œ, λΆ€λͺ¨μ™€ μžμ‹μ΄λΌλŠ” κ°œλ…μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ κ·Έλž˜ν”„λŠ” λ„€νŠΈμ›Œν¬ λͺ¨λΈ 즉, 객체와 이에 λŒ€ν•œ 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μœ μ—°ν•œ λ°©μ‹μœΌλ‘œ 이해할 수 μžˆμŠ΅λ‹ˆλ‹€. μ‹€μƒν™œμ—μ„œ λ‹€μ–‘ν•œ 예λ₯Ό κ·Έλž˜ν”„λ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ μ§€ν•˜μ²  노선도, λ„μ‹¬μ˜ λ„λ‘œλ“±μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ°μ‹μœΌλ‘œ ν™œμš©ν•  수 μžˆλŠ” 방법이 λ§ŽκΈ°μ— λ¬Έμ œλ„ λ‹€μ–‘ν•˜κ²Œ 좜제λ₯Ό ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜ν”„λŠ” μ•Œκ³ λ¦¬μ¦˜μ—μ„œ ꡉμž₯히 많이 μ‚¬μš©λ©λ‹ˆλ‹€. 특히 κ·Έλž˜ν”„λ₯Ό μˆœνšŒν•˜λŠ” 방식인 DFS와 BFSλ₯Ό 잘 μ•Œμ•„λ‘μ–΄μ•Ό ν•©λ‹ˆλ‹€. 

 

κ·Έλž˜ν”„μ—μ„œ μ‚¬μš©ν•˜λŠ” μš©μ–΄

정점(vertice) : λ…Έλ“œ(node)라고도 ν•˜λ©° μ •μ μ—λŠ” 데이터가 μ €μž₯λ©λ‹ˆλ‹€. (0, 1, 2, 3)
κ°„μ„ (edge): λ§ν¬(arcs)라고도 ν•˜λ©° λ…Έλ“œκ°„μ˜ 관계λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.
인접 정점(adjacent vertex) : κ°„선에 μ˜ν•΄ μ—°κ²°λœ μ •μ μœΌλ‘œ μœ„μ—μ„œ (정점0κ³Ό 정점1은 인접 정점)
λ‹¨μˆœ 경둜(simple-path): κ²½λ‘œ 쀑 λ°˜λ³΅λ˜λŠ” 정점이 μ—†λŠ”κ²ƒ, 같은 간선을 μžλ‚˜κ°€μ§€ μ•ŠλŠ” 경둜
차수(degree): λ¬΄λ°©ν–₯ κ·Έλž˜ν”„μ—μ„œ ν•˜λ‚˜μ˜ 정점에 μΈμ ‘ν•œ μ •μ μ˜ 수 (정점 0의 μ°¨μˆ˜λŠ” 3)
μ§„μΆœ 차수(out-degree) : λ°©ν–₯κ·Έλž˜ν”„μ—μ„œ μ‚¬μš©λ˜λŠ” μš©μ–΄λ‘œ ν•œ λ…Έλ“œμ—μ„œ μ™ΈλΆ€λ‘œ ν–₯ν•˜λŠ” κ°„μ„ μ˜ 수λ₯Ό λœ»ν•©λ‹ˆλ‹€.
μ§„μž…μ°¨μˆ˜(in-degree) : λ°©ν–₯κ·Έλž˜ν”„μ—μ„œ μ‚¬μš©λ˜λŠ” μš©μ–΄λ‘œ μ™ΈλΆ€ λ…Έλ“œμ—μ„œ λ“€μ–΄μ˜€λŠ” κ°„μ„ μ˜ 수λ₯Ό λœ»ν•©λ‹ˆλ‹€.

좜처 : μ½”λ”©νŒ©ν† λ¦¬ - https://coding-factory.tistory.com/610 

 

1. 무방ν–₯ κ·Έλž˜ν”„

1κ³Ό 2κ°€ 이어져 있으면 g[1][2] = 1; g[2][1] = 1; ν•œλ‹€.

 

2. λ°©ν–₯ κ·Έλž˜ν”„

1->2 이면 g[1][2] = 1; ν•œλ‹€.

 

3. κ°€μ€‘μΉ˜ λ°©ν–₯ κ·Έλž˜ν”„

g[1][2] = 2; ν•˜λ©΄ λœλ‹€.

Comments