Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 2629
- 카카오 인턴
- Longest Increasing Subsequence
- DP
- 1670
- 가장긴증가하는 부분수열
- 개발자 면접
- LIS
- 2482
- 백준
- 인턴십 면접
- 카카오 면접
- 카카오
- 기술면접
- 알고리즘
- 백준11053
- 카카오 인턴십
- LIS 알고리즘
- 백준12015
- 백준12738
- 정상회담2
- Python
- 카카오 자기소개서
- 파이썬
- 최장증가수열
- 단어수학
- 구간나누기
- 여름인턴십
- 카카오 서류전형
- 2228
Archives
- Today
- Total
프로그래밍에 대한 고찰 및 생각
[1][그래프 이론] - 그래프 표현 및 정의 본문
그래프(Graph) 란?
그래프는 어떤 자료나 개념을 각각의 정점들(vertex)의 집합 V와 그 정점들을 이어주는 간선들(edge)의 집합 E로 구성된 자료 구조이다.
이러한 그래프는 크게 두가지로 표현이 가능하다.
1. 인접 리스트 표현
2. 인접 행렬 표현
1. 인접 리스트 표현
첫번째로 그래프를 표현할 수 있는 방법은 인접 리스트 이다.
#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<vector<int>> v;
for(int i=0;i<4;i++){
v.push_back(vector<int>());
}
v[0].push_back(1);
v[0].push_back(2);
v[1].push_back(0);
v[1].push_back(2);
v[1].push_back(3);
v[2].push_back(0);
v[2].push_back(1);
v[2].push_back(3);
v[3].push_back(1);
v[3].push_back(2);
}
상단에 주어진 그래프를 표현하는 코드이다.
vector내에 int형을 가지는 vector를 포함하는 타입을 활용해서 각 정점마다 간선이 존재하는 정점들을 추가하여 구성하였다.
예를들어
v[2].push_back(1) 의 경우는 2번 정점에서 1번 정점으로 가는 간선이 존재하므로 추가해준것이고 결국
v[2] 는 0,1,3 을 가지는 벡터가 될것이고 이것은 2번 정점에서 0,1,3 정점으로 갈수 있다는 의미이다.
2. 인접 행렬 표현
두번째로 그래프를 표현할 수 있는 방법은 인접 행렬이다.
#include <iostream>
#include <vector>
using namespace std;
int main(){
int graph[4][4];
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
graph[i][j] = 0;
}
}
graph[0][1] = 1;
graph[0][2] = 1;
graph[1][0] = 1;
graph[1][2] = 1;
graph[1][3] = 1;
graph[2][0] = 1;
graph[2][1] = 1;
graph[2][3] = 1;
graph[3][1] = 1;
graph[3][2] = 1;
}
graph[i][j] 가 0이면 i 정점에서 j 정점으로 갈수있는 간선이 없다는 의미이고, 반대로 1이라면 간선이 존재한다는 의미이다.
'알고리즘 > 그래프 이론' 카테고리의 다른 글
[5][그래프 이론] - 오일러 서킷, 한붓그리기 (Eulerian Circuit) (0) | 2021.02.11 |
---|---|
[4][그래프 이론] - 위상정렬 (Topological Sorting) (0) | 2021.01.27 |
[3][그래프 이론] - 너비 우선 탐색 BFS (Breadth-First Search) (0) | 2021.01.27 |
[2][그래프 이론] - 깊이 우선 탐색 DFS (Depth-First Search) (0) | 2021.01.27 |