Beachten Sie zunächst, dass wir hier LaTeX verwenden können. Klicke auf "Bearbeiten", um zu sehen, wie ich es gemacht habe. Zweitens sehe ich keine Induktion. Sie werfen einige Zahlen herum, aber es gibt keine Beweisstruktur und überhaupt keine Beziehung zu Haufen. Kannst du es verbessern? Und schließlich ist die Behauptung falsch: Eine sortierte Liste erfüllt die Eigenschaft heap und hat nur ein Blatt. Haben Sie einige Annahmen ausgelassen?
Raphael
Ist @Kaveh's edit was du im Sinn hattest, also "höchstens"?
Raphael
@Raphael, wenn ich die Frage noch einmal lese, denke ich, es könnte sich um Haufen handeln, in denen jeder interne Knoten genau zwei Kinder hat (in diesem Fall ist die ursprüngliche Frage sinnvoll und die Behauptung richtig oder so ähnlich).
Kaveh
1
@Kaveh Ah ja, ich sehe deine Verwirrung. Die Knoten des Heaps haben höchstens zwei Kinder (daher das Binärbaum-Tag)
varatis
1
Aha. Bei genauer Formulierung des Anspruchs sind in der Tat keine weiteren Annahmen erforderlich. Die Eigenschaft gilt in der Tat für alle binären Bäume.
Raphael
Antworten:
7
Ich gehe jetzt davon aus, dass die Frage folgende ist:
Beweisen Sie bei einem Binärbaum mit Knoten, dass er höchstens ⌈ n enthältnBlätter.⌈n2⌉
Lassen Sie uns mit dem Baum Definition arbeiten . Für T ein solcher Baum, lassen n T die Anzahl der Knoten in T und L T die Anzahl der Blätter in T .Tree=Empty∣Leaf∣Node(Tree,Tree)TnTTlTT
Sie tun dies zu Recht durch Induktion, benötigen jedoch eine strukturelle Induktion, die der Baumstruktur folgt. Bei Bäumen erfolgt dies häufig als vollständige Induktion über die Höhe der Bäume.h(T)
Der Induktionsanker besteht aus zwei Teilen. Erstens, für Wir haben T = E m p t Y mit L T = N T = 0 ; Die Behauptung gilt eindeutig für den leeren Baum. Für h ( t ) = 1 , dh T = L e a f , gilt in ähnlicher Weise l T = 1 = ⌈ n Th(t)=0T=EmptylT=nT=0h(t)=1T=Leaf, so gilt der Anspruch für Blätter.lT=1=⌈nT2⌉
Die Induktionshypothese lautet: Angenommen, die Behauptung gilt für alle (binären) Bäume mit h ( T ) ≤ k , k ≥ 1 willkürlich, aber fest.Th(T)≤kk≥1
Betrachten Sie für den induktiven Schritt einen beliebigen Binärbaum mit h ( T ) = k + 1 . Wie k ≥ 1 , T = N o d e ( L , R ) und n T = n L + n R + 1 . Da L und R auch binäre Bäume sind (sonst wäre T nicht) und h ( L ) , h (Th(T)=k+1k≥1T=Node(L,R)nT=nL+nR+1LRT gilt und gilt die Induktionshypotheseh(L),h(R)≤k
lL≤⌈nL2⌉ and lR≤⌈nR2⌉.
Da alle Blätter von entweder in L oder R sind , haben wir dasTLR
lT=lL+lR≤⌈nL2⌉+⌈nR2⌉≤⌈nL+nR+12⌉(∗)=⌈nT2⌉
Die mit markierte Ungleichung kann durch eine (vierfache) Unterscheidung überprüft werden, ob n L , n R ∈ 2 N ist . Mit der Induktionskraft ist der Beweis abgeschlossen.(∗)nL,nR∈2N
Als Übung können Sie dieselbe Technik verwenden, um die folgenden Aussagen zu beweisen:
Jeder perfekte Binärbaum der Höhe hat 2 h - 1 Knoten.h2h−1
Jeder vollständige Binärbaum hat eine ungerade Anzahl von Knoten.
Die Frage verwirrt mich ein wenig. Wenn Sie sich für Bäume mit einem Grad von höchstens interessieren , wie Wikipedia es vorsieht, stoßen wir auf das Problem, dass eine einzelne Kante n = 2 Knoten und n = 2 Blätter hat, aber n / 2 = 1 . Sowieso ist hier etwas nahes, das ein einfaches Argument hat. 3n=2n=2n/2=1
Sei ein solcher Baum mit n Knoten und L Blättern. Da T ein Baum ist, gibt es n - 1 Kanten, und wenn wir sie doppelt zählen, sehen wir, dass
2 n - 2 ≤ L + 3 ( n - L ),
was besagt, dass
2 L ≤ n + 2
und dies ist eng in den beiden -vertex Beispiel oben. Ich denke, wenn Sie annehmen wollen, dass es eine Wurzel von Grad zwei und n ≥ 3 gibt , können Sie dieses Argument verfeinern, um 2 L zu ergeben
TnLTn−1
2n−2≤L+3(n−L)
2L≤n+2
n≥3
, was Sie suchen, und dies ist eng, wenn der Baum voll ist.
Ich vermute, wir nehmen hier stillschweigend verwurzelte Bäume an. Wikipedia tut dies auch.
Raphael
1
Wikipedia ist sozusagen zweideutig und sagt: "Außerhalb des Baumes gibt es oft einen Verweis auf den" Wurzel "-Knoten (den Vorfahren aller Knoten), falls er existiert." Wie auch immer, dieses Argument scheint es wert, aufgeschrieben zu werden, da es anders und recht einfach ist.
Louis
Wenn Sie weiterlesen, sind alle Kanten gerichtet, sie sprechen von "Kindern" und "Eltern". Das macht bei nicht bewurzelten Bäumen keinen Sinn. Infolgedessen wäre ein Blatt ein Knoten mit einem Grad über 0
Antworten:
Ich gehe jetzt davon aus, dass die Frage folgende ist:
Lassen Sie uns mit dem Baum Definition arbeiten . Für T ein solcher Baum, lassen n T die Anzahl der Knoten in T und L T die Anzahl der Blätter in T .Tree=Empty∣Leaf∣Node(Tree,Tree) T nT T lT T
Sie tun dies zu Recht durch Induktion, benötigen jedoch eine strukturelle Induktion, die der Baumstruktur folgt. Bei Bäumen erfolgt dies häufig als vollständige Induktion über die Höhe der Bäume.h(T)
Der Induktionsanker besteht aus zwei Teilen. Erstens, für Wir haben T = E m p t Y mit L T = N T = 0 ; Die Behauptung gilt eindeutig für den leeren Baum. Für h ( t ) = 1 , dh T = L e a f , gilt in ähnlicher Weise l T = 1 = ⌈ n Th(t)=0 T=Empty lT=nT=0 h(t)=1 T=Leaf , so gilt der Anspruch für Blätter.lT=1=⌈nT2⌉
Die Induktionshypothese lautet: Angenommen, die Behauptung gilt für alle (binären) Bäume mit h ( T ) ≤ k , k ≥ 1 willkürlich, aber fest.T h(T)≤k k≥1
Betrachten Sie für den induktiven Schritt einen beliebigen Binärbaum mit h ( T ) = k + 1 . Wie k ≥ 1 , T = N o d e ( L , R ) und n T = n L + n R + 1 . Da L und R auch binäre Bäume sind (sonst wäre T nicht) und h ( L ) , h (T h(T)=k+1 k≥1 T=Node(L,R) nT=nL+nR+1 L R T gilt und gilt die Induktionshypotheseh(L),h(R)≤k
Da alle Blätter von entweder in L oder R sind , haben wir dasT L R
Die mit markierte Ungleichung kann durch eine (vierfache) Unterscheidung überprüft werden, ob n L , n R ∈ 2 N ist . Mit der Induktionskraft ist der Beweis abgeschlossen.(∗) nL,nR∈2N
Als Übung können Sie dieselbe Technik verwenden, um die folgenden Aussagen zu beweisen:
quelle
Die Frage verwirrt mich ein wenig. Wenn Sie sich für Bäume mit einem Grad von höchstens interessieren , wie Wikipedia es vorsieht, stoßen wir auf das Problem, dass eine einzelne Kante n = 2 Knoten und n = 2 Blätter hat, aber n / 2 = 1 . Sowieso ist hier etwas nahes, das ein einfaches Argument hat.3 n=2 n=2 n/2=1
Sei ein solcher Baum mit n Knoten und L Blättern. Da T ein Baum ist, gibt es n - 1 Kanten, und wenn wir sie doppelt zählen, sehen wir, dass 2 n - 2 ≤ L + 3 ( n - L ), was besagt, dass 2 L ≤ n + 2 und dies ist eng in den beiden -vertex Beispiel oben. Ich denke, wenn Sie annehmen wollen, dass es eine Wurzel von Grad zwei und n ≥ 3 gibt , können Sie dieses Argument verfeinern, um 2 L zu ergebenT n L T n−1
quelle