๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

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

by Wonit 2020. 6. 25.

๊ทธ๋ž˜ํ”„(Graph)๋ž€?

์ถœ์ฒ˜ : stackoverflow

๊ทธ๋ž˜ํ”„๋ž€? ์‰ฝ๊ฒŒ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์„ค๋ช…ํ•œ๋‹ค๋ฉด, ํ˜„์‹ค ์„ธ๊ณ„์˜ ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ. ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.


์šฐ๋ฆฌ๋Š” ์ผ์ƒ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณณ์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋„ค๋น„๊ฒŒ์ด์…˜ ์ตœ๋‹จ ๊ฒฝ๋กœ
  • ๋„คํŠธ์›Œํฌ ํ†ต์‹ 
  • ์นœ๊ตฌ ๊ด€๊ณ„

๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

 

์ด๋ฅผ ์ „๋ฌธ์ ์ธ ์šฉ์–ด๋กœ ๋ง ํ•œ๋‹ค๋ฉด ์ •์ ๊ณผ ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ˆ˜ํ•™์ ์œผ๋กœ๋Š” G = (V, E)์˜ ๊ด€๊ณ„๋กœ ๋‚˜ํƒ€๋‚œ๋‹ค. ์ฒ˜์Œ ๋ณด๋Š” ์‚ฌ๋žŒ๋“ค์€ ์ดํ•ด๊ฐ€ ์•ˆ ๊ฐˆ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ํ•œ ๋ฒˆ ๋”ฐ๋ผ๊ฐ€ ๋ณด์ž.

๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜

๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€๋กœ ๋‚˜๋‰œ๋‹ค.

์ถœ์ฒ˜ : https://www.ritambhara.in/adjacency-matrix-implementation-of-graph-data-structure/

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

๋ฌดํ•ญํ–ฅ ๊ทธ๋ž˜ํ”„๋Š” ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ํ‘œ์‹œ๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.


์—ฌ๊ธฐ์„œ ํ•˜๋‚˜์˜ ๊ฐ„์„ ์€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ์ˆ˜ ์žˆ๋Š” ๊ธธ์„ ์˜๋ฏธํ•˜๊ณ  (A, B)๋‚˜ (B, A)์€ ๊ฐ™์€ ๊ฐ„์„ ์ด ๋œ๋‹ค.

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

๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.


๋ณดํ†ต ํ™”์‚ดํ‘œ๋กœ ํ‘œ์‹œ๋˜๋Š”๋ฐ ์ฐจ๋„์˜ ์ผ๋ฐฉํ†ตํ–‰์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค.

 

<A, B>๋ฅผ ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ํ‘œ์‹œํ•˜๋Š”๋ฐ <A, B>๋Š” ์ •์  A์—์„œ B๋กœ๋งŒ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ„์„ ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ ๋ง์€ ๋‹น์—ฐํžˆ <A, B>์™€ <B, A>๋Š” ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ๋œปํ•œ๋‹ค.

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

๊ฐ„์„ ์˜ ๋น„์šฉ์ด๋‚˜ ๊ฐ€์ค‘์น˜๊ฐ€ ํ• ๋‹น๋œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜ํ”„์˜ ์šฉ์–ด

  • ์ธ์ ‘ ์ •์ 

    ๊ฐ„์„ ์— ์˜ํ•ด ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ๊ทธ๋ž˜ํ”„

  • ์ •์ ์˜ ์ฐจ์ˆ˜

    ์ •์ ์— ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ์˜ ์ˆ˜

  • ๊ฒฝ๋กœ

    ๊ฐ„์„ ์„ ๋”ฐ๋ผ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ

  • ๊ฒฝ๋กœ์˜ ๊ธธ์ด

    ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋˜ ์‚ฌ์šฉ๋œ ๊ฐ„์„ ์˜ ์ˆ˜

  • ๋‹จ์ˆœ ๊ฒฝ๋กœ์™€ ์‚ฌ์ดํด

    ๊ฒฝ๋กœ ์ค‘์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ„์„ ์ด ์—†๋Š” ๊ฒฝ๋กœ

  • ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

    ๋ชจ๋“  ์ •์ ๋“ค ์‚ฌ์ด์— ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

  • ํŠธ๋ฆฌ

    ์‚ฌ์ดํด์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

  • ์™„์ „ ๊ทธ๋ž˜ํ”„

    ๋ชจ๋“  ์ •์  ๊ฐ„์— ๊ฐ„์„ ์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„

๋Œ“๊ธ€