STUDY LOG/๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป โฐ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” Recap (DP &Dijkstra)

jjsyeon 2025. 3. 13. 09:22

๐Ÿ“Recap Day

: ์ด๋ฒˆ์ฃผ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ง„ํ–‰ํ–ˆ๋˜ ์ฃผ์ œ์˜ ๋ฌธ์ œ ์ค‘์—์„œ ๋ชป ํ‘ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๊ณต์œ !


1๏ธโƒฃ DP & DnC

์ ํ™”์‹์ด ํ•„์š”ํ•œ ๋ฌธ์ œ๋Š” DP ํ˜น์€ DnC?!?

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณต๋ถ€ํ•˜๊ณ  ๊ณ„์† ์ ํ™”์‹์„ ๋ณด๋ฉด DP ํ˜น์€ DnC๋ฅผ ๋– ์˜ฌ๋ ธ๋Š”๋ฐ,,

    ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐˆ ๋•Œ ๋ถ„ํ•  ์ •๋ณต,
    ์ž‘์€ ๊ฐ’์„ ๊ตฌํ•ด ํฐ ๊ฐ’์— ์‚ฌ์šฉํ•ด์•ผ ํ•  ๋•Œ DP๋ฅผ ํ”ํžˆ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐ


    โ†‘ ์ด ๋ง์„ ๋“ค์œผ๋‹ˆ,, ํ‹€๋ ธ์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด๋”ฐ.. ๊ทธ๋ž˜์„œ GPTํ•œํ…Œ ๋ฌผ์–ด๋ด„

    • DP์™€ DnC ์œ ํ˜•์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์„ ์„ธ์šฐ์ž๋ฉด ์ ํ™”์‹์ธ๊ฐ€?!? ๋ณด๋‹ค๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ์„œ๋กœ ๋…๋ฆฝ์ ์ธ๊ฐ€!? ๊ฐ€ ๋” ์ž˜ ๋งž๋Š”๋‹ค๊ณ  ํ•จ..

    • DP๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ์ค‘๋ณต๋˜์–ด์„œ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ๋” ์ ํ•ฉํ•˜๊ณ  DnC๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ๋…๋ฆฝ์ ์ผ ๋•Œ ๋” ์ ํ•ฉํ•˜๋‹ค๊ณ  ํ•จ

  • DP(Top-Down) vs DnC

    • DP(Top-Down)๋„ ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์•ฝ๊ฐ„ DnC๋ž‘ ๋น„์Šทํ•ด ๋ณด์ธ๋‹ค!

    • DP์˜ ํ•ต์‹ฌ์€ โ€œ๋ฉ”๋ชจ์ด์ œ์ด์…˜โ€!! DnC์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ๊ฐ’์„ ๊ธฐ๋กํ•ด์„œ ์ค‘๋ณต ์—ฐ์‚ฐ์„ ๋ฐฉ์ง€ํ•จ

๐Ÿค” ์žฌ์‚ฌ์šฉ์ด๋ž‘ ๋ณ‘ํ•ฉ์ด ๋ญ๊ฐ€ ๋‹ฌ๋ผ?

: ๋‹ค๋ฅด๋‹ค๋Š” ๊ฑด ์•Œ๊ฒ ๋Š”๋ฐ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค๊ณ  ๋А๋‚Œ์ ์œผ๋กœ๋ฐ–์— ๋ชจ๋ฅด๊ฒ ์Œ..ใ…Ž

๋ณธ์งˆ์ ์œผ๋กœ โ€œ๋ณ‘ํ•ฉโ€ ์€ ๋…๋ฆฝ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์น˜๋Š” ๊ณผ์ •์ด๊ณ ,
โ€œ์žฌ์‚ฌ์šฉโ€ ์€ ์ค‘๋ณต๋œ ๊ณ„์‚ฐ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•œ ๊ณผ์ •
  • ๋ณ‘ํ•ฉ (Merge) โ†’ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ถ€๋ถ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ์„œ ๋‹ต์„ ๊ตฌํ•˜๋Š” ๊ณผ์ •
  • ์žฌ์‚ฌ์šฉ (Reuse) โ†’ ์ด์ „์— ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ์ค„์ด๋Š” ๊ณผ์ •

  โ‡’ ํ•ต์‹ฌ ์ฐจ์ด๋Š” ์ค‘๋ณต ๊ณ„์‚ฐ์„ ์ค„์ด๋Š” ๋ชฉ์ ์ด ์žˆ๋Š”๊ฐ€?!? ๋กœ ์ดํ•ดํ•˜์ž


