λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μΉ΄ν…Œκ³ λ¦¬ μ—†μŒ

자료ꡬ쑰 κ·Έλž˜ν”„(Graph)λž€ 무엇인가?

by 5566 2023. 8. 23.

1. κ·Έλž˜ν”„μ˜ κ°œλ…

κ·Έλž˜ν”„λŠ” ν˜„μ‹€ μ„Έκ³„μ—μ„œ 사물 λ˜λŠ” κ°œλ…λ“€ κ°„μ˜ μ—°κ²° 관계λ₯Ό ν‘œν˜„ν•˜λŠ” λΉ„μ„ ν˜• μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€. κ·Έλž˜ν”„λŠ” 정점(Vertex)κ³Ό κ°„μ„ (Edge)으둜 κ΅¬μ„±λ˜μ–΄ 있으며, 정점은 κ°œλ³„μ μΈ 객체λ₯Ό λ‚˜νƒ€λ‚΄κ³  간선은 정점듀 μ‚¬μ΄μ˜ 관계λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

정점은 κ·Έλž˜ν”„ λ‚΄μ—μ„œ κ³ μœ ν•œ μ‹λ³„μžλ₯Ό 가지며, 간선은 두 개의 정점을 μ—°κ²°ν•©λ‹ˆλ‹€. 간선은 λ°©ν–₯성이 μžˆλŠ” κ²½μš°μ™€ μ—†λŠ” 경우둜 λ‚˜λˆŒ 수 μžˆλŠ”λ°, λ°©ν–₯성이 μ—†λŠ” 간선은 두 정점을 μ–‘λ°©ν–₯으둜 μ—°κ²°ν•˜λŠ” 것을 μ˜λ―Έν•˜κ³ , λ°©ν–₯성이 μžˆλŠ” 간선은 ν•œ μ •μ μ—μ„œ λ‹€λ₯Έ μ •μ μœΌλ‘œμ˜ λ°©ν–₯을 가지고 μ—°κ²°λ©λ‹ˆλ‹€.

κ·Έλž˜ν”„λŠ” ν˜„μ‹€ μ„Έκ³„μ—μ„œ λ‹€μ–‘ν•œ ν˜•νƒœλ‘œ λ‚˜νƒ€λ‚  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ„λ‘œ λ„€νŠΈμ›Œν¬, μ†Œμ…œ λ„€νŠΈμ›Œν¬, μ „μž 회둜 λ“±μ˜ κ°œλ…μ„ κ·Έλž˜ν”„λ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜ν”„λŠ” μ΄λŸ¬ν•œ ν˜„μ‹€ μ„Έκ³„μ˜ 문제λ₯Ό 효율적으둜 λͺ¨λΈλ§ν•˜κ³  ν•΄κ²°ν•˜λŠ” 데에 μ‚¬μš©λ©λ‹ˆλ‹€.

κ·Έλž˜ν”„λŠ” ν­λ„“κ²Œ 컴퓨터 κ³Όν•™κ³Ό 정보 이둠 λΆ„μ•Όμ—μ„œ μ‚¬μš©λ˜λ©°, λ‹€μ–‘ν•œ κ·Έλž˜ν”„ μ•Œκ³ λ¦¬μ¦˜κ³Ό 데이터 ꡬ쑰가 κ°œλ°œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 κ·Έλž˜ν”„ 데이터λ₯Ό 효율적으둜 νƒμƒ‰ν•˜κ³  λΆ„μ„ν•˜μ—¬ λ‹€μ–‘ν•œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

2. κ·Έλž˜ν”„μ˜ ꡬ성 μš”μ†Œ

κ·Έλž˜ν”„λŠ” 정점(Vertex)κ³Ό κ°„μ„ (Edge)으둜 κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이듀 ꡬ성 μš”μ†ŒλŠ” κ·Έλž˜ν”„μ˜ νŠΉμ„±μ„ κ²°μ •ν•˜λ©° λ‹€μ–‘ν•œ μ—°μ‚°κ³Ό μ•Œκ³ λ¦¬μ¦˜μ— ν™œμš©λ©λ‹ˆλ‹€.

