ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๐Ÿ’ก Introduction
๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Dijkstra's algorithm) ์€ ํƒ์š•๋ฒ• (Greedy) ์˜ ๋Œ€ํ‘œ์ ์ธ ์‘์šฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ๋ฅผ ์˜ˆ์‹œ ๊ทธ๋ž˜ํ”„๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•˜๊ณ , ๋‹ค์Œ ํฌ์ŠคํŠธ์™€ ๊ทธ ๋‹ค์Œ ํฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•ด ์ง์ ‘ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณธ๋‹ค.

๐Ÿ” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„ (Weighted Graph, ์ •์ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„) ์—์„œ ๊ฐ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ฐ”๋กœ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

๐Ÿ“ƒ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ

๋จผ์ €, ์•„๋ž˜ ์‚ฌ์ง„์˜ ์™ผ์ชฝ์— ๋†“์—ฌ์ง„ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ด ๊ทธ๋ž˜ํ”„๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์˜ค๋ฅธ์ชฝ ํ‘œ์— ์“ฐ์—ฌ์ง„ ๋‘ ์ข…๋ฅ˜์˜ ์ •๋ณด๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. A ๊ฐ€ ์‹œ์ž‘์ ์ผ ๋•Œ, A ๋Š” ์ž๊ธฐ ์ž์‹ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ์ด๋ฏ€๋กœ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ 0์ด๊ณ , ๋‚˜๋จธ์ง€ ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” ์•„์ง ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทนํ•œ ๊ฐ’() ์„ ๊ฐ€์ง„๋‹ค. ๊ฑฐ๋ฆฌ ์™ธ์—๋„ ๋ฐฉ๋ฌธํ•œ / ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ๋“ค์˜ ๋ชฉ๋ก visited / unvisited ์™€ ํ˜„์žฌ ๋ฐฉ๋ฌธ ์ค‘์ธ ์ •์  current ๋ฅผ ์ถ”์ ํ•œ๋‹ค.

์™ผ์ชฝ์— ๊ทธ๋ ค์ง„ ๊ฒƒ์€ ์˜ˆ์‹œ ๊ทธ๋ž˜ํ”„์ด๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ๋Š” ์˜ค๋ฅธ์ชฝ ํ‘œ๋กœ ๋‚˜ํƒ€๋‚ธ ๋‘ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ ํ•˜์—ฌ ํ™œ์šฉํ•œ๋‹ค.

 

1๋ฒˆ ๋‹จ๊ณ„๋Š” ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ๋“ค ์ค‘ ์‹œ์ž‘์ ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ ์„ ๋ฐฉ๋ฌธํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค.

์ฒ˜์Œ์—๋Š” A๊ฐ€ ๊ฑฐ๋ฆฌ 0 ์„ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ๊ฐ€๊น๋‹ค.

A ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ๋‹ค. ํ˜„ ์ƒํƒœ์— ๋”ฐ๋ผ ํ‘œ ๋‚ด์šฉ๋„ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

2๋ฒˆ ๋‹จ๊ณ„๋Š” ํ˜„์žฌ ๋ฐฉ๋ฌธ ์ค‘์ธ ์ •์ ์—์„œ ์•„์ง ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ์ด์›ƒ ์ •์ ๋“ค๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ํ™•์ธํ•˜์—ฌ ๋งŒ์•ฝ ํ˜„์žฌ๊นŒ์ง€ ์•Œ๋ ค์ง„ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ์ž‘์„ ์‹œ์—๋งŒ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ์ง€๊ธˆ์€ ๋ชจ๋‘ ๋ฌดํ•œ๋Œ€() ๋ณด๋‹ค๋Š” ๊ฐ€๊นŒ์šด ๊ฑฐ๋ฆฌ์ด๋ฏ€๋กœ ๋ชจ๋‘ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

๊ฑฐ๋ฆฌ๋Š” ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ ํ˜„์žฌ ๋ฐฉ๋ฌธํ•˜๋Š” ์ค‘์ธ ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ +  ํ˜„์žฌ ๋ฐฉ๋ฌธ์ค‘์ธ ์ •์ ๋ถ€ํ„ฐ ์ด์›ƒ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ์ด๋‹ค.

B ์™€ C ์˜ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜์—ˆ๋‹ค. ๊ฐ๊ฐ 0 + 3 = 3 ๊ณผ 0 + 5 = 5 ๋กœ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๋‹ค.

 

๊ทธ ๋‹ค์Œ๋ถ€ํ„ฐ๋Š” 1๋ฒˆ๊ณผ 2๋ฒˆ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.

