4

私はデータ構造とアルゴリズムを学んでいます。私が参照している本 (Sedgwick) では、分割統治戦略を説明するために「最大要素の検索」を使用しています。このアルゴリズムは、配列を途中で 2 つの部分に分割し、2 つの部分の最大要素を (再帰的に) 見つけ、2 つのうち大きい方を配列全体の最大要素として返します。

以下は、尋ねられた演習問題です

配列内の最大要素を見つけるための分割統治プログラム (プログラム 5.6) を変更して、サイズ N の配列をサイズ k = 2^(lg N – 1) の一部とサイズ N – k の別の部分に分割します。 (パーツの少なくとも 1 つのサイズが 2 のべき乗になるように)。

プログラム 5.6 で示したものと同様に、配列サイズが 11 のときにプログラムが行う再帰呼び出しに対応するツリーを描画します。

最初の部分集合のサイズが 2 のべき乗であるため、このような二分木の左部分木は完全な二分木であることがわかります。著者が私がこれから得るべきであることを望んでいる含意は何ですか?

4

1 に答える 1

1

この演習の重要な要素の 1 つはkにあると思います。二分再帰でkにこの式を使用すると、すべてのノード (ルートだけでなく) の左側のサブツリーが完全な二分木であるという意味で、基礎となるツリーは「きれい」になります。

もちろん、Nが 2 のべき乗である「理想的な」ケースでも適切に動作します。kは単にN/2であり、すべてのサブツリー (左側だけでなく) は完全なバイナリ ツリーです。

于 2011-05-05T07:14:03.307 に答える