2.1 정점(Vertex)

정점은 κ·Έλž˜ν”„ λ‚΄μ˜ κ°œλ³„ 객체λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 일반적으둜 정점은 κ³ μœ ν•œ μ‹λ³„μžλ₯Ό 가지며, 이λ₯Ό 톡해 각 정점을 ꡬ별할 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ„μ‹œμ˜ 경우 각 λ„μ‹œλ₯Ό ν•˜λ‚˜μ˜ μ •μ μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. 정점은 보톡 숫자λ₯Ό 톡해 ν‘œν˜„λ˜μ§€λ§Œ, μ‹€μ œλ‘œλŠ” λ‹€λ₯Έ ν˜•νƒœμ˜ 데이터도 μ‚¬μš©λ  수 μžˆμŠ΅λ‹ˆλ‹€.

2.2 κ°„μ„ (Edge)

간선은 정점듀을 μ—°κ²°ν•˜λŠ” 관계λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 간선은 두 개의 정점을 μ—°κ²°ν•˜λŠ”λ°, 정점듀 κ°„μ˜ 관계λ₯Ό ν‘œν˜„ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ„λ‘œ λ„€νŠΈμ›Œν¬μ—μ„œ λ„μ‹œμ™€ λ„μ‹œλ₯Ό μž‡λŠ” λ„λ‘œλŠ” κ°„μ„ μœΌλ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.

κ°„μ„ μ—λŠ” λ°©ν–₯성이 μžˆλŠ” κ²½μš°μ™€ μ—†λŠ” κ²½μš°κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ°©ν–₯성이 μ—†λŠ” 간선은 두 정점을 μ–‘λ°©ν–₯으둜 μ—°κ²°ν•˜λŠ” 것을 μ˜λ―Έν•˜λ©°, λ°©ν–₯성이 μžˆλŠ” 간선은 ν•œ μ •μ μ—μ„œ λ‹€λ₯Έ μ •μ μœΌλ‘œμ˜ λ°©ν–₯을 가지고 μ—°κ²°λ©λ‹ˆλ‹€. λ°©ν–₯성이 μžˆλŠ” 간선은 ν™”μ‚΄ν‘œλ‘œ ν‘œμ‹œλ˜κ³ , λ°©ν–₯성이 μ—†λŠ” 간선은 μ„ μœΌλ‘œ ν‘œμ‹œλ©λ‹ˆλ‹€.

λ˜ν•œ, 간선은 κ°€μ€‘μΉ˜(Weight)λΌλŠ” 값이 할당될 수 μžˆμŠ΅λ‹ˆλ‹€. κ°€μ€‘μΉ˜λŠ” κ°„μ„ μ˜ μ€‘μš”λ„λ₯Ό λ‚˜νƒ€λ‚΄λ©°, 예λ₯Ό λ“€μ–΄ λ„λ‘œ λ„€νŠΈμ›Œν¬μ—μ„œ 각 λ„λ‘œμ˜ κΈΈμ΄λ‚˜ μ†Œμš” μ‹œκ°„μ„ κ°€μ€‘μΉ˜λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜ν”„μ˜ ꡬ성 μš”μ†ŒμΈ 정점과 간선은 ν•¨κ»˜ μ‚¬μš©λ˜μ–΄ λ‹€μ–‘ν•œ κ·Έλž˜ν”„ ν˜•νƒœμ™€ 관계λ₯Ό ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 κ·Έλž˜ν”„λŠ” μ‹€μ œ μ„Έκ³„μ˜ λ‹€μ–‘ν•œ 문제λ₯Ό λͺ¨λΈλ§ν•˜κ³  ν•΄κ²°ν•˜λŠ” 데에 μ‚¬μš©λ©λ‹ˆλ‹€.

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

