๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ƒํ™œ์ •๋ณด/๊ต์œก์ •๋ณด

ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ˆ˜ํ•™์  ์ ‘๊ทผ

๋ฐ˜์‘ํ˜•

ํ•˜๋…ธ์ดํƒ‘์€ ์ปดํ“จํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ˆ˜ํ•™ ๋ฌธ์ œ, ํผ์ฆ์—์„œ ์ข…์ข… ๋“ฑ์žฅํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ 3๊ฐœ์˜ ๋ง‰๋Œ€์™€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›๋ฐ˜์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š”๋ฐ ์›๋ฐ˜์€ ํฌ๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ ์žˆ์œผ๋ฉฐ, ๋ชฉํ‘œ๋Š” ํŠน์ • ๊ทœ์น™์„ ๋”ฐ๋ผ ์›๋ฐ˜์„ ํ•˜๋‚˜์˜ ๋ง‰๋Œ€์—์„œ ๋‹ค๋ฅธ ๋ง‰๋Œ€๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ˆ˜ํ•™์  ์ ‘๊ทผ
ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ˆ˜ํ•™์  ์ ‘๊ทผ

 

 

 

๋ชฉ์ฐจ

     

     

     

    1. ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™

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

    1. ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์›๋ฐ˜๋งŒ ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค.
    2. ์ž‘์€ ์›๋ฐ˜ ์œ„์— ํฐ ์›๋ฐ˜์„ ์˜ฌ๋ฆด ์ˆ˜ ์—†๋‹ค.
    3. ์ตœ์†Œํ•œ์˜ ์ด๋™ ํšŸ์ˆ˜๋กœ ์›๋ฐ˜์„ ๋ชจ๋‘ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

    ์›๋ฐ˜์ด ํ•˜๋‚˜๋ผ๋ฉด ๊ฐ„๋‹จํžˆ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‘ ๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ๋ณด์กฐ ๊ธฐ๋‘ฅ์„ ํ™œ์šฉํ•ด ๊ทœ์น™์„ ์ค€์ˆ˜ํ•˜๋ฉด์„œ ์˜ฎ๊ฒจ์•ผ ํ•˜๋ฏ€๋กœ ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

     

     

     

     

     

    2. ์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜์™€ ์ ํ™”์‹

    ํ•˜๋…ธ์ดํƒ‘์˜ ์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜๋Š” ์ˆ˜ํ•™์  ๊ทœ์น™์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์›๋ฐ˜์˜ ์ˆ˜๋ฅผ \( n \)์ด๋ผ ํ•  ๋•Œ, ์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค:

    \[ T(n) = 2^n - 1 \]

    ์ด๋ฅผ ์ ํ™”์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด,
    \[ T(n) = 2T(n-1) + 1 \]
    ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ด ์ ํ™”์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์›๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค:

    • ( n-1 )๊ฐœ์˜ ์›๋ฐ˜์„ ์‹œ์ž‘ ๋ง‰๋Œ€์—์„œ ๋ณด์กฐ ๋ง‰๋Œ€๋กœ ์˜ฎ๊ธด๋‹ค.
    • ๊ฐ€์žฅ ํฐ ์›๋ฐ˜ ํ•˜๋‚˜๋ฅผ ๋ชฉ์  ๋ง‰๋Œ€๋กœ ์˜ฎ๊ธด๋‹ค.
    • ๋‹ค์‹œ ( n-1 )๊ฐœ์˜ ์›๋ฐ˜์„ ๋ณด์กฐ ๋ง‰๋Œ€์—์„œ ๋ชฉ์  ๋ง‰๋Œ€๋กœ ์˜ฎ๊ธด๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์›๋ฐ˜์ด 3๊ฐœ์ผ ๊ฒฝ์šฐ ์ด๋™ ํšŸ์ˆ˜๋Š” \( 2^3 - 1 = 7 \)ํšŒ์ž…๋‹ˆ๋‹ค.

     

     

     

     

     

     

     

     

    ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ˆ˜ํ•™์  ์ ‘๊ทผ
    ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ˆ˜ํ•™์  ์ ‘๊ทผ

     

    3. ํ•˜๋…ธ์ดํƒ‘ ํ’€์ด ๋ฐฉ๋ฒ•

    ํ•˜๋…ธ์ดํƒ‘ ๋ฌธ์ œ๋Š” ์žฌ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ฐ˜์˜ ๊ฐœ์ˆ˜์™€ ๋ง‰๋Œ€์˜ ์ƒํƒœ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ถ”์ ํ•˜๋ฉฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํŒŒ์ด์ฌ ์ฝ”๋“œ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

    def hanoi(n, start, destination, via):
        if n == 1:
            print(f"{start}์—์„œ {destination}์œผ๋กœ ์›๋ฐ˜ ์ด๋™")
        else:
            hanoi(n-1, start, via, destination)
            print(f"{start}์—์„œ {destination}์œผ๋กœ ์›๋ฐ˜ ์ด๋™")
            hanoi(n-1, via, destination, start)
    
    # ์˜ˆ์ œ ์‹คํ–‰
    hanoi(3, 'A', 'C', 'B')

     

    ์ด ์ฝ”๋“œ๋Š” ์›๋ฐ˜์„ ์ด๋™ํ•˜๋Š” ๊ณผ์ •์„ ์ถœ๋ ฅํ•˜๋ฉฐ, ๋‹จ๊ณ„๋ณ„ ์ด๋™์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

     

    ์‹ค์ œ๋กœ 3๊ฐœ์˜ ์›๋ฐ˜์„ ์˜ฎ๊ธฐ๋ ค๋ฉด 7๋ฒˆ์˜ ์ด๋™์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

     

     

     

     

     

     

     

     

    4. ํ•˜๋…ธ์ดํƒ‘๊ณผ ๊ด€๋ จ๋œ ์ „์„ค

    ํ•˜๋…ธ์ดํƒ‘์—๋Š” ํฅ๋ฏธ๋กœ์šด ์ „์„ค์ด ์ „ํ•ด์ง‘๋‹ˆ๋‹ค. ์ธ๋„์˜ ํ•œ ์‚ฌ์›์—์„œ ์‹ ์ด 64๊ฐœ์˜ ๊ธˆ์œผ๋กœ ๋œ ์›๋ฐ˜์„ 3๊ฐœ์˜ ๋‹ค์ด์•„๋ชฌ๋“œ ๋ง‰๋Œ€์— ์Œ“์•„ ๋†“์•˜๊ณ , ์Šน๋ ค๋“ค์€ ๋ฐค๋‚ฎ์—†์ด ์›๋ฐ˜์„ ์ด๋™ํ•˜๋„๋ก ๋ช…๋ น๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์›๋ฐ˜์ด ๋ชจ๋‘ ์ด๋™๋˜๋ฉด ์„ธ์ƒ์ด ๋๋‚œ๋‹ค๋Š” ์ „์„ค์ž…๋‹ˆ๋‹ค. ๊ณ„์‚ฐ์— ๋”ฐ๋ฅด๋ฉด 64๊ฐœ์˜ ์›๋ฐ˜์„ ์ด๋™ํ•˜๋Š” ๋ฐ \( 2^{64} - 1 \)ํšŒ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ, ์ด๋Š” ์•ฝ 5์ฒœ์–ต ๋…„์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด ์ „์„ค์€ ์„ธ์ƒ์˜ ์ข…๋ง์— ๊ด€ํ•œ ํฅ๋ฏธ๋กœ์šด ์€์œ ๋กœ ์—ฌ๊ฒจ์ง‘๋‹ˆ๋‹ค.

     

     

     

    ๋Š๋‚€ ์ 

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

     


     

    ์ด์ƒ์œผ๋กœ ํ•˜๋…ธ์ดํƒ‘ ๊ทœ์น™์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

     

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

    ๋ฐ˜์‘ํ˜•
    ๊ทธ๋ฆฌ๋“œํ˜•