Skip to content

Latest commit

ย 

History

History
159 lines (100 loc) ยท 6.04 KB

Graph.md

File metadata and controls

159 lines (100 loc) ยท 6.04 KB

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

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

๋‹จ์ˆœํžˆ ๋…ธ๋“œ(N, node)์™€ ๊ทธ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (E, edge)์„ ํ•˜๋‚˜๋กœ ๋ชจ์•„ ๋†“์€ ์ž๋ฃŒ๊ตฌ์กฐ

  • ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ex) ์ง€๋„, ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„, ๋„๋กœ, ์ „๊ธฐ ํšŒ๋กœ ๋“ฑ
  • ๊ทธ๋ž˜ํ”„๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณ ๋ฆฝ๋œ ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜ํ”„์™€ ํŠธ๋ฆฌ์˜ ์ฐจ์ด

๊ทธ๋ž˜ํ”„ ํŠธ๋ฆฌ
์ •์˜ ๋…ธ๋“œ์™€ ๊ทธ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์„ ํ•˜๋‚˜๋กœ ๋ชจ์•„ ๋†“์€ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐฉํ–ฅ์„ฑ์ด ์žˆ๋Š” ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„์˜ ํ•œ ์ข…๋ฅ˜
๋ฐฉํ–ฅ์„ฑ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์™€ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๋ชจ๋‘ ์กด์žฌ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
์‚ฌ์ดํด ์‚ฌ์ดํด ๊ฐ€๋Šฅ
์ž์ฒด ๊ฐ„์„  ๊ฐ€๋Šฅ
์ˆœํ™˜ ๊ทธ๋ž˜ํ”„ or ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„
์‚ฌ์ดํด ๋ถˆ๊ฐ€๋Šฅ
์ž์ฒด ๊ฐ„์„  ๋ถˆ๊ฐ€๋Šฅ
๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„
๋ฃจํŠธ ๋…ธ๋“œ ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๊ฐœ๋…์ด ์—†์Œ ํ•œ ๊ฐœ์˜ ๋ฃจํŠธ ๋…ธ๋“œ ์กด์žฌ
๋ชจ๋“  ์ž์‹ ๋…ธ๋“œ๋Š” ํ•œ ๊ฐœ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง
๋ถ€๋ชจ - ์ž์‹ ๋ถ€๋ชจ - ์ž์‹์˜ ๊ฐœ๋…์ด ์—†์Œ ๋ถ€๋ชจ - ์ž์‹ ๊ด€๊ณ„๋กœ ์ด๋ฃจ์–ด์ง
๋ชจ๋ธ ๋„คํŠธ์›Œํฌ ๋ชจ๋ธ ๊ณ„์ธต ๋ชจ๋ธ
์ˆœํšŒ DFS, BFS DFS, BFS ๋‚ด ์ „์œ„, ์ค‘์œ„, ํ›„์œ„
๊ฐ„์„ ์˜ ์ˆ˜ ๊ทธ๋ž˜ํ”„์— ๋”ฐ๋ผ ๊ฐ„์„ ์˜ ์ˆ˜๊ฐ€ ๋‹ค๋ฆ„
๊ฐ„์„ ์ด ์—†์„ ์ˆ˜๋„ ์žˆ์Œ
๋…ธ๋“œ๊ฐ€ N์ธ ํŠธ๋ฆฌ๋Š” ํ•ญ์ƒ N-1์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง
๊ฒฝ๋กœ - ์ž„์˜์˜ ๋‘ ๋…ธ๋“œ ๊ฐ„์˜ ๊ฒฝ๋กœ๋Š” ์œ ์ผ
์˜ˆ์‹œ ๋ฐ ์ข…๋ฅ˜ ์ง€๋„, ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„, ๋„๋กœ, ์ „๊ธฐ ๋“ฑ ์ด์ง„ ํŠธ๋ฆฌ, ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ, ๊ท ํ˜• ํŠธ๋ฆฌ ๋“ฑ

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

  • ์ •์ (vertex): ์œ„์น˜์˜ ๊ฐœ๋…์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. (node ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.)
  • ๊ฐ„์„ (edge): ์œ„์น˜ ๊ฐ„์˜ ๊ด€๊ณ„, ์ฆ‰ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ ์ด๋‹ค. (link, branch ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.)
  • ์ธ์ ‘ ์ •์ (adjacent vertex): ๊ฐ„์„ ์— ์˜ํ•ด ์ง์ ‘ ์—ฐ๊ฒฐ๋œ ์ •์ 
  • ์ •์ ์˜ ์ฐจ์ˆ˜(degree): ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ํ•˜๋‚˜์˜ ์ •์ ์— ์ธ์ ‘ํ•œ ์ •์ ์˜ ์ˆ˜
    • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ์กด์žฌํ•˜๋Š” ์ •์ ์˜ ๋ชจ๋“  ์ฐจ์ˆ˜ ํ•ฉ = ๊ทธ๋ž˜ํ”„์˜ ๊ฐ„์„  ์ˆ˜ * 2
  • ์ง„์ž… ์ฐจ์ˆ˜(in-degree): ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€์—์„œ ์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜ (๋‚ด์ฐจ์ˆ˜ ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.)
  • ์ง„์ถœ ์ฐจ์ˆ˜(out-degree): ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€๋กœ ํ–ฅํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜ (์™ธ์ฐจ์ˆ˜ ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค.)
  • ๊ฒฝ๋กœ ๊ธธ์ด(path length): ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ๊ฐ„์„ ์˜ ์ˆ˜
  • ๋‹จ์ˆœ ๊ฒฝ๋กœ(simple path): ๊ฒฝ๋กœ ์ค‘์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์ •์ ์ด ์—†๋Š” ๊ฒฝ์šฐ
  • ์‚ฌ์ดํด(cycle): ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ์ •์ ๊ณผ ์ข…๋ฃŒ ์ •์ ์ด ๋™์ผํ•œ ๊ฒฝ์šฐ


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

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