κ·Έλž˜ν”„μ—λŠ” λ‹€μ–‘ν•œ μ’…λ₯˜κ°€ 있으며, κ·Έλž˜ν”„μ˜ ꡬ성과 νŠΉμ„±μ— 따라 λ‹€μ–‘ν•œ 이름과 νŠΉμ§•μ΄ λΆ€μ—¬λ©λ‹ˆλ‹€. μ΄λ²ˆμ—λŠ” λͺ‡ 가지 μ£Όμš”ν•œ κ·Έλž˜ν”„μ˜ μ’…λ₯˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

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

무방ν–₯ κ·Έλž˜ν”„λŠ” 간선에 λ°©ν–₯성이 μ—†λŠ” κ·Έλž˜ν”„μž…λ‹ˆλ‹€. 즉, 두 정점을 μ—°κ²°ν•˜λŠ” 간선은 μ–‘λ°©ν–₯으둜 이동이 κ°€λŠ₯ν•˜λ©°, 이λ₯Ό 톡해 정점듀 μ‚¬μ΄μ˜ μ–‘λ°©ν–₯ 관계λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 친ꡬ 관계λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ†Œμ…œ λ„€νŠΈμ›Œν¬ κ·Έλž˜ν”„λŠ” 무방ν–₯ κ·Έλž˜ν”„λ‘œ ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

λ°©ν–₯ κ·Έλž˜ν”„λŠ” 간선에 λ°©ν–₯성이 μžˆλŠ” κ·Έλž˜ν”„μž…λ‹ˆλ‹€. 즉, 두 정점을 μ—°κ²°ν•˜λŠ” 간선은 ν•œ λ°©ν–₯으둜만 이동이 κ°€λŠ₯ν•˜λ©°, 이λ₯Ό 톡해 정점듀 μ‚¬μ΄μ˜ 단방ν–₯ 관계λ₯Ό ν‘œν˜„ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ„λ‘œ λ„€νŠΈμ›Œν¬μ—μ„œ λ„μ‹œμ™€ λ„μ‹œλ₯Ό μ—°κ²°ν•˜λŠ” λ„λ‘œλŠ” λ°©ν–₯ κ·Έλž˜ν”„λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.

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

κ°€μ€‘μΉ˜ κ·Έλž˜ν”„λŠ” 간선에 κ°€μ€‘μΉ˜(Weight)λΌλŠ” 값을 κ°€μ§€λŠ” κ·Έλž˜ν”„μž…λ‹ˆλ‹€. 각 κ°„μ„ μ—λŠ” μ€‘μš”λ„λ‚˜ 거리 λ“±κ³Ό 같은 κ°€μ€‘μΉ˜κ°€ ν• λ‹Ήλ˜μ–΄ 있으며, 이λ₯Ό 톡해 κ°„μ„ μ˜ μ†μ„±μ΄λ‚˜ 정점과 정점 μ‚¬μ΄μ˜ 관계λ₯Ό λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λ„λ‘œ λ„€νŠΈμ›Œν¬ κ·Έλž˜ν”„μ—μ„œ 각 λ„λ‘œμ˜ κΈΈμ΄λ‚˜ μ†Œμš” μ‹œκ°„μ„ κ°€μ€‘μΉ˜λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3.4 사이클 κ·Έλž˜ν”„ (Cyclic Graph)

사이클 κ·Έλž˜ν”„λŠ” μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ 사이클을 κ°€μ§€λŠ” κ·Έλž˜ν”„μž…λ‹ˆλ‹€. 사이클은 ν•œ μ •μ μ—μ„œ μ‹œμž‘ν•˜μ—¬ λ‹€μ‹œ κ·Έ μ •μ μœΌλ‘œ λŒμ•„μ˜€λŠ” 경둜λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 사이클 κ·Έλž˜ν”„λŠ” 일뢀 λ¬Έμ œμ—μ„œ λ¬΄ν•œ 반볡이 λ°œμƒν•  수 μžˆμœΌλ―€λ‘œ μ£Όμ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€.

3.5 λΉ„μˆœν™˜ κ·Έλž˜ν”„ (Acyclic Graph)

