๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

Shortest Path(์ตœ๋‹จ ๊ฒฝ๋กœ)๋Š” ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ์–ด๋–ค ์ •์ ์—์„œ ๋‹ค๋ฅธ ์ •์ ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ๊นŒ์ง€ ๊ฐ€์žฅ ์งง์€ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์œผ๋กœ ๋ชฉ์ ์ง€์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ ์œ„ํ•œ ์ „๋žต์ด๋‹ค.

์ตœ๋‹จ ๊ฒฝ๋กœ๋ฌธ์ œ๋Š” ๋ช‡๊ฐ€์ง€ ์œ ํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

  1. Single Source: ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ถœ๋ฐœํ•ด์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ
  2. Single Destination: ๋ชจ๋“  ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ ๋ชฉ์ ์ง€ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ
  3. Single Pair: ์ฃผ์–ด์ง„ ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ํ•˜๋‚˜์˜ ๋ชฉ์ ์ง€๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ
  4. All pair: ๋ชจ๋“  ๋…ธ๋“œ ์Œ์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ

์ด๋ฒˆ ์ˆ˜์—…์—์„œ ์ฃผ๋กœ ๋‹ค๋ฃฐ ๋‚ด์šฉ์€ SSP ๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋Š” Single-source Shortest Path ์ด๋‹ค.

Lemma

์ผ๋‹จ Shortest Path ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์„์ง€ ์ƒ๊ฐํ•ด๋ณด์ž.

 

 

๋ช…์ œ:
์œ„์™€ ๊ฐ™์ด ์–ด๋–ค ์ง€์  U๋กœ ๋ถ€ํ„ฐ V๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜๊ณ  ์ด ๊ฒฝ๋กœ๊ฐ€ U์—์„œ V๋กœ ๊ฐ€๋Š” ๊ฐ€๋Šฅํ•œ ์งง์€ ๊ฒฝ๋กœ๋ผ๊ณ  ํ•ด๋ณด์ž. ์ฆ‰, ๊ฒฝ๋กœ UV๋Š” U์—์„œ V๋กœ ๊ฐ€๋Š” SSP์˜ Global Optimal Solution ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒฝ๋กœ ์•ˆ์— ์†ํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒฝ๋กœ๋Š” ํ•ด๋‹น ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ์ด๋‹ค. ์ฆ‰, Optimal Sub Structure ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

์ฆ๋ช…:
Proof by Contradiction์œผ๋กœ ์ฆ๋ช…ํ•ด๋ณด์ž. ๋งŒ์•ฝ ๊ฒฝ๋กœ UV๊ฐ€ ์ตœ๋‹จ ๊ฒฝ๋กœ์ผ ๋•Œ, ํ•ด๋‹น ๊ฒฝ๋กœ์— ์†ํ•˜๋Š” subpath ๊ฐ€ Optimal substructure ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ํ•ด๋‹น subpath ๋ณด๋‹ค ๋” ์งง์€ subpath๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ํ˜„์žฌ subpath ๋ณด๋‹ค ์งง์€ subpath ๊ฐ€ ์žˆ๋‹ค๋ฉด, global optimal solution์„ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น subpath์„ ์ตœ์ข… solution์— ๋ฐ˜๋“œ์‹œ ํฌํ•จํ•ด์•ผ ํ•˜๊ณ , ์ด๋Š” ๊ณง ์ดˆ๊ธฐ์— ์„ค์ •ํ–ˆ๋˜ ๊ฒฝ๋กœ UV๊ฐ€ ๋” ์ด์ƒ ์ตœ๋‹จ๊ฒฝ๋กœ๊ฐ€ ๋  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ค ์ตœ๋‹จ ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋‹ค๋ฉด, ๊ทธ ์•ˆ์— ์†ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒฝ๋กœ๋“ค๋„ ์ตœ๋‹จ ๊ฒฝ๋กœ์ด๋‹ค.

Properties

์œ„ ์ฆ๋ช…์— ๋”ฐ๋ผ ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๋ก ์„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

  • ์–ด๋–ค ๊ฒฝ๋กœ UV๊ฐ€ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ผ๋ฉด, ์ด ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋Š” ๊ทธ๋ž˜ํ”„ ๋‚ด์— ๋‹ค๋ฅธ ์ •์ ๋“ค์„ ๊ฑฐ์ณ์„œ ์˜ค๋Š” ๋ชจ๋“  ๊ฒฝ๋กœ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ž‘๋‹ค.

Negative-Weight Cycle

๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๊ฒƒ์€ ๊ทธ๋ž˜ํ”„์— negative-weight cycle ์ด ์—†์„ ๋•Œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. Negative-Weight Edge๋Š” ์Œ์ˆ˜๋ฅผ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง€๋Š” ๊ฐ„์„ ์ธ๋ฐ ์ด ๊ฐ„์„ ์ด ๊ทธ๋ž˜ํ”„์— ํฌํ•จ๋˜์–ด ์žˆ๊ณ , ๋‹ค๋ฅธ ๊ฐ„์„ ๊ณผ ์‚ฌ์ดํด์„ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž.

 

 

์œ„ ๊ทธ๋ž˜ํ”„์—์„œ ์ •์  A์™€ ์ •์  B๊ฐ€ ๋งŒ๋“œ๋Š” ์‚ฌ์ดํด์— ๋„๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ฌ์ดํด์„ ๋งŒ๋“œ๋Š” ๋‘ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด -7์ด๊ธฐ ๋•Œ๋ฌธ์—, ํƒ์ƒ‰์„ ๊ฑฐ๋“ญํ•  ๋•Œ๋งˆ๋‹ค. ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ๊ณ„์†ํ•ด์„œ ์ž‘์•„์ง€๋ฉด์„œ ๊ฒฐ๊ตญ -∞ ์— ์ˆ˜๋ ดํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์šฐ๋ฆฌ๋Š” ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜๊ฐ€ ์—†๊ฒŒ๋œ๋‹ค.

