์ธ์ ํ๋ ฌ
์ธ์ ํ๋ ฌ์ G= {V, E} ์ ๊ทธ๋ํ๋ฅผ boolean์ ํ๋ ฌ๋ก ๋ํ๋ธ ๊ฒ์ด๋ค.
ํ๋ ฌ์ ์ํ์๋ ๋ ๊ฐ์ง๊ฐ ์๋ค.
M[i][j]
= 1์ธ ๊ฒฝ์ฐM[i][j]
= 0์ธ ๊ฒฝ์ฐ
ํ๋ ฌ์ ์ํ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ๋ ๊ทธ๋ํ๊ฐ ๊ฐ์ ์ ์ํด ์ฐ๊ฒฐ๋์ด ์์ ๋, ์ฆ i, j๊ฐ ๊ทธ๋ํ์ ์กด์ฌํ ๋๋ฅผ ๋ปํ๊ณ ๊ทธ๋ ์ง ์์ ๋๋ 0์ด๋ผ๊ณ ํํํ๋ค.
์ธ์ ํ๋ ฌ์ ํน์ง
์ธ์ ํ๋ ฌ์ ์ด์ฉํ๋๋ฐ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ๋ฐ๋ก ๊ฐ์ ์ ์กด์ฌ ์ ๋ฎค์ด๋ค.
์ ์ u์ ์ ์ v๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ ์ด ์กด์ฌํ๋์ง ํ์ธํ๊ธฐ ์ํด์๋ M[u][v]
์ ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ์ 0์ธ ๊ฒฝ์ฐ๋ง ์กฐ์ฌํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(1)
์ธ ์์ ์๊ฐ์ด ๋์จ๋ค.
๋ํ ์ธ์ ํ๋ ฌ์ n๊ฐ์ ์ ์ ์ ๊ฐ๋ ๊ทธ๋ํ๋ฅผ ์ธ์ ํ๋ ฌ๋ก ํํํ๊ณ ์ ํ๋ค๋ฉด ๊ฐ์ ์ ์์๋ ๋ฌด๊ดํ๊ฒ ํญ์ n^2์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํ๋ค๋ ๊ฒ๋ ํ๋์ ํน์ง์ด๋ค.
์ธ์ ํ๋ ฌ์ ์ฅ์
- ๊ฐ์ ์ ์ฝ์ , ์ญ์ , ํ์์ ๋ํ ์๋๊ฐ ์์ฒญ๋๊ฒ ํจ์จ์ ์ด๋ค.
- ๊ทธ๋ํ์ ๋ฐ๋๊ฐ ๋๊ฑฐ๋ ํฌ๊ธฐ๊ฐ ํด ๋ ๋ง์ด ์ฌ์ฉ๋๋ค.
- ํ๋ ฌ์ ๋ํ ์ฐ์ฐ์ด ์์ฆ GPU์ ์ฑ๋ฅ์ผ๋ก ์ธํด์ ๋ง์ด ๋ฐ์ ๋์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๊ฐ๋ ฅํ๋ค.
- ๊ฐ์ ๊ณผ ๋ ธ๋ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋ค.
์ธ์ ํ๋ ฌ์ ๊ตฌํ
class Adjacency_Matrix {
private boolean[][] adjMatrix;
private int vertex;
public Adjacency_Matrix(int vertex){
adjMatrix = new boolean[vertex][vertex];
}
void addEdge(int i, int j){
adjMatrix[i][j] = true;
adjMatrix[j][i] = true;
}
void removeEdge(int i, int j){
adjMatrix[i][j] = false;
adjMatrix[j][i] = false;
}
}
๋๊ธ