그래프는 정점(Vertex)과 간선(Edge)으로 이루어진 자료구조입니다. 소셜 네트워크, 지도, 인터넷 라우팅 — 현실의 수많은 문제가 그래프로 모델링됩니다.
그래프를 탐색하는 두 가지 전략입니다. DFS(깊이우선탐색)는 스택을 사용해 한 방향으로 끝까지 파고들고, BFS(너비우선탐색)는 큐를 사용해 가까운 노드부터 탐색합니다.
신장 트리(Spanning Tree)는 모든 정점을 연결하는 최소한의 간선 집합입니다. Kruskal 알고리즘은 가중치 오름차순으로 간선을 추가하되, 사이클을 만들지 않는 간선만 선택합니다(Union-Find 활용).
단일 출발점 최단 경로 알고리즘입니다. 음수 가중치가 없는 그래프에서 출발점에서 모든 정점까지의 최단 거리를 구합니다. 구글 지도, 네트워크 라우팅의 핵심 알고리즘입니다.
Floyd의 토끼와 거북이 알고리즘은 연결 리스트에서 사이클을 O(n) 시간, O(1) 공간으로 탐지합니다. 느린 포인터(거북이)는 한 칸씩, 빠른 포인터(토끼)는 두 칸씩 이동합니다. 사이클이 있으면 반드시 만납니다.