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

728x90

๋“ค์–ด๊ฐ€๊ธฐ ์ „์—

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ์œ ํŠœ๋ธŒ์™€ ๋ธ”๋กœ๊ทธ๋ฅผ ๋ฐฉ๋ฌธํ–ˆ์—ˆ๋Š”๋ฐ ๋Œ€์ฒด๋กœ ์„ค๋ช…์ด ์–ด๋ ต๊ฑฐ๋‚˜ ์ƒ๋žต์ด ๋งŽ๋‹ค.. ์ฝ”๋“œ ์„ค๋ช…๋„ ์ž์„ธํ•˜์ง€ ์•Š์•„ ์•„์‰ฌ์›€์ด ์žˆ์—ˆ๋‹ค. (ํŠนํžˆ, ๋ธ”๋กœ๊ทธ์— ์žˆ๋Š” ํ‘œ๋‚˜ ๊ทธ๋ฆผ์€ ์™œ์ด๋ ‡๊ฒŒ ๋”ฑ๋”ฑํ•œ๊ฑธ๊นŒ.. ์ž˜ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์—๊ฒ ๊ฑฐ๋ถ€๊ฐ์ด ๋“ ๋‹ค)

์ง์ ‘ ํ•˜๋‚˜ํ•˜๋‚˜ ๊ทธ๋ ค๊ฐ€๋ณด๋ฉฐ ์ดํ•ดํ•œ ๋‚˜์˜ ๊นจ๋‹ฌ์Œ์„ ๋‹ค๋ฅธ ๋ถ„๋“ค๊ป˜ ์ž์„ธํ•˜๊ณ  ์‰ฝ๊ฒŒ, ๋งˆ์น˜ ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๋Š” ์–ด๋ฆฐ ์•„์ด์—๊ฒŒ ์„ค๋ช…ํ•˜๋“ฏ์ด ์„ค๋ช…ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์žŠ์–ด๋ฒ„๋ฆฌ๋Š” ๋ฏธ๋ž˜์˜ ๋‚˜๋ฅผ ์œ„ํ•˜์—ฌ ์ƒ์„ธํžˆ ๊ธฐ์ˆ ํ•ด๋ณด์•˜๋‹ค.

์ž์„ธํ•œ ์˜ˆ์‹œ๋ถ€ํ„ฐ ์ ์  ๊ณผ์ •์„ ์ถ”์ƒํ™”ํ•ด๋‚˜๊ฐ€๋ฏ€๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

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

๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ •์ (Vertex ๋˜๋Š” Node)์—์„œ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ, ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ์— ์‚ฌ์šฉ๋œ๋‹ค.

๊ทธ๋ž˜ํ”„ ๋ฐฉํ–ฅ์˜ ์œ ๋ฌด๋Š” ์ƒ๊ด€ ์—†์œผ๋‚˜, ๊ฐ„์„ (Edge)๋“ค ์ค‘ ๋‹จ ํ•˜๋‚˜๋ผ๋„ ๊ฐ€์ค‘์น˜๊ฐ€ ์Œ์ˆ˜์ด๋ฉด ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

ํ•ต์‹ฌ์€ ์ถœ๋ฐœ์ง€์—์„œ ๋„์ฐฉ์ง€๊นŒ์ง€์˜ ๊ฐ€์žฅ ์งง์€ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค!

 

์šฐ์„  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๊ฐ€ ์กด์žฌํ•˜๋‹ค๊ณ  ํ•˜์ž.

