๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš— Major Study (Bachelor)/๐ŸŸข Discrete Mathematics

Dijkstra's Algorithm

by UKHYUN22 2021. 12. 10.
728x90

 

Shortest Path Problem

 

Weight graph๋Š” Node ์™€ Edge ๊ทธ๋ฆฌ๊ณ  weight๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

(V, E, W) Node ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ฑ๊ณผ ํŠน์ง•์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด W์ด๋‹ค.

Path = sequence of edge 

length of path ๋Š” number of edge ๊ฐ€ ๋œ๋‹ค. 

Q) What is shortest path?

Boston ์—์„œ LA๋กœ ๊ฐ€๋Š” ๊ฐ€์žฅ ์งง์€ ๊ธธ์€ ์–ด๋–ค ์กฐํ•ฉ์ด ๋ ๊นŒ..?

 

 

 

Positive weight๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๊ฐ€์ •ํ•œ๋‹ค.

a์—์„œ z ๋กœ ๊ฐ€๋Š” Shortest Path๋ฅผ ์ฐพ๋Š”๋‹ค.

: ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ฃผ๋ณ€๋งŒ์„ ํ™•์ธํ•˜๋ฉด์„œ ์‹œ์ž‘ ๋…ธ๋“œ๋กœ ๋ถ€ํ„ฐ ์–ด๋Š ๊ธธ์ด ๊ฐ€์žฅ ์งง์€ ๊ธธ์ด ๋˜๋Š”์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.

๋ชจ๋“  ๊ณผ์ •์„ ํ•  ํ•„์š”์—†์ด ์ด์›ƒ์œผ๋กœ ๋ถ€ํ„ฐ Path์˜ ๊ธธ์ด๊ฐ€ ์–ผ๋งˆ์˜€๋Š”์ง€๋งŒ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

Start Vertex์™€ Ending Vertex๋Š” ์•Œ๋ ค์ฃผ๊ณ  ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค.

Weigth ๋Š” ํ•ญ์ƒ Positive weight๊ฐ€ ์žˆ์Œ์„ ๊ฐ€์ •ํ•ด์•ผ ํ•œ๋‹ค.

(์Œ์ˆ˜๊ฐ€ ์žˆ๊ณ  Cycle์ด ์กด์žฌํ•˜๋ฉด ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์—†๋‹ค.)

L: V -> R (Vertex ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜)

L(v)๊ฐ€ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์€ a์—์„œ ์ถœ๋ฐœํ•ด์„œ v๊นŒ์ง€ ๊ฐ€๋Š”๋ฐ shortest Path๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

์ฒ˜์Œ L(v)๋Š” ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š” ์ง€ ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ์—ฐ๊ฒฐ์ด ์•ˆ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ๋„ ์กด์žฌํ•œ๋‹ค.

S ๋Š” ๊ณ„์‚ฐ์ด ๋๋‚œ ๊ฒƒ๋“ค์„ ๋ชจ์•„๊ฐ€๋Š” Vertex

๋ฃจํ”„๊ฐ€ ์‹œ์ž‘ํ•˜๊ณ 

S์— z๊ฐ€ ์†ํ•˜์ง€ ์•Š์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต์„ ํ•˜๊ณ  S์— ์†ํ•˜์ง€ ์•Š๋Š” V ๋งˆ๋‹ค L(u) + w(u,v) < L(v) ๋ผ๋ฉด 

L(v) ์— L(u) + w(u,v) ๋ฅผ ํ• ๋‹นํ•ด์„œ ํ•ด๋‹น V ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ตœ์‹ ํ™”ํ•ด์ค€๋‹ค.

 

S์˜ ์˜์—ญ์„ ํ•œ ์นธ์”ฉ ํ‚ค์šฐ๊ณ  ์‹ถ์€ ๊ฒƒ. 

S๋Š” ์ด๋ฏธ ํ†ต๊ณผํ•œ Vertex๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ  S์— ์†ํ•˜์ง€ ์•Š์€ ๊ทธ ๋‹ค์Œ Vertex ์ค‘ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๋งŒ์กฑํ•˜๋Š”

L(u) + w(u,v) < L(v) ๋ฅผ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ’์„ ์ƒˆ๋กœ ์ตœ์‹ ํ™” ํ•ด์ค€๋‹ค.

์—ฌ๊ธฐ์„œ L(v) ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์•Œ๋ ค์ง„ ์‹œ์ž‘ ๋…ธ๋“œ a์—์„œ ์ถœ๋ฐœํ•ด์„œ v ๋…ธ๋“œ๊นŒ์ง€ ๋„์ฐฉํ•˜๊ธฐ ์œ„ํ•ด ๊ฑธ๋ฆฌ๋Š” path๊ฐ€ ๋œ๋‹ค.

 

