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


10

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


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+1−1hซึ่งจะบอกว่ามันมีความสูง O ( บันทึกn ) สำหรับต้นไม้ที่ไม่สมดุลทั้งความสูงของต้นไม้เป็นเพียง n - 1 → O ( n ) ดังนั้นเราจึงมีขอบเขตของเราn≤2h+1−1→h≤⌈log2⁡(n+1)−1⌉≤⌊log2n⌋O(log⁡n)n−1→O(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)
ithi−1n−i ) จากที่นั่นจะทำให้รู้สึกว่าถ้าเลือกองค์ประกอบแต่ละอย่างเท่า ๆ กันค่าที่คาดหวังเป็นเพียงค่าเฉลี่ยของทุกกรณี (แทนที่จะเป็นค่าเฉลี่ยถ่วงน้ำหนัก) ดังนั้น:E[ h n ]= 1hn=1+max(hi−1,hn−i)E⁡[hn]=1n∑i=1n[1+max(hi−1,hn−i)]

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

สมมติว่าเป็นอิสระ (แต่ละองค์ประกอบของการดึง (จากองค์ประกอบที่มีอยู่) จะเป็นรากของทรีย่อยโดยไม่คำนึงถึงการดึงก่อนหน้านี้ทั้งหมด) เรายังคงมีความสัมพันธ์: ซึ่งฉันได้ทำสองขั้นตอน: (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=เข้าสู่ระบบ2⁡n3=3เข้าสู่ระบบ2⁡n→O(เข้าสู่ระบบ⁡n)nkk

2E⁡[Xn]≤E⁡[Yn]≤4nΣผม=0n-1E⁡[Yผม]≤14(n+33)=(n+3)(n+2)(n+1)24→E⁡[ชั่วโมง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.