(์ด ๊ทธ๋ž˜ํ”„๋Š” 'EBS แ„…แ…ตแ†ผแ„แ…ณ แ„‰แ…ฉแ„‘แ…ณแ„แ…ณแ„‹แ…ฐแ„‹แ…ฅ แ„‰แ…ฆแ„‰แ…กแ†ผ, "แ„€แ…กแ„Œแ…กแ†ผ แ„ˆแ…กแ„…แ…ณแ†ซแ„€แ…ตแ†ฏแ„‹แ…ณแ†ฏ แ„Žแ…กแ†ฝแ„‹แ…กแ„…แ…ก, แ„Žแ…ฌแ„ƒแ…กแ†ซแ„€แ…งแ†ผแ„…แ…ฉ แ„‹แ…กแ†ฏแ„€แ…ฉแ„…แ…ตแ„Œแ…ณแ†ท"'์—์„œ ๋‚˜์˜ค๋Š” ๊ทธ๋ž˜ํ”„์™€ ๊ฐ™๋‹ค. ๋™์˜์ƒ ์„ค๋ช…์ด ๋“ฃ๊ณ  ์‹ถ์œผ๋ฉด ์ด ์ œ๋ชฉ์œผ๋กœ ์œ ํŠœ๋ธŒ์—์„œ ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด ์ดํ•ด์— ๋„์›€์ด ๋œ๋‹ค.)

 

์ถœ๋ฐœ์ง€๋Š” '์ง‘' ์ด๊ณ ,

๋„์ฐฉ์ง€๋Š” 'ํ•™๊ต' ์ด๋‹ค.

 

๊ทธ๋ž˜ํ”„

 

 

์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ๊ฐ ์œ„์น˜์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋กํ•  ํ‘œ๋ฅผ ํ•˜๋‚˜ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

ํŽธ์˜๋ฅผ ์œ„ํ•ด์„œ ์ด ํ‘œ๋ฅผ distance๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ๋‹ค.

distance

์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ์—๊ฒ ๊ทธ๋ž˜ํ”„์™€, distance๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค.

์•ž์œผ๋กœ ๊ฐ ๋…ธ๋“œ๋“ค์„ ๋Œ์•„๋‹ค๋‹ˆ๋ฉด์„œ

1. ๋ฐ”๋กœ ์ด์›ƒํ•œ ๋…ธ๋“œ๋“ค๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค. 

2. ์ง€๊ธˆ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ์™€ ๋น„๊ตํ•ด์„œ, ๋” ์ž‘์€ ๊ฐ’์„ distance์— ๋„ฃ์–ด์ค€๋‹ค.

์šฐ์„ ์€ ๊ฐ€์žฅ ์ฒ˜์Œ ๊ฑฐ๋ฆฌ๋ฅผ distance์— ๋„ฃ์„ ๋•Œ๋Š” ์–ด๋–ค ๊ฐ’์ด๋ผ๋„ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๊ฐ€์žฅ ํฐ ๊ฐ’์ธ ๋ฌดํ•œ๋Œ€๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด๋†“์ž.

 

์ถœ๋ฐœ์ง€์—์„œ ์ถœ๋ฐœ์ง€๊นŒ์ง€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€ 0์ด๋ฏ€๋กœ ์ง‘์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ 0์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ๋ฐฉ๋ฌธํ–ˆ๋˜ ๋…ธ๋“œ๋“ค์€ ์—ฐ๋‘์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•ด๋‘”๋‹ค. 

distance[์ง‘] = 0

Cycle 1

์šฐ์„  ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด๋ณด์ž.

ํ˜„์žฌ ๋…ธ๋“œ: ๋ฏธ์šฉ์‹ค

์ถœ๋ฐœ์ง€์˜ ์ด์›ƒ ๋…ธ๋“œ๋“ค

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ์ง‘์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ด์›ƒํ•œ ๋…ธ๋“œ๋“ค์€ '๋ฏธ์šฉ์‹ค', '์Šˆํผ๋งˆ์ผ“' '์˜์–ดํ•™์›'์ด๋‹ค.

๋นจ๊ฐ„์ƒ‰ ์„ ์ด ํ˜„์žฌ ์ด์›ƒํ•œ ๋…ธ๋“œ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฏธ์šฉ์‹ค์€ 5, ์Šˆํผ๋งˆ์ผ“์€ 10, ์˜์–ดํ•™์›์€ 9๋ฅผ ๊ฐ€์ง„๋‹ค.

์šฐ๋ฆฌ๋Š” distance์— ์ถœ๋ฐœ์ง€๋กœ๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๋“ค๋กœ ๊ฐ€๋Š” '์ตœ๋‹จ๊ฑฐ๋ฆฌ'๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ์žˆ์Œ์„ ์žŠ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.

