๐Ÿ“–Graph

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ •์ ๊ณผ ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ

  • G = (V, E) : V๋Š” ์ •์ ์˜ ์ง‘ํ•ฉ, E๋Š” ๊ฐ„์„ ๋“ค์˜ ์ง‘ํ•ฉ

๐Ÿ“–์šฉ์–ด

  • ์ •์ (Vertex) : ๊ทธ๋ž˜ํ”„๋ฅผ ์—ฐ๊ฒฐํ•  ๊ฐ์ฒด
  • ๊ฐ„์„ (Edge) : ๋‘ ๊ฐœ์˜ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์„ 
  • ์ธ์ ‘(Adjacent) : ๊ทธ๋ž˜ํ”„์—์„œ (Vแตข, Vโฑผ)๊ฐ€ ์žˆ์„ ๋•Œ, ๋‘ ์ •์  Vแตข์™€ Vโฑผ๋ฅผ ์ธ์ ‘ํ•œ๋‹ค๊ณ  ํ•จ
  • ์ฐจ์ˆ˜(Degree) : ์ •์ ์— ๋ถ€์†๋˜์–ด ์žˆ๋Š” ๊ฐ„์„ ์˜ ์ˆ˜
  • ์ง„์ž…์ฐจ์ˆ˜(In-Degree) : ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜
  • ์ง„์ถœ์ฐจ์ˆ˜(Out-Degree) : ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ์™ธ๋ถ€๋กœ ํ–ฅํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜
  • ๊ฒฝ๋กœ(Path : ์ •์  Vแตข์—์„œ Vโฑผ๊นŒ์ง€ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•œ ๋ฆฌ์ŠคํŠธ
  • ๋‹จ์ˆœ ๊ฒฝ๋กœ(Simple Path) : ๋ชจ๋‘ ๋‹ค๋ฅธ ์ •์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ๋กœ(ํ•œ๋ถ“ ๊ทธ๋ฆฌ๊ธฐ)
  • ๊ฒฝ๋กœ ๊ธธ์ด(Path Length : ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ„์„ ์˜ ์ˆ˜
  • ์‚ฌ์ดํด(Cycle) : ๋‹จ์ˆœ ๊ฒฝ๋กœ ์ค‘์—์„œ ๊ฒฝ๋กœ์˜ ์‹œ์ž‘ ์ •์ ๊ณผ ๋งˆ์ง€๋ง‰ ์ •์ ์ด ๊ฐ™์€ ๊ฒฝ๋กœ โ†’ ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ Tree๋ผ๊ณ  ํ•จ

๐Ÿ“–๊ตฌํ˜„

๐Ÿ“Ž์ธ์ ‘ ํ–‰๋ ฌ

๊ทธ๋ž˜ํ”„๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹ ์ •์  ๊ฐ„์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋ฉด, 2์น˜์› ๋ฐฐ์—ด์˜ ํ•ด๋‹น ์ •์  ์ธ๋ฑ์Šค์— 1(๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ๋ฉด ํ•ด๋‹น ๊ฐ€์ค‘์น˜ ๊ฐ’), ์•„๋‹ˆ๋ผ๋ฉด 0์„ ์ €์žฅ

  • ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•ด ๊ฐ„์„  ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ธ์ ‘ ํ–‰๋ ฌ์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” O(nยฒ) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง โ†’ ์ฆ‰, ๋ชจ๋“  ๊ฐ„์„ ์˜ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด๋ ค๋ฉด ์ธ์ ‘ ํ–‰๋ ฌ ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•ด์•ผํ•˜๋ฏ€๋กœ ์—ญ์‹œ O(nยฒ) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง
  • ๋‘ ์ •์ ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์กฐํšŒํ•  ๋•Œ๋Š” **O(1)**์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง
  • ํ•ญ์ƒ 2์ฐจ์› ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ํ•„์š” ์ด์ƒ์˜ ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋จ
  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๊ตฌํ˜„์ด ์‰ฌ์›€
  • ๊ฐ„์„ ์ด ๋งŽ์ด ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ ํ•ฉ

๐Ÿ“Ž์ธ์ ‘ ๋ฆฌ์ŠคํŠธ

๊ทธ๋ž˜ํ”„๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹ ์ •์ ์˜ ๋ฆฌ์ŠคํŠธ ๋ฐฐ์—ด๋กœ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•ด, ์ •์ ๋“ค ๊ฐ„์— ์ง์ ‘ ์—ฐ๊ฒฐ์ด ๋˜์–ด์žˆ์œผ๋ฉด ํ•ด๋‹น ์ •์ ์˜ ์ธ๋ฑ์Šค์— ๋ฆฌ์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๊ทธ ์ •์ ์„ ์‚ฝ์ž…

  • ๋ชจ๋“  ๊ฐ„์„ ์˜ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด๋ ค๋ฉด ํ—ค๋” ๋…ธ๋“œ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผํ•˜๋ฏ€๋กœ O(n + e) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง
  • ๋‘ ์ •์ ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์กฐํšŒํ•  ๋•Œ **O(e)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง
  • ํ•„์š”ํ•œ ๋งŒํผ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐ„์˜ ๋‚ญ๋น„๊ฐ€ ์ ์Œ
  • ์ธ์ ‘ ํ–‰๋ ฌ์— ๋น„ํ•ด ๊ตฌํ˜„์ด ์–ด๋ ค์›€
  • ๊ฐ„์„ ์ด ์ ๊ฒŒ ์กด์žฌํ•˜๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์ ํ•ฉ

๐Ÿ“–์ข…๋ฅ˜

  • ์ด ์™ธ์—๋„ ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„, ์œ ํ–ฅ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„(DAG), ์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„, ๋‹จ์ ˆ ๊ทธ๋ž˜ํ”„ ๋“ฑ์ด ์žˆ์Œ

๐Ÿ“Ž๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

๋‘ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„

  • ์ •์  ์‚ฌ์ด์˜ ๊ด€๊ณ„๋Š” ์–‘๋ฐฉํ–ฅ
  • (Vแตข, Vโฑผ) == (Vโฑผ, Vแตข)

๐Ÿ“Ž๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

๋‘ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์— ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ๊ทธ๋ž˜ํ”„

  • ์ •์  ์‚ฌ์ด์˜ ๊ด€๊ณ„๋Š” ์ผ๋ฐฉํ–ฅ
  • (Vแตข, Vโฑผ) != (Vโฑผ, Vแตข)

๐Ÿ“Ž๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„

๋‘ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„

๐Ÿ“Ž์™„์ „ ๊ทธ๋ž˜ํ”„

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

  • ๊ฐ ์ •์ ์ด ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ ๊ฐ„์„  ์ˆ˜๋ฅผ ๊ฐ€์ง

๊ทธ๋ž˜ํ”„์˜ ์ตœ๋Œ€ ๊ฐ„์„  ์ˆ˜

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

๐Ÿ“–ํƒ์ƒ‰