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

μ—°κ²°λœ 데이터 κ΅¬μ‘°μ—μ„œ λ³΅μž‘ν•œ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ„ νƒμƒ‰ν•˜μ„Έμš”. BFS와 DFS둜 κ·Έλž˜ν”„ 순회λ₯Ό λ§ˆμŠ€ν„°ν•˜κ³ , λ‹€μ΅μŠ€νŠΈλΌμ™€ 벨만-ν¬λ“œ μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ΅œλ‹¨ 경둜λ₯Ό 찾으며, 크루슀칼과 ν”„λ¦Ό μ•Œκ³ λ¦¬μ¦˜μœΌλ‘œ μ΅œμ†Œ μ‹ μž₯ 트리λ₯Ό κ³„μ‚°ν•˜μ„Έμš”. GPS λ‚΄λΉ„κ²Œμ΄μ…˜, μ†Œμ…œ λ„€νŠΈμ›Œν¬, λ„€νŠΈμ›Œν¬ λΌμš°νŒ…κ³Ό 같은 μ‹€μ œ λ¬Έμ œμ— μ΄λŸ¬ν•œ κ°œλ…μ„ μ μš©ν•˜μ„Έμš”.

13 μ•Œκ³ λ¦¬μ¦˜

λ„ˆλΉ„ μš°μ„  탐색 (BFS)

Intermediate

κ·Έλž˜ν”„λ₯Ό λ ˆλ²¨λ³„λ‘œ νƒμƒ‰ν•˜μ—¬ 더 깊이 λ“€μ–΄κ°€κΈ° 전에 ν˜„μž¬ 깊이의 λͺ¨λ“  정점을 λ°©λ¬Έν•©λ‹ˆλ‹€. 큐λ₯Ό μ‚¬μš©ν•˜λ©° κ°€μ€‘μΉ˜κ°€ μ—†λŠ” κ·Έλž˜ν”„μ—μ„œ μ΅œλ‹¨ 경둜λ₯Ό μ°ΎλŠ” 데 μ΄μƒμ μž…λ‹ˆλ‹€. 미둜 ν•΄κ²°, μ†Œμ…œ λ„€νŠΈμ›Œν¬ 뢄석, λ…Έλ“œ κ°„ μ—°κ²° μ°ΎκΈ° λ“±μ˜ μ‘μš© ν”„λ‘œκ·Έλž¨μ΄ μžˆμŠ΅λ‹ˆλ‹€.

O(V + E)
O(V)
graphtraversal
Start Learning

깊이 μš°μ„  탐색 (DFS)

Intermediate

μ—­μΆ”μ ν•˜κΈ° 전에 각 경둜λ₯Ό 따라 κ°€λŠ₯ν•œ ν•œ 깊이 λ“€μ–΄κ°€μ„œ κ·Έλž˜ν”„λ₯Ό νƒμƒ‰ν•©λ‹ˆλ‹€. μŠ€νƒμ΄λ‚˜ μž¬κ·€λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„λ˜μ–΄ μž¬κ·€μ  λ¬Έμ œμ— μžμ—°μŠ€λŸ½μŠ΅λ‹ˆλ‹€. 경둜 μ°ΎκΈ°, μˆœν™˜ 감지, μœ„μƒ μ •λ ¬, 미둜 생성에 μ‚¬μš©λ©λ‹ˆλ‹€.

O(V + E)
O(V)
graphtraversal
Start Learning

λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜

Advanced

