NAVER

질문 하노이탑 하는 방법
qoal**** 조회수 16,690 작성일2009.10.19

하노이탑 하는 방법좀 가르쳐 주세요. 전 4학년에 정보생활에 하노이탑 하는 방법을 배우고 있습니다.

거기에서는 4개의 원판을 3개의 기둥에 끼워야 된다고 합니다.

제발 가르쳐 주세요. 내공 30겁니다.

제발 가르쳐 주세요 ㅠㅠ

프로필 사진

답변자님,

정보를 공유해 주세요.

3 개 답변
1번째 답변
프로필 사진
ag****
우주신
본인 입력 포함 정보

*네이버자료예요 참고하세요*

 

하노이탑 하는 법

 

 

동판에 막대가 세 개 있고, 크기가 서로 다른 4 개의

원판이 한 막대에 꽂혀 있다. 이 때, 다음과 같은 규칙으로

원판을 다른 막대로 모두 옮기는 놀이를 생각해 봅시다.

(1) 한 번에 한 개의 원판만을 옮긴다.

(2) 크기가 큰 원판은 반드시 크기가 작은 원판 아래쪽에

있어야 한다.

그러면 원판을 모두 다른 막대로 옮기는데 필요한 최소

이동회수는 모두 몇 번 인가 알아보시오.  

 

 

 

 

하노이탑 문제 (Hanoi Tower Problem)

    

    지난 강좌의 비둘기집 원리에 이어서 이산수학에서의

전형적인 예로 다음을 알아봅시다.

 

1883년 프랑스 수학자 Edouard Lucas가 제시한 다음과 같은

하노이 탑 문제 (Hanoi Tower Problem) 를 생각하여 봅시다.

 

  Vietnam의 Hanoi시 외곽에 있는 Benares사원의 한가운데

있는 Dome에 다음과 같은 전설이 쓰여져 있는 동판이 있다.

 

   동판에 다이아몬드막대가 세 개 있고, 크기가 서로

다른 64개의 황금 원판이 한 막대에 꽂혀 있다.  이

때, 다음과 같은 규칙으로 황금 원판을 다른 막대로

모두 옮기는 놀이를 신(God)이 하고 있다.

(1) 한 번에 한 개의 황금 원판만을 옮긴다.

(2) 크기가 큰 황금 원판은 반드시 크기가 작은 황금 원판 아래쪽에 있어야  한다.

그러면 신이 이 놀이를 다 마칠 때면 (즉, 황금 원판이

다른 막대로 모두 옮겨졌다면), 이 세상은 연기처럼

사라질 것이다.

 

 

 



 

위의 무시무시한 전설은 실제로 황금 원판을 한 개 움직이는데 1초가

걸린다면,  황금 원판이 다른 막대로 모두 옮기는데 걸리는 시간은

대략적으로  5,000 억년 이상이 되고, 실제로 우리가 살고 있는 태양계의

추정 수명은 5,000 억년 미만이므로, 이 세상은 연기처럼 사라질 것이다라는

이야기는 과학적으로 증명할 수 있는 사실이기도 하다. (우리가 여러 가지

역사적 사실에서 알 수 있듯이, 예전의 우리 선조들은 놀랍도록 과학적이다 !)


 그러면 위의 하노이탑 문제는 어떻게 해결할 수 있는가 알아보도록

하자. 먼저 하노이탑 문제를 일반적으로 기술하면 다음과 같다.

 

 

 하노이탑 문제 (Hanoi Tower Problem)

 

동판에 막대가 세 개 있고, 크기가 서로 다른 n 개의

원판이 한 막대에 꽂혀 있다. 이 때, 다음과 같은

규칙으로 원판을 다른 막대로 모두 옮기는 놀이를 한다.

 

(1) 한 번에 한 개의 원판만을 옮긴다.

(2) 크기가 큰 원판은 반드시 크기가 작은 원판

     아래쪽에 있어야 한다.

 

그러면 원판을 모두 다른 막대로 옮기는데 필요한 이동

(move) 회수는 모두 몇 번 인가 알아보시오.

 

 

이러한 문제는 전형적인 귀납적사고를 필요로