λΉ„μˆœν™˜ κ·Έλž˜ν”„λŠ” 사이클을 가지지 μ•ŠλŠ” κ·Έλž˜ν”„μž…λ‹ˆλ‹€. κ°„μ„ λ“€μ˜ 연결관계에 μˆœν™˜μ„±μ΄ μ—†μœΌλ―€λ‘œ μ–΄λ– ν•œ μ •μ μ—μ„œ μ‹œμž‘ν•˜μ—¬ λ‹€μ‹œ κ·Έ μ •μ μœΌλ‘œ λŒμ•„μ˜€λŠ” 사이클이 μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 계측 ꡬ쑰λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 트리(Tree)λŠ” λΉ„μˆœν™˜ κ·Έλž˜ν”„μ˜ μΌμ’…μž…λ‹ˆλ‹€.

μœ„μ™€ 같은 λ‹€μ–‘ν•œ μ’…λ₯˜μ˜ κ·Έλž˜ν”„λŠ” 각각 νŠΉμ§•κ³Ό ν™œμš© λΆ„μ•Όκ°€ λ‹€λ₯΄λ©°, μ•Œκ³ λ¦¬μ¦˜κ³Ό 데이터 ꡬ쑰에 μ μš©λ˜λŠ” 방법도 λ‹€μ–‘ν•˜κ²Œ μ‘΄μž¬ν•©λ‹ˆλ‹€. μ μ ˆν•œ κ·Έλž˜ν”„μ˜ μ’…λ₯˜λ₯Ό μ„ νƒν•˜κ³  ν™œμš©ν•¨μœΌλ‘œμ¨, λ‹€μ–‘ν•œ ν˜„μ‹€ μ„Έκ³„μ˜ 문제λ₯Ό κ·Έλž˜ν”„λ‘œ λͺ¨λΈλ§ν•˜κ³  ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4. κ·Έλž˜ν”„μ˜ ν™œμš© λΆ„μ•Ό

κ·Έλž˜ν”„λŠ” λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ 널리 ν™œμš©λ˜λ©°, μ‹€μ œλ‘œ κ·Έλž˜ν”„ 이둠은 λ§Žμ€ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데에 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λ²ˆμ—λŠ” κ·Έλž˜ν”„κ°€ μ–΄λ–€ λΆ„μ•Όμ—μ„œ ν™œμš©λ˜λŠ”μ§€ μ•Œμ•„λ³΄λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€.

4.1 μ†Œμ…œ λ„€νŠΈμ›Œν¬ 뢄석

κ·Έλž˜ν”„λŠ” μ†Œμ…œ λ„€νŠΈμ›Œν¬ 뢄석에 맀우 μœ μš©ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€. μ†Œμ…œ λ„€νŠΈμ›Œν¬λŠ” μ‚¬λžŒλ“€μ΄ μƒν˜Έ μž‘μš©ν•˜λŠ” λ„€νŠΈμ›Œν¬λ₯Ό μ˜λ―Έν•˜λ©°, κ·Έ μ€‘μ—μ„œλ„ κ·Έλž˜ν”„ ꡬ쑰λ₯Ό κ°€μ§€λŠ” λ„€νŠΈμ›Œν¬λ₯Ό λΆ„μ„ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. κ·Έλž˜ν”„λ₯Ό 톡해 μ†Œμ…œ λ„€νŠΈμ›Œν¬μ—μ„œμ˜ μΉœλ°€λ„, 영ν–₯λ ₯, ν—ˆλΈŒ λ“± λ‹€μ–‘ν•œ νŠΉμ„±μ„ 뢄석할 수 μžˆμŠ΅λ‹ˆλ‹€.

4.2 λ„λ‘œ λ„€νŠΈμ›Œν¬ μ΅œμ ν™”

