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

2020. 4. 24. 13:48ยท๐Ÿ“ Computer Science/โœ Data Structure

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

์ •์ (Vertex)๊ณผ ๊ฐ„์„ (Edge)์˜ ์ง‘ํ•ฉ์ด๋‹ค.

  • ๋ฐฉํ–ฅ์„ฑ(Directed) ๊ทธ๋ž˜ํ”„: ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์„ฑ์ด ํฌํ•จ๋œ ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ๋ฌด๋ฐฉํ–ฅ์„ฑ(Undirected) ๊ทธ๋ž˜ํ”„: ๋ฐฉํ–ฅ์„ฑ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ๊ฐ€์ค‘์น˜(Weight) ๊ทธ๋ž˜ํ”„: ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ๋ถ€๋ถ„(Sub) ๊ทธ๋ž˜ํ”„: ๊ทธ๋ž˜ํ”„์˜ ์ผ๋ถ€ ์ •์  ๋ฐ ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ทธ๋ž˜ํ”„์ด๋‹ค.

 

1. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

1) ์ธ์ ‘ ํ–‰๋ ฌ

์ •์ (V)์˜ ์ˆ˜๋งŒํผ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ์ธ์ ‘ํ•˜๋ฉด 1, ์ธ์ ‘ํ•˜์ง€ ์•Š์œผ๋ฉด 0์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„(V^2)๊ฐ€ ์žˆ์œผ๋‚˜ ๋ฐ€๋„๊ฐ€ ๋†’์€ ๊ทธ๋ž˜ํ”„ ํ‘œํ˜„์— ์ ํ•ฉํ•˜๋‹ค.

 

๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

 

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

๊ฐ ์ •์ ๋งˆ๋‹ค ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์ธ์ ‘ํ•ด ์žˆ๋Š” ์ •์ ๋“ค์„ ์—ฐ๊ฒฐํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฒ€์ƒ‰ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์—†๋‹ค.

 

๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

 

2. ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰

1) ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS)

  • ์ž„์˜์˜ ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํ•œ ์ •์ ์œผ๋กœ๋งŒ ๋‚˜์•„๊ฐ€๊ณ  ๋” ์ด์ƒ ์—ฐ๊ฒฐ๋œ ์ •์ ์ด ์—†๋‹ค๋ฉด ์ด์ „ ๋‹จ๊ณ„ ์ •์ ์œผ๋กœ ๋Œ์•„๊ฐ€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์ •์ ์ด ์žˆ๋Š”์ง€ ํƒ์ƒ‰ํ•œ๋‹ค.
  • ์Šคํƒ์„ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•œ๋‹ค.

 

2) ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS)

  • ์ž„์˜์˜ ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์ •์ ์œผ๋กœ ๋‚˜์•„๊ฐ„๋‹ค.
  • ํ๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„ํ•˜๊ณ  ์ตœ๋‹จ ๊ฒฝ๋กœ์— ์‚ฌ์šฉํ•œ๋‹ค.

 

3. ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ(Minimum Spanning Tree)

์‚ฌ์ดํด ์—†์ด ๋ชจ๋“  ์ •์ ์ด ์—ฐ๊ฒฐ๋œ ํŠธ๋ฆฌ(์‹ ์žฅ ํŠธ๋ฆฌ) ์ค‘ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ํŠธ๋ฆฌ์ด๋‹ค.

  • ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Kruskal Algorithm): ์‚ฌ์ดํด์„ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๋ฒ”์œ„์—์„œ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ„์„ ์„ ํ•˜๋‚˜์”ฉ ๋”ํ•œ๋‹ค.
  • ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Prim Algorithm): ํ•œ ๊ฐœ์˜ ์ •์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ดˆ๊ธฐ ๊ทธ๋ž˜ํ”„ A๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ ๊ทธ๋ž˜ํ”„ A์™€ ์™ธ๋ถ€์˜ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ๋“ค ์ค‘ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ„์„ ์„ ์ฐพ์•„ ๊ทธ ์ •์ ์„ A์— ํฌํ•จํ•œ๋‹ค. ์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ณ  ๋ชจ๋“  ์ •์ ๋“ค์ด ์—ฐ๊ฒฐ๋˜๋ฉด ์ข…๋ฃŒํ•œ๋‹ค.

 

4. ์œ„์ƒ ์ •๋ ฌ

๊ทธ๋ž˜ํ”„์— ์„ , ํ›„ ์ˆœ์„œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ทธ๋ž˜ํ”„์˜ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ์ •๋ ฌ์ด๋‹ค.

 

5. ์ตœ๋‹จ ๊ฒฝ๋กœ

๋‘ ์ •์  ์‚ฌ์ด์˜ ๊ฒฝ๋กœ๋“ค ์ค‘ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜์˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ๊ฒฝ๋กœ์ด๋‹ค.

  • ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์Œ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ”„๋ฆผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋น„์Šทํ•˜๋‹ค.
  • ๋ฒจ๋งŒ ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์Œ์˜ ๊ฐ€์ค‘์น˜๋Š” ํ—ˆ์šฉํ•˜์ง€๋งŒ ์Œ์˜ ์‚ฌ์ดํด์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Computer Science/โœ Data Structure' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ๋ถ„์„
  • ํ•ด์‹œ(Hash)
  • ์ด์ง„ ํŠธ๋ฆฌ(Binary Tree)
  • ์„ ํ˜• ๊ตฌ์กฐ(Linear Structure)์™€ ๋น„์„ ํ˜• ๊ตฌ์กฐ(Non-Linear Structure)
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
๊ทธ๋ž˜ํ”„(Graph)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”