1๋ฒˆ ๋‹จ๊ณ„์ธ ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์  ์ค‘ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ ์„ ๋ฐฉ๋ฌธํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ํ˜„์žฌ๋Š” B ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  2๋ฒˆ ๋‹จ๊ณ„์ธ ๋ฐฉ๋ฌธํ•œ ์ •์ ์˜ ์•„์ง ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ์ด์›ƒ๋“ค์˜ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

์œ„์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ํ˜„์žฌ ๋ฐฉ๋ฌธ์ค‘์ธ B ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ 3 + B ๋ถ€ํ„ฐ D ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ 4 = 7 ๋กœ ์—…๋ฐ์ดํŠธ๋œ๋‹ค.

7์€ ๋ฌดํ•œ๋Œ€(∞) ๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

ํ˜„์žฌ B์˜ ์ด์›ƒ ์ค‘ ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ์ •์ ์€ D ์ด๋ฏ€๋กœ D์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธ ํ–ˆ๋‹ค.

 

1๋ฒˆ๊ณผ 2๋ฒˆ์„ ํ•œ ๋ฒˆ์”ฉ ๊ฑฐ์ณค์œผ๋‹ˆ, ๋˜ 1๋ฒˆ ๋‹จ๊ณ„๋กœ ์™€์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ๋“ค ์ค‘ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ •์ ์„ ๋ฐฉ๋ฌธํ•œ๋‹ค.

์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ B ๋‹ค์Œ์œผ๋กœ ๊ฐ€๊นŒ์šด ์ •์ ์ธ C ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ๋‹ค.

 

2๋ฒˆ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ์ด์›ƒ๋“ค ์ค‘ ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ์ •์ ๊นŒ์ง€์˜ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, ๋งŒ์•ฝ ์ง€๊ธˆ๊นŒ์ง€ ์•Œ๋ ค์ง„ ๊ฑฐ๋ฆฌ๊ฐ€ ์ด๋ฏธ ๋” ์ž‘๋‹ค๋ฉด ์—…๋ฐ์ดํŠธ ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์ด๋ฏธ ์•Œ๋ ค์ง„ ๊ฑฐ๋ฆฌ์ธ 7์ด ์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ๊ฑฐ๋ฆฌ 12๋ณด๋‹ค ์ž‘์•„์„œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ง„ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค.

์‹œ์ž‘์  A ๋ถ€ํ„ฐ C ๋ฅผ ๊ฑฐ์ณ D ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋Š” 5 + 7 = 12 ์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์•Œ๋ ค์ง„ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ๋” ์งง์ง€๊ฐ€ ์•Š์•„์„œ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

 

๋˜ 1๋ฒˆ ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‚จ์€ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ธ D ๋ฅผ ๋ฐฉ๋ฌธํ•œ๋‹ค.

์ด์ œ์„œ์•ผ D ์— ๋„๋‹ฌํ–ˆ๋‹ค.

 

2๋ฒˆ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ด์›ƒ๋“ค์€ ๋ชจ๋‘ ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ์–ด์„œ ๊ฑฐ๋ฆฌ๋ฅผ ํŒŒ์•…ํ•ด์•ผ ํ•  ์ •์ ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ „์ฒด์—์„œ ๋ดค๋Š”๋ฐ ์ด์ œ๋Š” ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ •์ ์ด ์—†๋‹ค. ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค.

ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•  ๋•Œ์˜ ์ƒํƒœ์ด๋‹ค. visited ์— ๋ชจ๋“  ์ •์ ๋“ค์ด ๋“ค์–ด๊ฐ€์žˆ๊ณ , ๋ชจ๋“  ์ •์ ๋“ค์— ๋Œ€ํ•ด์„œ ์‹œ์ž‘์ ์œผ๋กœ๋ถ€ํ„ฐ์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์•˜๋‹ค.

 

๐Ÿ“Œ ๊ฒฐ๋ก 

์ด๋ ‡๊ฒŒ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜์—ฌ ์›๋ž˜ ๋ชฉํ‘œํ–ˆ๋˜ ๋” ์ด์ƒ ์•ž์œผ๋กœ ๊ฐˆ ๊ธธ์ด ์—†๋Š” ๋งˆ์ง€๋ง‰ ์ •์ , D ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ค€๋น„๋ฅผ ํ•ด๋ณด์ž.

 

์ถœ์ฒ˜

https://www.linkedin.com/learning/algorithmic-thinking-with-python-foundations/dijkstra-s-algorithm?autoplay=true&resume=false&u=62535084 

 

Dijkstra's algorithm - Python ๋™์˜์ƒ ํŠœํ† ๋ฆฌ์–ผ | LinkedIn ์˜จ๋ผ์ธํด๋ž˜์Šค(์ด์ „ ์ด๋ฆ„: Lynda.com)

This video introduces Dijkstra's algorithm for finding the shortest path in a graph. Learn how the algorithm works separate from its implementation in a programming language.

www.linkedin.com

 

๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