ํฌ์ŠคํŠธ

๐ŸŒ“ ๋ฒจ๋จผ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ๋“ฌ

๋‹จ์ผ ์‹œ์ž‘์  ์ตœ๋‹จ๊ฒฝ๋กœ
๋ฒจ๋จผ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ๋“ฌ

  • ๋ฌธ์ œ์˜ ์ดํ•ด: ๋‹จ์ผ ์‹œ์ž‘์  ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ๋“ฌ
    • ์ถœ๋ฐœ ์ง€์ ์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜๋จธ์ง€ ๋‹ค๋ฅธ ๋ชจ๋“  ์ง€์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ
    • ์Œ์˜ ์‚ฌ์ดํด(negative cycle)์ด ์—†์–ด์•ผ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ (์‹ค์ œ ๋ฌธ์ œ์—์„œ ์Œ์˜ ์‚ฌ์ดํด์ด ์žˆ๋Š”์ง€์—†๋Š”์ง€ ์—ฌ๋ถ€๋Š” ํ™•์‹ ํ•  ์ˆ˜ ์—†์Œ, ๊ทธ๋ž˜์„œ ๋ฒจ๋จผํฌ๋“œ๊ฐ€ ์ข‹์Œ, ์—ฌ๋ถ€๋ฅผ ํ™•์‹คํžˆ ๋ชฐ๋ผ๋„ ์˜ˆ๋ฐฉ์ด ๋˜๋‹ˆ๊นŒ)
    • ์ข…๋ฅ˜
      • ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ๋“ฌ
        • ์š•์‹ฌ์Ÿ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฆ„
        • ๊ทธ๋ž˜ํ”„์˜ ๊ฐ„์„  ๊ฐ€์ค‘์น˜๊ฐ€ ์Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ๊ฐ€์ • (๋ฒ”์šฉ์„ฑ์ด ๋–จ์–ด์ง)
      • ๋ฒจ๋จผ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ๋“ฌ(Bellman-Ford algorithm)
        • ๋™์  ๊ณ„ํš๋ฒ•์„ ์‚ฌ์šฉ
        • ์Œ์ˆ˜์˜ ๊ฐ„์„  ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–๋Š” ๊ทธ๋ž˜ํ”„์— ๋Œ€ํ•ด์„œ๋„ ์ •ํ™•ํ•˜๊ฒŒ ๋™์ž‘
        • ์ถœ๋ฐœ์ ์—์„œ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ์Œ์˜ ์‚ฌ์ดํด์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ•œ ์ •ํ™•ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋ฉฐ ์Œ์˜ ์‚ฌ์ดํด์ด ์žˆ๋‹ค๋ฉด ๊ทธ ์กด์žฌ๋ฅผ ์•Œ๋ ค์คŒ
  • ๋ฌด์ž‘์œ„ ๊ธฐ๋ฒ•: 2์žฅ ์ฐธ์กฐ, n!
  • ์ตœ์  ๋ถ€๋ถ„๊ตฌ์กฐ: 2์žฅ ์ฐธ์กฐ

์Œ์˜ ์‚ฌ์ดํด
A -( 1 )โ†’ B -( 2 )โ†’ C -( -3 )โ†’
๋Œ๋–„๋งˆ๋‹ค ๊ฐ€์ค‘์น˜๊ฐ€ ๋ฌดํ•œํžˆ ์ž‘์•„์ง

๐Ÿ’ซ Bellman-Ford Algorithm


