๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

14-1๊ฐ•. ๊ทธ๋ž˜ํ”„(Graph) ๊ฐœ๋…๊ณผ ํ‘œํ˜„

by devshin.kr 2020. 12. 1.
728x90

 

 

  • (๋ฌด๋ฐฉํ–ฅ) ๊ทธ๋ž˜ํ”„. G = (V, E)

  - V : ๋…ธ๋“œ(node) ํ˜น์€ ์ •์ (vertex)

  - E : ๋…ธ๋“œ ์Œ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์—์ง€(edge) ํ˜น์€ ๋งํฌ(link)

  - ๊ฐœ์ฒด(object)๋“ค ๊ฐ„์˜ ์ด์ง„๊ด€๊ณ„๋ฅผ ํ‘œํ˜„

  - n = |V|, m = |E|

 

 

  • ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„(Directetd Graph). G=(V, E)

  - ์—์ง€(u, v)๋Š” u๋กœ๋ถ€ํ„ฐ v๋กœ์˜ ๋ฐฉํ–ฅ์„ ๊ฐ€์ง

 

 

  • ๊ฐ€์ค‘์น˜ (weighted) ๊ทธ๋ž˜ํ”„

   - ์—์ง€๋งˆ๋‹ค ๊ฐ€์ค‘์น˜(weight)๊ฐ€ ์ง€์ •

 

 

 

  • ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„

  - ์ธ์ ‘ํ–‰๋ ฌ (adjacency matrix)

 

์ธ์ ‘ํ–‰๋ ฌ์„ ์ด์šฉํ•œ ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„

 

  - ์ธ์ ‘๋ฆฌ์ŠคํŠธ (adjacency list)

์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„

์œ„์˜ ๊ทธ๋ฆผ์—์„œ m์€ ์—ฃ์ง€์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค..

n(:๋…ธ๋“œ์˜ ๊ฐฏ์ˆ˜) + 2m(:๋…ธ๋“œ ๊ฐฏ์ˆ˜) ์ด์–ด์„œ ์ €์žฅ๊ณต๊ฐ„์€ O(n+m)์ด๋‹ค.

 

 

  • ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๋ฅผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ์™€ ์ธ์ ‘ํ–‰๋ ฌ์„ ์ด์šฉํ•ด ํ‘œํ˜„

 

 

  • ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์˜ ์ธ์ ‘ํ–‰๋ ฌ ํ‘œํ˜„

   - ์—์ง€์˜ ์กด์žฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์œผ๋กœ 1 ๋Œ€์‹  ์—์ง€์˜ ๊ฐ€์ค‘์น˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

   - ์—์ง€๊ฐ€ ์—†์„ ๋•Œ, ํ˜น์€ ๋Œ€๊ฐ์„  : 

      - ํŠน๋ณ„ํžˆ ์ •ํ•ด์ง„ ๊ทœ์น™์€ ์—†์œผ๋ฉฐ, ๊ทธ๋ž˜ํ”„์™€ ๊ฐ€์ค‘์น˜๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”์— ๋”ฐ๋ผ์„œ!

      - ์˜ˆ) ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฑฐ๋ฆฌ ํ˜น์€ ๋น„์šฉ์„ ์˜๋ฏธํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด! ์—ฃ์ง€๊ฐ€ ์—†์œผ๋ฉด ๋ฌดํ•œ๋Œ€(๋”ฑํžˆ ํ‘œํ˜„ํ•  ๊ฐ’์ด ์—†์–ด์„œ..)๋กœ ํ•˜๊ณ , ๋Œ€๊ฐ์„ ์€ 0์œผ๋กœ ํ•œ๋‹ค.

      - ์˜ˆ) ๊ฐ€์ค‘์น˜๊ฐ€ ์šฉ๋Ÿ‰์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด, ์—ฃ์ง€๊ฐ€ ์—†์„ ๋•Œ๋Š” 0์œผ๋กœ ํ•˜๊ณ , ๋Œ€๊ฐ์„ ์€ ๋ฌดํ•œ๋Œ€๋กœ ํ•œ๋‹ค.

 

 

  • ๊ฒฝ๋กœ์™€ ์—ฐ๊ฒฐ์„ฑ

      - ๋ฌด๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„ G=(V, E)์—์„œ ๋…ธ๋“œ u์™€ ๋…ธ๋“œ v๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ๋กœ(path)๊ฐ€ ์กด์žฌํ•  ๋•Œ, v์™€ u๋Š” ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๊ณ  ๋งํ•œ๋‹ค.

      - ๋ชจ๋“  ๋…ธ๋“œ ์Œ๋“ค์ด ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ๊ทธ๋ž˜ํ”„๋ฅผ connected graph๋ผ๊ณ  ํ•œ๋‹ค.

connected graph

 

 

์„ธ ๊ฐœ์˜ ์—ฐ๊ฒฐ์š”์†Œ (connected component)๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

๋Œ“๊ธ€