์ง‘์„ ๊ฑฐ์ณ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€(์˜ˆ๋ฅผ๋“ค์–ด ๋ฏธ์šฉ์‹ค๊นŒ์ง€ ๊ฑฐ๋ฆฌ๊ฐ€ 5) ํ˜„์žฌ distance์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ(์˜ˆ๋ฅผ๋“ค์–ด ํ˜„์žฌ distance์—์„œ ๋ฏธ์šฉ์‹ค๊นŒ์ง€ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋Š” ๋ฌดํ•œ๋Œ€)๋ณด๋‹ค ์ž‘์œผ๋ฏ€๋กœ, distance ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•ด์ค€๋‹ค.

 

์ด์ œ ์ง‘์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ด์›ƒ๋…ธ๋“œ๋“ค์€ ๋ชจ๋‘ ๊ฐ€๋ดค๋‹ค.

 

์ด์ œ ์ง‘ ๋…ธ๋“œ๋Š” ๋ฐฉ๋ฌธํ–ˆ๊ณ , ๋‹ค์Œ์œผ๋กœ ์–ด๋–ค ์œ„์น˜ ๋…ธ๋“œ๋กœ ๊ฐ€์•ผํ• ๊นŒ? ๋ฏธ์šฉ์‹ค๋กœ ๊ฐ€์•ผํ• ๊นŒ ๋˜๋Š” ์Šˆํผ๋งˆ์ผ“์œผ๋กœ ๊ฐ€์•ผํ• ๊นŒ..?

์ด ๋ถ€๋ถ„์ด ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ํฌ์ธํŠธ๋‹ค. (๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ดํ•ดํ•˜๋Š”๋ฐ ์žˆ์–ด ํ•„์ž๋Š” ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ ธ๋‹ค.)

ํ•ด์•ผํ•  ํ–‰๋™์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค.

" distance์—์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋˜ ๋…ธ๋“œ ์ค‘์— '๊ฐ€์žฅ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ์ž‘์€' ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค."

์ฆ‰, distance์—์„œ ์ง‘์€ ๋ฐฉ๋ฌธํ–ˆ๋˜ ๋…ธ๋“œ์ด๋‹ˆ ์ œ์™ธํ•˜๊ณ , ๋‚˜๋จธ์ง€์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฏธ์šฉ์‹ค์ด ๋‹ค์Œ ๋…ธ๋“œ๊ฐ€ ๋œ๋‹ค.

 

 

์ดํ›„์—๋Š”, ๋ฐ”๋กœ ์œ— ๋ถ€๋ถ„์—์„œ ์ง‘ ๋…ธ๋“œ์—์„œ ํ–ˆ๋˜ ๊ฒƒ ์ฒ˜๋Ÿผ!  ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๊ณ  ๊ฐฑ์‹ ํ•˜๋Š” ๋˜‘๊ฐ™์€ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


Cycle 2

ํ˜„์žฌ ๋…ธ๋“œ: ๋ฏธ์šฉ์‹ค

์ด์ œ ๋ฏธ์šฉ์‹ค๋กœ ๋‹ค์‹œ ์‚ฌ์ดํด์ด ๋ฐ˜๋ณต๋œ๋‹ค. ์ง‘์—์„œ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ ๋˜‘๊ฐ™์ด ๋ฐ˜๋ณต๋˜๋‹ˆ ์ž˜ ๋”ฐ๋ผ์™€๋ณด์ž.

 

์—ฐ๋‘์ƒ‰์€ ๋ฐฉ๋ฌธํ–ˆ๋˜ ๊ฒฝ๋กœ, ๋นจ๊ฐ„์ƒ‰์€ ํ˜„์žฌ ์ด์›ƒํ•œ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ๋กœ

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๋ฏธ์šฉ์‹ค์—์„œ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ด์›ƒ ๋…ธ๋“œ๋“ค์€ '์Šˆํผ๋งˆ์ผ“' '์€ํ–‰'์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ ๊ฑฐ๋ฆฌ๋ฅผ ์Šˆํผ๋งˆ์ผ“์€ 8(5 + 3), ์€ํ–‰์€ 16(5 + 11)์„ ๊ฐ€์ง„๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ๋•Œ

