พิสูจน์ว่าแผนภูมิการค้นหาแบบไบนารีที่สร้างแบบสุ่มมีความสูงลอการิทึม


10

คุณจะพิสูจน์ได้อย่างไรว่าความสูงที่คาดหวังของแผนภูมิการค้นหาแบบไบนารีที่สร้างแบบสุ่มด้วยnโหนดคือ ? มีหลักฐานใน CLRS รู้เบื้องต้นเกี่ยวกับอัลกอริทึม (บทที่ 12.4) แต่ฉันไม่เข้าใจO(logn)


1
คำถามไหน? ตัวอย่างอะไร โปรดแก้ไขและให้รายละเอียดทั้งหมด
Ran G.

3
โปรดหลีกเลี่ยงการใช้ตัวย่อ (เช่น BST) และคิดว่าพวกเราส่วนใหญ่ไม่มีหนังสือ CLRS หากคุณสามารถคัดลอกทฤษฎีบทที่นี่และอธิบายว่าอะไรที่คุณไม่เข้าใจคุณจะได้รับคำตอบเพิ่มเติม
Ran G.

2
สิ่งนี้จะขึ้นอยู่กับวิธีสร้างแผนภูมิการค้นหาแบบไบนารี (แม้ว่าผลลัพธ์จะไม่ได้ผลการพิสูจน์จะมี) รายละเอียดเพิ่มเติมบางอย่างจะเป็นประโยชน์
Peter Shor

คำตอบ:


21

ก่อนอื่นเรามาคิดถึงเรื่องนี้กันก่อน ในสถานการณ์ที่ดีที่สุดต้นไม้มีความสมดุลอย่างสมบูรณ์ ในสถานการณ์ที่เลวร้ายที่สุดทรีจะไม่สมดุลกันทั้งหมด:

แผนภูมิการค้นหาแบบไบนารีที่มีความสูงแผนผังการค้นหาไบนารีที่แย่ที่สุด

เริ่มต้นจากรูตโหนดต้นไม้ที่เหลือนี้มีสองเท่าของโหนดจำนวนมากที่แต่ละระดับความลึกที่สำเร็จเช่นต้นไม้มีn = h i = 0 2 i = 2 h + 1 - 1โหนดและความสูงh (ซึ่งอยู่ใน กรณีนี้ 3) ด้วยคณิตศาสตร์น้อยn 2 ชั่วโมง+ 1 - 1 ชั่วโมงเข้าสู่ระบบ2 ( n + 1 ) - 1 ลิตรopn=i=0h2i=2h+11hซึ่งจะบอกว่ามันมีความสูง O ( บันทึกn ) สำหรับต้นไม้ที่ไม่สมดุลทั้งความสูงของต้นไม้เป็นเพียง n - 1 O ( n ) ดังนั้นเราจึงมีขอบเขตของเราn2h+11hlog2(n+1)1log2nO(logn)n1O(n)