하는 문제이다. 즉, 특별한 몇 가지의 경우를

관찰하여 일반적으로 적용할 수 있는 규칙을

      추론하고 이를 엄밀하게 수학적으로 증명하는

      과정을 거쳐 문제를 해결하도록 합시다.

 



먼저 원판이 한 개 뿐이라면, 우리가 필요한 원판의 이동회수는 1회 이다.

이제 원판이 두 개 뿐이면, 우리는 다음 그림과 같은 단계로 원판을 움직일

수 있다.

 



따라서 필요한 원판의 이동회수는 3 회이다.

 

 

 

문제 1.  위의 내용을 참고하여, 하노이탑 문제에서

원판이 세 개일 때 필요한 원판의 최소 이동회수는 모두

몇 회인가 알아보시오.



 

이제 일반적으로 n개의 원판이 있을 때 필요한 원판의 이동 회수를

알아보도록 하자. 이 경우의 풀이전략은 다음과 같다.

 

먼저 n개의 원판이 있을 때 모두 옮기는데 필요한 원판의 이동회수를 P(n)

이라고 하자. 그러면,

P(1) = 1

P(2) = 3

P(3) = 7

 

임을 알 수 있다.

 일반적으로  P(n)은  P(n-1)로 부터 유도할 수 있다.

즉,  다음의 그림을 참고하여 생각하여 보자.

 

 


 

 

위의 그림을 보면, 모든 자연수 n에 대하여 우리는 관계식

  P(n) = 2 P(n-1) + 1

 을 추측할 수 있다.  위와 같은 인접한 항과의 관계식을 우리는 점화식

(recurrence formula) 라고 한다.  [이에 관하여 우리는 다음에

자세히 학습하도록 한다.]

그러면 위 점화식에 차례로 대입하여 알아보면

P(1) = 1

P(2) = 2 P(1) + 1 = 2 + 1 = 3

P(3) = 2 P(2) + 1 = 2 x 3 + 1 = 4 + 2 + 1 = 7

P(4) = 2 P(3) + 1 = 2 x 7 + 1 = 8 + 4 + 2 + 1        = 15

..........

 

등비수열의 합 공식을 이용하면, 일반적으로


 

구체적으로 검산하여 보면, 우리는 위의 식이 옳음을 알 수 있다.

따라서, 원래의 하노이탑 문제의 경우는 n = 64 인 경우이므로 필요한 원판의

이동 총수 (이것은 가장 최소의 이동 회수를 의미하며, 만약 이동순서를

잘못하면 그만큼 이동회수는 늘어 난다. ) 는

 

 

대략 1847 해 (해는 조 단위의 다음 단위)만큼의 이동이 필요하며, 만약 1번의

움직임에 1초가 걸린다고 가정하면, 대략 5000억년 이상이 걸리게 된다.

따라서 이 게임이 끝나게 되면 5000억년 이상의 시간이 경과한 이후이며,

그러면 우리 태양계의 운명도 끝이 난 이후일 것이다. 예전의 우리 선조들의

수학계산 능력이 매우 뛰어남을 짐작을 할 수 있다 (아마도 위와 같은 계산을

하였을까는 학생들의 상상에 맞기도록 합시다.)

 

 

 

문제 2.  하노이탑 문제에서 원판이 여덟 개일 때 필요한

원판의 이동회수는 모두 몇 회인가 알아보시오. 또,

실제로 모형을 만들어 이동하여 보시오.  




 

 이제 하노이탑 문제를 일반화할 수 있는 여러 방법에

대하여 알아보도록 하자.

 

       먼저 다음과 같은 상황을 생각할 수 있다.

 

 

     [일반화된 하노이탑 문제]

동판에 막대가 세 개 있고, 똑같은 모양의 2장의

원판들이 차례로 크기 순으로 계속하여 2n 개가 막대에

꽂혀 있다. 이 때, 다음과 같은 규칙으로 원판을 다른

막대로 모두 옮기는 놀이를 한다.

 

(1) 한 번에 한 개의 원판만을 옮긴다.

