[์•Œ๊ณ ๋ฆฌ์ฆ˜] Graph (๊ทธ๋ž˜ํ”„)

2021. 9. 20. 08:00ใ†์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์ค€๋น„/์•Œ๊ณ ๋ฆฌ์ฆ˜

728x90
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”? ์ฃผ๋‹ˆํ•˜๋ž‘ ์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ด์ง„ ํƒ์ƒ‰์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•˜๋Š” ์‹œ๊ฐ„์ธ ๊ฒƒ์ด์—์š”.

์ฝ”ํ…Œ๋ฅผ ์œ ๋Šฅํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ์—ด์‹ฌํžˆ ๊ณต๋ถ€ ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

์†Œ์Šค ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ํ™•์ธ ํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค๊ป˜์„œ๋Š” ์ฃผ๋‹ˆํ•˜๋ž‘์˜ Git hub์— ๊ด€์‹ฌ์„ ์ฃผ์„ธ์š”!



 


 

 

 

๐Ÿ“Œ Graph (๊ทธ๋ž˜ํ”„) ๋ž€?


๊ทธ๋ž˜ํ”„๋Š” ์‹ค์ œ ์„ธ๊ณ„์˜ ํ˜„์ƒ์ด๋‚˜ ์‚ฌ๋ฌผ์„ ์ •์ (Vertex) ํ˜น์€ Node(๋…ธ๋“œ)์™€ ๊ฐ„์„ (Edge ํ˜น์€ Link, Branch)๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—์š”.

 

 

  ๐Ÿ“Graph ๊ด€๋ จ ์šฉ์–ด

        ๐Ÿ‘‰ ์˜ˆ์ œ :) ์ง‘์—์„œ ํšŒ์‚ฌ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„

 

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต

 

 

  1. Node(๋…ธ๋“œ) : ์œ„์น˜๋ฅผ ๋งํ•œ๋‹ค. ์ •์ (Vertext)๋ผ๊ณ ๋„ ํ•˜๊ณ , ์œ„์— ์‚ฌ์ง„์—์„œ ์ง‘, ์ง€ํ•˜์ฒ , ํšŒ์‚ฌ, ๋ฒ„์Šค์˜ ๋™๊ทธ๋ผ๋ฏธ๊ฐ€ Node์ด๋‹ค.
  2. Link(๊ฐ„์„ ) : Node ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œ์‹œํ•œ ์„ ์œผ๋กœ Node๋ฅผ ์—ฐ๊ฒฐํ•œ ์„ ์ด๋‹ค. (Edge ๋˜๋Š” Branch๋ผ๊ณ ๋„ ํ•œ๋‹ค.)
  3. Adjacent Vertext(์ธ์ ‘ ์ •์ ) : Node์™€ Node ๊ฐ„์˜ ๊ฐ„์„ ์œผ๋กœ ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ์ •์ (ํ˜น์€ Node) ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ๋ณด์•˜์„ ๋•Œ, ์ง‘๊ณผ ์ง€ํ•˜์ฒ  ํ˜น์€ ๋ฒ„์Šค์™€ ํšŒ์‚ฌ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
  4. ์ถ”๊ฐ€ ์ฐธ๊ณ  ์šฉ์–ด
    • ์ •์ ์˜ ์ฐจ์ˆ˜ (Degree) : ๋ฌด๋ฐฉํ–ฅ(์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ™”์‚ดํ‘œ๊ฐ€ ๊ทธ๋ ค์ง€์ง€ ์•Š์€ ๊ฐ„์„ ๋“ค๋กœ ์ด๋ค„์ง„ ๊ทธ๋ž˜ํ”„)์—์„œ ํ•˜๋‚˜์˜ Node์— ์ธ์ ‘ํ•œ Node์˜ ์ˆ˜. ์ง‘์„ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋ฉด ์ง€ํ•˜์ฒ ๊ณผ ๋ฒ„์Šค๊ฐ€ ๋œ๋‹ค.
    • ์ง„์ž… ์ฐจ์ˆ˜ (In-Degree) : ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(์œ„์˜ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ™”์‚ดํ‘œ๊ฐ€ ๊ทธ๋ ค์ง„ ๊ฐ„์„ ๋“ค๋กœ ์ด๋ค„์ง„ ๊ทธ๋ž˜ํ”„)์—์„œ Node๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์™ธ๋ถ€์—์„œ ์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด ํšŒ์‚ฌ๋กœ ์น˜๋ฉด ํšŒ์‚ฌ Node ์ž…์žฅ์—์„œ ์™ธ๋ถ€๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์€ 2๊ฐœ(์ง€ํ•˜์ฒ , ๋ฒ„์Šค)์ž„์œผ๋กœ 2๊ฐœ๊ฐ€ ๋œ๋‹ค.
    • ์ง„์ถœ ์ฐจ์ˆ˜ (Out-Degree) : ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€๋กœ ํ–ฅํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง‘์„ ๊ธฐ์ค€์œผ๋กœ ์ง‘์€ ๋ฒ„์Šค์™€ ์ง€ํ•˜์ฒ ๋กœ ๊ฐ€๋Š” ํ™”์‚ดํ‘œ ๊ฐ„์„ ์ด ๋‘๊ฐœ์ด๊ธฐ ๋•Œ๋ฌธ์— 2๊ฐœ์ด๋‹ค.
    • ๋‹จ์ˆœ ๊ฒฝ๋กœ (Simple Path) : ์ฒ˜์Œ Node์™€ ๋ Node๋ฅผ ์ œ์™ธํ•˜๊ณ , ์ค‘๋ณต๋œ Node๊ฐ€ ์—†๋Š” ๊ฒฝ๋กœ. ์œ„์˜ ๊ทธ๋ฆผ์—์„œ ์ง‘์—์„œ ์ง€ํ•˜์ฒ ์„ ํƒ€๊ณ , ํšŒ์‚ฌ๋ฅผ ๊ฐ”๋‹ค๋ฉด ์ด๋Š” ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœ ๊ฒฝ๋กœ์ด๋‹ค. ํ•˜์ง€๋งŒ, ์ง‘์—์„œ ์ง€ํ•˜์ฒ ์„ ํƒ€๊ณ , ํšŒ์‚ฌ๋กœ ์™€์„œ ๋ฒ„์Šค๋ฅผ ํƒ”๋‹ค๊ฐ€ ๋‹ค์‹œ ํšŒ์‚ฌ๋กœ ์˜ค๋ฉด ํšŒ์‚ฌ๊ฐ€ ๋‘๋ฒˆ ์ค‘๋ณต์ด ๋˜์–ด๋ฒ„๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์€ ๋‹จ์ˆœ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹ˆ๋‹ค.
      ๋งŒ์•ฝ ์ง‘์—์„œ ์ง€ํ•˜์ฒ ์„ ํƒ€๊ณ , ํšŒ์‚ฌ๋ฅผ ๊ฐ”๋‹ค๊ฐ€ ๋ฒ„์Šค๋ฅผ ํƒ€๊ณ , ์ง‘์— ๋‹ค์‹œ ๋Œ์•„์˜ค๋ฉด ์ง‘์ด ๋‘๋ฒˆ ์ค‘๋ณต๋œ ๊ฑฐ ๊ฐ™์ด ๋ณด์ด๋‚˜, ์ด๋Š” ์ค‘๋ณต์ด ์•„๋‹ˆ๊ณ , ๋‹จ์ˆœ ๊ฒฝ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
    • ์‚ฌ์ดํด (Cycle) : ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ Node์™€ ์ข…๋ฃŒ Node๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ '๋‹จ์ˆœ ๊ฒฝ๋กœ' ๋งˆ์ง€๋ง‰์— ๋“  ์˜ˆ๋Š” ๋‹จ์ˆœ ๊ฒฝ๋กœ๋„ ๋˜๊ณ , ์‚ฌ์ดํด๋„ ๋œ๋‹ค.

 

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต

 

 

 

  ๐Ÿ“Graph (๊ทธ๋ž˜ํ”„) ์ข…๋ฅ˜

 

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

  • ๊ฐ„์„ ์˜ ๋ฐฉํ–ฅ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„
  • ๊ฐ„์„ ์„ ํ†ตํ•ด, Node๋Š” ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ณดํ†ต Node A, B๊ฐ€ ์—ฐ๊ฒฐ ๋˜์–ด ์žˆ์„ ๋•Œ, (A, B) ๋˜๋Š” (B, A)๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

 

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต

 

 

 

 

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

  • ๊ฐ„์„ ์˜ ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„
  • ๋ณดํ†ต Node A, B๊ฐ€ A -> B๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ ๋˜์–ด์žˆ์„ ๋•Œ, <A, B>๋กœ ํ‘œ๊ธฐํ•œ๋‹ค. (<B, A> ๋Š” B -> A๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์— <A, B>๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต 

 

 

 

 

 

        ๐Ÿ‘‰ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„ (Weighted Graph) ํ˜น์€ Network (๋„คํŠธ์›Œํฌ)

  • ๊ฐ„์„ ์— ๋น„์šฉ ํ˜น์€ ๊ฐ€์ค‘์น˜๊ฐ€ ํ• ๋‹น(ํ‘œ๊ธฐ)๋œ ๊ทธ๋ž˜ํ”„
๋ฐ˜์‘ํ˜•

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต 

 

 

๋งจ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์„ ๊ฐ€๋Š”๋ฐ, ์œ„์— ๋ถ€๋ถ„์— ๊ฒฝ์šฐ 4, 5์˜ ๋น„์šฉ์ด ๋“ค์–ด๊ฐ€๋Š”๋ฐ ๋ฐ˜ํ•ด ์•„๋ž˜์ชฝ์€ 2, 1์˜ ๋น„์šฉ์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด์—์š”.

๊ฒฐ๊ตญ ์•„๋ž˜์ชฝ์œผ๋กœ ๊ฐ€๋Š” ๊ฒƒ์ด ๋น„์šฉ์ด ๋” ์ ๊ฒŒ ๋“œ๋‹ˆ ๊ฐ€๊น๋‹ค๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€์š”!

 

 

 

 

        ๐Ÿ‘‰ ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (Connected Graph)์™€ ๋น„์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (Disconnected Graph)

  • ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (Connected Graph)
    • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ์žˆ๋Š” ๋ชจ๋“  Node์— ๋Œ€ํ•ด ํ•ญ์ƒ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
  • ๋น„์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (Disconnected Graph)
    • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ํŠน์ • Node์— ๋Œ€ํ•ด ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

 

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต 

 

 

 

 

     ๐Ÿ‘‰ Cycle(์‚ฌ์ดํด)๊ณผ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„ (Acyclic Graph)

  • Cycle(์‚ฌ์ดํด)
    • ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ Node์™€ ์ข…๋ฃŒ Node๊ฐ€ ๋™์ผํ•œ ๊ฒฝ์šฐ
  • ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„(Acyclic Graph)
    • Cycle์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„

 

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต 

 

 

 

 

     ๐Ÿ‘‰ Complete Graph (์™„์ „ ๊ทธ๋ž˜ํ”„)

  • ๊ทธ๋ž˜ํ”„์˜ ๋ชจ๋“  Node๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„

์ถœ์ฒ˜ : ํŒจ์ŠคํŠธ ์บ ํผ์Šค - ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ์ˆ ๋ฉด์ ‘ ์™„์ „ ์ •๋ณต 

 

 

 

  ๐Ÿ“Graph์™€ Tree ์ฐจ์ด์ 

Tree๋Š” Graph ์ค‘์— ์†ํ•œ ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”!

 

  ๊ทธ๋ž˜ํ”„ ํŠธ๋ฆฌ
์ •์˜ Node์™€ Node๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ข…๋ฅ˜, ๋ฐฉํ–ฅ์„ฑ์ด ์žˆ๋Š” ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„
๋ฐฉํ–ฅ์„ฑ ๋ฐฉํ–ฅ, ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๋‘˜ ๋‹ค ์กด์žฌ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋งŒ ์กด์žฌ
์‚ฌ์ดํด ์‚ฌ์ดํด ๊ฐ€๋Šฅ, ์ˆœํ™˜ ๋ฐ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„ ๋ชจ๋‘ ์กด์žฌ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„๋กœ ์‚ฌ์ดํด ์—†์Œ
๋ฃจํŠธ ๋…ธ๋“œ ๋ฃจํŠธ ๋…ธ๋“œ ์—†์Œ ๋ฃจํŠธ ๋…ธ๋“œ ์žˆ์Œ
๋ถ€๋ชจ / ์ž์‹ ๊ด€๊ณ„ ๋ถ€๋ชจ ์ž์‹ ๊ฐœ๋…์ด ์—†์Œ ๋ถ€๋ชจ ์ž์‹ ๊ด€๊ณ„ ์žˆ์Œ

 

 

๋ฌด๋ฐฉํ–ฅ, ๋ฐฉํ–ฅ, ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๊ฝค ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ˆˆ ์—ฌ๊ฒจ ๋ณด๋Š”๊ฒŒ ์ข‹์€ ๊ฒƒ์ด์—์š”!

 

 

 


 

์ฃผ๋‹ˆํ•˜๋ž‘์˜ ๊ธ€์ด ๋งˆ์Œ์— ๋“œ์…จ๋‚˜์š”? ๊ตฌ๋…๊ณผ ๊ณต๊ฐ! ๊ทธ๋ฆฌ๊ณ , ๋Œ“๊ธ€ ๊ทธ๋ฆฌ๊ณ  ๋ฐฉ๋ช…๋ก์€ ์ฃผ๋‹ˆํ•˜๋ž‘์—๊ฒŒ ๋งŽ์€ ํž˜์ด ๋ฉ๋‹ˆ๋‹ค


728x90
๋ฐ˜์‘ํ˜•