# Graph
- 2026년 8월 11일 알고리즘플로이드·워셜의 메모리 줄이기 — N³칸에서 N²칸으로
플로이드·워셜은 D[k][i][j]로 N³칸을 쓴다. k를 계산할 때 k-1층만 참조한다는 점에서 2층으로 줄이고, D^{k-1}[i][k]와 D^k[i][k]가 같다는 것을 보여 1층으로 줄인다. 덮어써도 답이 변하지 않는 이유를 증명한다.
- 2026년 8월 11일 알고리즘모든 쌍 최단 거리 — 다익스트라 N번과 플로이드·워셜
한 시작점이 아니라 모든 노드 쌍의 최단 거리를 구한다. 다익스트라를 N번 돌리는 기준선을 세우고, 경유할 수 있는 노드를 {1..k}로 제한해 k를 늘려 가는 플로이드·워셜을 유도한다. 점화식 D^k[i][j]=min(D^{k-1}[i][j], D^{k-1}[i][k]+D^{k-1}[k][j])가 왜 성립하는지 양방향으로 증명한다.
- 2026년 6월 1일 알고리즘다익스트라 알고리즘 2 — 최단 경로 복원, 시간 복잡도, 그리고 Prim과의 비교
다익스트라 알고리즘에서 부모 배열로 최단 경로를 복원하고, 우선순위 큐로 O(m log n)을 달성한 뒤 Prim 알고리즘과 차이를 비교한다.
- 2026년 5월 29일 알고리즘다익스트라 알고리즘 1 — 각 정점까지의 최단 거리만 구하기
다익스트라 알고리즘으로 한 시작점에서 모든 정점까지 최단 거리를 구한다. 확정 집합을 키우며 가장 가까운 정점을 추가하는 그리디 전략을 보고, 왜 최소 d_min이 정답인지·왜 추가한 정점의 간선만 갱신하면 되는지를 증명한다.
- 2026년 5월 27일 알고리즘Prim·Kruskal은 모든 MST를 찾을 수 있는가
같은 그래프에 여러 MST가 나올 수 있다. 동률 간선이 같은 자리를 두고 맞설 때 갈림이 생기는 조건을 짚고, 목표 MST를 정해 그것을 출력하게 하는 선택 규칙을 Prim과 Kruskal 각각에 대해 구성해 두 알고리즘이 모든 MST에 도달함을 보인다. 가중치가 모두 다르면 MST가 유일함도 증명한다.
- 2026년 5월 26일 알고리즘Kruskal 알고리즘 — 그리디로 MST를 만든다
Kruskal 알고리즘으로 최소 신장 트리(MST)를 구성한다. 가장 작은 간선부터 그리디하게 고르는 전략이 왜 최적인지 컷 기반 교환 논법으로 증명하고, Union-Find로 사이클 검사를 거의 상수 시간에 처리해 O(m log m)으로 마무리한다.
- 2026년 5월 23일 알고리즘프림 알고리즘 (Prim) — MST를 찾는 그리디 전략
프림 알고리즘은 하나의 정점에서 시작해 현재 트리 안과 밖을 가르는 간선 중 가장 가벼운 것을 반복적으로 추가하여 MST를 만든다. 알고리즘의 동작을 단계별로 살펴보고, 매 단계 선택이 항상 어떤 MST의 부분집합에 포함된다는 사실을 귀납법과 사이클 논증으로 증명한다.
- 2026년 5월 23일 알고리즘최소 신장 트리 (MST) — 정의와 성질
최소 신장 트리(MST)는 가중 연결 그래프에서 모든 정점을 잇는 간선 가중치 합이 최소인 부분 그래프다. MST가 왜 트리여야 하는지, 정확히 n−1개 간선을 갖는 이유를 증명하고, MST가 유일하지 않을 수 있는 경우를 정리한다.
- 2026년 4월 6일 알고리즘자료구조 — 데이터를 담는 그릇의 설계
Array, Stack, Queue, Linked List, BST, AVL Tree, Heap, 2-3 Tree, Graph까지 — 각 자료구조의 구조와 핵심 연산을 시각적으로 정리한다.