λ„λ‘œ λ„€νŠΈμ›Œν¬ μ΅œμ ν™”λŠ” λ„λ‘œλ‚˜ ꡐ톡 λ„€νŠΈμ›Œν¬μ—μ„œ μ΅œλ‹¨ 경둜, μ΅œμ†Œ λΉ„μš©, 졜적 λ ˆμ΄μ•„μ›ƒ 등을 μ°ΎλŠ” 문제λ₯Ό ν•΄κ²°ν•˜λŠ” λΆ„μ•Όμž…λ‹ˆλ‹€. κ·Έλž˜ν”„λ₯Ό 톡해 λ„λ‘œμ™€ λ„μ‹œλ₯Ό 정점, λ„λ‘œλ₯Ό κ°„μ„ μœΌλ‘œ ν‘œν˜„ν•˜κ³ , κ°€μ€‘μΉ˜λ₯Ό κ±°λ¦¬λ‚˜ μ†Œμš” μ‹œκ°„μœΌλ‘œ μ„€μ •ν•˜μ—¬ 졜적 경둜λ₯Ό νƒμƒ‰ν•˜κ³  문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4.3 μ „λ ₯ λ„€νŠΈμ›Œν¬ 뢄석

μ „λ ₯ λ„€νŠΈμ›Œν¬λŠ” μ „κΈ° κ³΅κΈ‰λ§μ΄λ‚˜ μ „κΈ° νšŒλ‘œμ™€ 같이 μ „λ ₯ μ‹œμŠ€ν…œμ„ κ΅¬μ„±ν•˜λŠ” λ„€νŠΈμ›Œν¬λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. μ „λ ₯ λ„€νŠΈμ›Œν¬ λΆ„μ„μ—μ„œλŠ” κ·Έλž˜ν”„λ₯Ό μ‚¬μš©ν•˜μ—¬ μ „λ ₯의 흐름, λΆ€ν•˜ λΆ„λ°°, μž₯μ•  μ‹œμ˜ μ•ˆμ •μ„± 등을 λΆ„μ„ν•˜κ³  μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

4.4 μ›Ή κ·Έλž˜ν”„ 뢄석

μ›Ή κ·Έλž˜ν”„ 뢄석은 μ›Ή νŽ˜μ΄μ§€λ“€κ³Ό κ·Έλ“€ κ°„μ˜ 링크 관계λ₯Ό λΆ„μ„ν•˜λŠ” λΆ„μ•Όμž…λ‹ˆλ‹€. κ·Έλž˜ν”„λ₯Ό 톡해 μ›Ή μ‚¬μ΄νŠΈμ˜ ꡬ쑰, μ›Ή νŽ˜μ΄μ§€μ˜ μ€‘μš”λ„, νŽ˜μ΄μ§€ κ°„μ˜ κ΄€λ ¨μ„± 등을 λΆ„μ„ν•˜μ—¬ 검색 μ—”μ§„μ˜ 검색 κ²°κ³Ό μˆœμœ„, μ›Ή νŽ˜μ΄μ§€μ˜ μΆ”μ²œ 등에 ν™œμš©λ©λ‹ˆλ‹€.

4.5 λ¨Έμ‹  λŸ¬λ‹κ³Ό 데이터 λ§ˆμ΄λ‹

λ¨Έμ‹  λŸ¬λ‹κ³Ό 데이터 λ§ˆμ΄λ‹μ€ λ°μ΄ν„°μ—μ„œ νŒ¨ν„΄μ΄λ‚˜ κ·œμΉ™μ„ λ°œκ²¬ν•˜κ³  μ˜ˆμΈ‘μ„ μˆ˜ν–‰ν•˜λŠ” λΆ„μ•Όμž…λ‹ˆλ‹€. κ·Έλž˜ν”„λ₯Ό 톡해 데이터 κ°„μ˜ 관계λ₯Ό μ‹œκ°μ μœΌλ‘œ ν‘œν˜„ν•˜κ³ , κ·Έλž˜ν”„ 뢄석 μ•Œκ³ λ¦¬μ¦˜μ„ ν™œμš©ν•˜μ—¬ λ°μ΄ν„°μ˜ ꡬ쑰와 νŠΉμ§•μ„ νŒŒμ•…ν•˜κ³  예츑 λͺ¨λΈμ„ κ°œλ°œν•©λ‹ˆλ‹€.