์ ํ™”์‹ ๋ฌธ์ œ๋ฅผ ๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ• ๊นŒ!

  1. ์ผ๋‹จ DP๋ฅผ ๋จผ์ € ๋– ์˜ฌ๋ ค๋ณด์ž!

    • ์ ํ™”์‹์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ด์ „์˜ ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ํ˜„์žฌ ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ตฌ์กฐ

    • ์ž‘์€ ์ž‘์—…์œผ๋กœ ์ชผ๊ฐœ๋„ ๊ทธ ์ž‘์—…์ด ์„œ๋กœ ๋…๋ฆฝ์ ์ธ ์ž‘์€ ์ž‘์—…์ด ์•„๋‹ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ
      โ†’ ๋งŒ์•ฝ ๋…๋ฆฝ์ ์ธ ๋ถ€๋ถ„ ์ž‘์—…์œผ๋กœ ๋‚˜๋‰˜๋ฉด ์—ฌ๊ธฐ์„œ ๋ฐ”๋กœ DnC์„ ์ ์šฉ

    • ๊ทธ๋Ÿฌ๋‹ˆ DnC ๋ณด๋‹ค๋Š” DP๋ฅผ ๋จผ์ € ๋– ์˜ฌ๋ฆฌ๋Š”๊ฒŒ ์ข‹๋‹ค~

  2. ๊ทผ๋ฐ ์ด์ œ $N$์ด ํฌ๋ฉด?!? DnC๋ฅผ ์ ์šฉํ•ด์„œ ์ตœ์ ํ™”ํ•ด๋ณด์ž!

    • $N$์ด ์ปค์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™๋‹ค๋ฉด DnC๋ฅผ ์ ์šฉํ•ด์„œ DP๋ฅผ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์—†์„ ์ง€ ์ƒ๊ฐํ•ด๋ณด์ž

    • DP๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ $O(N)$.. ๊ทผ๋ฐ $N$์ด ๋„ˆ๋ฌด ํฌ๋ฉด ์ด๊ฒƒ๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋‚  ์ˆ˜๋„ ์žˆ์Œ

    • DnC๋ฅผ ์ ์šฉํ•ด์„œ $O(log N)$์œผ๋กœ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์„์ง€ ์ƒ๊ฐํ•ด๋ณด์ž

      • ์ ํ™”์‹์„ ํ–‰๋ ฌ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋“ฑ์˜ ๋ฐฉ์‹์œผ๋กœ DnC ์ ์šฉ ๊ฐ€๋Šฅ

2๏ธโƒฃ ์ ํ™”์‹์„ ํ–‰๋ ฌ ๊ณฑ์œผ๋กœ ํ‘œํ˜„ํ•ด๋ณด์ž!

์ ํ™”์‹์ด ์„ ํ˜• ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฉด ํ–‰๋ ฌ ๊ณฑ์…ˆ์œผ๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ!

  • ์„ ํ˜• ๊ด€๊ณ„์˜ ์ ํ™”์‹

    • $F_{n+2} = F_{n+1} + F_{n}$ (ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ์ ํ™”์‹) ์ฒ˜๋Ÿผ ํ‘œํ˜„๋˜๋Š” ์ ํ™”์‹.
      ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ..

    • $p_0A_n+p_1A_{nโˆ’1}+p_2A_{nโˆ’2}+โ‹ฏ+p_{kโˆ’1}A_{nโˆ’k+1}=0$
      (๋‹จ $nโ‰ฅk$ ์ด๊ณ  $p_1, p_2 โ‹ฏp_{k-1}$์€ ์ƒ์ˆ˜)

    • ์ฒ˜๋Ÿผ ์–ด๋–ค ํ•ญ์˜ ๊ฐ’์„ ๋‹ค๋ฅธ ํ•ญ์˜ ์ƒ์ˆ˜๊ณฑ์˜ ํ•ฉ์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•œ ์ ํ™”์‹

  • ํ–‰๋ ฌ๊ณฑ์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ• ๊นŒ!

    • $F_{n+2} = aF_{n+1} + bF_{n}$ ($a, b$๋Š” ์ƒ์ˆ˜)

    • $\begin{bmatrix}F_{n+1} \\ F_{n} \\ \end{bmatrix} = \begin{bmatrix}a&b \\ 1&0\end{bmatrix}^{n}\begin{bmatrix}F_{1} \\ F_0\end{bmatrix}$


    • ๊ตฌํ•˜๋Š” ๊ณผ์ • [์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ] 1. ๋‘ ๊ฐœ์˜ ๊ด€๊ณ„์‹์„ ๋ฝ‘๊ธฐ

      $\begin{bmatrix}F_{n+2} \ F_{n+1}\end{bmatrix}^T$ ์˜ ํ˜•ํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ–‰๋ ฌ๊ณฑ์„ ๋งŒ๋“ค์–ด์•ผํ•˜๋ฏ€๋กœ $F_{n+1}$ ์— ๋Œ€ํ•œ ๋“ฑ์‹ ํ•˜๋‚˜ ๋” ๋ฝ‘๊ธฐ

      $$ \begin{aligned} F_{n+2} &= aF_{n+1} + bF_{n} \\ F_{n+1} &= F_{n+1} \end{aligned} $$

      1. ์ด์ œ ๊ฐ ๋“ฑ์‹์˜ ๊ณ„์ˆ˜๋ฅผ ํ™œ์šฉํ•ด์„œ $u_{k+1} = A u_{k}$ ํ˜•ํƒœ๋กœ ํ‘œํ˜„

        $$ \begin{bmatrix}F_{n+2} \\ F_{n+1} \\ \end{bmatrix} = \begin{bmatrix}a&b \\ 1&0 \end{bmatrix} \begin{bmatrix}F_{n+1} \\ F_n \end{bmatrix} $$

      2. ๋“ฑ๋น„์ˆ˜์—ด ํ˜•ํƒœ๊ฐ€ ๋˜์—ˆ์œผ๋‹ˆ $u_n = A^{n-1} u_0$ ์œผ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ

        $$ \begin{bmatrix}F_{n+1} \\ F_{n} \\ \end{bmatrix} = \begin{bmatrix}a & b \\ 1 & 0 \end{bmatrix}^{n} \begin{bmatrix}F_{1} \\ F_0 \end{bmatrix} $$