κ°€μ€‘μΉ˜κ°€ μžˆλŠ” κ·Έλž˜ν”„μ—μ„œ 단일 μ†ŒμŠ€ μ •μ μ—μ„œ λ‹€λ₯Έ λͺ¨λ“  μ •μ κΉŒμ§€μ˜ μ΅œλ‹¨ 경둜λ₯Ό μ°ΎμŠ΅λ‹ˆλ‹€. GPS λ‚΄λΉ„κ²Œμ΄μ…˜ μ‹œμŠ€ν…œκ³Ό λ„€νŠΈμ›Œν¬ λΌμš°νŒ… ν”„λ‘œν† μ½œμ„ μ§€μ›ν•©λ‹ˆλ‹€. μš°μ„ μˆœμœ„ 큐λ₯Ό μ‚¬μš©ν•˜λŠ” νƒμš•μ  μ ‘κ·Όλ²•μœΌλ‘œ μŒμˆ˜κ°€ μ•„λ‹Œ κ°€μ€‘μΉ˜μ— 효율적으둜 μž‘λ™ν•©λ‹ˆλ‹€.

O((V + E) log V)
O(V)
graphshortest-path
Start Learning

A* 탐색 μ•Œκ³ λ¦¬μ¦˜

Advanced

νœ΄λ¦¬μŠ€ν‹±μ„ μ‚¬μš©ν•˜μ—¬ μ΅œλ‹¨ 경둜λ₯Ό μ°ΎλŠ” μ΅œμ„  μš°μ„  탐색 μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. f(n) = g(n) + h(n)을 μ‚¬μš©ν•˜μ—¬ λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜κ³Ό νƒμš•μ  μ΅œμ„  μš°μ„  탐색을 κ²°ν•©ν•©λ‹ˆλ‹€. κ²Œμž„, λ‘œλ΄‡ 곡학, GPS λ‚΄λΉ„κ²Œμ΄μ…˜μ˜ 효율적인 경둜 탐색에 널리 μ‚¬μš©λ©λ‹ˆλ‹€.

O(E)
O(V)
graphpathfinding
Start Learning

크루슀칼 μ•Œκ³ λ¦¬μ¦˜

Advanced

κ°€μ€‘μΉ˜ 무방ν–₯ κ·Έλž˜ν”„μ˜ μ΅œμ†Œ μ‹ μž₯ 트리(MST)λ₯Ό μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. 간선을 κ°€μ€‘μΉ˜ 순으둜 μ •λ ¬ν•˜κ³  사이클을 ν˜•μ„±ν•˜μ§€ μ•ŠλŠ” κ°„μ„ λ§Œ μΆ”κ°€ν•˜λŠ” νƒμš•μ  접근법을 μ‚¬μš©ν•©λ‹ˆλ‹€. 효율적인 사이클 감지λ₯Ό μœ„ν•΄ Union-Findλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ 섀계와 ν΄λŸ¬μŠ€ν„°λ§μ— ν•„μˆ˜μ μž…λ‹ˆλ‹€.

O(E log E)
O(V)
graphmst
Start Learning

ν”„λ¦Ό μ•Œκ³ λ¦¬μ¦˜

Intermediate

μ‹œμž‘ μ •μ μ—μ„œ 트리λ₯Ό μ„±μž₯μ‹œμΌœ μ΅œμ†Œ μ‹ μž₯ 트리(MST)λ₯Ό μ°ΎλŠ” μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. 항상 트리 λ‚΄λΆ€ 정점과 μ™ΈλΆ€ 정점을 μ—°κ²°ν•˜λŠ” μ΅œμ†Œ κ°€μ€‘μΉ˜ 간선을 μΆ”κ°€ν•©λ‹ˆλ‹€. 효율적인 κ°„μ„  선택을 μœ„ν•΄ μš°μ„ μˆœμœ„ 큐λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ°€μ§‘ κ·Έλž˜ν”„μ— μ΄μƒμ μž…λ‹ˆλ‹€.

O(E log V)
O(V)
graphmst
Start Learning

μœ„μƒ μ •λ ¬

Intermediate

