Блог пользователя 040902fyn

Автор 040902fyn, история, 5 лет назад, По-английски

There are four towers who is named A,B,C,D respectively.

Initially there are n disks. All disks are different in size.

The disks are initially stacked on tower A increasing in size from the top to the bottom.

You can't put disk A onto disk B if the size of disk A is bigger than the size of disk B.

The goal is to transfer all of the disks from tower A to tower D with smallest amount of options.

Above all is the description of the problem.

The solution uses $$$f(n)$$$ to represent the minimum times to transfer n disks increasing in size from the top to the bottom from tower A to tower D. And it uses $$$d(n)$$$ to represent the minimum times to transfer n disks increasing in size from the top to the bottom from tower A to tower C without the help of tower D (It means you can't stack disks on tower D).

Then the solution claims that $$$f(n) = min(2 \times f(i) + d(n - i)) (1 \le i \lt n)$$$, but I don't know why. Please give me a proof,thanks!

  • Проголосовать: нравится
  • +13
  • Проголосовать: не нравится

»
5 лет назад, скрыть # |
 
Проголосовать: нравится +18 Проголосовать: не нравится

Consider the smallest i disks on tower A. We first choose to move them to some tower other than D, say B. This takes at least f(i) steps. Then we will have to move the remaining (n-i) disks to tower D, without using the tower B, which takes d(n-i) steps. Finally the i disks on tower B will be moved on to D in another f(i) steps. Thus for a fixed i, the answer is 2f(i)+d(n-i). Iterating over i we will pick the one which gives the minimum value of this expression.

»
5 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by 040902fyn (previous revision, new revision, compare).