CS 공부/알고리즘
[그래프] 무방향 그래프 표현 방식
Ju Young Pang
2024. 3. 4. 22:02
1. Adjacency matrix (boolean array)
두 노드가 연결이 되어있으면 1, 연결이 되어있지않으면 0으로 표시하는 방법
1 | 2 | 3 | 4 | 5 | |
1 | 0 | 0 | 0 | 1 | 0 |
2 | 0 | 0 | 0 | 1 | 1 |
3 | 0 | 0 | 0 | 0 | 1 |
4 | 1 | 1 | 0 | 0 | 1 |
5 | 0 | 1 | 1 | 1 | 0 |
이걸 코딩으로 응용한다고 생각하면 2D boolean 배열을 생각해볼 수 있다.
다만, 이때 node 값을 조심해야한다. 그냥 0번 index를 버릴수도 있고 모든 index에 1을 빼는 방법도 있다.
개인적으로 iteration을 돌 때 오히려 헷갈리기 때문에 index에서 1을 빼는것을 더 선호하나 마지막 output에 신경을 써야한다.
boolean[][] graph = {{false, false, false, true, false},
{false, false, false, true, true},
{false, false, false, false, true},
{true, true, false, false, true},
{false, true, true, true, false}};
2. ArrayList 배열
1D 배열에서 각 node에 해당하는 index마다 ArrayList를 넣고, 안에 연결되어있는 node들을 넣는 법.
여기서도 node 값을 조심해야한다.
List<Integer> graph = new ArrayList<>[5];
3. Bitwise operation 응용 (int array)
위의 1번 adjacency matrix를 그대로 int로 바꿔서 배열로 저장하는 법.
00010 = 2,
00011 = 3;
00001 = 1,
11001 = 25,
01110 = 14 이니까..
int[] graph = {2, 3, 1, 25, 14};