data structure,

Graph에 대해 이해하기

Ella Ella Follow Nov 21, 2021 · 1 min read
Graph에 대해 이해하기
Share this

📚

개념 5️⃣ Graph

그래프(graph)는 노드(node)와 간선(노드를 연결, edge)을 하나로 모아놓은 자료구조이다. 그래프의 노드 간에는 2개 이상의 경로가 존재할 수 있으며, (루트 노드/부모 노드/자식 노드)라는 개념이 없다. 순회는 BFS 또는 DFS로 이루어지며, 순환/비순환 그래프로 나누거나 방향/무방향 그래프로 나눌 수 있다.

그래프를 구현하는 두 가지 방법

(1) 인접 리스트(Adjacency List)

  • 각각의 정점에 인접한 정점들을 리스트로 표현한다.
  • 배열의 각 인덱스마다 존재하는 리스트에 인접리스트를 표현한다. 인접 리스트 예)
    adj = [[] for _ in range(5)]
    adj[0] = [1,2,4]
    adj[1] = [0,3]
    adj[2] = [0]
    adj[3] = [1,4]
    adj[4] = [0,3]
    

(2) 인접 행렬(Adjacency Matrix)

  • a 정점과 b 정점이 인접행렬이라면 adj[a][b] = true / adj[b][a] = true로 표현함
  • a 정점과 b 정점이 인접행렬이 아니라면 adj[a][b] = false / adj[b][a] = false 로 표현함 인접 리스트 예)
    adj = [[false]*(5) for _ in range(5)]
    adj[0][1] = true
    adj[0][2] = true
    adj[0][4] = true
    adj[1][3] = true
    adj[3][4] = true
    adj[1][0] = true
    adj[2][0] = true
    adj[4][0] = true
    adj[3][1] = true
    adj[4][3] = true
    

🌟 그래프와 트리의 차이점

[참고 사이트]

Join Newsletter
Get the latest news right in your inbox. We never spam!
Ella
Written by Ella Follow
Android Developer, love to explore new ideas and write on my morning coffee!