หากเราสร้างต้นไม้ที่สมดุลจากรายการที่สั่งเราจะเลือกองค์ประกอบกลางให้เป็นรูตโหนดของเรา ถ้าเราจะแทนการสุ่มสร้างต้นไม้ใด ๆ ของnโหนดได้อย่างเท่าเทียมกันมีแนวโน้มที่จะได้รับเลือกและความสูงของต้นไม้ของเราคือเอชอีฉันกรัมเอชทีทีอาร์อีอี = 1 + สูงสุด( เอชอีฉันกรัมเอชทีลิตรe f t s u b t r e{1,2,,n}n เรารู้ว่าในต้นไม้ค้นหาไบนารีทรีย่อยทางซ้ายจะต้องมีคีย์น้อยกว่าโหนดราก ดังนั้นถ้าเราสุ่มเลือกองค์ประกอบ i t h , ทรีย่อยด้านซ้ายมีองค์ประกอบi-1และทรีย่อยด้านขวามีองค์ประกอบn-iดังนั้นจึงมีขนาดกะทัดรัดมากขึ้น: h n =1+สูงสุด( h i -

heighttree=1+max(heightleft subtree,heightright subtree)
ithi1ni ) จากที่นั่นจะทำให้รู้สึกว่าถ้าเลือกองค์ประกอบแต่ละอย่างเท่า ๆ กันค่าที่คาดหวังเป็นเพียงค่าเฉลี่ยของทุกกรณี (แทนที่จะเป็นค่าเฉลี่ยถ่วงน้ำหนัก) ดังนั้น:E[ h n ]= 1hn=1+max(hi1,hni)E[hn]=1ni=1n[1+max(hi1,hni)]

ในขณะที่ฉันแน่ใจว่าคุณสังเกตเห็นฉันได้เบี่ยงเบนไปเล็กน้อยจากวิธีการที่ CLRS พิสูจน์สิ่งนี้เพราะ CLRS ใช้เทคนิคการพิสูจน์ที่ค่อนข้างธรรมดาสองอย่างที่ไม่น่าไว้วางใจสำหรับมือใหม่ สิ่งแรกคือการใช้เลขชี้กำลัง (หรือลอการิทึม) ของสิ่งที่เราต้องการค้นหา (ในกรณีนี้ความสูง) ซึ่งทำให้คณิตศาสตร์คำนวณออกมาได้สะอาดมากขึ้นเล็กน้อย ที่สองคือการใช้ฟังก์ชั่นตัวบ่งชี้ (ซึ่งฉันจะไม่สนใจที่นี่) CLRS กำหนดความสูงแบบเอ็กซ์โพเนนเชียลเมื่อดังนั้นการเกิดซ้ำแบบอะนาล็อกคือY n = 2 × สูงสุด( Y i - 1 , Y n - i )Yn=2hnYn=2×max(Yi1,Yni).

สมมติว่าเป็นอิสระ (แต่ละองค์ประกอบของการดึง (จากองค์ประกอบที่มีอยู่) จะเป็นรากของทรีย่อยโดยไม่คำนึงถึงการดึงก่อนหน้านี้ทั้งหมด) เรายังคงมีความสัมพันธ์: ซึ่งฉันได้ทำสองขั้นตอน: (1) ย้าย1

E[Yn]=Σผม=1n1nE[2×สูงสุด(Yผม-1,Yn-ผม)]=2nΣผม=1nE[สูงสุด(Yผม-1,Yn-ผม)]
นอกเพราะมันเป็นอย่างต่อเนื่องและเป็นหนึ่งในคุณสมบัติของ summations คือว่าΣฉันฉัน=Σฉันฉันและ (2) การเคลื่อนย้าย 2 นอกเพราะมันยังเป็นอย่างต่อเนื่องและเป็นหนึ่งในคุณสมบัติของค่าที่คาดว่าจะเป็นE[x]=E[x] ตอนนี้เรากำลังจะแทนที่ฟังก์ชั่นสูงสุดด้วยบางสิ่งที่ใหญ่กว่าเพราะการทำอย่างง่ายนั้นเป็นเรื่องยาก หากเราโต้แย้งว่าไม่เป็นลบX,Y:E[สูงสุด(X,Y1nΣผมผม=ΣผมผมE[ax]=aE[x]สูงสุดXYจากนั้น: E [ Y n ] 2E[สูงสุด(X,Y)]E[สูงสุด(X,Y)+นาที(X,Y)]=E[X]+E[Y] ซึ่งขั้นตอนสุดท้ายนั้นตามมาจากการสังเกตว่าสำหรับi=1,Yi-1=Y0และYn-i=Yn-1และไปทั้งหมด วิธีi=n,Yi-1=Yn-1และYn-
E[Yn]2nΣผม=1n(E[Yผม-1]+E[Yn-ผม])=2nΣผม=0n-12E[Yผม]
ผม=1Yผม-1=Y0Yn-ผม=Yn-1ผม=nYผม-1=Yn-1ดังนั้นทุกเทอม Y 0ถึง Y n - 1จะปรากฏสองครั้งดังนั้นเราสามารถแทนที่ผลรวมทั้งหมดด้วยแบบอะนาล็อก ข่าวดีก็คือเรามีการกลับเป็นซ้ำE[ Y n ] 4Yn-ผม=Y0Y0Yn-1; ข่าวร้ายก็คือเราไม่ได้มากไปกว่าที่เราเริ่มต้นE[Yn]4nΣผม=0n-1E[Yผม]

ณ จุดนี้ CLRS จะดึงการเหนี่ยวนำE[Yn]14(n+33)Σผม=0n-1(ผม+33)=(n+34)n3Yn=2ชั่วโมงnชั่วโมงn=เข้าสู่ระบบ2n3=3เข้าสู่ระบบ2nO(เข้าสู่ระบบn)nkk

2E[Xn]E[Yn]4nΣผม=0n-1E[Yผม]14(n+33)=(n+3)(n+2)(n+1)24E[ชั่วโมงn]=O(เข้าสู่ระบบn)

ว้าวขอบคุณ !!!! แม้ว่าฉันไม่รู้เกี่ยวกับค่าที่คาดหวัง แต่มันก็สมเหตุสมผลดี ฉันไม่ได้เรียนวิชาคณิตศาสตร์อย่างรอบคอบก่อนจะทำอัลกอริธึม ฉันจะโพสต์ความคิดเห็นเพิ่มเติมหากฉันมีข้อสงสัย ขอบคุณ Merbs
user1675999

แต่ทำไมความสูงของเลขชี้กำลังจึงน้อยกว่าหรือเท่ากับทวินามที่เลือก ฉันยังไม่เข้าใจว่าทำไมเราไม่สามารถเลือกทวินามอื่นที่มีเทอมใหญ่ที่สุดต่างกันและทำคณิตศาสตร์แบบเดียวกัน ... อาจจะเป็นคนงี่เง่า แต่ฉันก็ไม่สามารถมองเห็นได้ว่าทำไม ... และจนถึงตอนนี้ ทำให้รู้สึกที่สมบูรณ์แบบแล้วพวกเขาก็ต้องดึงบางสิ่งบางอย่างออกมาจากสีน้ำเงินและไม่มีคำอธิบายบอกเราว่า "พิสูจน์" พวกเขาถูก ...
Zeks

@ Zeks ดังนั้นเราสามารถเลือก binomials อื่น ๆ ที่มีเงื่อนไขขนาดใหญ่ หากคำนั้นยังคงเป็นพหุนาม ( n^k) ข้อสรุปจะเหมือนกันเพราะคำเหล่าkนี้จะถูกทิ้งไว้ในสัญกรณ์ O ขนาดใหญ่ (วิธีที่ 3 ถูกทิ้ง) แต่ถ้าเราแทนในบางสิ่งบางอย่างที่ชี้แจง ( e^n) ก็จะยังคงเป็นที่ถูกต้องบนผูกพันเพียงไม่แน่นหนึ่ง เรารู้ว่าความสูงที่คาดไว้นั้นเป็นอย่างน้อยลอการิทึมดังนั้นการพิจารณาว่าเป็นลอการิทึมส่วนใหญ่ทำให้แน่น
Merbs

@ DavidNathan ฉันไม่เข้าใจข้อกังวลของคุณ - คุณสงสัยหรือไม่ว่า 1 / n นั้นเป็นค่าคงที่หรือว่ามันสามารถถูกย้ายออกนอกการรวมตัวได้หรือไม่? มันเหมือนกับค่าคงที่ 2 ส่วนใหญ่ถูกนำไปใช้เพื่อจุดประสงค์ในการอธิบายเพื่อทำให้การพิสูจน์ที่เหลือง่ายขึ้น
Merbs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.