[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ๊ทธ๋ž˜ํ”„

๊ทธ๋ž˜ํ”„

  1. ์šฉ๋„

  2. ์šฉ์–ด ์ •๋ฆฌ

    1. ๊ธฐ๋ณธ

    2. ์‹ฌํ™”

  3. ๊ตฌํ˜„

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

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

    3. ๋น„๊ต

  4. ์—ฐ์‚ฐ

  5. ๋ถ„๋ฅ˜

    1. ๋ฐฉํ–ฅ์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

    2. ์—ฐ๊ฒฐ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

    3. ์‚ฌ์ดํด์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

    4. ํŠน์ˆ˜ํ•œ ๊ทธ๋ž˜ํ”„

  6. ํƒ์ƒ‰

  7. ๋„์ถœ๋œ ๋ฌธ์ œ๋“ค

  8. ๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  9.  

    ์ฐธ๊ณ 

     

     

๊ทธ๋ž˜ํ”„

 ๊ทธ๋ž˜ํ”„๋ž€ '๋…ธ๋“œ'์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” '๊ฐ„์„ '์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ ์‚ดํŽด๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค(๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ ๋“ฑ)๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๊ทธ๋ž˜ํ”„๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค.

 

์šฉ๋„

 ๊ทธ๋ž˜ํ”„๋Š” ์ผ์ƒ์ƒํ™œ์—์„œ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋กœ ์ง€๋„๋‚˜ ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„, ์ „๊ธฐํšŒ๋กœ, ๋„๋กœ ๋“ฑ์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ปดํ“จํ„ฐ ์„ธ๋ถ€์ „๊ณต์—์„œ๋Š” ํ†ต์‹  ๋„คํŠธ์›Œํฌ ๋ถ„์•ผ์—์„œ๋„ ์“ฐ์ด๋ฉฐ, ๋…ผ๋ฆฌํšŒ๋กœ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋œ๋‹ค.

 ์ตœ๊ทผ์—๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๋งํฌ ์—ฐ๊ฒฐ(Page Rank)์ด๋‚˜ SNS ์ƒ์˜ ์นœ๊ตฌ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

 

์šฉ์–ด ์ •๋ฆฌ

๊ธฐ๋ณธ

G = (V, E) (G๋Š” ๊ทธ๋ž˜ํ”„, V๋Š” Vertex, E๋Š” Edge์ด๋‹ค.)

  • ์ •์  (vertex) : ๋…ธ๋“œ๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋Š” ๊ฐ์ฒด์ด๋‹ค.

  • ๊ฐ„์„  (edge) : ์ •์  ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์„ ์ด๋‹ค. link๋‚˜ branch, arcs๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

  • ์ธ์ ‘ ์ •์ (adjacent vertex) : ํ•˜๋‚˜์˜ ๊ฐ„์„ ์— ์˜ํ•ด ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ์ •์ ์ด๋‹ค.

  • ์ •์ ์˜ ์ฐจ์ˆ˜ (degree) : ์ •์ ์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜์ด๋‹ค.

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

    ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์ •์ ์˜ ๋ชจ๋“  ์ฐจ์ˆ˜์˜ ํ•ฉ์ด ๊ฐ„์„  ์ˆ˜์˜ 2๋ฐฐ์ด๋‹ค.

    <๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„>

    ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์ •์ ์˜ ์ง„์ž… ์ฐจ์ˆ˜, ์ง„์ถœ ์ฐจ์ˆ˜์˜ ์ดํ•ฉ์ด ๊ฐ„์„  ์ˆ˜์ด๋‹ค.

    • ์ง„์ž… ์ฐจ์ˆ˜ (in-degree) : ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์ •์ ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜์ด๋‹ค. ๋‚ด์ฐจ์ˆ˜๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
    • ์ง„์ถœ ์ฐจ์ˆ˜ (out-degree) : ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์ •์ ์—์„œ ๋‚˜๊ฐ€๋Š” ๊ฐ„์„ ์˜ ์ˆ˜์ด๋‹ค. ์™ธ์ฐจ์ˆ˜๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
  • ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„ (subgraph) : ์–ด๋–ค ๊ทธ๋ž˜ํ”„์˜ ์ •์ ๊ณผ ๊ฐ„์„ ์˜ ์ผ๋ถ€๋กœ ์ด๋ฃจ์–ด์ง„ ๊ทธ๋ž˜ํ”„์ด๋‹ค.

  • ๊ฒฝ๋กœ (path) : ํŠน์ • ์ •์ ์—์„œ ๋‹ค๋ฅธ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์˜ ๋ฆฌ์ŠคํŠธ์ด๋‹ค.

    • ๋‹จ์ˆœ ๊ฒฝ๋กœ (simple path) : ๊ฒฝ๋กœ ์ค‘ ๊ฐ™์€ ์ •์ ์ด ์—†๋Š” ๊ฒฝ๋กœ์ด๋‹ค.
    • ์ˆœํ™˜ (cycle) : ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ์ •์ ๊ณผ ์ข…๋ฃŒ ์ •์ ์ด ๋™์ผํ•œ ๊ฒฝ๋กœ์ด๋‹ค.
    • ๊ฒฝ๋กœ์˜ ๊ธธ์ด (length) : ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ ๊ฐ„์„ ์˜ ์ˆ˜์ด๋‹ค.

 

์‹ฌํ™”

  • ๋‹จ์ ˆ ์ (articulation point) : ๊ทธ๋ž˜ํ”„ ์ƒ์— ์กด์žฌํ•˜๋Š” ์ •์ ์œผ๋กœ, ์ œ๊ฑฐ ์‹œ ์—ฐ๊ฒฐ๊ทธ๋ž˜ํ”„์˜ ํŠน์„ฑ์„ ์žƒ๊ฒŒ ํ•˜๋Š” ์ ์ด๋‹ค.

 

  • bridge edge : ๊ทธ๋ž˜ํ”„ ์ƒ์— ์กด์žฌํ•˜๋Š” ๊ฐ„์„ ์œผ๋กœ, ์ œ๊ฑฐ ์‹œ ์—ฐ๊ฒฐ๊ทธ๋ž˜ํ”„์˜ ํŠน์„ฑ์„ ์žƒ๊ฒŒ ํ•˜๋Š” ์„ ์ด๋‹ค.

 

๊ตฌํ˜„

๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ธ์ ‘ ํ–‰๋ ฌ

์ธ์ ‘ํ–‰๋ ฌ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋ถˆํ•„์š”ํ•œ(์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š์€) ์—ฐ๊ฒฐ๊ด€๊ณ„๋„ ํ‘œํ˜„ํ•ด์•ผํ•˜๋ฏ€๋กœ ๊ณต๊ฐ„์„ ๋งŽ์ด ์ฐจ์ง€ํ•œ๋‹ค. ์ •ํ™•ํžˆ ''์ •์ ์˜ ๊ฐฏ์ˆ˜'์˜ ์ œ๊ณฑ'์— ํ•ด๋‹นํ•˜๋Š” ๊ณต๊ฐ„์ธ O(V^2)์„ ์ฐจ์ง€ํ•œ๋‹ค. ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” symmetricํ•œ ํ–‰๋ ฌ์ด ๋‚˜์˜ค๊ณ , ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋Š” 1์ด ์•„๋‹Œ ํ•ด๋‹น ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ธฐ๋ก๋œ๋‹ค. ๋‘ ์ •์ ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š”(๊ฐ„์„ ์ด ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•  ๋•Œ๋Š”) O(1)์˜ ์‹œ๊ฐ„๋ฐ–์— ๊ฑธ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

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

 ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์ „์ฒด ์ •์ ์„ ํ‘œํ˜„ํ•œ ํ›„, ํ•ด๋‹น ์ •์ ์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ์ •์ ๋“ค๋งŒ์„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ „์ฒด ์ •์ ์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ์— '์ •์ ์˜ ๊ฐฏ์ˆ˜'๋งŒํผ์˜ ๊ณต๊ฐ„์ด, ๊ฐ ์ •์ ์— ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ์— '๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜'๋งŒํผ์˜ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐ„๋ณต์žก๋„๋Š” O(E)์ด๋‹ค. ์ •ํ™•ํžˆ ๋‚˜ํƒ€๋‚ด๋ฉด ํฌ์ธํ„ฐ๋ผ๋Š” ์š”์†Œ๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋งŒ ์ €์žฅํ•  ๋•Œ๋ณด๋‹ค ๊ณต๊ฐ„์ด ๋” ํ•„์š”ํ•˜๋‹ค.

 ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋กœ ๋‘ ์ •์ ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด(๊ฐ„์„ ์ด ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด) ์—ฐ๊ฒฐ๋œ ์ •์ ๋“ค์„ ์ˆœ์ฐจ์ ‘๊ทผํ•ด์„œ ํ™•์ธํ•ด์•ผํ•˜๋ฏ€๋กœ O(E) ๋งŒํผ์˜ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.

 

๋น„๊ต

๊ธฐ์ค€ ์ธ์ ‘ ํ–‰๋ ฌ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ
๊ณต๊ฐ„๋ณต์žก๋„ O(V^2) O(E)
๊ฐ„์„  ์‚ฝ์ž… O(1) O(E)
๊ฐ„์„  ์กด์žฌ ํ™•์ธ O(1) O(E)
์ •์  ์—ฐ๊ฒฐ ํ™•์ธ O(V) O(E)

E : ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜

V : ์ •์ ์˜ ๊ฐฏ์ˆ˜

 

์—ฐ์‚ฐ

  1. ์ƒˆ๋กœ์šด ์ •์  ์ถ”๊ฐ€
  2. ํŠน์ • ๊ฐ’์˜ ์ •์ ์ด ์กด์žฌํ•˜๋Š” ์ง€ ํ™•์ธ
  3. ์ •์  ์‚ญ์ œ ๋ฐ ๊ฐ„์„  ์ œ๊ฑฐ
  4. ์ƒˆ๋กœ์šด ๊ฐ„์„  ์ถ”๊ฐ€
  5. ๋‘ ์ •์  ๊ฐ„์˜ ๊ฐ„์„ ์ด ์กด์žฌํ•˜๋Š” ์ง€ ํ™•์ธ
  6. ๊ฐ„์„  ์ œ๊ฑฐ
  7. ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ

 

๋ถ„๋ฅ˜

๋ฐฉํ–ฅ์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

  • ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ (directed graph)

    ์ •์  A์—์„œ B๋กœ ๊ฐ€๋Š” ๊ฐ„์„ ์€ <A,B>์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค.

    => <B,A>์™€ ๋‹ค๋ฅด๋‹ค.

  • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ (undirected graph)

    ์ •์  A์™€ B๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์€ (A,B) ์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค.

    => (B,A)์™€ ๊ฐ™๋‹ค.

๋ชจ๋“  directed graph๋Š” Strongly Connected Graph์™€ Directed Acyclic Graph๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ ์ƒˆ๋กœ์šด ๊ธ€๋กœ ์ž‘์„ฑํ•˜๊ฒ ๋‹ค.

(SCC, DAG)

 

์—ฐ๊ฒฐ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

  • ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (connected graph)

    ๋ชจ๋“  ์ •์  ๊ฐ„์˜ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค. ๋ฐฉํ–ฅ์„ฑ ๊ทธ๋ž˜ํ”„์ผ ๋•Œ๋Š” strongly connected graph๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค.

    • strongly connected graph

      ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด ์„œ๋กœ๊ฐ„์˜ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

    • weakly connected graph

      ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ๋ชจ๋“  ๋…ธ๋“œ์— ๋Œ€ํ•ด ์„œ๋กœ๊ฐ„์˜ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

  • ๋น„์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„ (disconnected graph)

    ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ํŠน์ • ์ •์ ์Œ ์‚ฌ์ด์— ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

    Giant Component : ๊ฐ€์žฅ ๋…ธ๋“œ๊ฐ€ ๋งŽ์ด ์—ฐ๊ฒฐ๋œ ๊ทธ๋ž˜ํ”„์˜ ๋…ธ๋“œ๋“ค

 

์‚ฌ์ดํด์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

  • ์ˆœํ™˜ ๊ทธ๋ž˜ํ”„ (cyclic graph)

    ์ˆœํ™˜์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

  • ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„ (acyclic graph)

    ์ˆœํ™˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

=> acyclic์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ In(N) ๊ต์ง‘ํ•ฉ Out(N) ๊ฐ€ ๊ณต์ง‘ํ•ฉ์ธ์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŠน์ •๋…ธ๋“œ N์„ ๊ธฐ์ค€์œผ๋กœ In(N)์€ ๊ฐ„์„ ์„ ๊ณ„์† ๋”ฐ๋ผ๊ฐ€๋ณด๋ฉด ๋˜๊ณ , Out(N)์€ ์—ญ๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๋ฅผ ๋งŒ๋“ค์–ด ๊ฐ„์„ ์„ ๋”ฐ๋ผ๊ฐ€๋ณด๋ฉด ๋œ๋‹ค. ๊ฐ„์„ ์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ DFS๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ๋‘ ์ง‘ํ•ฉ์˜ ๊ต์ง‘ํ•ฉ์ด ๊ณต์ง‘ํ•ฉ์ด๋ผ๋ฉด Acyclicํ•˜๋‹ค.

 

ํŠน์ˆ˜ํ•œ ๊ทธ๋ž˜ํ”„

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

    ๊ฐ„์„ ์— ๋น„์šฉ(cost)์ด๋‚˜ ๊ฐ€์ค‘์น˜(weight)๊ฐ€ ํ• ๋‹น๋œ ๊ทธ๋ž˜ํ”„๋กœ ๋„คํŠธ์›Œํฌ๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

  • ์™„์ „ ๊ทธ๋ž˜ํ”„ (Complete graph)

    ๋ชจ๋“  ์ •์ ์ด ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ทธ๋ž˜ํ”„์ด๋‹ค. ๋ฐฉํ–ฅ์„ฑ ๊ทธ๋ž˜ํ”„์ผ ๋•Œ๋Š” ๋ชจ๋“  ์ •์ ์ด ์ง„์ž… ๊ฐ„์„ ๊ณผ ์ง„์ถœ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์–ด์•ผํ•˜๋ฉฐ, ์ด๋ฅผ strongly complete graph๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ์™„์ „๊ทธ๋ž˜ํ”„์—์„œ ์ •์ ์˜ ๊ฐฏ์ˆ˜๋ฅผ n์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜๋Š”n*(n-1) / 2์ด๋‹ค.

  • ์ด๋ถ„ ๊ทธ๋ž˜ํ”„ (bipartite graph)

 

์ „์ฒด ๊ทธ๋ž˜ํ”„ G๋ฅผ ์„œ๋กœ ๋‹ค๋ฅธ 2๊ฐœ์˜ ์ง‘ํ•ฉ V1, V2๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ, V1์— ์†ํ•ด ์žˆ๋Š” ์–ด๋–ค ๋‘ ์ •์ ๋„ G์—์„œ ์ธ์ ‘ํ•˜์ง€ ์•Š๊ณ  V2๋กœ ๋งˆ์ฐฌ๊ฐ€์ง€์ผ ๋•Œ ์ „์ฒด ๊ทธ๋ž˜ํ”„ G๋Š” ์ด๋ถ„ ๊ทธ๋ž˜ํ”„์ด๋‹ค.

  • ํ‰๋ฉด ๊ทธ๋ž˜ํ”„ (planar graph) : ํ‰๋ฉด์— ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ธ์„ ๋•Œ, ๊ฐ„์„ ์ด ์„œ๋กœ ๊ต์ฐจํ•˜์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

  • ๋ณดํ†ต ๊ทธ๋ž˜ํ”„ (regular graph) : ๋ชจ๋“  ์ •์ ์˜ ์ฐจ์ˆ˜๊ฐ€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์ด๋‹ค.

  • ๋ฉ€ํ‹ฐ ๊ทธ๋ž˜ํ”„ (multigraph) : ๊ฐ™์€ ๊ฐ„์„ ์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค. ๋ณดํ†ต ๊ทธ๋ž˜ํ”„ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • ์ด์ค‘ ๊ฒฐํ•ฉ ๊ทธ๋ž˜ํ”„(biconnected graph) : ๋‹จ์ ˆ์ ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

    • ์ด์ค‘ ๊ฒฐํ•ฉ ์š”์†Œ(biconnected component) : ์ด์ค‘ ๊ฒฐํ•ฉ ๊ทธ๋ž˜ํ”„์—์„œ ์ด์ค‘ ๊ฒฐํ•ฉ ๋˜์–ด์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์š”์†Œ์ด๋‹ค.
  • ํŠธ๋ฆฌ (Tree)

    DAG(Directed Acyclic Graph)์ด๋ฉฐ ๋ฐ”๋กœ ๋’ท ํŒŒํŠธ์— ๋‚˜์˜จ๋‹ค.

 

ํƒ์ƒ‰

  • DFS(Depth First Search)

    ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์ด๋‹ค. ์Šคํƒ์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • BFS(Breath Frist Search)

    ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์ด๋‹ค. ํ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

(DFS / BFS ๋งํฌ)

 

๋„์ถœ๋œ ๋ฌธ์ œ๋“ค

  • ์˜ค์ผ๋Ÿฌ ๊ฒฝ๋กœ (Euler path)

    ๊ทธ๋ž˜ํ”„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๊ฐ„์„ ์„ ํ•œ ๋ฒˆ์”ฉ๋งŒ ํ†ต๊ณผํ•˜๋Š” ๊ฒฝ๋กœ์ด๋‹ค. (์ฒ˜์Œ ์ •์ ์œผ๋กœ ๋˜๋Œ์•„๊ฐˆ ํ•„์š”๋Š” ์—†๋‹ค.)

    '์พจ๋‹ˆํžˆ์Šค ๋ฒ ๋ฅดํฌ์˜ ๋‹ค๋ฆฌ๊ฑด๋„ˆ๊ธฐ'๋ผ๋Š” ๋ฌธ์ œ๊ฐ€ ์ด์— ๊ด€๋ จ๋œ ๋ฌธ์ œ์ด๋‹ค.

    <์กด์žฌ ์กฐ๊ฑด>

    • ๋ชจ๋“  ์ •์ ์˜ ์ฐจ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๊ฑฐ๋‚˜ 2๊ฐœ์ด๋‹ค.

      ์ฐจ์ˆ˜๊ฐ€ 2๊ฐœ์ธ ์ •์ ์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ์ •์  2๊ฐœ๊ฐ€ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘๊ณผ ๋์ ์ด๋‹ค.

  • ์˜ค์ผ๋Ÿฌ ์ˆœํ™˜ (Euler cycle)

    ๊ทธ๋ž˜ํ”„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๊ฐ„์„ ์„ ํ•œ ๋ฒˆ์”ฉ๋งŒ ํ†ต๊ณผํ•˜๋ฉด์„œ ์ฒ˜์Œ ์ •์ ์œผ๋กœ ๋˜๋Œ์•„์˜ค๋Š” ๊ฒฝ๋กœ์ด๋‹ค.

    <์กด์žฌ ์กฐ๊ฑด>

    • ๋ชจ๋“  ์ •์ ์˜ ์ฐจ์ˆ˜๊ฐ€ ์ง์ˆ˜์ด๋‹ค.
  • ํ—ค๋ฐ€ํ„ด ์ˆœํ™˜ (Hamiltonian cycle)

    ๊ทธ๋ž˜ํ”„์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ์ •์ ์„ ํ•œ ๋ฒˆ์”ฉ๋งŒ ํ†ต๊ณผํ•˜๋ฉด์„œ ์ฒ˜์Œ ์ •์ ์œผ๋กœ ๋˜๋Œ์•„์˜ค๋Š” ๊ฒฝ๋กœ์ด๋‹ค. ๋ชจ๋“  ๊ฐ„์„ ์„ ์ง€๋‚  ํ•„์š”๋Š” ์—†๋‹ค.

  • ์™ธํŒ์›์ˆœํ™˜ ๋ฌธ์ œ (TravelingSalespersonProblem)

    ํ—ค๋ฐ€ํ„ด ์ˆœํ™˜ ์ค‘ ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ์˜ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜

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

 

์ฐธ๊ณ 

http://59.23.150.58/30stair/graph/graph.php?pname=graph

๋ฐ˜์‘ํ˜•