Mathematical Induction Proof

S๋ฅผ ํ†ตํ•ด์„œ ์ฐพ์•„์ง„ ๊ฒฝ๋กœ ์ค‘ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋งŒ์„ ์„ ํƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด Inductive Hypotheses

 

๊ฐ€์ •์— ๋”ฐ๋ฅด๋ฉด S์— ์†ํ•˜์ง€ ์•Š์€ V' ์„ ํ†ตํ•ด์„œ U ๋กœ ๊ฐ€๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ V'์€ ํ•ญ์ƒ S ์•ˆ์— ์†ํ•œ ๊ฒƒ์ด ๋˜๋Š” ๋ชจ์ˆœ์ด ๋ฐœ์ƒํ•œ๋‹ค. 

์™œ๋ƒํ•˜๋ฉด ํ˜„์žฌ ๊ฐ€์žฅ ์งง์€ ๊ธธ๋กœ ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ๋กœ๋Š” ํ•ญ์ƒ S๋ฅผ ํ†ตํ•  ์ˆ˜ ๋ฐ–์— ์—†์Œ์ด ์ „์ œ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

N x N ๋งŒํผ์˜ Time์ด ๊ฑธ๋ฆฐ๋‹ค. ํ•˜๋‚˜์˜ Vertex ๋‹น ๋ชจ๋“  Vertex๋ฅผ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ

 

 

Find a circuit์„ ํ•˜๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ฌธ์ œ์ด๋‹ค. (TSP ๋ฌธ์ œ)

Hemilton Circuit์„ ์–˜๊ธฐํ•  ๋•Œ ์–ธ๊ธ‰ํ•œ ์  ์žˆ์Œ

ํ•ด๋‹น ๋„์‹œ๋ฅผ ํ•œ ๋ฒˆ ์”ฉ๋งŒ ๋ฐฉ๋ฌธํ•˜๊ณ  ์‹ถ์€๋ฐ ๊ทธ ์ค‘ ๊ฐ€์žฅ ์งง์€ ๊ธธ๋กœ ๋‹ค๋‹ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์ข‹์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๋‹ค ๋ณด์ง€ ์•Š๊ณ  ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

Arbitrary graph ์ฆ‰, ์ผ๋ฐ˜์ ์ธ Solution์€ ์—†์ง€๋งŒ Efficient ํ•œ Common Case ์— ๋Œ€ํ•œ Solution์€ ์กด์žฌํ•œ๋‹ค.

Common ์ด๋ผ๋Š” ๊ฒƒ์€ ์ž์ฃผ ๋‚˜์˜ค๊ณ , Popular ํ•œ ๊ฒƒ๋“ค, ์ผ์ • ์กฐ๊ฑด์— ๋Œ€ํ•ด ๋งŒ์กฑํ•˜๋Š” Graph์— ๋Œ€ํ•ด์„œ

efficient ํ•˜๊ฒŒ ๋Œ์•„๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•œ๋‹ค. 

 

Sequence๋ฅผ ์ฃผ๋ฉด ํ•ด๋‹น Path์˜ Weight๋ฅผ ์ฐพ์„ ์ˆ˜๋Š” ์ž‡๋‹ค.

Weight๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ํ•˜๊ธฐ ์‰ฝ๋‹ค. ํ˜„์žฌ ์‹œ์ ์—์„œ Evaluation์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Random ํ•œ Sequence๋ฅผ ์ฃผ๊ณ  ์–ด๋–ค ๊ฐ’์ด ๊ฐ€์žฅ ์ข‹์€์ง€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

Trial Error๋ฅผ ํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•œ Information์„ ์ž˜ Search๋ฅผ ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ํ•ด๋‹น Sequence์™€ ๋น„์Šทํ•œ Sequence๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž๋ผ๋Š” ๊ด€์ ์œผ๋กœ Problem Solving์„ ์ง„ํ–‰ํ•œ๋‹ค.

ํ•ด๋‹น Sequence์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์‚ด์ง ์‚ด์ง์‹ ๋ฐ”๊ฟ”์ฃผ๋ฉด์„œ ์ฐพ์•„๋‚˜๊ฐ„๋‹ค.

 

 

์ˆ˜ํ•™์  ์ฆ๋ช…์€ ์ˆ˜ํ•™์  ์‚ฌ์‹ค์˜ Subset ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

์ฆ๋ช…์€ ์•ˆ๋์ง€๋งŒ ์‚ฌ์‹ค์ด๋‹ค.