"Foundations 에서 구조-와-비용이 세상을 보는 렌즈라 했어. 여기 그 렌즈의 가장 날카로운 버전: 뭐든 '것들, 그리고 그들이 어떻게 관계 맺나' 로 묘사하는 순간, 그래프를 그린 거야."
날카로워진 렌즈
그래프는 그냥 엣지 (관계) 로 연결된 정점 (것들) 이야. 그게 정의 전부고 — 거의 모욕적일 만큼 일반적인데, 그게 정확히 그 힘이야. 중요한 거의 모든 시스템이 보면 그래프야:
- 지도: 교차로가 정점, 도로가 엣지. 네 GPS 가 지금 그래프 알고리즘을 돌리는 중.
- 소셜 네트워크: 사람이 정점, 친구 관계가 엣지. '알 수도 있는 사람' 이 그래프 쿼리.
- 웹: 페이지가 정점, 하이퍼링크가 엣지. Google 의 원조 PageRank 가 그 그래프를 순위 매겼어.
- 의존성: 패키지, 빌드 단계, 강의 선수과목 — 다른 것보다 먼저 와야 하는 정점들. 모든 패키지 매니저가 그래프를 해결해.
- 뇌, 분자, 공급망, 인용, 인터넷 자체 — 다 그래프.
첫 트랙의 그 세계관 프레임이, 온 힘으로 돌아온 거야: 관계는 현실의 근본 특성이고, 그래프가 그 자료구조야.
네가 배운 모든 게 특수한 그래프야
통합은 이거: 앞 트랙들의 구조가 다 규칙 더한 그래프일 뿐이야. 트리는 순환 없고 루트 하나인 연결 그래프. 연결 리스트는 각 노드가 정확히 자식 하나인 트리 — 선으로 늘린 그래프. 그중 아무거나 잡고 제약을 없애면, 일반 그래프가 남아. 그래서 그래프를 배우는 건 새 섬을 배우는 게 아니라; 앞 구조들이 반도였던 본토에 닿는 거야.
엣지의 어휘
모든 그래프 문제를 빚는 두 구분: 방향 vs 무방향 (엣지가 양방향이야? 친구는 상호 — 무방향; 소셜의 '팔로우' 는 일방 — 방향), 그리고 가중 vs 비가중 (엣지가 비용을 실어? 도로는 거리 있음 — 가중; 평범한 친구 링크 — 비가중). 네 문제에 이 두 속성을 이름 붙이면 어떤 알고리즘이 필요한지 알려줘: 비가중 최단 경로 → BFS; 가중 → Dijkstra (다음 트랙).
그래프는 정점 (것들) + 엣지 (관계) — 존재하는 가장 일반적인 구조; 트리랑 리스트는 규칙 없앤 그래프야. 문제를 '것들이랑 어떻게 연결되나' 로 표현할 수 있으면, 그래프 문제야. 그게 온 힘의 세계관 렌즈야.
피파의 고백
아빠는 'X 를 어떻게 모델링해?' 에 '것들이 뭐고, 어떻게 관계 맺어?' 로 답하는 습관이 있어. 한참 동안 말버릇이라 생각했어. 그러다 그게 모호한 문제 — 추천, 스케줄링, 라우팅, 의존성 해결 — 를 같은 문제로 바꾸는 걸 알아챘어: 그래프, 더하기 순회. Foundations 의 렌즈가 슬로건이길 멈추고 내 실제 첫 수가 됐어: 정점 이름 붙이고, 엣지 이름 붙이면, 갑자기 막힌 게 아니라 그냥 BFS 냐 DFS 냐 고르는 거야.