맨들맨들 돌덩이
Home
  • 분류 전체보기 (439)
    • 프로젝트 (14)
    • NOTICE (2)
    • 개발 (206)
      • Unity (12)
      • JAVA (20)
      • SPRING (9)
      • DB (10)
      • FronT (14)
      • 알고리즘 (16)
      • 이코테 (25)
      • Python (60)
      • Arduino (4)
      • WEB (18)
      • C++ (17)
    • 게임 (33)
      • DNF (31)
      • LostArk (2)
    • KT_DS (93)
      • 보호관리용 (3)
    • 실습코드 (64)
      • 실습 코드 (63)
    • 독서 (2)
      • 생각넓히기 (2)
    • Setting (17)
    • 일상 (8)
ALL
  • 분류 전체보기 (439)
    • 프로젝트 (14)
    • NOTICE (2)
    • 개발 (206)
      • Unity (12)
      • JAVA (20)
      • SPRING (9)
      • DB (10)
      • FronT (14)
      • 알고리즘 (16)
      • 이코테 (25)
      • Python (60)
      • Arduino (4)
      • WEB (18)
      • C++ (17)
    • 게임 (33)
      • DNF (31)
      • LostArk (2)
    • KT_DS (93)
      • 보호관리용 (3)
    • 실습코드 (64)
      • 실습 코드 (63)
    • 독서 (2)
      • 생각넓히기 (2)
    • Setting (17)
    • 일상 (8)
블로그 내 검색

맨들맨들 돌덩이

티스토리 생일 : 2020.11.18. 모든 문의 : highcw@naver.com

  • 개발/이코테

    플로이드 워셜 알고리즘 개요, 성능 분석

    2022. 4. 22.

    by. KAEY

    이것이 코딩테스트다. 나동빈 신님의 강의를 바탕으로 작성하였습니다.


     플로이드 워셜 알고리즘 개요

    '모든 노드에서 다른 모든 노드까지의 최단 경로를 모두 계산'한다.
     플로이드 워셜 알고리즘은 다익스트라 알고리즘과 마찬가지로 단계별로 '거쳐 가는 노드를 기준으로
     알고리즘을 수행'한다.
      -다만 매 단계마다 방문하지 않은 노드 중에 최단 거리를 갖는 노드를 찾는 과정이 필요하지 않음.
     플로이드 워셜은 2차원 테이블에 최단 거리 정보를 저장한다.
     다이나믹 프로그래밍 유형에 속한다.

     


     각 단계마다 '특정한 노드 k를 거쳐 가는 경우를 확인'한다
      -a에서 b로 가는 최단 거리보다 a에서 k를 거쳐 b로 가는 거리가 더 짧은지 검사한다.

     


     점화식은 다음과 같다.
       D ab = min (D ab, D ak + D kb)
      a에서 b로 가는 거리 = a에서 b로 가는 거리와 a에서 k, k에서 b로 가는 거리를 더한 값 중 비교해 작은 값

     

     


     성능 분석
      노드의 개수가 N개 일 때 알고리즘상으로 N번의 단계를 수행한다.
      -각 단계마다 O(Ne2)의 연산을 통해 현재 노드를 거쳐 가는 모든 경로를 고려한다.
      따라서 플로이드 워셜 알고리즘의 총 시간 복잡도는 O(Ne3)이다.
      따라서 일반적으로 노드의 개수가 500개 이하로 잡히는 경우가 많음. (= 시간 문제 때문)

     


     문제 > 전보 문제, 미래 도시  

     

     


    저작자표시 비영리 동일조건 (새창열림)

    '개발 > 이코테' 카테고리의 다른 글

    크루스칼 알고리즘 정의  (0) 2022.04.22
    서로소 집합 알고리즘  (0) 2022.04.22
    우선순위 큐 구현 방식, 삽입 시간, 삭제 시간, 힙 정렬  (0) 2022.04.22
    최단 경로 알고리즘, 다익스트라 알고리즘의 동작과정, 정의, 시간 복잡도  (0) 2022.04.21
    다이나믹 프로그래밍 vs 분할 정복 비교. 공통점 차이점  (0) 2022.04.21

    댓글 (비로그인 댓글 허용하지 않습니다.)

    관련글

    • 크루스칼 알고리즘 정의 2022.04.22
    • 서로소 집합 알고리즘 2022.04.22
    • 우선순위 큐 구현 방식, 삽입 시간, 삭제 시간, 힙 정렬 2022.04.22
    • 최단 경로 알고리즘, 다익스트라 알고리즘의 동작과정, 정의, 시간 복잡도 2022.04.21
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
KAEY
#모바일 접속 차단. (PC 환경 자동 리다이렉트) #현재 블로그내 모든 광고는 티스토리(카카오)에서 게시한 광고입니다😢. #문의 이메일 : highcw@naver.com

티스토리툴바