'์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ๋ฏธ์šฉ์‹ค๊นŒ์ง€์˜ ํ˜„์žฌ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฏธ์šฉ์‹ค๋ถ€ํ„ฐ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ' ๋ฅผ ๊ตฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค!=(์ถœ๋ฐœ์ง€~๋ฏธ์šฉ์‹ค)+(๋ฏธ์šฉ์‹ค~์ด์›ƒ๋…ธ๋“œ)

์šฐ๋ฆฌ๋Š” '์ถœ๋ฐœ์ง€'๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๊นŒ์ง€ '์ตœ๋‹จ๊ฑฐ๋ฆฌ'๋ฅผ  distance ํ‘œ์— ๊ธฐ๋กํ•˜๊ณ  ์žˆ์Œ์„ ์žŠ์ง€ ๋ง์•„์•ผ ํ•œ๋‹ค.

์ถœ๋ฐœ์ง€(์ง‘)์—์„œ ํ˜„์žฌ ๋…ธ๋“œ(๋ฏธ์šฉ์‹ค)์„ ๊ฑฐ์ณ ์ด์›ƒ ๋…ธ๋“œ(์Šˆํผ๋งˆ์ผ“)์„ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๋ ค๋ฉด,

'์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ๋ฏธ์šฉ์‹ค๊นŒ์ง€์˜ ํ˜„์žฌ ์ตœ๋‹จ๊ฑฐ๋ฆฌ (distance[๋ฏธ์šฉ์‹ค]) + ๋ฏธ์šฉ์‹ค์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋”ํ•œ ๊ฐ’'

                                                                      VS

'ํ˜„์žฌ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ (distance[์Šˆํผ๋งˆ์ผ“])' ๋ฅผ ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.

์ด ๋‘ ๊ฐ’์ค‘ ๋” ์ž‘์€ ๊ฐ’์ด ํ˜„์žฌ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ์ด๋ฏ€๋กœ, ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ distance์— ๊ธฐ๋กํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

'์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ๋ฏธ์šฉ์‹ค๊นŒ์ง€์˜ ํ˜„์žฌ ์ตœ๋‹จ๊ฑฐ๋ฆฌ (distance[๋ฏธ์šฉ์‹ค]) + ๋ฏธ์šฉ์‹ค์—์„œ ์Šˆํผ๋งˆ์ผ“๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋”ํ•œ ๊ฐ’' ์ฆ‰, ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ๋ฏธ์šฉ์‹ค์„ ๊ฑฐ์ณ ์Šˆํผ๋งˆ์ผ“๊นŒ์ง€ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๊ฐ€

'ํ˜„์žฌ๊นŒ์ง€ ์Šˆํผ๋งˆ์ผ“๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ'๋ณด๋‹ค  ์ž‘์œผ๋ฏ€๋กœ => ์Šˆํผ๋งˆ์ผ“๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ 8๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

 

์€ํ–‰๋„ ์ด์›ƒ๋…ธ๋“œ์ด๋ฏ€๋กœ ํ•œ ๋ฒˆ ํ•ด๋ณด์ž.

์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๋น„๊ตํ•˜๊ณ  ๊ฐฑ์‹ ํ•˜๋Š” ๋˜‘๊ฐ™์€ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์ด์ œ ์ด์›ƒ ๋…ธ๋“œ๋“ค์˜ distance ๋น„๊ต์™€ ๊ฐฑ์‹ ์ด ๋๋‚˜๋ฉด, ์•ž์„œ '์ง‘'์—์„œ ํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ

" distance์—์„œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๋˜ ๋…ธ๋“œ ์ค‘์— '๊ฐ€์žฅ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ์ž‘์€' ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค."

distance์—์„œ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฉ๋ฌธํ–ˆ๋˜ ์ง‘๊ณผ ๋ฏธ์šฉ์‹ค์„ ์ œ์™ธํ•œ ๋…ธ๋“œ๋“ค ์ค‘,  ์Šˆํผ๋งˆ์ผ“์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋ฏ€๋กœ ๋‹ค์Œ ๋…ธ๋“œ๋Š” ์Šˆํผ๋งˆ์ผ“์ด๋‹ค!