λ°©ν–₯ λΉ„μˆœν™˜ κ·Έλž˜ν”„(DAG)의 정점을 λͺ¨λ“  κ°„μ„  uβ†’v에 λŒ€ν•΄ uκ°€ v보닀 μ•žμ— μ˜€λ„λ‘ μ •λ ¬ν•©λ‹ˆλ‹€. DFS 기반 접근법을 μ‚¬μš©ν•©λ‹ˆλ‹€. μ˜μ‘΄μ„± ν•΄κ²°, λΉŒλ“œ μ‹œμŠ€ν…œ, κ³Όλͺ© μˆ˜κ°• μˆœμ„œ 결정에 ν•„μˆ˜μ μž…λ‹ˆλ‹€.

O(V + E)
O(V)
graphdag
Start Learning

νŽ˜μ΄μ§€λž­ν¬

Advanced

링크 ꡬ쑰둜 μ›Ή νŽ˜μ΄μ§€ μˆœμœ„λ₯Ό λ§€κΈ°λŠ” κ΅¬κΈ€μ˜ μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. 반볡적으둜 μ€‘μš”λ„ 점수λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.

O(iterations Γ— (V + E))
O(V)
graphranking
Start Learning

κ·Έλž˜ν”„ μˆœν™˜ 감지

Intermediate

μž¬κ·€ μŠ€νƒμ„ μ‚¬μš©ν•œ DFS둜 λ°©ν–₯ κ·Έλž˜ν”„μ˜ μˆœν™˜μ„ κ°μ§€ν•©λ‹ˆλ‹€. 운영 체제의 μˆœν™˜ μ˜μ‘΄μ„± 식별, ꡐ착 μƒνƒœ 감지, μœ„μƒ 정렬을 μœ„ν•œ DAG 검증에 μ€‘μš”ν•©λ‹ˆλ‹€. 순회 쀑 정점 μƒνƒœλ₯Ό μΆ”μ ν•˜κΈ° μœ„ν•΄ 3색 ν‘œμ‹œ(흰색-νšŒμƒ‰-검정색)λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

O(V + E)
O(V)
graphdfs
Start Learning

벨만-ν¬λ“œ μ•Œκ³ λ¦¬μ¦˜

Advanced

음수 κ°€μ€‘μΉ˜λ₯Ό μ²˜λ¦¬ν•˜κ³  음수 μˆœν™˜μ„ κ°μ§€ν•˜λŠ” 단일 μ†ŒμŠ€ μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. λͺ¨λ“  간선을 V-1번 μ™„ν™”ν•˜μ—¬ 음수 κ°€μ€‘μΉ˜μ—λ„ μ •ν™•ν•œ 거리λ₯Ό 보μž₯ν•©λ‹ˆλ‹€. 톡화 차읡 거래 감지, λ‹€μ–‘ν•œ λΉ„μš©μ˜ λ„€νŠΈμ›Œν¬ λΌμš°νŒ…, λ‹€μ΅μŠ€νŠΈλΌ μ•Œκ³ λ¦¬μ¦˜μ΄ μ‹€νŒ¨ν•˜λŠ” 상황에 ν•„μˆ˜μ μž…λ‹ˆλ‹€. 속도λ₯Ό μœ μ—°μ„±κ³Ό κ΅ν™˜ν•©λ‹ˆλ‹€.

O(V Γ— E)
O(V)
graphshortest-path
Start Learning

ν”Œλ‘œμ΄λ“œ-μ›Œμ…œ μ•Œκ³ λ¦¬μ¦˜

Advanced

동적 ν”„λ‘œκ·Έλž˜λ°μ„ μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  정점 쌍 κ°„μ˜ μ΅œλ‹¨ 경둜λ₯Ό μ°ΎλŠ” λͺ¨λ“  쌍 μ΅œλ‹¨ 경둜 μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. O(VΒ³) λ³΅μž‘λ„λ‘œ λͺ¨λ“  정점을 쀑간 μ§€μ μœΌλ‘œ κ³ λ €ν•©λ‹ˆλ‹€. λ°€μ§‘ κ·Έλž˜ν”„, 좔이적 폐쇄 계산, κ·Έλž˜ν”„ 지름 찾기에 ν•„μˆ˜μ μž…λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ λΆ„μ„μ—μ„œ κΉŠμ€ μ‘μš©μ„ κ°€μ§„ κ°„λ‹¨ν•œ κ΅¬ν˜„μž…λ‹ˆλ‹€.

