โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Graph

5. Floyd Warshall(ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ) : ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 3

2021. 3. 31. 11:58
๋ชฉ์ฐจ
  1. Floyd Warshall (ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ)
  2. ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 3

Floyd Warshall (ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ)

์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 3

์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ…์ด๋‹ค.

์ฃผ๋ง๋งˆ๋‹ค ํ•œ ๊ฐœ์”ฉ์€ ์“ธ๋ผํ–ˆ๋Š”๋ฐ ์ฃผ๋ง์— ์ข€ ๋ฐ”๋น ์„œ ๋ชป์ผ๋‹ค...

์–ด์ œ ๋ฐฑ์ค€์—์„œ ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ๊ฐ‘์ž๊ธฐ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…์ด ์ƒ๊ฐ๋‚˜์„œ ์“ฐ๊ฒŒ ๋๋‹ค!

 

๋‹ค์ต์ŠคํŠธ๋ผ, ๋ฒจ๋งŒ ํฌ๋“œ์— ์ด์€ ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜

์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ด์šฉ์ด๋‹ค.

 

๋‹ค์ต์ŠคํŠธ๋ผ, ๋ฒจ๋งŒ ํฌ๋“œ๋Š” ํŠน์ • ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•ด์ค€๋‹ค.

์กฐ๊ธˆ ์ƒ๊ฐ์„ ๋ฐ”๊ฟ”์„œ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

 

์šฐ์„  ๊ธฐ์กด์— ๋ฐฐ์› ๋˜ ๋‹ค์ต์ŠคํŠธ๋ผ์™€ ๋ฒจ๋งŒ ํฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์ต์ŠคํŠธ๋ผ์—์„œ ์ž…๋ ฅ ๊ฐ’์œผ๋กœ ๋„ฃ์–ด์ฃผ๋Š” src, ์ฆ‰ ์ถœ๋ฐœ ๋…ธ๋“œ๋ฅผ ๋ชจ๋“  ๋…ธ๋“œ๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ์•„์•ผํ•˜๊ธฐ์— ์‹œ๊ฐ„๋ณต์žก๋„๋Š” N๋งŒํผ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.

 

๋‹ค์ต์ŠคํŠธ๋ผ์™€ ๋ฒจ๋งŒ ํฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๋‹จ์ˆœํ•œ ์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ?

 

๊ทธ๋ ‡๋‹ค. ๋ฐ”๋กœ ์ด๊ฒƒ์ด์˜ค๋Š˜ ์„ค๋ช…ํ•  ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

๋‹จ์ˆœํ•œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„์„ ํ•ด์•ผํ• ๊นŒ?

๊ฐœ๋… ์ž์ฒด๋„ ๋‹จ์ˆœํ•˜๋‹ค.

 

์ •์  i, j, k๊ฐ€ ์žˆ๊ณ  ๊ฐ ์ •์ ๋“ค ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ๋ฐฐ์—ด์— ์ €์žฅ๋˜์–ด์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ์•„๋ž˜์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

 

๋ฐฐ์—ด [i][j] -> i์—์„œ j๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ

๋ฐฐ์—ด [i][k] -> i์—์„œ k๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ

๋ฐฐ์—ด [k][j] -> k์—์„œ j๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ

 

๊ทธ๋ ‡๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์‹์„ ์œ ๋„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

i์—์„œ j๊นŒ์ง€ ํ•œ๋ฒˆ์— ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐฐ์—ด [i][j],

i์—์„œ k๋ฅผ ๊ฑฐ์ณ j๊นŒ์ง€ ๊ฐ€๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐฐ์—ด [i][k] + ๋ฐฐ์—ด [k][j]

 

์ด์ œ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด

๋ฐฐ์—ด [i][j] > ๋ฐฐ์—ด [i][k] + ๋ฐฐ์—ด [k][j] ์ธ ๊ฒฝ์šฐ ๋ฐฐ์—ด [i][j] = ๋ฐฐ์—ด [i][k] + ๋ฐฐ์—ด [k][j] ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค!

 

์œ„์˜ ์‹์„ ์ดํ•ดํ–ˆ๋‹ค๋ฉด ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์™„๋ฒฝํžˆ ์ดํ•ดํ•œ ๊ฒƒ์ด๋‹ค.

 

์œ„์˜ ๊ฐœ๋…์„ ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค.

 

 

๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์„ค๋ช…ํ•ด๋ณด์ž๋ฉด

๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•  distance ๋ฐฐ์—ด์„ INF๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

์ดํ›„ ์ž…๋ ฅ ๊ฐ’์„ distance์— ๋„ฃ์–ด์ฃผ๊ณ  src์™€ dst๊ฐ€ ๊ฐ™์€ ๊ณณ์€ 0์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

์ดํ›„ ํƒ์ƒ‰์„ ํ†ตํ•ด ๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๊ณ  ์ถœ๋ ฅํ•œ๋‹ค. (๊ฐˆ ์ˆ˜ ์—†๋Š” ์ •์ ์˜ ๊ฒฝ์šฐ 0์„ ์ถœ๋ ฅํ•œ๋‹ค.)

 

 

[Input]

6 8  # ์ •์ ์˜ ๊ฐœ์ˆ˜, ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜
1 2 6
1 3 4
1 4 4
1 5 2
2 4 5
2 5 7
3 6 10
5 6 2

 

[Output]

 

์ถฉ๋‚จ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ์ด์˜์„ ๊ต์ˆ˜๋‹˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—…๊ณผ ๋™๋นˆ๋‚˜์˜ ์œ ํŠœ๋ธŒ ๊ฐ•์ขŒ(youtu.be/9574GHxCbKc)๋ฅผ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

'โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ > Graph' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

6. Union Find(ํ•ฉ์ง‘ํ•ฉ ์ฐพ๊ธฐ) : MST - 1  (0) 2021.05.30
4. Bellman-Ford(๋ฒจ๋งŒ ํฌ๋“œ) : ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 2  (0) 2021.03.07
3. Dijsktra(๋‹ค์ต์ŠคํŠธ๋ผ) : ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 1  (0) 2021.03.02
2. DFS(Depth-Find-Search) : ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰  (0) 2021.01.22
1. BFS(Breath-Find-Search) : ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰  (0) 2021.01.21
  1. Floyd Warshall (ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ)
  2. ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 3
'โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Graph' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • 6. Union Find(ํ•ฉ์ง‘ํ•ฉ ์ฐพ๊ธฐ) : MST - 1
  • 4. Bellman-Ford(๋ฒจ๋งŒ ํฌ๋“œ) : ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 2
  • 3. Dijsktra(๋‹ค์ต์ŠคํŠธ๋ผ) : ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 1
  • 2. DFS(Depth-Find-Search) : ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰
kodo_o
kodo_o
iOS ๊ฟ€์žผ!
kodo_o
๐ŸŽ๐Ÿ
kodo_o
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (149)
    • ๐Ÿ”จ ํ”„๋กœ์ ํŠธ (0)
      • TP 1 (0)
      • WhiteHCCTV (0)
      • FootPrint (0)
    • ๐Ÿ’ป ๊ฐœ๋ฐœ (63)
      • iOS (30)
      • Android (6)
      • Kotlin (4)
      • Flutter (9)
      • Node.js (5)
      • Architecture (1)
      • ์˜ค๋Š˜์˜ ์‚ฝ์งˆ (7)
      • ์—๋Ÿฌ์™€์˜ ๋™์นจ (1)
    • โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (6)
      • Graph (6)
      • String (0)
      • Sort (0)
    • โœ๏ธ ์ฝ”ํ…Œ ์ค€๋น„ (44)
      • Math (1)
      • Implementation (3)
      • String (3)
      • Brute Force (5)
      • Back Tracking (7)
      • Greedy (0)
      • Dynamic Programming (13)
      • Binary Search (1)
      • DFS, BFS (5)
      • Shortest Path (2)
      • Two Pointer (4)
      • MST (0)
    • ๐Ÿ“š CS (6)
      • Operating System (6)
    • โ›น๏ธ ๋ผ์ดํ”„ (30)
      • 2020 ๊ฒจ์šธ๋ฐฉํ•™ ๋ชจ๊ฐ์ฝ”(๊ฐœ์ธ) (12)
      • 2021 ์—ฌ๋ฆ„๋ฐฉํ•™ ๋ชจ๊ฐ์ฝ”(๊ฐœ์ธ) (6)
      • ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ (1)
      • ํšŒ๊ณ  (10)

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

  • ํ™ˆ
  • ๊นƒํ—ˆ๋ธŒ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

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

hELLO ยท Designed By ์ •์ƒ์šฐ.
kodo_o
5. Floyd Warshall(ํ”Œ๋ฃจ์ด๋“œ ์™€์ƒฌ) : ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ - 3
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.