Cycle 3

ํ˜„์žฌ ๋…ธ๋“œ: ์Šˆํผ๋งˆ์ผ“

์Šˆํผ๋งˆ์ผ“ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ด์›ƒํ•œ ๋…ธ๋“œ๊นŒ์ง€ ์ด๋™

์ž, ์ง€๊ธˆ ๋ถ€ํ„ฐ๋Š” ์กฐ๊ธˆ ๊ฐ„๋žตํ•˜์ง€๋งŒ ํฐ ํ๋ฆ„์„ ๋ณด์ž.

์œ„์—์„œ ํ–ˆ๋˜ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๋˜‘๊ฐ™๋‹ค.

1. ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ์Šˆํผ๋งˆ์ผ“๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ + ์Šˆํผ๋งˆ์ผ“์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต,

๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 

2. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋กœ ์ด๋™ 

์˜ ๋ฐ˜๋ณต์ด๋‹ค!

 

1.  ์Šˆํผ๋งˆ์ผ“ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ +  ์Šˆํผ๋งˆ์ผ“ ์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต, ๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 
2. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ์˜์–ดํ•™์›์œผ๋กœ ์ด๋™

 


Cycle 4

ํ˜„์žฌ ๋…ธ๋“œ: ์˜์–ดํ•™์›

 

์˜์–ดํ•™์› ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ด์›ƒํ•œ ๋…ธ๋“œ๊นŒ์ง€ ์ด๋™

1. ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ํ˜„์žฌ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ + ํ˜„์žฌ๋…ธ๋“œ์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต,

๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 

2. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋กœ ์ด๋™ 

1.  ์˜์–ดํ•™์› ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ +  ์˜์–ดํ•™์› ์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต, ๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 
2. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ ˆ์Šคํ† ๋ž‘์œผ๋กœ ์ด๋™


Cycle 5

ํ˜„์žฌ ๋…ธ๋“œ: ๋ ˆ์Šคํ† ๋ž‘

 

๋ ˆ์Šคํ† ๋ž‘ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ด์›ƒํ•œ ๋…ธ๋“œ๊นŒ์ง€ ์ด๋™

1. ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ํ˜„์žฌ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ + ํ˜„์žฌ๋…ธ๋“œ์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต,

๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 

2. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋กœ ์ด๋™ 

1.  ๋ ˆ์Šคํ† ๋ž‘ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ +  ๋ ˆ์Šคํ† ๋ž‘ ์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต, ๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 
2. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ–๋Š” ์€ํ–‰์œผ๋กœ ์ด๋™


Cycle 6

ํ˜„์žฌ ๋…ธ๋“œ: ์€ํ–‰

์€ํ–‰ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ด์›ƒํ•œ ๋…ธ๋“œ๊นŒ์ง€ ์ด๋™

1. ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ํ˜„์žฌ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ + ํ˜„์žฌ๋…ธ๋“œ์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต, ๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 

2. ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๋กœ ์ด๋™ 

1.  ๋ ˆ์Šคํ† ๋ž‘ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ +  ๋ ˆ์Šคํ† ๋ž‘ ์—์„œ ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ  vs ์ด์›ƒ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋น„๊ต, ๋” ์ž‘์€ ๊ฐ’์„ distance์— ๊ฐฑ์‹ 
์ตœ์ข… distance


์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ์–ด์กŒ๋˜ ๋…ธ๋“œ๋Š” ์ด 7๊ฐœ,

๋„์ฐฉ์ง€ ๋…ธ๋“œ์—์„  ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ด๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด 6๋ฒˆ์˜ ์‚ฌ์ดํด์ด ๋ฐ˜๋ณต๋œ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ตœ์ข… distance๋ฅผ ํ†ตํ•ด ์ถœ๋ฐœ์ง€๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๋“ค๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์ด๋ฅผ Python ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์ž!

์šฐ์„ , ๊ทธ๋ž˜ํ”„๋ฅผ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ Dictionary๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

