พิสูจน์ต้นไม้ไบนารีได้มากที่สุด


14

ฉันพยายามพิสูจน์ว่าต้นไม้ไบนารีที่มีn nodes มีไม่เกิน⌈n2⌉ใบ ฉันจะทำสิ่งนี้ด้วยการเหนี่ยวนำได้อย่างไร

สำหรับคนที่ได้รับการต่อไปนี้ในคำถามเดิมเกี่ยวกับกองจะได้รับการย้ายที่นี่


3
ก่อนอื่นให้สังเกตว่าเราสามารถใช้ LaTeX ได้ที่นี่ คลิก "แก้ไข" เพื่อดูว่าฉันทำได้อย่างไร ประการที่สองฉันไม่เห็นอุปนัย คุณกำลังขว้างตัวเลขจำนวนหนึ่งรอบ ๆ นั้น แต่ไม่มีโครงสร้างการพิสูจน์และไม่เกี่ยวข้องกับกองทั้งหมด คุณสามารถปรับปรุงได้หรือไม่ และท้ายสุดการอ้างสิทธิ์ผิด: รายการที่เรียงตามคุณสมบัติของฮีปและมีเพียงลีฟเดียว คุณทิ้งสมมติฐานไว้บ้างไหม?
— Raphael

@ Kaveh แก้ไขสิ่งที่คุณมีในใจหรือไม่นั่นคือ "มากที่สุด"?
— Raphael

@ ราฟาเอล, อ่านคำถามอีกครั้ง, ฉันคิดว่ามันอาจเป็นเรื่องเกี่ยวกับกองที่โหนดภายในทั้งหมดมีลูกสองคน (ในกรณีที่คำถามดั้งเดิมมีเหตุผลและการอ้างสิทธิ์ถูกต้องหรือสิ่งที่คล้ายกัน)
— Kaveh

1
@ Kaveh Ah ใช่ฉันเห็นความสับสนของคุณ โหนดของฮีปมีลูกได้ไม่เกินสองคน (ดังนั้นจึงมีแท็กไบนารีทรี)
— varatis

1
ฉันเห็น. ด้วยการอ้างสิทธิ์ที่กำหนดขึ้นอย่างแม่นยำจึงไม่จำเป็นต้องมีข้อสมมติฐานเพิ่มเติม สถานที่ให้บริการถือในความเป็นจริงสำหรับต้นไม้ไบนารีทั้งหมด
— Raphael

คำตอบ:


7

ฉันคิดว่าตอนนี้คำถามมีดังต่อไปนี้:

ให้ต้นไม้ไบนารีด้วย nodes พิสูจน์ว่ามันมีมากที่สุด⌈ nn⌈n2⌉ใบ

ขอให้เราทำงานที่มีความหมายต้นไม้ ) สำหรับTต้นไม้ดังกล่าวให้n TจำนวนโหนดในTและL TจำนวนใบในTTree=Empty∣Leaf∣Node(Tree,Tree)TnTTlTT T

คุณถูกต้องในการทำเช่นนี้โดยการเหนี่ยวนำ แต่คุณจะต้องมีการเหนี่ยวนำโครงสร้างที่เป็นไปตามโครงสร้างต้นไม้ สำหรับต้นไม้สิ่งนี้มักทำในลักษณะการเหนี่ยวนำโดยสมบูรณ์เหนือความสูง h(T)ของต้นไม้

สมอเรือเหนี่ยวนำมีสองส่วน ก่อนอื่นสำหรับเรามีT = E m p t yกับl T = n T = 0 ; การเรียกร้องถือต้นไม้ไว้อย่างชัดเจน สำหรับเอช( T ) = 1คือT = L e ฉเราในทำนองเดียวกันมีL T = 1 = ⌈ n Th(t)=0T=EmptylT=nT=0h(t)=1T=Leafดังนั้นการอ้างสิทธิ์ถือสำหรับใบไม้lT=1=⌈nT2⌉

สมมติฐานการปฐมนิเทศคือ: สมมติว่าการอ้างสิทธิ์ถือสำหรับต้นไม้ (ไบนารี) ทั้งหมดกับh ( T ) ≤ k , k ≥ 1Th(T)≤kk≥1โดยพลการ แต่คงที่

สำหรับขั้นตอนการอุปนัยพิจารณาโดยพลไบนารีต้นไม้กับH ( T ) = k + 1 ในฐานะที่เป็นk ≥ 1 , T = N o งอี ( L , R )และn T = n L + n R + 1 ในฐานะที่เป็นLและRก็เป็นต้นไม้ไบนารี (มิฉะนั้นTจะไม่เป็น) และh ( L ) , h (Th(T)=k+1k≥1T=Node(L,R)nT=nL+nR+1LRTh(L),h(R)≤k, the induction hypothesis applies and have

lL≤⌈nL2⌉ and lR≤⌈nR2⌉.

As all leaves of T are either in L or R, we have that

lT=lL+lR≤⌈nL2⌉+⌈nR2⌉≤⌈nL+nR+12⌉(∗)=⌈nT2⌉

ความไม่เสมอภาคที่มีเครื่องหมายสามารถตรวจสอบได้โดย (วิธีที่สี่) กรณีที่แตกต่างมากกว่าว่าn L , n R ∈ 2 N โดยพลังของการเหนี่ยวนำนี้สรุปหลักฐาน(∗)nL,nR∈2N


ในแบบฝึกหัดคุณสามารถใช้เทคนิคเดียวกันเพื่อพิสูจน์ข้อความต่อไปนี้:

  • ต้นไม้ไบนารีที่สมบูรณ์แบบทุกความสูงมี2 h - 1โหนดh2h−1
  • ต้นไม้ไบนารีเต็มทุกต้นมีจำนวนโหนดคี่

2

I am a little confused by the question. If you are interested in trees with degree at most 3, which is what Wikipedia says you want, then we run into the problem that a single edge has n=2 nodes and n=2 leaves, but n/2=1. Anyway, here is something close that has an easy argument.

Let T be such a tree with n nodes and L leaves. Since T is a tree, there are n−1 edges, and double counting them, we see that

2n−2≤L+3(n−L)
which says that
2L≤n+2
and this is tight in the two-vertex example above. I guess that if you want to assume that there one root of degree two and n≥3, then you can refine this argument to give
2L≤n+1
which is what you are looking for, and this is tight when the tree is full.

I guess we silently assume rooted trees here; Wikipedia does so, too.
— Raphael

1
Wikipedia sort of equivocates, saying: "Outside the tree, there is often a reference to the "root" node (the ancestor of all nodes), if it exists." Anyway, this argument seems worth writing down, since it is different and quite easy.
— Louis

If you read on, all edges are directed, they talk of "children" and "parents". That does not make sense in unrooted trees. In consequence, a leaf would be a node with outdegree 0.
— Raphael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.