
์ฐ๊ฒฐ๋์ด ์๋ ์ ์ ๊ณผ ์ ์ ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ.
๊ทธ๋ํ๋ ์ ์ (vertex / node)๋ค๊ณผ ๊ฐ์ (edge)๋ค๋ก ์ด๋ฃจ์ด์ง ๋คํธ์ํฌ ๊ตฌ์กฐ.
์์์ผ๋ก๋ G = (V, E) ๋ก ์ฐ๋๋ฐ, V๋ ์ ์ ๋ค์ ์งํฉ, E๋ ๊ฐ์ ๋ค์ ์งํฉ.
์์: ์ฌ๋๋ค(์ ์ )๊ณผ ์น๊ตฌ๊ด๊ณ(๊ฐ์ ) โ ์์ ๋คํธ์ํฌ
โผ๏ธํธ๋ฆฌ๋ฅผ ๋ฐฐ์ฐ๋ฉด์ ๋ฐฐ์ ๋ "๋น์ ํ ๊ตฌ์กฐ" ?
๋น์ ํ ๊ตฌ์กฐ๋ ํํ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๊ณ ,
์ ํ๊ตฌ์กฐ๋ ์๋ฃ๋ฅผ ์ ์ฅํ๊ณ ๊บผ๋ด๋ ๊ฒ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๊ณ ,
๋น์ ํ๊ตฌ์กฐ๋ ํํ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ค.
์ด๋ฒ ์๋ฃ๊ตฌ์กฐ์ธ ๊ทธ๋ํ๋ ๋ฐ๋ก ์ฐ๊ฒฐ ๊ด๊ณ์ ์ด์ ์ด ๋ง์ถฐ์ ธ ์๋ค.
๋ ธ๋(Node): ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ๊ฐ์ง ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ ์ (Vertex)์ด๋ผ๊ณ ๋ ํฉ๋๋ค.
๊ฐ์ (Edge): ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ํ์ํ ์ .
์ธ์ ๋ ธ๋(Adjacent Node): ๊ฐ์ ์ผ๋ก ์ง์ ์ฐ๊ฒฐ๋ ๋ ธ๋(๋๋ ์ ์ )
๊ทธ๋ํ๋ ์ ๋ฐฉํฅ ๊ทธ๋ํ์ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ ๋๊ฐ์ง๊ฐ ์์ง๋ง,
์ด๋ฒ ๊ฐ์์์๋ ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ ๋ํด์๋ง ๋ฐฐ์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค!

๊ทธ๋ํ๋ผ๋ ๊ฐ๋ ์ ์ปดํจํฐ์์ ํํํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค!
1) ์ธ์ ํ๋ ฌ(Adjacency Matrix): 2์ฐจ์ ๋ฐฐ์ด๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํ
2) ์ธ์ ๋ฆฌ์คํธ(Adjacnecy List): ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ทธ๋ํ์ ์ฐ๊ฒฐ ๊ด๊ณ๋ฅผ ํํ
2 - 3 4. .... 9999999
โ
0 - 1
1. ์ด๋ฅผ ์ธ์ ํ๋ ฌ, 2์ฐจ์ ๋ฐฐ์ด๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค!
0 1 2 3
0 X O X X
1 O X O X
2 X O X O
3 X X O X
์ด๊ฑธ ๋ฐฐ์ด๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค!
graph = [
[False, True, False, False],
[True, False, True, False],
[False, True, False, True],
[False, False, True, False]
]
์๋ก์ฐ๊ฒฐ๋์๋์ง? ํ์ธํ๊ธฐ ์ํด์
graph[1][2] -> O(1)
์ผ๋ง๋ ๊ณต๊ฐ์ ์ฐ๋?
O(N^2)
2. ์ด๋ฒ์๋ ์ธ์ ๋ฆฌ์คํธ๋ก ํํํด๋ณด๊ฒ ์ต๋๋ค!
์ธ์ ๋ฆฌ์คํธ๋ ๋ชจ๋ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋์ ๋ํ ์ ๋ณด๋ฅผ ์ฐจ๋ก๋๋ก ๋ค์๊ณผ ๊ฐ์ด ์ ์ฅํฉ๋๋ค.
์๋ก ์ฐ๊ฒฐ๋์๋์ง ํ์ธํ๊ธฐ ์ํด์
graph[0] ์์๋ค์ ๋ค ๋ด์ผํฉ๋๋ค. ๋ฐ๋ผ์ O(N)
์ผ๋ง๋ ๊ณต๊ฐ์ ์ฐ๋?
O(N)
0 -> 1
1 -> 0 -> 2
2 -> 1 -> 3
3 -> 2
4 ....
์ด๋ฅผ ๋์
๋๋ฆฌ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค!
graph = {
0: [1],
1: [0, 2]
2: [1, 3]
3: [2]
}
์ธ์ ํ๋ ฌ์ผ๋ก ํํํ๋ฉด ์ฆ๊ฐ์ ์ผ๋ก 0๊ณผ 1์ด ์ฐ๊ฒฐ๋์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐ๋ก ์ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋, ๋ชจ๋ ์กฐํฉ์ ์ฐ๊ฒฐ ์ฌ๋ถ๋ฅผ ์ ์ฅํด์ผ ๋๊ธฐ ๋๋ฌธ์ ๋งํผ์ ๊ณต๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค.
์ธ์ ๋ฆฌ์คํธ๋ก ํํํ๋ฉด ์ฆ๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ๋์๋์ง ์ ์ ์๊ณ , ๊ฐ ๋ฆฌ์คํธ๋ฅผ ๋์๋ด์ผ ํ๋ค.
๋ฐ๋ผ์ ์ฐ๊ฒฐ๋์๋์ง ์ฌ๋ถ๋ฅผ ์๊ธฐ ์ํด์ ์ต๋ ๋งํผ์ ์๊ฐ์ ์ฌ์ฉํด์ผ ํ๋ค.
๋์ ๋ชจ๋ ์กฐํฉ์ ์ฐ๊ฒฐ ์ฌ๋ถ๋ฅผ ์ ์ฅํ ํ์๊ฐ ์์ผ๋ ๋งํผ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ฉด ๋๋ค.