μœ„μ™€ 같이 κ·Έλž˜ν”„λŠ” λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ ν™œμš©λ  수 있으며, κ·Έλž˜ν”„ 이둠과 μ•Œκ³ λ¦¬μ¦˜μ€ μ—¬λŸ¬ 가지 문제λ₯Ό 효과적으둜 ν•΄κ²°ν•˜λŠ” 데에 큰 도움을 μ€λ‹ˆλ‹€. κ·Έλž˜ν”„λ₯Ό μ΄ν•΄ν•˜κ³  ν™œμš©ν•˜λŠ” 것은 λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œμ˜ 성곡적인 문제 해결을 μœ„ν•΄ μ€‘μš”ν•œ κΈ°μˆ μž…λ‹ˆλ‹€.

5. κ·Έλž˜ν”„ μ•Œκ³ λ¦¬μ¦˜

κ·Έλž˜ν”„ μ•Œκ³ λ¦¬μ¦˜μ€ κ·Έλž˜ν”„μ˜ ꡬ쑰λ₯Ό λΆ„μ„ν•˜κ³ , κ·Έλž˜ν”„μ—μ„œμ˜ νƒμƒ‰μ΄λ‚˜ 경둜 μ°ΎκΈ°, μ΅œμ†Œ μ‹ μž₯ 트리 ꡬ성 λ“± λ‹€μ–‘ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. κ·Έλž˜ν”„ μ•Œκ³ λ¦¬μ¦˜μ€ λ‹€μ–‘ν•œ μ’…λ₯˜κ°€ 있으며, 각각의 μ•Œκ³ λ¦¬μ¦˜μ€ νŠΉμ •ν•œ κ·Έλž˜ν”„μ˜ νŠΉμ„±μ— 맞게 μ„€κ³„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

5.1 깊이 μš°μ„  탐색 (Depth-First Search, DFS)

깊이 μš°μ„  탐색은 κ·Έλž˜ν”„μ˜ λͺ¨λ“  정점을 νƒμƒ‰ν•˜λ©΄μ„œ κ·Έλž˜ν”„μ˜ ꡬ쑰λ₯Ό νŒŒμ•…ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. ν•œ μ •μ μ—μ„œ μ‹œμž‘ν•˜μ—¬ κ°€λŠ₯ν•œ ν•œ κΉŠμ΄κΉŒμ§€ νƒμƒ‰ν•œ ν›„, 더 이상 갈 수 없을 λ•ŒλŠ” 이전 λ‹¨κ³„λ‘œ λŒμ•„κ°€ λ‹€λ₯Έ κ°€λŠ₯ν•œ 경둜λ₯Ό νƒμƒ‰ν•©λ‹ˆλ‹€. DFSλŠ” μž¬κ·€μ μΈ λ°©μ‹μœΌλ‘œ κ΅¬ν˜„λ˜λ©°, 트리의 μ „μœ„ μˆœνšŒμ™€ μœ μ‚¬ν•œ κ²°κ³Όλ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

5.2 λ„ˆλΉ„ μš°μ„  탐색 (Breadth-First Search, BFS)

λ„ˆλΉ„ μš°μ„  탐색은 κ·Έλž˜ν”„μ—μ„œ κ°€κΉŒμš΄ 정점뢀터 νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. μ‹œμž‘ μ •μ μ—μ„œ μΈμ ‘ν•œ 정점듀을 큐에 μΆ”κ°€ν•˜κ³  ν•˜λ‚˜μ”© κΊΌλ‚΄μ–΄ ν•΄λ‹Ή μ •μ μ˜ μΈμ ‘ν•œ 정점듀을 λ°©λ¬Έν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€. BFSλŠ” 큐λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„λ©λ‹ˆλ‹€. BFSλ₯Ό 톡해 κ·Έλž˜ν”„μ—μ„œ μ΅œλ‹¨ 경둜λ₯Ό μ°Ύκ±°λ‚˜, μ •μ λ“€μ˜ 거리λ₯Ό 계산할 수 μžˆμŠ΅λ‹ˆλ‹€.

