AVL ツリーの分析で出てくる次の再帰関係があるとします。
- F1 = 1
- F 2 = 2
- F n = F n - 1 + F n - 2 + 1 (n ≥ 3)
F(n) の閉形式を取得するには、この再帰をどのように解決しますか? この数は、高さ nのAVL ツリー内の内部ノードの最小数を取得するために使用されます。
AVL ツリーの分析で出てくる次の再帰関係があるとします。
F(n) の閉形式を取得するには、この再帰をどのように解決しますか? この数は、高さ nのAVL ツリー内の内部ノードの最小数を取得するために使用されます。
この再発を解決する方法はたくさんありますが、そのほとんどはかなり複雑です。これを行う最も簡単な方法は、シリーズのいくつかの用語を展開して、見つけたものを確認することだと思います。
これを見ると、次のことが成り立つことがわかります。
これらの項は、フィボナッチ数列から 1 を引いた項にすぎないようです。特に、F 3 = 2、F 4 = 3、F 5 = 5 などに注意してください。したがって、パターンは次のようになります。
したがって、より一般的には、パターンは F(n) = F n + 2 - 1のように見えます。数学的帰納法を使用してこれを形式化することができます。
基本ケース:
誘導ステップ: F(n) = F n+2 - 1 および F(n + 1) = F n+3 - 1と仮定します。
出来上がり!誘導はチェックアウトします。
では、フィボナッチ数列でそのパターンを探すにはどうすればよいと思いましたか? うーん... 再帰的な定義はフィボナッチ数列の定義のように見えたので、おそらくそれらの 2 つの間に何らかの関連があると予想しました。すべてがフィボナッチ数から 1 を引いたものであるという観察は、単なる創造的な洞察でした。私はそれらの専門家ではありませんが、生成関数またはその他の組み合わせのトリックを使用して、これを解決しようとする可能性があります。
お役に立てれば!