ํฌ๋“œ์ด ๋จผ์ € ๋งŒ๋“ค์—ˆ์ง€๋งŒ, ์ด๋ฅผ ๊ฐœ์„ ํ•œ ๋ฒจ๋จผ์ด ๋” ๋„ค์ž„๋“œ์—ฌ์„œ.
ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ๋“ฌ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„

  • ๋ฌธ์ œ์˜ ์ˆœํ™˜์  ์ •์˜
    • ์ตœ์ข… ๋ชฉํ‘œ: ์‹œ์ž‘ ์ •์ ์—์„œ ๊ฐ ์ •์ ์œผ๋กœ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ
    • ์ตœ์šฐ์„  ๋ชฉํ‘œ: ์‹œ์ž‘ ์ •์ ์—์„œ ๊ฐ ์ •์ ์œผ๋กœ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ๊ธธ์ด
      • V ={1, โ€ฆ, n}, E๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์ถœ๋ฐœ์ ์—์„œ ์ •์  d๊นŒ์ง€ ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” ์ตœ๋Œ€ n-1๊ฐœ ๊ฐ„์„ ์„ ๊ฑฐ์นจ
      • ์ถœ๋ฐœ์ ์—์„œ ์ตœ๋Œ€ n-1๊ฐœ ๊ฐ„์„ ์„ ๊ฑฐ์ณ ์ •์  d์— ๋„๋‹ฌํ•˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋Š” ๋‹ค์Œ ์ค‘ ์ตœ์†Œ๊ฐ’
        • โ€ข ์ถœ๋ฐœ์ ์—์„œ ์ตœ๋Œ€ n-2๊ฐœ ๊ฐ„์„ ์„ ๊ฑฐ์ณ ์ •์  1์— ๋„๋‹ฌํ•˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ธธ์ด+<1,d> ๊ฐ€์ค‘์น˜
        • โ€ข ์ถœ๋ฐœ์ ์—์„œ ์ตœ๋Œ€ n-2๊ฐœ ๊ฐ„์„ ์„ ๊ฑฐ์ณ ์ •์  2์— ๋„๋‹ฌํ•˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ธธ์ด+<2,d> ๊ฐ€์ค‘์น˜
        • โ€ข โ€ฆ
        • โ€ข ์ถœ๋ฐœ์ ์—์„œ ์ตœ๋Œ€ n-2๊ฐœ ๊ฐ„์„ ์„ ๊ฑฐ์ณ ์ •์  n์— ๋„๋‹ฌํ•˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ ๊ธธ์ด+<n,d> ๊ฐ€์ค‘์น˜
        • d๋„ 1~n์ด๋ผ ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ (๊ฐ”๋˜ ๊ณณ ๋˜ ๊ฐ€๋Š” ๊ฒฝ์šฐ)๊ฐ€ ์žˆ์„ ์ˆ˜์ž‡์Œ
      • ์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ•
        • ๊ท€๋‚ฉ ์กฐํ•ญ: ์ถœ๋ฐœ์ ์—์„œ ๊ฐ ์ •์ ๊นŒ์ง€ ์ตœ๋Œ€ i-1๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฑฐ์น˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์•ˆ๋‹ค๋ฉด ์ถœ๋ฐœ์ ์—์„œ ๊ฐ ์ •์ ๊นŒ์ง€ ์ตœ๋Œ€ i๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฑฐ์น˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ
        • ๊ธฐ๋ณธ ์กฐํ•ญ: ์ถœ๋ฐœ์ ์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋Š” 0์ด๊ณ  ๋‚˜๋จธ์ง€ ์ •์ ๋“ค์— ๋Œ€ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋Š” โˆž
    • ์ถœ๋ฐœ์  s์—์„œ ์ตœ๋Œ€ i๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฑฐ์ณ ์ •์  d์— ๋„๋‹ฌํ•˜๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๋ฅผ Di(d)๋ผ ํ•˜๊ณ  ๊ฐ„์„  <v1, v2>์˜ ๊ฐ€์ค‘์น˜๋ฅผ w(v1, v2)๋ผ ํ•˜๋ฉด

์›์น™์€ 2์ฐจ์›์ธ๋ฐ, ๋’ค์— ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด 1์ฐจ์›์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ด์ง (i๊ฐ€ ์‚ฌ๋ผ์ง) ๊ทธ๋ž˜์„œ Di(d) ์ฒ˜๋Ÿผ ์•„๋ž˜์ฒจ์ž๋กœ i๋ฅด ๋‘ 

PPT ์‚ฌ์ง„

์‹ ์˜๋ฏธ
๋ชจ๋“  ๊ฐ„์„ ๋“ค ์ค‘, k์—์„œ d๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ๋“ค ์ค‘, ๊ฐ€์žฅ ์งง์€ ๋†ˆ์„ ๋Œ€์ƒ์œผ๋กœ..

d๊ฐ€ 10์ด๋ผ ์น˜๊ณ , d์™€ ์ด์–ด์ง„ ์ •์ ์ด 2 3 6์ด๋ผ๊ณ  ํ•˜๋ฉด, k๋Š” 2, 3, 6์ด๊ณ  ์ด์ค‘์—์„œ ๊ฐ€์žฅ ๊ฐ€์ค‘์น˜๊ฐ€ ์งง์€ ๋†ˆ์ด ๋Œ€์ƒ

