Ch.7 그래프

그래프란? — 노드, 엣지, 방향/무방향, 가중치

그래프의 기본 구성요소(노드, 엣지)를 설명한다방향 그래프와 무방향 그래프의 차이를 이해한다가중치 그래프의 개념과 활용 사례를 안다

지하철 노선도가 곧 그래프다

서울 지하철 노선도를 떠올려보세요. 역(노드)이 있고, 역을 잇는 선로(엣지)가 있습니다. 이 단순한 구조가 구글 검색, 소셜 네트워크, 내비게이션의 핵심입니다.

트리도 연결 구조인데, 그래프와 뭐가 다를까?

트리는 '부모→자식' 단방향 계층이지만, 그래프는 아무 노드끼리나 자유롭게 연결됩니다.

lightbulb

핵심 개념

노드(Node/Vertex)

그래프의 꼭짓점, 데이터를 담는 단위

엣지(Edge)

두 노드를 연결하는 선

방향 그래프(Directed)

엣지에 방향이 있는 그래프

무방향 그래프(Undirected)

엣지에 방향이 없는 그래프


article

핵심 내용

자료구조의 최종 보스, 그래프를 만나봅시다

배열, 링크드 리스트, 트리… 지금까지 배운 자료구조를 떠올려보세요

이것들은 모두 그래프의 특수한 형태입니다. 링크드 리스트는 일렬 그래프, 트리는 사이클 없는 그래프

그래프는 가장 일반적인 연결 구조입니다. 제약이 없으니 표현력이 가장 강력합니다

그래프가 실제로 어디에 쓰이는지 살펴봅시다

소셜 네트워크 — 사람=노드, 친구관계=엣지 (무방향) 웹 크롤링 — 웹페이지=노드, 링크=엣지 (방향) 내비게이션 — 교차로=노드, 도로=엣지 (가중치=거리)

인스타그램 팔로우는 방향 그래프입니다. 내가 팔로우해도 상대가 팔로우하지 않을 수 있으니까요

페이스북 친구는 무방향 그래프입니다. 친구를 맺으면 양쪽 다 친구가 됩니다

그래프의 종류를 코드로 확인합니다

# 무방향 그래프 — 양쪽 모두 추가
graph = {
    'A': ['B', 'C'],
    'B': ['A', 'D'],
    'C': ['A', 'D'],
    'D': ['B', 'C']
}
# 방향 그래프 — 한쪽만 추가
digraph = {
    'A': ['B', 'C'],
    'B': ['D'],
    'C': ['D'],
    'D': []            # D에서 나가는 엣지 없음
}
# 가중치 그래프 — (목적지, 비용) 튜플
weighted = {
    'A': [('B', 4), ('C', 2)],
    'B': [('D', 3)],
    'C': [('D', 1)],
    'D': []
}

그래프 문제의 80%는 인접 리스트(딕셔너리)로 표현합니다. 이 패턴을 외우세요!

면접에서 자주 나오는 그래프 용어를 정리합니다

차수(Degree) — 한 노드에 연결된 엣지 수 경로(Path) — 노드 A에서 B까지 거치는 노드 순서 사이클(Cycle) — 시작점으로 돌아오는 경로 연결 요소(Connected Component) — 서로 도달 가능한 노드 묶음 DAG — 사이클 없는 방향 그래프 (Directed Acyclic Graph)

트리는 사이클이 없는 연결 그래프입니다. DAG는 사이클이 없는 방향 그래프입니다

면접에서 "이 그래프에 사이클이 있나요?"라는 질문은 매우 빈번합니다. 항상 확인하세요!

인스타그램 팔로우 관계를 어떤 그래프로 모델링해야 할까요?

DAG(Directed Acyclic Graph)에는 사이클이 존재할 수 있다

그래프의 세계 입장!

key

핵심 용어

🔵

노드(Vertex)

그래프의 꼭짓점, 데이터를 담는 단위

🔗

엣지(Edge)

두 노드를 연결하는 선

➡️

방향 그래프

A→B는 되지만 B→A는 안 될 수 있음

↔️

무방향 그래프

A-B 연결이면 양쪽 모두 이동 가능

edit_note

정리 노트

그래프란?

핵심 개념

노드(Vertex)
데이터를 담는 꼭짓점
엣지(Edge)
두 노드를 잇는 연결선
방향 그래프
엣지에 방향이 있음 (팔로우, 웹 링크)
무방향 그래프
양쪽 모두 이동 가능 (친구 관계)
가중치 그래프
엣지에 비용/거리 부여

실전 팁

그래프 표현
파이썬 딕셔너리(인접 리스트)가 기본
DAG
사이클 없는 방향 그래프 — 위상정렬 가능

면접에서 그래프 문제가 나오면 먼저 '방향/무방향, 사이클 유무'를 확인!

image

시각 자료

다이어그램: ds-d51
다이어그램: ds-d52
check_circle

핵심 정리

  • 1그래프 = 노드 + 엣지로 이루어진 가장 일반적인 연결 구조
  • 2방향/무방향, 가중치 여부로 종류가 나뉜다
  • 3파이썬 딕셔너리로 인접 리스트 표현이 기본

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작