[์•Œ๊ณ ๋ฆฌ์ฆ˜] SSP(2) ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra)๋ž€?

2022. 12. 17. 05:17ยท๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ทธ๋ž˜ํ”„
728x90

๋‹ค์ต์ŠคํŠธ๋ผ๋ž€

  • ํ•˜๋‚˜์˜ ์‹œ์ž‘ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ๋‹ค๋ฅธ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š”๋‹ค.
  • ํ”„๋ฆผ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ MST๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ฐ€์ค‘์น˜์™€ ์ •์ ์˜ KEY๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ KEY๊ฐ’์˜ ์—…๋ฐ์ดํŠธ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ–ˆ๋‹ค. SSP์—์„œ๋Š” ์ด๋ฅผ Relax๋ผ๊ณ  ํ‘œํ˜„ํ–ˆ๋‹ค. Relax๋Š” key๊ฐ’์ด ์—†๊ณ  ์ตœ๋‹จ ๊ฒฝ๋กœ ์ถ”์ • ๊ฐ’(d[v]๋ฅผ ์ด์šฉํ•˜์—ฌ d[v]๋ฅผ ์—…๋ฐ์ดํŠธ ํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •ํ–ˆ๋‹ค. Relax๋Š” ์ •์ ์˜ KEY๊ฐ’์ด ๋”ฑ ์ฃผ์–ด์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ถ”์ • ๊ฐ’๋“ค์ด ๋ˆ„์ ๋˜์–ด์˜จ ๊ฒฐ๊ณผ์ด๋‹ค. ์ด๋Ÿฐ ์ ์—์„œ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‹ค์ต์ŠคํŠธ๋ผ๋Š” ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„์Šทํ•˜๊ธฐ ๋•Œ๋ฌธ์— [์ž๋ฃŒ๊ตฌ์กฐ] MST(2) ํ”„๋ฆผ(Prim) ์ฐธ๊ณ 
 

[์ž๋ฃŒ๊ตฌ์กฐ] MST(2) ํ”„๋ฆผ(Prim)์ด๋ž€?

ํ”„๋ฆผ(Prim) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ์ž‘ ์ •์ ์—์„œ๋ถ€ํ„ฐ ์ถœ๋ฐœํ•˜์—ฌ ์‹ ์žฅ ํŠธ๋ฆฌ ์ง‘ํ•ฉ์„ ๋‹จ๊ณ„์ ์œผ๋กœ ํ™•์žฅํ•ด๋‚˜๊ฐ„๋‹ค. ์‹ ์žฅ ํŠธ๋ฆฌ ์ง‘ํ•ฉ์— ์ธ์ ‘ํ•œ ์ •์  ์ค‘์—์„œ ์ตœ์ € ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ์„ ํƒํ•˜์—ฌ ์ง‘ํ•ฉ์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์ฆ‰

linerate.tistory.com


 

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋™์ž‘๊ณผ์ •

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์šฐ์„  ๋ชจ๋“  ์ •์ ๋“ค์„ ์ตœ์†Œ ์šฐ์„ ์ˆœ์œ„ ํ์— ์‚ฝ์ž…ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ๋‹จ๊ฒฝ๋กœ ๊ฐ€์ค‘์น˜ ๊ฐ’ d[v]์ด ๊ฐ€์žฅ ์ž‘์€ ์ •์ ์„ ์„ ํƒํ•˜์—ฌ ์ธ์ ‘ ๊ฐ„์„ ๋“ค์— ๋Œ€ํ•ด Relax๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์‹œ์ž‘ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋น„์šฉ์„ ๊ณ„์‚ฐํ•œ๋‹ค.

์ดˆ๊ธฐํ™”๋œ ๊ทธ๋ž˜ํ”„ ๋ชจ์Šต์ด๋‹ค.

์‹œ์ž‘ ์ •์ ์„ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋“  ์ •์ ์˜ d[v]๊ฐ’์€ ∞์ด๋‹ค.

 

์ตœ์†Œ ์šฐ์„ ์ˆœ์œ„ํ์—์„œ d[v]๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ์ •์ ์„ ์ถ”์ถœํ•˜๋ฏ€๋กœ v1 ์ •์ ์„ ์‹œ์ž‘์œผ๋กœ ํ•˜์—ฌ ๊ฐ„์„ ์„ ํ™•์žฅํ•ด ๋‚˜๊ฐ„๋‹ค.


์ธ์ ‘ํ•œ ๊ฐ„์„ ์„ ์„ ํƒํ•˜์—ฌ Relax๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๊ฐ€์ค‘์น˜๊ฐ€ 8์ธ ๊ฐ„์„ ์„ ์„ ํƒํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์„ ํƒ ์ˆœ์„œ๋Š” ๊ตฌํ˜„ํ•˜๊ธฐ ๋‚˜๋ฆ„์ด๋‹ค.

 

Step 1์—์„œ 

์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋œ๋‹ค.


Step 2์™€ ๊ฐ™์ด Relax๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ d[v4]=8 ๋กœ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.


v1์˜ ์ธ์ ‘ ๊ฐ„์„ ๋“ค์— ๋Œ€ํ•ด ๋ชจ๋‘ Relax๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ,

๋‹ค์Œ ์ •์ ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด d[v]๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์ •์ ์„ ์ถ”์ถœํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ์ •์  v2๊ฐ€ ์ถ”์ถœ์ด ๋˜์–ด ์ธ์ ‘ ๊ฐ„์„ ๋“ค์— ๋Œ€ํ•ด Relax๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.



Relax ๊ฒฐ๊ณผ  d[v4]๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ฆ‰ ( v1 , v4 )์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋Š” v1 -> v4 ์ด๋‹ค.



v2์˜ ๋ชจ๋“  ์ธ์ ‘๊ฐ„์„ ์— ๋Œ€ํ•ด Relax๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ

์ตœ์†Œ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ d[v]๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ์ •์ ์„ ์ถ”์ถœํ•˜์—ฌ ์ •์  v5๊ฐ€ ์ถ”์ถœ๋œ๋‹ค.




v5์˜ ๋ชจ๋“  ์ธ์ ‘๊ฐ„์„ ์— ๋Œ€ํ•ด Relax๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ

์ตœ์†Œ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ d[v]๊ฐ’์ด ๊ฐ€์žฅ ์ž‘์€ ์ •์ ์„ ์ถ”์ถœํ•˜์—ฌ ์ •์  v4๊ฐ€ ์ถ”์ถœ๋œ๋‹ค.



๊ฐ’์ด ๊ฐ™์„ ๊ฒฝ์šฐ์—๋Š” ์—…๋ฐ์ดํŠธ๋Š” ํ•ด๋„๋˜๊ณ  ์•ˆํ•ด๋„ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ๋ƒฅ ๊ฐ€๋งŒํžˆ ๋‘๋Š” ํŽธ์ด ์—ฐ์‚ฐ์„ ์ค„์ธ๋‹ค.


v4์˜ ๋ชจ๋“  ์ธ์ ‘๊ฐ„์„ ์— ๋Œ€ํ•ด Relax๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฏ€๋กœ

๋งˆ์ง€๋ง‰ ์ •์  v3๊ฐ€ ์ถ”์ถœ๋œ๋‹ค.



 

Dijkstra's ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ Prim's ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์ด์ง€๋งŒ key ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ถ”์ • ๊ฐ’ d[v]์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•  ๋•Œ๋„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ค‘์น˜๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ด์ „ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ์ถ”์ • ๊ฐ’ d[v] + ๊ฐ€์ค‘์น˜ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

SSP๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ์™€ ๊ทธ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๊ฒฐ๊ณผ ํŠธ๋ฆฌ๋ฅผ ๋ณด๋ฉด ๊ฐ ์ •์ ์˜ d[v] ๊ฐ’์€ ์‹œ์ž‘ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ๊ทธ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋น„์šฉ์„ ์˜๋ฏธํ•œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, d[v5]์˜ ๊ฐ’์€ 7์ด๋ฏ€๋กœ v1 -> v5 ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ ๋น„์šฉ์€ 7์ด๋‹ค.

์‹ค์ œ๋กœ v1 -> v2 -> v5์˜ ๊ฒฝ๋กœ ์ƒ ๋ชจ๋“  ๊ฐ€์ค‘์น˜๋ฅผ ๋”ํ•˜๋ฉด 7์ž„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ "์ตœ๋‹จ ๊ฒฝ๋กœ" ์ž์ฒด๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ Relax์˜ ๊ฒฐ๊ณผ๋กœ d[v] ๊ฐ’์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๋ฉด ์ถ”์ถœ๋œ ์ •์ ์„ ๋ถ€๋ชจ๋…ธ๋“œ๋กœ ์„ค์ •ํ•ด์คŒ์œผ๋กœ์จ ๊ฐ ์ •์ ์˜ ๋ถ€๋ชจ ์ •์ ์„ ๊ธฐ์–ตํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, Step 2์—์„œ Relax ๊ฒฐ๊ณผ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ •์  v2์˜ ๋ถ€๋ชจ๋Š” v1์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

Dijkstra's ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์†Œ ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ d[v]๊ฐ’์ด ์ž‘์€ ์ •์ ์„ ํ•˜๋‚˜์”ฉ ๋ฝ‘์•„ ์ธ์ ‘ ๊ฐ„์„ ๋“ค์— ๋Œ€ํ•ด Relax๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ SSP๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ๋™์ž‘ ๋ฐฉ์‹์€ Prim's ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์œ ์‚ฌํ•˜์ง€๋งŒ ์™„์ „ํžˆ ๊ฐ™์ง€๋Š” ์•Š๋‹ค.

 

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํšจ์œจ

๋„คํŠธ์›Œํฌ์— n๊ฐœ์˜ ์ •์ ์ด ์žˆ๋‹ค๋ฉด, Dijkstra์˜ ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ฃผ๋ฐ˜๋ณต๋ฌธ์„ n๋ฒˆ ๋ฐ˜๋ณตํ•˜๊ณ  ๋‚ด๋ถ€ ๋ฐ˜๋ณต๋ฌธ์„ 2n๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฏ€๋กœ O(n2)์˜ ๋ณต์žก๋„๋ฅผ๊ฐ€์ง„๋‹ค.
728x90
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๊ทธ๋ž˜ํ”„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ASP(1) ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ(Floyd Warshall)์ด๋ž€?
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ชจ๋“  ์Œ์˜ ์ตœ๋‹จ๊ฒฝ๋กœ(All Pairs Shortest Path)๋ž€?
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] SSP(1) ๋ฒจ๋งŒํฌ๋“œ(Bellman-Ford)๋ž€?
  • [์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋‹จ์ผ ์ถœ๋ฐœ์ง€ ์ตœ๋‹จ๊ฒฝ๋กœ(Single Source Shortest Path)๋ž€?
juno1105
juno1105
๊ณต๋ถ€ํ•˜๋Š” ๊ฒธ ํฌํด ๋ธ”๋กœ๊ทธ
  • juno1105
    @juno1105
    juno1105
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (89)
      • ๐Ÿ’ฌ ์ž์œ  (3)
      • ๐Ÿ“– ์–ดํ•™ ๊ณต๋ถ€ (0)
      • ๐Ÿ“” ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ (4)
      • ๐Ÿ›  ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜ ํ•ด๊ฒฐ๋ฒ• (1)
      • ๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (53)
        • ์Šคํƒ (4)
        • ํ (4)
        • ์ •๋ ฌ ๋ฐ ํƒ์ƒ‰ (17)
        • ๋ฆฌ์ŠคํŠธ (5)
        • ํ•ด์‹œ (1)
        • ํŠธ๋ฆฌ (8)
        • ํž™ (2)
        • ๊ทธ๋ž˜ํ”„ (12)
      • ๐Ÿ’ป ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (0)
      • ๐Ÿšฅ ๋…ผ๋ฆฌํšŒ๋กœ (8)
      • ๐Ÿ”ฐ ๋ฐฑ์ค€ (20)
        • ํ, ์Šคํƒ, ๋ฑ (0)
        • DFS ์™€ BFS (3)
        • ๊ทธ๋ฆฌ๋”” (0)
        • ๋™์ ๊ณ„ํš๋ฒ• 1 (16)
        • ๋™์ ๊ณ„ํš๋ฒ• 2 (0)
        • ์ตœ๋‹จ ๊ฒฝ๋กœ (0)
        • ํŠธ๋ฆฌ (0)
        • ๋ฐฑํŠธ๋ž˜ํ‚น (0)
        • ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ (0)
        • ์ง‘ํ•ฉ๊ณผ ๋งต (1)
      • ๐ŸŒˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (0)
      • ๐Ÿ“ฑ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • โœจ์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ปค๋ฆฌํ˜๋Ÿผโœจ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ •๋ ฌ ์ตœ์„ ์˜ ๊ฒฝ์šฐ
    ํ† ์ต 910์ 
    ํ† ์ต 900์ 
    ํ† ์ต 950์ 
    ํ† ์ต 900์ ๋Œ€
    ์‹œ๊ฐ„๋ณต์žก๋„
    ์ตœ๋‹จ๊ฒฝ๋กœ
    ํ† ์ต 900
    ํ† ์ต 920์ 
    ๋น…์˜คํ‘œ๊ธฐ๋ฒ•
    ์ •๋ ฌ
    ํ† ์ต
    ๊ทธ๋ž˜ํ”„ํƒ์ƒ‰
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์ •๋ ฌ ์ตœ์•…์˜ ๊ฒฝ์šฐ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
juno1105
[์•Œ๊ณ ๋ฆฌ์ฆ˜] SSP(2) ๋‹ค์ต์ŠคํŠธ๋ผ(Dijkstra)๋ž€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”