일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 시간복잡도
- 알고리즘 공부방법
- 표준 입출력
- getline
- c++
- EOF
- UI한글변경
- 입/출력
- correlation coefficient
- 자료구조
- 매크로
- 연결요소
- 2557
- vscode
- 입출력 패턴
- 장고란
- double ended queue
- string 함수
- k-eta
- iOS14
- 백준
- 이분그래프
- Django의 편의성
- 엑셀
- Django란
- 프레임워크와 라이브러리의 차이
- Django Nodejs 차이점
- scanf
- 구조체와 클래스의 공통점 및 차이점
- string 메소드
- Today
- Total
Storage Gonie
챕터6-1. 그래프 | 개념 및 용어 본문
그래프의 개념
# 그래프(Graph)
- 자료구조의 일종
- 그래프는 정점집합과 간선집합으로 만들어진다. G = (V, E)
- 정점(Node, Vertex)은 말그대로 점을 의미하고, 간선(Edge)은 정점간의 관계를 나타낸다.
- 예시1) 지하철노선이나 도로를 그래프로 나타낼 수 있음.
- 예시2) 페이스북같은 경우는 사람이 정점이고 두 사람이 친구사이면 둘을 간선으로 연결해줄 수 있음
그래프에서 사용되는 용어
# 경로(Path)
- 출발지와 도착지가 있고 그 사이를 연결하는 정점과 간선이 있으면 이것을 경로라고 한다.
- 예시)
A->C->D->E->B
A->B
A->C->B
# 사이클(Cycle)
- 경로 중에서 시작점과 도착점이 같은 경우를 사이클이라고 한다.
- 예시)
'A'->C->B->'A'
'A'->C->E->B->'A'
'A'->C->D->E->B->'A'
# 단순 경로와 단순 사이클(Simple Path and Simple Cycle)
- 같은 정점을 두 번 이상 방문하지 않는 경로 / 사이클
- 일반적으로 특별한 말이 없으면, 사용하는 경로와 사이클은 단순 경로 /사이클을 의미한다.
ex) "같은 정점을 두 번이상 방문해도 된다." 혹은 "같은 간선을 여러번 사용해도 된다." 일땐 단순 경로와 사이클이 아님.
# 방향이 있는 그래프(Directed Graph)
- A->C와 같이 간선에 방향이 있다.
- A->C는 있지만 C->A는 없다.
# 방향이 없는 그래프(Undirected Graph) -> 양방향 그래프(Bidirection Graph)
- A-C는 A->C와 C->A를 나타낸다.
- 실제 구현에서는 두 방향에 대한 간선을 모두 저장하여 양방향 그래프로 저장하여 문제를 풀게 된다.
# 간선 여러개(Multiple Edge)
- 두 정점 사이에 간선이 여러 개일 수도 있다.
- 주로 풀게될 문제는 간선마다 가중치를 가지고 있는 그래프에서 최단거리를 구하는 문제인데
이땐 A->B로 가는 여러 간선 중에서 가장 작은 가중치를 가지는 간선 하나만 택하게 된다.
# 루프(Loop)
- 간선의 양 끝 점이 같은 경우 루프라고 한다. 자기자신에서 출발해서 자기 자신으로 돌아오는 동글뱅이 간선
- A->A
# 가중치(Weight)
- 간선에 가중치가 있는경우 A에서 B로 이동하는 거리, 이동하는데 필요한 시간, 이동하는데 필요한 비용 등을 의미한다.
- 가중치가 없는 경우 모든 간선의 가중치가 1이라고 생각하고 문제를 풀면된다.
# 차수(Degree)
- 정점과 연결되어 있는 간선의 개수
- 방향이 있는 그래프라면 in-degree(정점으로 들어오는 간선), out-degree(정점에서 나가는 간선)를 따로 세어주어야 한다.
'알고리즘 > 알고리즘 기초(코드플러스)' 카테고리의 다른 글
챕터6-3. 그래프 | 그래프의 탐색(DFS, BFS) (0) | 2019.05.22 |
---|---|
챕터6-2. 그래프 | 그래프의 표현 및 저장하는 방법 (0) | 2019.05.21 |
챕터5-5. 정렬 | 문제풀이(2) (0) | 2019.05.19 |
챕터5-4. 정렬 | 문제풀이(1) (0) | 2019.05.19 |
챕터5-3. 정렬 | 퀵 정렬(Quick Sort) - Hoare(호어) / Lomuto(로무토) 분할 알고리즘 (0) | 2019.05.19 |