๐Ÿค” ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณธ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜ 6 ๋ฌธ์ œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

  1. DP๋กœ ์ ‘๊ทผ
  2. $N$์ด ํฌ๋‹ˆ๊นŒ ํ–‰๋ ฌ๊ณฑ์˜ ํ˜•ํƒœ๋กœ ์ ํ™”์‹์„ ์ˆ˜์ •
  3. ํ–‰๋ ฌ ์ œ๊ณฑ ์—ฐ์‚ฐ์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ DnC ํ™œ์šฉ

DP ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ DnC๋กœ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•?

  • ์ ํ™”์‹์„ ํ–‰๋ ฌ ๊ณฑ์…ˆ์œผ๋กœ ๋ณ€ํ™˜ โ† ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ทธ๊ฑฐ

  • DnC Optimization (์ฐธ๊ณ ๐Ÿ”—)

    • ์–ธ์ œ ๊ฐ€๋Šฅ?

      • $dp[i][j] = \min_{k}(dp[i][k] + dp[k+1][j] + C(k))$โ† ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ์ ํ™”์‹ ๋ฌธ์ œ์—์„œ ํ™œ์šฉ

      • ์ตœ์  $k$๊ฐ’์ด ํ•ญ์ƒ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋ชจ๋…ธํ†ค ์†์„ฑ (Monotonicity Property)์„ ๋งŒ์กฑํ•ด์•ผ ํ™œ์šฉ ๊ฐ€๋Šฅ
        โ†’ ๊ทธ๋‹ˆ๊นŒ โ€œ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ํ˜๋Ÿฌ๊ฐˆ ๋•Œ ๋ถ„ํ•  ์ •๋ณตโ€œ์ด ๊ฐ€๋Šฅํ•˜๋‹ˆ๊นŒ ์ด๋Ÿฐ ์†์„ฑ์„ ์–˜๋„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผํ•จ

    • ๋ญ๋ผ๋Š” ๊ฑฐ์•ผ? ์˜ˆ์ œ๋กœ ์ดํ•ดํ•ด๋ณด์ž [์ ‘๊ธฐ/ํŽผ์น˜๊ธฐ]
           ๐Ÿ  ์ง‘1 - 2km - ๐Ÿช ์Šˆํผ1 - 3km - ๐Ÿ  ์ง‘2 - 2km - ๐Ÿช ์Šˆํผ2 - 4km - ๐Ÿ  ์ง‘3 - 5km - ๐Ÿช ์Šˆํผ3
      • ๋งˆ์„์— N๊ฐœ์˜ ์ง‘์ด ์žˆ๊ณ , M๊ฐœ์˜ ์Šˆํผ๋งˆ์ผ“์ด ์žˆ์„ ๋•Œ ๊ฐ ์ง‘์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์Šˆํผ๋งˆ์ผ“์„ ์ฐพ์•„์•ผ ํ•จ
        โ‡’ ๊ฐ ์ง‘์ด ์–ด๋А ์Šˆํผ๋งˆ์ผ“์— ๋ฐฐ์ •๋˜๋Š”์ง€๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋ผ!

      • ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์Šˆํผ๋งˆ์ผ“ ์€ ํ•ญ์ƒ ํ•œ ๋ฐฉํ–ฅ(์˜ค๋ฅธ์ชฝ)์œผ๋กœ ์ด๋™
        = ์ง‘์ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๊ฐ€๊นŒ์šด ์Šˆํผ๋งˆ์ผ“๋„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•จ!

      • ์ด์ง„ ํƒ์ƒ‰๊ณผ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ํƒ์ƒ‰ํ•ด์„œ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•ด๋ณด์ž!

      • ๊ณผ์ •

        ๐Ÿ  ์ง‘1 (1km)  ๐Ÿ  ์ง‘2 (5km)  ๐Ÿ  ์ง‘3 (10km)  ๐Ÿ  ์ง‘4 (15km)
                 ๐Ÿช ์Šˆํผ1 (3km)   ๐Ÿช ์Šˆํผ2 (8km)   ๐Ÿช ์Šˆํผ3 (13km)
      1. ์ง‘ ๋ฆฌ์ŠคํŠธ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ

         ๐Ÿ  ์ง‘1 (1km)  ๐Ÿ  ์ง‘2 (5km)   |   ๐Ÿ  ์ง‘3 (10km)  ๐Ÿ  ์ง‘4 (15km)
      2. ์™ผ์ชฝ ์ ˆ๋ฐ˜ (์ง‘1, ์ง‘2)์— ๋Œ€ํ•ด ์Šˆํผ๋งˆ์ผ“ ์ฐพ๊ธฐ

        • ์ง‘1 (1km)์€ ์Šˆํผ1 (3km)์ด ๊ฐ€์žฅ ๊ฐ€๊น๋‹ค.
        • ์ง‘2 (5km)์€ ์Šˆํผ1 (3km)์ด ๊ฐ€์žฅ ๊ฐ€๊น๋‹ค.
      3. ์˜ค๋ฅธ์ชฝ ์ ˆ๋ฐ˜ (์ง‘3, ์ง‘4)์— ๋Œ€ํ•ด ์Šˆํผ๋งˆ์ผ“ ์ฐพ๊ธฐ

        • ์ง‘3 (10km)์€ ์Šˆํผ2 (8km)์ด ๊ฐ€์žฅ ๊ฐ€๊น๋‹ค.
        • ์ง‘4 (15km)์€ ์Šˆํผ3 (13km)์ด ๊ฐ€์žฅ ๊ฐ€๊น๋‹ค.
      4. ์ตœ์ข… ๊ฒฐ๊ณผ

        ์ง‘ ์œ„์น˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์Šˆํผ๋งˆ์ผ“ ์œ„์น˜
        ์ง‘1 (1km) ์Šˆํผ1 (3km)
        ์ง‘2 (5km) ์Šˆํผ1 (3km)
        ์ง‘3 (10km) ์Šˆํผ2 (8km)
        ์ง‘4 (15km) ์Šˆํผ3 (13km)

