[알고리즘] 최단 경로 알고리즘 - JavaScript

2022. 9. 21. 13:51·알고리즘/풀이 힌트
반응형

최단 경로 알고리즘? 

그래프에서 특정 정점에서 목적지까지 최단 경로를 구하는 알고리즘이다. 

 

대표적인 최단 경로 알고리즘은 다음과 같다.

  • DFS
  • 다익스트라
  • 벨만-포드
  • 플로이드 와샬

목적에 따라 알고리즘을 선택할 수 있다. 

 

BFS, DFS 

그래프의 간선 가중치가 모두 같을 때 적합하다. 

2차원 배열로 구성된 지도에서 최단 거리를 찾아야 한다면 BFS, DFS로 푸는 경우가 많다. 

다익스트라 알고리즘

그래프의 간선 가중치가 각각 다른 경우 적합하다. 

우선 큐를 이용해서 만들 수 있으며, 시간 복잡도는 V가 정점의 수, E가 간선의 수라면 

O(E log V) 이다.

 

작동 방법

1. 시작점을 제외한 모든 정점의 거리를 무한으로 설정한다. 시작은 0

2. 시작점을 선택한다. 

3. 선택한 정점에서 갈 수 있는 정점의 거리를 
    현재 정점까지의 값 + 목적지 정점까지의 간선의 값으로 갱신한다. 

4. 선택한 정점을 방문 처리한다. 

5. 이미 방문한 정점과 무한인 정점을 제외하고 가장 최단 거리인 정점을 선택한다. 

6. 더 이상 방문할 수 있는 정점이 없을 때까지 반복한다. 

7. 도착점의 값을 확인한다. 

반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 > 풀이 힌트' 카테고리의 다른 글

[알고리즘] 그리디 - JavaScript  (0) 2022.09.19
[알고리즘] 배열끼리 비교해서 배열의 포함 관계 확인하기  (1) 2022.09.12
[알고리즘] 최소 신장 트리 ( Kruskal ) - JavaScript  (2) 2022.08.29
[알고리즘] 재귀 함수를 이용한 순열, 조합  (1) 2022.08.27
[알고리즘] 재귀 함수를 이용한 트리 순회 알고리즘  (1) 2022.08.26
'알고리즘/풀이 힌트' 카테고리의 다른 글
  • [알고리즘] 그리디 - JavaScript
  • [알고리즘] 배열끼리 비교해서 배열의 포함 관계 확인하기
  • [알고리즘] 최소 신장 트리 ( Kruskal ) - JavaScript
  • [알고리즘] 재귀 함수를 이용한 순열, 조합
잉여개발자
잉여개발자
풀스택 개발자를 목표로 잉여롭게 개발 공부도 하면서 다양한 취미 생활도 즐기고 있는 잉여 개발자입니다.
  • 잉여개발자
    잉여로운 개발일지
    잉여개발자
    • 분류 전체보기 (789)
      • 개발정보 (36)
      • 개발환경 (7)
      • 개발생활 (19)
      • React (141)
        • 이론 (23)
        • 기능 (12)
        • 실험실 (88)
        • 버그 (6)
        • 패스트캠퍼스 (9)
        • Npm (3)
      • React Native (28)
        • 공통 (6)
        • TypeScript (3)
        • JavaScript (18)
        • 버그 (1)
      • Next.js (30)
        • 이론 (13)
        • 실험실 (13)
        • 버그 (3)
      • Web (35)
      • 알고리즘 (202)
        • 풀이 힌트 (39)
      • JavaScript (47)
      • TypeScript (29)
        • 기초 (27)
        • 실험실 (2)
      • Node.js (13)
        • 이론 (0)
        • 기능 (3)
        • 실험실 (9)
        • 버그 (1)
      • 도커 (4)
      • CCNA (22)
        • 이론 (4)
        • 문제 (18)
      • 취미생활 (167)
        • 잉여로운 칵테일 (2)
        • 잉여의 식물키우기 (130)
        • 잉여로운 여행기 (11)
        • 잉여의 제2외국어 (21)
        • 잉여로운 책장 (2)
      • Java (1)
        • Java의 정석 (1)
      • 꿀팁 공유 (3)
  • 태그

    Node.js
    바질 키우기
    프로그래머스
    자바스크립트
    react
    리얼학습일기
    Babel
    CSS
    redux
    typescript
    리액트
    webpack
    알고리즘
    네이버 부스트캠프
    네트워크
    타입스크립트
    식물
    타일러영어
    영어회화
    영어독학
    javascript
    ReactNative
    next.js
    리얼클래스
    바질
    ChatGPT
    Docker
    다이소
    덤프
    CCNA
  • hELLO· Designed By정상우.v4.10.1
잉여개발자
[알고리즘] 최단 경로 알고리즘 - JavaScript
상단으로

티스토리툴바