私は圧縮試行について読んでいて、次を読みました:
圧縮されたトライは、L 個の葉を持つツリーであり、トライのすべての内部ノードには少なくとも 2 つの子があります。
次に、著者は、すべての内部ノードに少なくとも 2 つの子があり、最大で L-1 個の内部ノードがあるような L の葉を持つツリーを書いています。なぜこれが真実なのか、私は本当に混乱しています。
誰かがそれの帰納的証明を提供できますか?
私は圧縮試行について読んでいて、次を読みました:
圧縮されたトライは、L 個の葉を持つツリーであり、トライのすべての内部ノードには少なくとも 2 つの子があります。
次に、著者は、すべての内部ノードに少なくとも 2 つの子があり、最大で L-1 個の内部ノードがあるような L の葉を持つツリーを書いています。なぜこれが真実なのか、私は本当に混乱しています。
誰かがそれの帰納的証明を提供できますか?
帰納的証明:
ツリーの葉の数
に関する帰納法によって証明します。ベース: 1 枚の葉から作られたツリーは、実際には根だけを持つツリーです。内部ノードは 0 であり、主張は真です。
L 個の葉を持つ圧縮されたツリーに対して主張が真である
と仮定します。ステップ: T を L+1 枚の葉を持つ木とします。任意の葉を選び、それを l としてトリミングします。
ツリーを再度圧縮するには、l の父親をリーフにする必要があります [l の父親に l を含む 2 人以上の息子がいる場合は、この手順をスキップしてください]。l の兄弟と同じ値を与え、兄弟をトリムすることでそれを行います。
これで、L 枚の葉を持つ木 T' ができました。
帰納法: T' は最大で L-1 個の内部ノードを持ちます。
L
したがって、T には L-1+1 = L 個の内部ノードと、最大で L+1 個のリーフがありました。
QED
代替証明:
L 個の葉を持つ二分木には L-1 個の内部ノード (1 + 2 + 4 + ... + L/2 = L-1)
があります。「最悪の場合」では、二分木があるため [すべての内部ノードは少なくとも 2 人の息子!]、L-1 を超える内部ノードを持つことはできません!
よし、やってみよう。
手始めにツリーを定義します。
T_0 = { Leaf }
T_i = T_i-1 union { Node(c1, ..., cn) | n >= 1 && ci in T_i-1 }
Trees = sum T_i
さて、あなたの主張の(スケッチ)証明です。
それを確認するのは簡単ですT_0
For T_i
:新しい要素t \in T_i
内T_i-1
または新しい要素内にある場合。前者の場合はIHをご利用ください。後者の場合、アサーションをチェックします (単純: もしci
s がL_i
葉をt
持っているなら、葉を持っていL = L_1 + ... + L_n
ます。それはまた、内部ノードよりも多くありませんL_1 - 1 + L_2 - 1 + ... + L_n - 1 + 1
(子の場合は IH、自己の場合は +1 による)。各内部ノードには少なくとも 2 つの子があると仮定しているため (それはトライの定義からの事実です)、それは以下ですL_1 + l_2 + ... + L_n - 2 + 1 = L - 1
)。
帰納法により、アサーションがt in T_i
すべての に対して成り立つ場合i
、それは に対して成り立ちt in Trees
ます。
L 個の内部ノードを持つツリーを描画してみてください。すべてのノードには 2 つの子があり、L 個の葉があります。これが不可能な理由がわかれば、L-1 内部ノードで機能する理由を理解するのは難しくありません。