DnC Optimization ์ค‘ ํ•˜๋‚˜๋กœ ์–˜๋„ ์–ด๋ ค์šด ๋ฌธ์ œ์— ๋‚˜์˜ค๋”๋ผ..๋‚˜์ค‘์— ํ•˜์ž...

๐Ÿ”ฅ (๋ฒˆ์™ธ) DP ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•

3๏ธโƒฃ ๋‹ค์ต์ŠคํŠธ๋ผ ๋‚ด์šฉ ์ •๋ฆฌ

โ€˜๋ฐ์ดํฌ์ŠคํŠธ๋ผโ€™๋ผ๊ณ  ํ•ด์•ผ ํ•˜๋‚˜..? ๊ฑ ๋‹ค์ต์ŠคํŠธ๋ผ๋ผ๊ณ  ํ• ๋ž˜


Dijkstra ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜?

  • ํ•œ ์ •์ (Vertex ๋˜๋Š” Node)์—์„œ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ๊ฐ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ํ™œ์šฉ๋จ

    • Edge ๋งˆ๋‹ค ๊ฐ€์ค‘์น˜๊ฐ€ ๋‹ค๋ฅผ ๋•Œ ํ™œ์šฉ

    • ๊ฐ€์ค‘์น˜๋Š” ์Œ์ˆ˜๊ฐ€ ์•„๋‹˜

  • Greedy & DP ๊ฐœ๋…์ด ๊ฒฐํ•ฉ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜

    • Greedy : ํ˜„์žฌ ๊ฐ€์žฅ ์งง์€ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ•˜๋ฉด ์ „์ฒด ์ตœ์ ํ•ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ

    • DP : ๊ฐ ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ง„์ ์œผ๋กœ ๊ตฌํ•˜๊ณ  ์ €์žฅํ•ด์„œ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์žฌํ™œ์šฉ

  • Visited ์ฒ˜๋ฆฌํ•  ํ•„์š” X ?

    • ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋งŒ ์žˆ์œผ๋ฉด ๋˜๋Š” ๊ฒฝ์šฐ์—” O

    • ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์ธ ๋…ธ๋“œ๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฏธ ์ฒ˜๋ฆฌํ•œ ๋…ธ๋“œ๋Š” ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ํ™•์ •๋œ ์ƒํƒœ

    • ๋ฐฉ๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ํ•ด๋‹น ๊ฒฝ๋กœ์—์„œ ์ด๋ฏธ ๋ฐฉ๋ฌธํ–ˆ๋˜ ๋…ธ๋“œ๋Š” ๋’ค์ชฝ์œผ๋กœ ๋ฐ€๋ฆผ

    โ‡’ BFS๋กœ ๊ฒฝ๋กœ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ํ˜„์žฌ๊นŒ์ง€ ๊ตฌํ•œ ๊ฒฝ๋กœ ์ค‘ ๊ฐ€์žฅ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์ธ ๊ฒฝ๋กœ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ(์šฐ์„ ์ˆœ์œ„ ํ) ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌ


