Graph 그래프
-정점(vertex/node)들과 정점을 연결하는 간선(edge/arcs)로 이루어진 자료 구조
-G=(V,E)
=== 그래프=(정점의 집합, 간선의 집합)
그래프의 종류
-무방향 그래프
-방향 그래프
-가중치 그래프
-완전 그래프
그래프 구현 방법
-인접 행렬
두 정점을 연결하는 간선을 조회할 때 시간복잡도: O(1)
한 정점의 차수를 구할 때 시간복잡도: O(n)
모든 간선의 수를 알아낼 때 시간복잡도: O(n²)
단점: 간선의 수와 관계없이 항상 n² 크기의 2차원 배열을 사용해야 하므로 메모리가 낭비됨.
-인접 리스트
두 정점을 연결하는 간선을 조회하거나 정점의 차수를 알기 위해서는 정점의 인접 리스트를 탐색해야 하므로 정점의 차수만큼의 시간이 필요: O(degree(v))
※degree: 차수
모든 간선의 수를 알아낼 때 시간복잡도: O(n+e)
메모리: n+e
자료 탐색 방법
- 깊이우선 탐색(DFS: Depth First Search)
: 특정 노드에서 시작하여 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게(끝까지) 탐색하는 방법
- 너비우선 탐색(BFS: Breadth First Search)
: 특정 노드에서 시작하여 인접한 노드를 먼저 탐색해나가는 방법
-잘 정리된 글
https://suyeon96.tistory.com/32
[자료구조] 그래프 (Graph) - 인접행렬 vs 인접리스트, DFS, BFS, Connected Component, Spanning Tree
1. 그래프 1.1 그래프란? 그래프(Graph)란 요소들이 서로 복잡하게 연결되어 있는 관계를 표현하는 자료구조이다. 그래프는 정점(vertex)과 간선(edge)들의 집합으로 구성된다. G = (V, E) 수학적으로 그
suyeon96.tistory.com
https://coding-factory.tistory.com/610
[Algorithm] 자료구조 그래프(Graph)란 무엇인가?
그래프란? 그래프는 정점과 간선으로 이루어진 자료구조입니다. 정확히는 정점(Vertex)간의 관계를 표현하는 조직도라고 볼수도 있겠습니다. 그런면에서 트리는 그래프의 일종인 셈입니다. 다만
coding-factory.tistory.com
'Web Development > Data Structure 자료구조' 카테고리의 다른 글
[자료구조] Tree 트리 (0) | 2023.11.24 |
---|---|
[자료구조] Deque 덱 (0) | 2023.11.24 |
[자료구조] Queue 큐 (1) | 2023.11.23 |
[자료구조] Stack 스택 (1) | 2023.11.23 |
[자료구조] Array 배열, Linked list 연결리스트 (2) | 2023.11.22 |