책 읽다가 코딩하다 죽을래

[자료구조] 그래프에 대해 알아보자 본문

이론/자료구조

[자료구조] 그래프에 대해 알아보자

ABlue 2021. 9. 13. 23:43

 

 

 

 

 

 

📚 그래프 정의

 

그래프는 연결되어 있는 정점과 정점 간의 관계를 표현할 수 있는 비선형 자료구조이며,
노드(N, node)와 그 노드를 연결하는 간선(E, edge)을 하나로 모아 놓은 자료 구조이다.

 

그래프는 TCP 라우팅 알고리즘과 페이스북 관계망 등에서 자주 쓰이는 자료구조이다.

 

 

🧬 그래프 구조

 

 

  • 노드(Node) : 연결 관계를 가진 각 데이터를 의미한다. 정점(Vertex)라고도 한다.
  • 간선(Edge) : 노드 간의 관계를 표시한 선
  • 인접 노드(Adjacent Node) : 간선으로 직접 연결된 노드(또는 정점)



 

📝 그래프 표현 방법

 

 

그래프를 코드로 표현하는 방법은 LinkedListArray가 있는데

 

LinkedList는 각 정점간의 관계를 노드로 연결하여 표현한다.
head를 3으로 가리킨 후 계속 다음 데이터를 가리키는 쪽으로 따라가면

1, 2, 5 번이 있다는 것을 알 수 있다.  

위에 사진을 예로 들면 3번과 연결되어 있는 정점들을 보려면

서로 연결된 정점끼리 노드로 연결되어 있는 것이다.

 

 

 

Array는 각 정점 간의 관계를 이차원 배열로 나타내

서로 연결되어 있으면 1(True)을

서로 연결되어 있지 않으면 0(False)으로 나타낸다

 

위에 사진을 예로 들면 정점 1번에서 정점 2번간의 관계를 보려면

인덱스 [0][1] = 1 (1번에서 2번으로 연결되어 있음)

인덱스 [1][0] = 0 (2번에서 1번으로 연결되어 있지 않음)

를 보면 된다.

 

 

LinkedList는 Array보다는 공간복잡도가 적은 대신 데이터 탐색 시간복잡도는 크지만

Array는 LinkedList보다는 데이터 탐색 시간복잡도는 작지만 공간복잡도가 크다