본문 바로가기
카테고리 없음

자료구조 그래프(Graph)란 무엇인가?

by kangs' tong 2023. 8. 30.

그래프(Graph)란 무엇인가?

그래프는 데이터 구조의 일종으로, 여러 개의 노드(Node)와 이들 사이를 연결하는 간선(Edge)으로 구성되어 있는 추상적인 개념입니다. 그래프는 노드와 간선의 집합으로 이루어져 있으며, 이들을 이용하여 각 노드들의 관계를 표현할 수 있습니다.

이러한 그래프는 특정한 현상이나 개체들 간의 관계를 모델링하는 데 사용됩니다. 예를 들어, 소셜 네트워크에서 사용자들을 노드로, 사용자 간의 친구 관계를 간선으로 표현하는 등 다양한 분야에서 그래프가 활용됩니다.

그래프의 종류

그래프는 크게 무방향 그래프(Undirected Graph)와 방향 그래프(Directed Graph)로 나뉩니다.

무방향 그래프 (Undirected Graph)

무방향 그래프는 간선에 방향이 없는 그래프입니다. 두 노드 사이의 간선은 양방향으로 이동할 수 있으며, 대칭적인 관계를 가집니다. A와 B가 연결된 간선이 있다면, B와 A도 연결됩니다.

방향 그래프 (Directed Graph)

방향 그래프는 간선에 방향이 있는 그래프입니다. 간선은 한쪽 방향으로만 이동할 수 있으며, A에서 B로 가는 간선과 B에서 A로 가는 간선이 서로 다를 수 있습니다.

또한 그래프는 가중치가 있는 그래프(Weighted Graph)와 가중치가 없는 그래프(Unweighted Graph)로 나눌 수도 있습니다. 가중치는 간선에 연결된 노드간의 관련성이나 거리를 나타내는 값으로, 예를 들어 도로망 그래프에서 도로의 길이나 비용을 나타낼 수 있습니다.

그래프의 표현 방법

그래프는 다양한 방법으로 표현될 수 있습니다. 가장 기본적인 방법은 인접 행렬(Adjacency Matrix)과 인접 리스트(Adjacency List)입니다.

인접 행렬 (Adjacency Matrix)

인접 행렬은 2차원 배열로 그래프를 표현하는 방식입니다. 배열의 크기는 노드의 개수를 기반으로 결정되며, 배열의 값은 노드 간의 연결 여부를 표현합니다. 만약 A와 B가 연결되어 있다면, 인접 행렬의 A행 B열과 B행 A열에는 1 또는 가중치 값이 들어갑니다. 이 방식은 노드 간의 연결 여부를 빠르게 확인할 수 있어 노드의 개수가 적은 경우에 유용합니다. 하지만 노드의 개수가 많은 경우, 많은 메모리를 차지하게 되는 단점이 있습니다.

인접 리스트 (Adjacency List)

인접 리스트는 리스트를 이용하여 그래프를 표현하는 방식입니다. 리스트의 인덱스는 노드를 나타내고, 해당 인덱스의 값은 인접한 노드와의 연결 정보(간선)를 저장합니다. 이 방식은 메모리를 효율적으로 사용할 수 있으며, 노드의 연결 관계를 탐색하기에 용이합니다. 하지만 노드 간의 연결 여부를 확인하기 위해서는 리스트를 순회해야 하는 단점이 있습니다.

마무리

그래프는 여러 개의 노드와 이들을 연결하는 간선으로 이루어진 데이터 구조입니다. 무방향 그래프와 방향 그래프로 나뉘며, 가중치가 있는 그래프와 없는 그래프로도 구분됩니다. 그래프는 인접 행렬과 인접 리스트를 이용하여 표현할 수 있으며, 각각의 방식에는 장단점이 있습니다. 이러한 그래프 구조는 다양한 분야에서 활용되며, 데이터의 관계를 표현하고 분석하는 데에 유용하게 사용됩니다.

댓글