ทฤษฎีบทหลักสามกรณีที่คุณอ้างถึงได้รับการพิสูจน์ในบทนำสู่อัลกอริทึมโดย Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest และ Clifford Stein (ฉบับที่ 2, 2001)
มันเป็นที่สังเกตได้อย่างถูกต้องที่เกิดขึ้นอีกในคำถามอยู่ระหว่างกรณีที่ 2 และกรณีที่ 3 นั่นคือf(n)=nlognเติบโตเร็วกว่าnแต่ช้ากว่าn1+εสำหรับการใด ๆε>0 0
อย่างไรก็ตามทฤษฎีบทนี้สามารถสรุปให้ครอบคลุมการกลับเป็นซ้ำได้ พิจารณา
กรณี 2A:
พิจารณาf(n)=Θ(nlogbalogkbn)สำหรับk≥0บางตัว
กรณีนี้จะลดให้เป็นกรณีที่ 2 เมื่อk=0 0 มันเป็นที่ชัดเจนอย่างสังหรณ์ใจว่าตามแต่ละสาขาของต้นไม้เกิดซ้ำf(x)จะถูกเพิ่มΘ(logbn)ครั้ง ร่างของหลักฐานที่เป็นทางการมากขึ้นสามารถดูได้ที่ด้านล่าง ผลสุดท้ายก็คือ
T(n)=Θ(nlogbalogk+1bn)
)
ในบทนำสู่อัลกอริธึมข้อความนี้จะเหลือเป็นแบบฝึกหัด
การใช้คำสั่งนี้กับการเกิดซ้ำของคำถามที่เราได้รับในที่สุด
T(n)=Θ(n⋅log2n).
รายละเอียดเพิ่มเติมเกี่ยวกับโททฤษฎีบทสามารถพบได้ในที่ดี imho () หน้าวิกิพีเดีย
@sdcvvc ชี้ให้เห็นในความคิดเห็นเพื่อพิสูจน์ว่ากรณีที่ 3 ไม่ได้ใช้ที่นี่เราสามารถเรียกใช้กฎของโรงพยาบาลที่ระบุว่า
limx→cf(x)g(x)=limx→cf′(x)g′(x)
สำหรับฟังก์ชั่นใด ๆf(x)และg(x)อนุพันธ์ในบริเวณใกล้เคียงของคcการประยุกต์ใช้นี้เพื่อf(n)=nlognและg(n)=n1+εหนึ่งที่สามารถแสดงให้เห็นว่าlogn∉Θ(n1+ε).
ร่างของบทพิสูจน์ทฤษฎีบทต้นแบบสำหรับกรณี 2A
นี่คือการทำสำเนาส่วนของหลักฐานจากการแนะนำให้รู้จักกับอัลกอริทึมด้วยการปรับเปลี่ยนที่จำเป็น
ก่อนอื่นเราพิสูจน์เล็มม่าต่อไปนี้
เล็มม่า:
พิจารณาฟังก์ชั่น
g(n)=∑j=0logbn−1ajh(n/bj)
ที่h(n)=nlogbalogkbn.จากนั้น
g(n)=nlogbalogk+1bn.
พิสูจน์: การ
แทนที่h(n)ลงในนิพจน์สำหรับg(n)สามารถรับ
g(n)=nlogbalogkbn∑j=0logbn−1(ablogba)j=nlogbalogk+1bn.
QED
ถ้าnคือพลังที่แน่นอนของbให้เกิดขึ้นอีก
T(n)=aT(n/b)+f(n),T(1)=Θ(1)
หนึ่งสามารถเขียนมันเป็น
T(n)=Θ(nlogba)+∑j=0logbn−1ajf(n/bj).
f(n)Θ(nlogbalogkbn)Θ
T(n)=Θ(nlogbalogk+1bn).
nb