5.3 μ΅œμ†Œ μ‹ μž₯ 트리 (Minimum Spanning Tree, MST)

μ΅œμ†Œ μ‹ μž₯ νŠΈλ¦¬λŠ” κ°€μ€‘μΉ˜ κ·Έλž˜ν”„μ—μ„œ λͺ¨λ“  정점을 ν¬ν•¨ν•˜λ©΄μ„œ κ·Έ κ°€μ€‘μΉ˜μ˜ 합이 μ΅œμ†ŒμΈ νŠΈλ¦¬μž…λ‹ˆλ‹€. 주둜 Kruskal μ•Œκ³ λ¦¬μ¦˜κ³Ό Prim μ•Œκ³ λ¦¬μ¦˜μ΄ μ‚¬μš©λ˜λ©°, 각각 간선을 κΈ°μ€€μœΌλ‘œ μ„ νƒν•˜κ±°λ‚˜ 정점을 κΈ°μ€€μœΌλ‘œ μ„ νƒν•˜λŠ” λ°©μ‹μœΌλ‘œ λ™μž‘ν•©λ‹ˆλ‹€. MSTλŠ” λ„€νŠΈμ›Œν¬ 섀계, λ„λ‘œ λ„€νŠΈμ›Œν¬ μ΅œμ ν™” 등에 μœ μš©ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€.

5.4 μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜ (Shortest Path Algorithms)

μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜μ€ κ·Έλž˜ν”„μ—μ„œ κ°€μž₯ 짧은 경둜λ₯Ό μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜κ³Ό 벨만-ν¬λ“œ μ•Œκ³ λ¦¬μ¦˜μ΄ 주둜 μ‚¬μš©λ˜λ©°, 각각 단일 좜발점과 음의 κ°€μ€‘μΉ˜λ₯Ό κ°€μ§€λŠ” 간선을 λ‹€λ£° 수 μžˆμŠ΅λ‹ˆλ‹€. μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜μ€ λ„€νŠΈμ›Œν¬ λΌμš°νŒ…, κΈΈ μ°ΎκΈ°, GPS 경둜 탐색 등에 ν™œμš©λ©λ‹ˆλ‹€.

5.5 κ·Έλž˜ν”„ 컬러링 (Graph Coloring)

κ·Έλž˜ν”„ μ»¬λŸ¬λ§μ€ 정점듀에 μ μ ˆν•œ 색을 ν• λ‹Ήν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€. μΈμ ‘ν•œ 정점은 같은 색을 κ°€μ Έμ„œλŠ” μ•ˆλ˜λŠ” 쑰건을 λ§Œμ‘±ν•˜λ©΄μ„œ μ΅œμ†Œν•œμ˜ 색을 μ‚¬μš©ν•˜λŠ” 것이 λͺ©ν‘œμž…λ‹ˆλ‹€. κ·Έλž˜ν”„ μ»¬λŸ¬λ§μ€ μ‹œκ°„ν‘œ μž‘μ„±, 빼빼둜데이 문제 λ“±μ—μ„œ ν™œμš©λ©λ‹ˆλ‹€.

μœ„μ™€ 같이 κ·Έλž˜ν”„ μ•Œκ³ λ¦¬μ¦˜μ€ κ·Έλž˜ν”„μ˜ νŠΉμ„±κ³Ό ν•΄κ²°ν•˜κ³ μž ν•˜λŠ” λ¬Έμ œμ— 맞게 λ‹€μ–‘ν•œ λ°©μ‹μœΌλ‘œ μ„€κ³„λ©λ‹ˆλ‹€. μ•Œκ³ λ¦¬μ¦˜μ˜ 선택과 μ μš©μ€ 효율적인 κ·Έλž˜ν”„ 뢄석과 문제 해결을 μœ„ν•΄ μ€‘μš”ν•œ μš”μ†Œμ΄λ©°, λ‹€μ–‘ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ”λ°μ— 큰 도움을 μ€λ‹ˆλ‹€.

λŒ“κΈ€