sladuf
200
sladuf
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (83)
    • ๐Ÿ“š Programming (32)
      • Swift (13)
      • JAVA (2)
      • Python (6)
      • SQL (6)
      • Web (5)
    • ๐Ÿ“ฑ iOS (25)
      • Base (7)
      • SwiftUI (9)
      • UIKit (7)
      • ์ธ๊ฐ• & ์ฑ… (2)
    • ๐Ÿ”— Algorithm (20)
      • Python (12)
      • Swift (3)
      • Tip (5)
    • ๐Ÿ—‚ ETC (6)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

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

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Swift
  • ์Šค์œ„ํ”„ํŠธ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๊ธ€์“ฐ๊ธฐ ์„ค์ •
hELLO ยท Designed By ์ •์ƒ์šฐ.
sladuf

200

[Algorithm] Dijkstra ๋‹ค์ต์ŠคํŠธ๋ผ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐Ÿ”— Algorithm/Tip

[Algorithm] Dijkstra ๋‹ค์ต์ŠคํŠธ๋ผ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

2021. 3. 11. 04:32

 

๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ A์—์„œ B๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

๋จผ์ €, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง๊ด€์ ์œผ๋กœ ์‚ดํŽด๋ณด์ž

 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์—์„œ A->C๋กœ ๊ฐ€๊ณ ์ž ํ•  ๋•Œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•ด๋ณด์ž.

 

 

์šฐ์„  ์ถœ๋ฐœ์ง€๋กœ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋“ค๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค. (๋นจ๊ฐ„์ƒ‰)

 

 

๊ทธ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ด๋™ํ•œ๋‹ค.

ํ•ด๋‹น ๋…ธ๋“œ์—์„œ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋“ค ์ค‘์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ๊ณผ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด D์˜ ๊ฑฐ๋ฆฌ๊ฐ€ 5์—์„œ 3์œผ๋กœ ๊ฐฑ์‹  ๋˜์—ˆ๋‹ค. (์ตœ๋‹จ ๊ฑฐ๋ฆฌ)

 

 

C๊ฐ€ 5์—์„œ 4๋กœ ๊ฐฑ์‹ ๋˜์—ˆ๋‹ค.

 

 

ํ˜„์žฌ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๊ฐ€ ๋„์ฐฉ์ง€๋ผ๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ข…๋ฃŒํ•œ๋‹ค.

 

 

๊ทธ๋ฆผ์ฒ˜๋Ÿผ A->C์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋Š” 4๊ฐ€ ๋œ๋‹ค. ์œ„์™€ ๊ฐ™์ด ๋™์ž‘ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

 

 

 

๐Ÿ“Œ Rule

1. ์ถœ๋ฐœ ๋…ธ๋“œ๋กœ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ๋…ธ๋“œ๋“ค ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

2. ๋‹ค์Œ ๋…ธ๋“œ๋กœ ๋ฐฉ๋ฌธํ•˜์—ฌ ์ธ์ ‘ ๋…ธ๋“œ๋“ค ์ค‘ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ๋“ค ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

3. ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ๋Š” ํ˜„์žฌ ๊ฑฐ๋ฆฌ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฑฐ๋ฆฌ๋ณด๋‹ค ์งง์„ ๋•Œ๋งŒ ๊ฐฑ์‹ ํ•œ๋‹ค.

4. 2,3๋ฒˆ ๋ฐ˜๋ณต ํ›„ ๋„์ฐฉ์ง€์— ๋„์ฐฉํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ข…๋ฃŒํ•œ๋‹ค. (๋„์ฐฉ ๋…ธ๋“œ์— ์ €์žฅ๋œ ๊ฑฐ๋ฆฌ๊ฐ€ ์ตœ๋‹จ๊ฑฐ๋ฆฌ)

 

 

 

 

Code

dic์€ ๋”•์…”๋„ˆ๋ฆฌ์ด๋‹ค. key๋Š” ๋…ธ๋“œA value์—๋Š” [๋„์ฐฉB, AB์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ]๊ฐ€ ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅ๋˜์–ด์žˆ๋‹ค.

๋‹ค์Œ ์ฝ”๋“œ๋Š” ์–‘๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ l๋ถ€ํ„ฐ r๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ํ•จ์ˆ˜์ด๋‹ค. 

import heapq

def dijkstra(n,l,r):
    cost=[float('inf') for x in range(n+1)]
    h=[(0,l)]
    cost[l]=0
    
    while h:
        cnt,num=heapq.heappop(h)
        if cost[num]<cnt:
            continue
            
        for i,j in dic[num]:
            if cnt+j<cost[i]:
                cost[i]=cnt+j
                heapq.heappush(h,(cnt+j,i))
                
    return cost[r]

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ”— Algorithm > Tip' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (DP)  (0) 2022.02.17
[Python] ์ตœ์†Œํž™(MIN heap) / ์ตœ๋Œ€ํž™(MAX heap)  (0) 2022.01.31
[Algorithm] LCA ์•Œ๊ณ ๋ฆฌ์ฆ˜  (0) 2021.03.28
[Algorithm] ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ BFS / ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ DFS  (0) 2020.08.24
    '๐Ÿ”— Algorithm/Tip' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ (DP)
    • [Python] ์ตœ์†Œํž™(MIN heap) / ์ตœ๋Œ€ํž™(MAX heap)
    • [Algorithm] LCA ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • [Algorithm] ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ BFS / ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ DFS
    sladuf
    sladuf

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