O(VΒ³)
O(VΒ²)
graphall-pairs-shortest-paths
Start Learning

크루슀칼 μ΅œμ†Œ μ‹ μž₯ 트리

Intermediate

Union-Find 자료 ꡬ쑰λ₯Ό μ‚¬μš©ν•˜μ—¬ 간선을 μ •λ ¬ν•˜κ³  μˆœν™˜μ„ λ§Œλ“€μ§€ μ•ŠμœΌλ©΄ μΆ”κ°€ν•˜μ—¬ MSTλ₯Ό μ°ΎλŠ” νƒμš• μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. O(E log E) λ³΅μž‘λ„λ‘œ ν¬μ†Œ κ·Έλž˜ν”„μ— μ΅œμ μž…λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ 섀계(λͺ¨λ“  λ…Έλ“œλ₯Ό μ—°κ²°ν•˜λŠ” μ΅œμ†Œ λΉ„μš©), ν΄λŸ¬μŠ€ν„°λ§ μ•Œκ³ λ¦¬μ¦˜, 회둜 μ„€κ³„μ˜ μ‘μš©μ΄ μžˆμŠ΅λ‹ˆλ‹€. μ •λ ¬κ³Ό Union-Find의 μš°μ•„ν•œ 톡합을 λ³΄μ—¬μ€λ‹ˆλ‹€.

O(E log E)
O(V)
graphminimum-spanning-tree
Start Learning

ν”„λ¦Ό μ΅œμ†Œ μ‹ μž₯ 트리

Intermediate

MSTλ₯Ό MSTκ°€ μ•„λ‹Œ 정점에 μ—°κ²°ν•˜λŠ” μ΅œμ†Œ κ°€μ€‘μΉ˜ 간선을 μΆ”κ°€ν•˜μ—¬ ν•œ λ²ˆμ— ν•œ 정점씩 MSTλ₯Ό μ„±μž₯μ‹œν‚€λŠ” νƒμš• μ•Œκ³ λ¦¬μ¦˜μž…λ‹ˆλ‹€. O(E log V) λ³΅μž‘λ„λ₯Ό μœ„ν•΄ μš°μ„ μˆœμœ„ 큐λ₯Ό μ‚¬μš©ν•˜λ©° λ°€μ§‘ κ·Έλž˜ν”„μ— μ΅œμ μž…λ‹ˆλ‹€. 인접 행렬에 λŒ€ν•΄ ν¬λ£¨μŠ€μΉΌλ³΄λ‹€ κ΅¬ν˜„μ΄ 더 κ°„λ‹¨ν•©λ‹ˆλ‹€. λ„€νŠΈμ›Œν¬ 섀계, 근사 μ•Œκ³ λ¦¬μ¦˜, νƒμš•μ  선택 μ΄ν•΄μ˜ μ‘μš©μ΄ μžˆμŠ΅λ‹ˆλ‹€.

O(E log V)
O(V)
graphminimum-spanning-tree
Start Learning

πŸ’‘ ν•™μŠ΅ 팁

기초λ₯Ό λ‹€μ§€κΈ° μœ„ν•΄ μ΄ˆκΈ‰ μ•Œκ³ λ¦¬μ¦˜λΆ€ν„° μ‹œμž‘ν•œ λ‹€μŒ, 쀑급 및 κ³ κΈ‰ 주제둜 μ§„ν–‰ν•˜μ„Έμš”. 각 μ•Œκ³ λ¦¬μ¦˜μ—λŠ” μΈν„°λž™ν‹°λΈŒ μ‹œκ°ν™”, λ³΅μž‘λ„ 뢄석, 그리고 μ—¬λŸ¬ μ–Έμ–΄μ˜ μ½”λ“œ μ˜ˆμ œκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.