Other Cycles?

๊ทธ๋Ÿผ ์ด๋Ÿฐ ์˜๋ฌธ์ด ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค. "๋‹จ์ˆœํžˆ ์‚ฌ์ดํด์ด ๋ฌธ์ œ์ธ๊ฐ€?". ์ •๋‹ต์€ "์•„๋‹ˆ๋‹ค" ์ด๋‹ค. Negative weight cycle ์™ธ์— ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ ์‚ฌ์ดํด๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. Postivie Weight Cycle: ์ด ์‚ฌ์ดํด์€ ํƒ์ƒ‰์„ ๊ฑฐ๋“ญํ• ์ˆ˜๋ก ์–‘์ˆ˜ ๊ฐ’์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ตญ์—” +∞ ๋กœ ๊ธธ์ด๊ฐ€ ์ˆ˜๋ ดํ•˜๊ฒŒ ๋œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’์€ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด์ฐจํ”ผ ์–‘์˜ ๋ฌดํ•œ๋Œ€๋กœ ์ˆ˜๋ ดํ•˜๋Š” ์‚ฌ์ดํด์ด๋ผ๋ฉด ์ด ์‚ฌ์ดํด์„ ๊ทธ๋ƒฅ ๋ฌด์‹œํ•ด๋„ ์šฐ๋ฆฌ๊ฐ€ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ๋Š” ์•„๋ฌด ์ง€์žฅ์ด ์—†์„ ๊ฒƒ์ด๋‹ค.
  2. Zero-Weight Cycle: ์ด ์‚ฌ์ดํด์€ ์‚ฌ์ดํด์„ ์ด๋ฃจ๋Š” ๋‘ ๊ฐ„์„ ์˜ ํ•ฉ์ด 0์ผ ๋•Œ ์ƒ๊ธฐ๋Š” ์‚ฌ์ดํด์ธ๋ฐ, ์ด ์‚ฌ์ดํด์„ ํฌํ•จํ•˜๋“  ํฌํ•จํ•˜์ง€๋งŒ ์•Š๋“  ์ „์ฒด ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

Algorithm Strategy for SSP

์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ์„ ์•Œ์•„๋ณด๊ธฐ ์ „์— SSP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ์— ํ†ต์šฉ๋˜๋Š” ๋ช‡๊ฐ€์ง€ ์šฉ์–ด์™€ ๋ฐฉ๋ฒ•๋“ค์„ ์ •๋ฆฌํ•ด๋ณด์ž. ์ผ๋‹จ SSP๋Š” ์–ด๋–ค ์ •์ ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ์œผ๋กœ์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์ „๋žต์ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์ž.

Distance

์–ด๋–ค ๋‘ ์ •์  ์‚ฌ์ด์˜ ๊ธธ์ด๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค. d[v] ๋Š” ์‹œ์ž‘์ ์œผ๋กœ ๋ถ€ํ„ฐ ์ •์  v๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ธธ์ด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๊ฒฝ๋กœ๊ฐ€ ๋ฐœ๊ฒฌ๋  ๋•Œ ๊ฐ€์žฅ ๊ธธ์ด๊ฐ€ ์งง์€ ๊ฒฝ๋กœ์˜ ๊ธธ์ด ํ•ฉ์„ ์ด ๋ฐฐ์—ด์— ์ €์žฅํ•ด์•ผํ•œ๋‹ค. ์ตœ๋‹จ ๊ธธ์ด๋ฅผ ์ €์žฅํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ์ดˆ๊ธฐ๊ฐ’์€ +∞๋กœ ์ง€์ •๋˜์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

Predecessor

์–ด๋–ค ์ •์ ์—์„œ ์ตœ๋‹จ๊ฒฝ๋กœ๋กœ ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์ •์ ์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•œ๋‹ค. p[v] ๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ •์ ๋“ค ์ค‘ v์˜ ๋ถ€๋ชจ๋…ธ๋“œ๊ฐ€ ๋˜๋Š” ์ •์ ์„ ์ €์žฅํ•œ๋‹ค.

Relaxation

์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ฒƒ์ด ์ด relaxation ๊ธฐ๋ฒ•์ด๋‹ค. Relaxation์€ ์–ด๋–ค ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์ •์ ์„ ํƒ์ƒ‰ํ•˜๊ณ  ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ๊ธธ์ด๊ฐ€ ์งง์€ ์ •์ ์„ ์ฐพ์•„ Shortest Path๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค.

Relax (u, v, w){
    if(d[v] > d[u]+w)
        then
            d[v] = d[u]+w;
            p[v] = u;
}

์ˆ˜๋„์ฝ”๋“œ๋Š” ์œ„์™€ ๊ฐ™๋‹ค. ํ˜„์žฌ๊นŒ์ง€ ์•Œ๊ณ ์žˆ๋˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๊ฐ€ s->v ๋ผ๊ณ  ํ–ˆ์„ ๋•Œ, s์—์„œ u๋ฅผ ๊ฑฐ์ณ v์— ๋„๋‹ฌํ•  ๋•Œ ๊ทธ ๊ธธ์ด๊ฐ€ ๋” ์งง๋‹ค๋Š” ๊ฒƒ์ด ๋ฐœ๊ฒฌ๋œ๋‹ค๋ฉด, ํ•ด๋‹น ๊ฐ’์„ ์ตœ๋‹จ๊ฒฝ๋กœ๋กœ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.