Untitled

  • ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์„ฑ์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ์ •์  A์™€ ์ •์  B๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์€ (A, B)์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค. (A, B) = (B, A)
  • ex) ์–‘๋ฐฉํ–ฅ ํ†ตํ–‰

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

Untitled

  • ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์„ฑ์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ์ •์  A์™€ ์ •์  B๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์€ <A, B> ๋˜๋Š” <B, A>์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค. <A, B> != <B, A> <A, B>๋Š” A โ†’ B, <B, A>๋Š” B โ†’ A๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ex) ์ผ๋ฐฉ ํ†ตํ–‰

๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„

Untitled

  • ๊ฐ„์„ ์— ๋น„์šฉ์ด๋‚˜ ๊ฐ€์ค‘์น˜๊ฐ€ ํ• ๋‹น๋œ ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ๋„คํŠธ์›Œํฌ(Network) ๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • ex) ๋„๋กœ์˜ ๊ธธ์ด, ํ†ต์‹ ๋ง์˜ ์‚ฌ์šฉ๋ฃŒ ๋“ฑ

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

Untitled

  • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์— ์žˆ๋Š” ๋ชจ๋“  ์ •์  ์Œ์— ๋Œ€ํ•ด์„œ ํ•ญ์ƒ ๊ฒฝ๋กœ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ex) ํŠธ๋ฆฌ(Tree) โ†’ ์‚ฌ์ดํด์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„

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

Untitled

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

์ˆœํ™˜ ๊ทธ๋ž˜ํ”„(์‚ฌ์ดํด)

Untitled

  • ๋‹จ์ˆœ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ์ •์ ๊ณผ ์ข…๋ฃŒ ์ •์ ์ด ๋™์ผํ•œ ๊ทธ๋ž˜ํ”„์ด๋‹ค.

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

Untitled

  • ์‚ฌ์ดํด์ด ํ˜•์„ฑ๋˜์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.

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

Untitled

  • ์†ํ•ด ์žˆ๋Š” ๋ชจ๋“  ์ •์ ์ด ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค.
  • ๋ฌด๋ฐฉํ–ฅ ์™„์ „ ๊ทธ๋ž˜ํ”„์˜ ์ •์  ์ˆ˜ = n โ†’ ๊ฐ„์„ ์˜ ์ˆ˜ = n * (n - 1) / 2


๊ทธ๋ž˜ํ”„์˜ ๊ตฌํ˜„

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

Untitled

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

์žฅ์ 

  • ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ์—†๋‹ค.
  • ์ •์ ๋“ค์˜ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ, ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆฐ๋‹ค. โ†’ O(n)

๋‹จ์ 

  • ํŠน์ • ๋‘ ์ ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ธ์ ‘ ํ–‰๋ ฌ์— ๋น„ํ•ด ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฐ๋‹ค. โ†’ O(n)
  • ๊ตฌํ˜„์ด ์–ด๋ ต๋‹ค.

์ธ์ ‘ ํ–‰๋ ฌ

Untitled

  • 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.
  • ๊ฐ„์„ ์ด ์กด์žฌํ•˜๋Š” ๋‘ ์ •์  ์นธ์€ 1, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์นธ์€ 0์œผ๋กœ ์ฑ„์šด๋‹ค. ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ๊ฐ€์ค‘์น˜๋กœ ์ฑ„์šด๋‹ค.

์žฅ์ 

  • 2์ฐจ์› ๋ฐฐ์—ด์— ๊ทธ๋ž˜ํ”„์˜ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ๋‹ด๊ฒจ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ„์„ ์˜ ์กด์žฌ ์—ฌ๋ถ€๋‚˜ ๊ฐ€์ค‘์น˜๋ฅผ ๋ฐ”๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. โ†’ O(1)
  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.

๋‹จ์ 

  • n x n์˜ 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•„์š” ์ด์ƒ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ex) 10000๊ฐœ์˜ ์ •์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ทธ๋ž˜ํ”„ ๋‚ด์— ๊ฐ„์„ ์ด 5๊ฐœ๋งŒ ์กด์žฌํ•  ๊ฒฝ์šฐ
  • ๋ชจ๋“  ๊ฐ„์„  ์ •๋ณด๋ฅผ ๋Œ€์ž…ํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค. โ†’ O(n^2)


๋ฉด์ ‘ ๋Œ€๋น„

  • ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„์™€ ์™„์ „ ๊ทธ๋ž˜ํ”„์˜ ์ฐจ์ด์ ์€?
  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์™€ ์ธ์ ‘ ํ–‰๋ ฌ์˜ ์žฅ๋‹จ์ ์€?