C++のアルゴリズムでrobertsedwickの次のプログラムがあります
Item max(Item a[], int l, int r){
if (l == r) return a[l];
int m = (l+r)/2;
Item u = max(a, l, m);
Item v = max(a, m+1, r);
if (u > v)
return u;
else
return v;
}
以下はハノイの塔のプログラムです
void hanoi(int N, int d)
{
if (N == 0) return;
hanoi(N-1, -d);
shift(N, d);
hanoi(N-1, -d);
}
以下は定規のためのプログラムです
void rule(int l, int r, int h)
{ int m = (l+r)/2;
if (h > 0)
{
rule(l, m, h-1);
mark(m, h);
rule(m, r, h-1);
}
}
上記の3つの問題はすべて、サイズ2のn乗の2つの問題に分割することにより、サイズ2のn乗の問題を解決します。
定規とマックスについては理解していますが、上記のステートメントのタワーオブハノイについてはどうですか?
上記のプログラムを分析している間、著者は、最大値を見つけるために、入力のサイズに線形時間解があると述べています。定規を描画し、塔を解くために、出力のサイズに線形時間解があります。
上記の出力サイズの線形時間ソリューションとは、作成者が何を意味するのでしょうか。