(2) 크기가 큰 원판은 반드시 크기가 작은 원판

     아래쪽에 있어야 한다.

(3) 같은 크기의 2장의 원판은 똑같은 것으로 생각한다.

 

그러면 원판을 모두 다른 막대로 옮기는데 필요한 최소

이동 (move) 회수는 모두 몇 번 인가 알아보시오.

 

위 문제는 하노이탑 문제를 일반화할 수 있는 여러 방법 중 가장

간단한 모양이다. 문제의 가정에서 같은 크기의 2장의 원판은 똑같은 것으로

생각한다고 하였으므로, 2개의 같은 크기의 원판을 계속하여 같은 막대로

옮긴다고 가정하면, 이는 2개의 원판을 한꺼번에 움직인다고 생각하여

계산하여도 될 것이다.

따라서, 우리는 일반화된 하노이탑 문제에서 2n개의 원판이 있을 때 모두

옮기는데 필요한 원판의 이동회수를 A(2n)이라고 하면, 관계식

  

 

을  짐작할 수 있다.

 

 

 

 

문제 3. 일반화된 하노이탑 문제에서 같은 크기의 2장의

원판이 서로 다르다고  가정한다면 2n 개의 원판을 모두

옮기는데 필요한 원판의 이동회수 B(2n)은 얼마인가

알아보시오.



위의 상황을 더욱 일반화하면 다음과 같이 생각할 수 있다.

크기 k 인 원판은 nk개이고, m 개의 서로 다른 크기를 갖는 일반화된 하노이

탑의 경우 총   n1+ n2 +... + nk 개의 원판을 모두 옮기는데 필요한

원판의 이동회수   A ( n1,n2,..., nk) 는 얼마인가 등 여러 가지

다양한 일반화를 생각할 수 있다.

 

이에 관하여는 참고문헌[ Knuth and et-al.]에 있는 Knuth의 책을 참고 하기 바랍니다.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
2번째 답변
프로필 사진
nkj1****
시민
본인 입력 포함 정보

하노이탑 하는법

(4개의 원반을 다른 막대에 끼워라)

규칙:한번에 한개씩

규칙2:큰원반이 작은 원반위로가면 안됨

그냥 1,2,3,4로 할게요. 가장 큰수가 가장 작은판임

셋팅:1,2,3,4모두를 왼쪽기둥에 옮긴다.

1번째:4를 맨끝기둥에 옮긴다.

2번째:3을 중간기둥에 옮긴다.

3번째:4를 중간기둥에 옮긴다.

4번째:2를 맨끝기둥에 옮긴다.

5번째:4를 왼쪽기둥에 옮긴다.

6번째:3을 맨끝기둥에 옮긴다.

7번째:4를 맨끝기둥에 옮긴다.

8번째:1을 중간기둥에 옮긴다.

9번째:4를 중간기둥에 옮긴다.

10번째:3을 왼쪽기둥에 옮긴다.

11번째:4를 왼쪽기둥에 옮긴다.

12번째:2를 중간기둥에 옮긴다.

13번째:4를 맨끝기둥에 옮긴다.

14번째:3을 중간기둥에 옮긴다.

마지막:4를 중간기둥에 옮긴다.

이상이었습니다.

원반의 개수
최소 이동 횟수
1
1
2
3
3
7
4
15
5
31
6
63
7
127

참고로 고리의 수가 1개늘어날수록 최소 이동 횟수ⅹ2+1이 고리수의 최소 이동 횟수입니다.

그런 방식으로 8번째의 최수 이동 횟수는 127*2+1인 255가 되겠네요.

2009.10.27.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.
3번째 답변
프로필 사진
egli****
시민
본인 입력 포함 정보

아... 하노이탑 8개의 원판을 맨 오른쪽으로 옴기는 놀이로 규칙은 다음과 같습니다.

1.원은 한번에 한개만 옮긴다.

2.아래있는 원판보다 큰 원판을 옮길수 없다.

미리 계산을 해서 최소 횠수가 몇 번인지 알아보세요.

2009.10.29.

도움이 되었다면 UP 눌러주세요!
UP이 많은 답변일수록 사용자들에게 더 많이 노출됩니다.