๊ด€๋ฆฌ ๋ฉ”๋‰ด

DOing

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„ ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„

mangdo 2021. 6. 15. 00:07

๐Ÿ’ก ๊ทธ๋ž˜ํ”„

: ๊ทธ๋ž˜ํ”„๋Š” ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ •์ ์™€ ์ •์ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

: ๋น„์„ ํ˜•๊ตฌ์กฐ๋กœ์จ, ์—ฐ๊ฒฐ ๊ด€๊ณ„ ํ‘œํ˜„์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๋‹ค.

 

[ ์„ ํ˜•๊ตฌ์กฐ vs ๋น„์„ ํ˜• ๊ตฌ์กฐ ]

์„ ํ˜• ๊ตฌ์กฐ๋ž€ ์ž๋ฃŒ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ด๋˜์–ด์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.

๋น„์„ ํ˜• ๊ตฌ์กฐ๋ž€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์ธต์  ํ˜น์€ ๋ง์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค.

์„ ํ˜•๊ตฌ์กฐ๋Š” ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊บผ๋‚ด๋Š” ๊ฒƒ์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๊ณ , ๋น„์„ ํ˜•๊ตฌ์กฐ๋Š” ํ‘œํ˜„์— ์ดˆ์ ์ด ๋งž์ถฐ์ ธ ์žˆ๋‹ค.

๋น„์„ ํ˜•๊ตฌ์กฐ์—๋Š” ๊ทธ๋ž˜ํ”„, ํŠธ๋ฆฌ๊ฐ€ ์žˆ๊ณ  ์„ ํ˜•๊ตฌ์กฐ์—๋Š” ์Šคํƒ, ํ๊ฐ€ ์žˆ๋‹ค.

 

 

๐Ÿ’ก ๊ทธ๋ž˜ํ”„์˜ ์šฉ์–ด

- ๋…ธ๋“œ(Node)

  : ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ •์ (Vertex)์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

- ๊ฐ„์„ (Edge)

  : ๋…ธ๋“œ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œ์‹œํ•œ ์„ .

- ์ธ์ ‘ ๋…ธ๋“œ(Adjacent Node)

  : ๊ฐ„์„ ์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ(๋˜๋Š” ์ •์ )

 

๐Ÿ’ก ๊ทธ๋ž˜ํ”„ ์ข…๋ฅ˜

- ์œ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Directed Graph)

   : ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ฐ„์„ ์„ ๊ฐ–๋Š”๋‹ค.

   : ๊ฐ„์„ ์€ ๋‹จ๋ฐฉํ–ฅ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๊ฐ ๊ฐ„์„ ์€ ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Undirected Graph)

   : ๋ฐฉํ–ฅ์ด ์—†๋Š” ๊ฐ„์„ ์„ ๊ฐ–๋Š”๋‹ค.

 

 

๐Ÿ’ก ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„๋ฐฉ๋ฒ•

1) ์ธ์ ‘ ํ–‰๋ ฌ(Adjacency Matrix)

: 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„

2) ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ(Adjacnecy List)

: ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋กœ ๊ทธ๋ž˜ํ”„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„

[ ์˜ˆ์‹œ ]

    2 - 3

    โŽœ

0 - 1

 

1) ์ธ์ ‘ ํ–‰๋ ฌ๋กœ ํ‘œํ˜„

  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] ]

 

2) ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„

0 -> 1
1 -> 0 -> 2
2 -> 1 -> 3
3 -> 2

graph = { 0: [1], 1: [0, 2], 2: [1, 3], 3: [2] }

 

 

๐Ÿ’ก ์ธ์ ‘ ํ–‰๋ ฌ vs ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ

= ์‹œ๊ฐ„ VS ๊ณต๊ฐ„

  ์ธ์ ‘ ํ–‰๋ ฌ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ฆ‰๊ฐ์ ์œผ๋กœ 0๊ณผ 1์ด ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋ชจ๋“  ์กฐํ•ฉ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•ด์•ผ ๋˜๊ธฐ ๋•Œ๋ฌธ์— O(๋…ธ๋“œ^2) ๋งŒํผ์˜ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ฆ‰๊ฐ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๊ณ , ๊ฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Œ์•„๋ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฐ๊ฒฐ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ์ตœ๋Œ€ O(๊ฐ„์„ ) ๋งŒํผ์˜ ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋Œ€์‹  ๋ชจ๋“  ์กฐํ•ฉ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋‹ˆ O(๋…ธ๋“œ + ๊ฐ„์„ ) ๋งŒํผ์˜ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.