플로이드 워셜 알고리즘

2024. 4. 22. 17:31·Algorithm/정리

1. 개념

플로이드 워셜 알고리즘은 다익스트라와 같이 최단 경로 알고리즘 중의 하나로,

가중치가 있는 그래프에서 모든 노드 쌍 간의 최단 경로를 구하는 알고리즘이다.

 

다익스트라 같은 경우는 단일 노드에서 다른 모든 노드까지의 최단 경로였지만 여기서는 모든 노드 쌍 간의 최단 경로이다..!

 

아래에서 구현 코드와 함께 이해해보자.

 

 


2. 코드 이해

플로이드 알고리즘의 코드 구조를 매우 간단하다.

 

일단 모든 노드 쌍 간의 최단거리를 구해야 하므로 n^2의 계산이 필요하다.

여기에서는 i → j 까지 직행으로 가는 거리를 구할 수 있다.

for i in range(n):    	# 출발지
    for j in range(n):	# 도착지
        dist[i][j]

 

 

위 수식에서 i → j 까지 갈 때, 경유지를 고려하면 플로이드 알고리즘이 완성된다.

i → j 까지 직행 거리와 i → k → j 로 경유지를 들린 거리를 비교해 최단 거리를 갱신해나가면 된다.

 

그러면 k는 가장 바깥의 for 문으로 정의하여, 경유 가능한 노드를 늘려가며 된다. 

  • k = 0 일 때는, 0번 노드 경유지 허용
  • k = 1 일 때는, 1번 노드 경유지 허용
  • k = 2 일 때는, 1·2번 노드 경유지 허용
for k in range(n):        	# 경유지
    for i in range(n):    	# 출발지
        for j in range(n):	# 도착지
            dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])

 

 


3. 문제

지금까지 풀었던 플로이드 알고리즘 유형에 대한 문제 풀이 리스트이다.

 

 

* BOJ - 11265. 끝나지 않는 파티 (골드 4)

  • https://wch-0625.tistory.com/72

 

* BOJ - 14938. 서강그라운드 (골드 4)

  • https://wch-0625.tistory.com/73

 

* BOJ - 1719. 택배 (골드 3)

  • https://wch-0625.tistory.com/84

 

* BOJ - 11562. 백양로 브레이크 (골드 3)

  • https://wch-0625.tistory.com/104
저작자표시 (새창열림)

'Algorithm > 정리' 카테고리의 다른 글

Union-Find 알고리즘 (feat. Disjoint Set)  (0) 2024.06.27
MITM (Meet in the middle) 알고리즘  (0) 2024.05.30
다익스트라 알고리즘  (0) 2024.04.16
프림 / 크루스칼 알고리즘  (0) 2024.04.14
이분탐색 알고리즘  (0) 2024.04.11
'Algorithm/정리' 카테고리의 다른 글
  • Union-Find 알고리즘 (feat. Disjoint Set)
  • MITM (Meet in the middle) 알고리즘
  • 다익스트라 알고리즘
  • 프림 / 크루스칼 알고리즘
wch_t
wch_t
  • wch_t
    끄적끄적(TIL)
    wch_t
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (185)
      • Algorithm (72)
        • 정리 (12)
        • Math (4)
        • Simulation (2)
        • Data Structure (4)
        • DP (6)
        • Brute Fource (10)
        • Binary Search (6)
        • Greedy (2)
        • Graph (11)
        • Mst (0)
        • Shortest path (10)
        • Two Pointer (1)
        • Tsp (3)
        • Union Find (1)
        • Mitm (0)
      • CS (12)
        • 데이터베이스 (5)
        • 네트워크 (5)
      • DB (9)
      • DevOps (15)
        • AWS (8)
        • Docker (1)
        • CI-CD (4)
      • Error (1)
      • Project (0)
        • kotrip (0)
      • Spring (60)
        • 끄적끄적 (5)
        • 기본 (9)
        • MVC 1 (7)
        • MVC 2 (11)
        • ORM (9)
        • JPA 1 (7)
        • JPA 2 (5)
        • Spring Data Jpa (7)
      • Test (2)
      • TIL (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Merge
    백준 3015 파이썬
    response_mode
    docker: not found
    aws secrets manager
    docker
    TempTable
    Sxssf
    Jenkins
    spring-cloud-starter-aws-secrets-manager-config
    form_post
    백준 17299 파이썬
    apache poi
    애플
    spring-cloud-starter-bootstrap
    view algorithm
    백준 17289 파이썬
    scope
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
wch_t
플로이드 워셜 알고리즘
상단으로

티스토리툴바