min[Di-1(d) ๋Š” ์—†์–ด๋„ ๋˜๋Š”๋ฐ
์™œWhy, ์ผ๋‹จ ๋” ๊ธธ์–ด์งˆ ์ˆ˜๋Š” ์—†์–ด, ์ตœ์ ์ด์—ˆ์œผ๋‹Œ๊นŒ
์ ์–ด์ง€๋ฉด ์ตœ๋‹จ ๊ฒฝ๋กœ๊ฐ€ ์งง์•„์ง„๋‹ค ๊ทผ๋ฐ ์ด๊ฒŒ ๋ณ€ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค!! = ๊ธฐ์กด ๊ฐ’์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค!! ๋ฅผ ์˜๋ฏธํ•˜๊ธฐ ์œ„ํ•ด ๋‘” ๊ฒƒ, ์—†์–ด๋„ ์˜๋ฏธ๋Š” ๊ฐ™์Œ

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ๋“ฌ์—์„œ ๋ณด์•˜๋˜ ์ •์˜์™€ ๋งค์šฐ ์œ ์‚ฌ(์‹ค์ œ๋กœ ๊ฐ™์€ ์ •์˜, distance ๋ฐฐ์—ด ์ป๋˜๊ฒƒ์ฒ˜๋Ÿผ) ๊ฐ ๊ฐ„์„  <k, d>๋ฅผ n-1๋ฒˆ ์™„ํ™”(relaxation: ๋” ๋‚˜์€ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝ, ๋” ๋‚˜์€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๊ฒƒ)

~๋ฒˆ ์™„ํ™” ํ•œ๋‹ค

@ TODO : ์™œ e ์ง€์ˆ˜..?

2์ฐจ์› ๋ฐฐ์—ด x = ์ •์  y = ๊ฐ ์‹œํ–‰ (i-1, i, i+1, โ€ฆ) x, y = ๊ฑฐ๋ฆฌ

(1,5) 4
(5,7) 6

i-1 1=10 5=20 7=40 i 1=8 5=14 7=26 i+1 i= 5=12 7=20

์–ด์ฐจํ”ผ ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ์œผ๋ฉด ๋‹ค์Œ ์‹œํ–‰ ๋•Œ ๊ฐ’์ด ๊ฐฑ์‹ ๋˜๋Š” ๊ฒƒ์ด ์ž๋ช… (๋ณ€๊ฒฝ์ด ์งง์•„์ง€๋Š” ๊ฒฝ์šฐ ๋ฐ–์— ์—†์œผ๋‹ˆ๊นŒ)

๊ทธ๋Ÿฌ๋ฉด ๊ณ„์‚ฐํ• ๋•Œ ๊ทธ๋ƒฅ ์ƒˆ๋กœ ๊ฐฑ์‹ ๋œ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ฐ”๋กœ ๊ณ„์‚ฐ ํ•˜์ž
โ†’ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’์„ ๊ธฐ์กด๊ฑฐ์— ๋ฎ์–ด์“ฐ๊ธฐ ํ•˜์ž โ†’ 1์ฐจ์› ๋ฐฐ์—ด๋งŒ ์ž‡์–ด๋„ ๋œ๋‹ค

๐Ÿซง ๋ฒจ๋จผ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ๋“ฌ_์˜ˆ์‹œ

n-1 ๋งŒํผ ๋ฃจํ”„๋ฅผ ๋Œ๋ฆฌ๊ณ , ํ•œ ๋ฒˆ ๋” ๊ธฐ์ค€ ์—ฐ์‚ฐ์„ ํ•˜๋Š”๋ฐ, ๋˜ ์ค„์–ด๋“ค๋ฉด ๊ทธ๊ฑด ์Œ์˜ ์‚ฌ์ดํด์ด๋‹ค.

๐Ÿซง ๋ฒจ๋จผ-ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ๋“ฌ_๊ฐœ์„ 

์–ด๋–ค ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ณ„์‚ฐ๋Ÿ‰์ด ์ค„ ์ˆ˜ ์žˆ๋‹ค

A -(1)โ†’ B -(1)โ†’ C -(1)โ†’ D -(1)โ†’ E
A๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ํ•  ๋•Œ

ใ„ฑ) (D, E), (C, D), (B, C), (A, B)
ใ„ด) (A, B), (B, C), (C, D), (D, E)

ใ„ฑ์€ ๋งˆ์ง€๋ง‰ ๋ฐ˜๋ณต๊นŒ์ง€ ๊ฐ€์„œ์•ผ ์ตœ๋‹จ ๊ฒฝ๋กœ๊ฐ€ ๊ฒฐ์ •
ใ„ด์€ ์ฒซ ๋ฐ˜๋ณต (ํ•œ ๋ฒˆ์˜ ๋ฐ˜๋ณต) ์œผ๋กœ ์ตœ๋‹จ๊ฒฝ๋กœ๊ฐ€ ๊ฒฐ์ •

๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์— ๋” ๋ณ€ํ™”๊ฐ€ ์—†์œผ๋ฉด, ๋ฐ˜๋ณต์„ ๋ฉˆ์ถ”๊ณ  ์•Œ๊ณ ๋ฆฌ๋“ฌ์˜ ์‹คํ–‰์„ ์ข…๋ฃŒ
์„ธํƒ€(ne) โ†’ O(ne)

Moore์˜ SPFA (Shortest Path Faster Algorithm)

์•ž ๋‹จ๊ณ„์™€ ํ˜„ ๋‹จ๊ณ„์—์„œ D[u]๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฐ„์„  (u, v)๋งŒ ์‚ดํŽด๋ณธ๋‹ค.
์™„ํ™” ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.