๊ฐ ๋…ธ๋“œ๋“ค๋กœ๋ถ€ํ„ฐ ์ด์›ƒํ•œ ๋…ธ๋“œ๋“ค๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

graph = {
    '์ง‘': {'๋ฏธ์šฉ์‹ค': 5, '์Šˆํผ๋งˆ์ผ“': 10, '์˜์–ดํ•™์›': 9},
    '๋ฏธ์šฉ์‹ค': {'์Šˆํผ๋งˆ์ผ“': 3, '์€ํ–‰': 11},
    '์Šˆํผ๋งˆ์ผ“': {'๋ ˆ์Šคํ† ๋ž‘': 3, '์€ํ–‰': 10, '์˜์–ดํ•™์›': 7},
    '์˜์–ดํ•™์›': {'์€ํ–‰': 7, 'ํ•™๊ต': 12},
    '๋ ˆ์Šคํ† ๋ž‘': {'์€ํ–‰': 4},
    '์€ํ–‰': {'ํ•™๊ต': 2},
    'ํ•™๊ต': {}
}

์—ฌ๊ธฐ์— ์‚ฌ์šฉ๋œ ํ•ต์‹ฌ์ ์ธ ์›๋ฆฌ๋ฅผ ์งš๊ณ  ์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๋” ์‰ฌ์šธ ๊ฒƒ์ด๋‹ค.

1. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ graph์™€ ์ถœ๋ฐœ์ง€(start)๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

2. distance๋Š” dictionary๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

3. ์šฐ์„ ์ˆœ์œ„ ํ(min heap)์„ ์‚ฌ์šฉํ•ด  ' ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์ค‘ distance์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ'๋ฅผ ๊ตฌํ•œ๋‹ค. 

import heapq

def dijkstra(graph, start):
    distance = {node: float('inf') for node in graph}
    distance[start] = 0
    queue = []
    # start๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด queue์— start ๋„ฃ์–ด์ค€๋‹ค.
    heapq.heappush(queue, [distance[start], start])
    print("distance",distance)
    print("visited",visited)
    print("----start----")
    
    # queue์— ๋‚จ์•„ ์žˆ๋Š” ๋…ธ๋“œ๊ฐ€ ์žˆ์„ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต
    while queue:
        # ํƒ์ƒ‰ ํ•  ๋…ธ๋“œ, ๊ฑฐ๋ฆฌ๋ฅผ queue์—์„œ ๊บผ๋‚ด์˜จ๋‹ค. (์ตœ์†Œ cur_dist๋ฅผ ๊ฐ–๋Š” ๋…ธ๋“œ)
        cur_dist, cur_node = heapq.heappop(queue)
        
        print(f'cur_dist: {cur_dist}, cur_node: {cur_node}')
        # cur_dist๊ฐ’์ด 'ํ˜„์žฌ๊นŒ์ง€ cur_node์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ'๋ณด๋‹ค ํฌ๋ฉด continue๋กœ ์ง€๋‚˜๊ฐ„๋‹ค.
        if(cur_dist > distance[cur_node]):
            print("continue")
            continue
            
        for neighbor in graph[cur_node]:
            # 'cur_node๋ฅผ ๊ฑฐ์ณ์„œ neighbor๊นŒ์ง€ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ'์™€ 'ํ˜„์žฌ๊นŒ์ง€ neighbor๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ'๋ฅผ ๋น„๊ตํ•ด์„œ ๋” ์ž‘์€ ๊ฒƒ์œผ๋กœ distance ์„ค์ •
            if( distance[cur_node] + graph[cur_node][neighbor] < distance[neighbor]):
                distance[neighbor] =  distance[cur_node] + graph[cur_node][neighbor]
                # distance๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์œผ๋ฉด, ๊ทธ ๊ฐ’์œผ๋กœ queue์— ๋„ฃ์–ด์ค€๋‹ค.
                heapq.heappush(queue, [distance[cur_node] + graph[cur_node][neighbor], neighbor])
            print(queue)
    print(distance)

 

 

์ถœ๋ ฅ ๊ณผ์ • ๋ฐ ๊ฒฐ๊ณผ

728x90
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
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
๊ธ€ ๋ณด๊ด€ํ•จ
250x250