์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ๋„ ๊ตฌํ•ด์•ผํ•  ๋•Œ?

: ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ์ฐพ์œผ๋ฉด์„œ ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฅผ ๊ธฐ๋กํ•˜์—ฌ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•œ ํ›„ ๊ฒฝ๋กœ๋ฅผ ์—ญ์ถ”์ 

  • ์–ธ์ œ ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ• ๊นŒ

    • ๊ฒฝ๋กœ ํƒ์ƒ‰ ์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๋…ธ๋“œ๋ฅผ ๋ฝ‘์•„ ๊ทธ ํ›„์— ๋ฐฉ๋ฌธํ•  ๋…ธ๋“œ๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ

    • ๋งŒ์ผ ํ˜„์žฌ ์กฐํšŒํ•˜๋Š” ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ์˜ ๊ฒฝ๋กœ๊ฐ€ ๊ธฐ์กด์˜ ๊ฒฝ๋กœ๋ณด๋‹ค ๊ฐ€์ค‘์น˜๊ฐ€ ๋‚ฎ์œผ๋ฉด ๋ถ€๋ชจ ๋…ธ๋“œ ๊ฐฑ์‹ 

    • ์—ฌ๊ธฐ์„œ ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ๋ฐ”๋กœ ์ง์ „์— ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ โ†’ ์–ด๋””์—์„œ ์ด ๋…ธ๋“œ๋กœ ์™”๋Š”์ง€๋ฅผ ์ €์žฅ

  • ๊ฒฝ๋กœ ์ €์žฅ์€ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋Š” Node ํด๋ž˜์Šค์— ์ €์žฅ

  • ๊ฐ ๋…ธ๋“œ์— ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ๊ฒฝ๋กœ์— ์œ„์น˜ํ•˜๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋„์ฐฉ ์ง€์ ์—์„œ ์—ญ์ถ”์ ํ•ด ์‹œ์ž‘ ์ง€์ ๊นŒ์ง€ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ

๐Ÿค” ๊ฒฝ๋กœ๊ฐ€ ๋‹ค์–‘ํ•˜๊ฒŒ ๋‚˜์˜ฌ ๊ฒฝ์šฐ, ๋ชจ๋“  ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค๋ฉด?

  • ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ถ€๋ชจ ๋…ธ๋“œ๋ฅผ ๋ฐฐ์—ด๋กœ ์ €์žฅ.. (ํ›„๋ณด๋ฅผ ๋ชจ๋‘ ๋ฐ•์•„ ๋„ฃ๊ฒ ๋‹ค!)
  • ์ถœ๋ฐœํ•  ๋•Œ์™€ ๋˜๋Œ์•„์˜ฌ ๋•Œ ๋‘˜ ๋‹ค ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ํ’€์ด
  • ๊ฒฝ๋กœ๋ฅผ DFS๋กœ ์ฐพ์œผ๋ฉด์„œ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ณด๋‹ค ๊ฑฐ๋ฆฌ๊ฐ’์ด ์ปค์ง€๋ฉด Pruning