Computer Science/Data Structure

인접행렬 (1 / 2)

서린이1 2024. 8. 22. 20:10

1. 그래프 : 정점과 간선으로 이루어져 있는 자료구조

    1-1. 정점 : 노드

    1-2. 간선 : 단방향 간선, 양방햔 간선(= 무방향 간선)

 

2. 인접행렬 : 정점과 간선을 컴퓨터에게 그래프로 알려주기 위한 방법

      - 그래프에서 정점과 간선의 관계를 나타내는 bool 타입의 정사각형 행렬을 의미

      - 정사각형 행렬의 각 요소가 0 또는 1이라는 값을 가짐을 의미

      - 표기법

         a[from][to] = 1 : from ~ to로가는 간선이 있음, 0이면 없음

         ex:)

         a[0][1] = 1, 0에서 1로 가는 간선이 존재

         a[2][0] = 1, a[2][1] = 1 ..

 

         0  1  1  1

         1  0  1  0

         1  1  0  0

         1  0  0  0

 

         - c++ 코드 예시

x, y = 4;

bool a[x][y] = {
   {0, 1, 1, 1},
   {1, 0, 1, 0},
   {1, 1, 0, 0},
   {1, 0, 0, 0},
};



# a[0][1] = 1
# a[2][1] = 1
# a[3][0] = 1
# ...

for(int i = 0; i < x; i++) { # y를 중심으로 x를 본다 (= 가로로 탐색)
	for(int j = 0; j < y; j++) {
        if(a[i][j]) {
            cout << i << "부터 " << j << "까지 경로가 있습니다.\n";
            // 해당 정점(=i)으로부터 탐색하는 로직
            bfs(i);
            dfs(i);
        }
    }
    
}

 

출처 : 인프런 강의, CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조, 강사 : 큰돌