Floyd-Warshall Algorithm

2019. 12. 17. 03:16·Algorithm/Algorithm (이론)

 

1. 용도

Graph에서 All pairs Shortest Path 구하기 == 그래프 내의 모든 노드쌍에 대한 최단거리 구하기.

 

 

Input Directed-weighted Graph
Output All pairs Shortest Path (ex. Adjacency Matrix)

 

2. IDEA

 

 

k단계에서의 Shortest Path에 대한 점화식을 도출해냈다.

점화식으로 부터 이 알고리즘이

'Dynamic Programming' 류의 알고리즘임을 알 수 있다.

 

3. Pseudo Code

 

4. Time Complexity

 

Pseudo Code에서 알 수 있듯이

 

최초의 Adjacency Matrix를 형성하는 2중 for Loop은 O(n^2)

Shortest Path를 갱신하는 3중 for Loop 은 O(n^3)

∴ O(n^3)

 

 

 

 

참고 자료

https://ko.wikipedia.org/wiki/%ED%94%8C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%9B%8C%EC%85%9C_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98

 

플로이드-워셜 알고리즘 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 컴퓨터 과학에서, 플로이드-워셜 알고리즘(Floyd-Warshall Algorithm)은 변의 가중치가 음이거나 양인 (음수 사이클은 없는) 가중 그래프에서 최단 경로들을 찾는 알고리즘이다.[1][2] 알고리즘을 한 번 수행하면 모든 꼭짓점 쌍 간의 최단 경로의 길이(가중치의 합)을 찾는다. 알고리즘 자체는 경로를 반환하지는 않지만, 알고리즘을 약간만 변형시키면 경로를 찾을 수 있다. 이 알고리즘의 일부 버전은 관계 R

ko.wikipedia.org

 

저작자표시 (새창열림)

'Algorithm > Algorithm (이론)' 카테고리의 다른 글

Backtracking  (0) 2021.01.26
[Data Structure] Hash  (0) 2020.10.17
Strongly Connected Component  (0) 2019.11.23
Topological Sort(위상 정렬)  (0) 2019.11.22
에라토스테네스의 체 (소수 구하기) (feat. 백준 1978, 1929)  (0) 2019.11.12
'Algorithm/Algorithm (이론)' 카테고리의 다른 글
  • Backtracking
  • [Data Structure] Hash
  • Strongly Connected Component
  • Topological Sort(위상 정렬)
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    오늘
    어제
    • 분류 전체보기 (429)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (문제풀이) (56)
        • Algorithm (이론) (23)
      • JVM (64)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (23)
        • Error (7)
      • 기타 (68)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (12)
        • git (19)
        • 잡동사니 (26)
      • 재테크 (11)
        • 세무 (4)
        • 투자 (3)
        • 보험 (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • 시스템 보안 (5)
      • 네트워크 (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • 저작권과 스마트폰의 이해 (0)
      • 생각 뭉치 (6)
      • 궁금증 (2)
      • Private (4)
        • 이직 경험 (0)
        • 꿈을 찾아서 (1)
      • Android (21)
        • OS (4)
  • 블로그 메뉴

    • 홈
    • WEB
    • 알고리즘
    • DataBase
    • Linux
    • Mobile
    • C
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    database
    javascript
    Programmers
    ubuntu
    백준
    java
    docker
    Kotlin
    Spring
    프로그래머스
    algorithm
    android
    JPA
    C++
    Git
    알고리즘
    kafka
    Bitcoin
    linux
    PostgreSQL
  • hELLO· Designed By정상우.v4.10.3
M_Falcon
Floyd-Warshall Algorithm
상단으로

티스토리툴바