본문으로 건너뛰기

버그 제보

이상한 점을 알려 주시면 고칠게요. 지금 보고 있는 페이지와 브라우저 정보가 함께 담겨요.

페이지:

Algorithm

JavaScript 알고리즘: 순회와 그래프

추가
목차6개 항목
출처와 참고

Oleksii Trekhleb의 공개 저장소 「JavaScript Algorithms and Data Structures」를 주제별로 재구성한 노트다.

그래프를 이해하는 문제 유형

그래프의 노드와 간선은 물리적 도로뿐 아니라 작업의 의존성·통신망·친구 관계를 표현한다. 어떤 문제인지에 따라 같은 그래프도 다른 알고리즘이 필요하다.

목표주요 접근
모든 정점 방문DFS·BFS
비가중치 최단 경로BFS
비음수 가중치 최단 경로다익스트라
음수 간선이 있는 최단 경로벨만-포드, 음수 사이클 처리
모든 정점 쌍 최단 경로플로이드-워셜
최소 비용 연결망크루스칼·프림
DAG 선후 관계위상 정렬
연결성 취약 지점단절점·단절선
모든 간선/정점 순회오일러/해밀턴 문제를 별도로 판정

순회 구현과 그래프 알고리즘 목록

Linked Lists

항목수준핵심 개념코드·설명
Straight Traversal기초연결 리스트의 순방향 순회원본
Reverse Traversal기초연결 리스트의 역방향 순회원본

Trees

항목수준핵심 개념코드·설명
Depth-First Search기초한 경로를 깊게 방문하는 순회원본
Breadth-First Search기초가까운 정점부터 층별로 방문하는 순회원본

Graphs

항목수준핵심 개념코드·설명
Depth-First Search기초한 경로를 깊게 방문하는 순회원본
Breadth-First Search기초가까운 정점부터 층별로 방문하는 순회원본
Kruskal’s Algorithm기초가중치순 간선 선택과 Union-Find로 MST 계산원본
Dijkstra Algorithm심화음수 가중치가 없는 그래프의 최단 경로원본
Bellman-Ford Algorithm심화음수 간선을 허용하는 최단 경로와 음수 사이클 검사원본
Floyd-Warshall Algorithm심화모든 정점 쌍의 최단 경로원본
Detect Cycle심화유향·무향 그래프의 순환 존재 여부 판정원본
Prim’s Algorithm심화하나의 연결 트리를 확장하여 MST 계산원본
Topological Sorting심화선후 관계를 만족하는 DAG 정점 배열원본
Articulation Points심화제거하면 연결 성분이 증가하는 정점원본
Bridges심화제거하면 연결 성분이 증가하는 간선원본
Eulerian Path and Eulerian Circuit심화각 간선을 정확히 한 번 통과하는 경로원본
Hamiltonian Cycle심화각 정점을 정확히 한 번 방문하고 시작점으로 돌아오는 경로원본
Strongly Connected Components심화양방향 도달 가능한 정점 집합원본
Travelling Salesman Problem심화모든 도시를 방문하는 최소 순회 경로원본

구현 시 주의

  • 탐색에서 재방문 방지용 visited가 필요한지 명시한다.
  • 음수 간선의 존재와 음수 사이클을 구분한다.
  • 오일러 경로는 간선을 한 번씩, 해밀턴 경로는 정점을 한 번씩 방문한다.
  • MST는 모든 정점을 연결하는 가중치 최소 신장 트리로, 최단 경로 트리와 다르다.

관련 노트: DFS, BFS, 다익스트라, 최단 경로, 최소 신장 트리, 위상 정렬

원본 기록2

댓글

GitHub 계정으로 댓글을 남길 수 있어요.