ข้อผิดพลาดในการใช้สัญลักษณ์ asymptotic


10

ฉันพยายามที่จะเข้าใจสิ่งที่ผิดกับหลักฐานต่อไปนี้ของการเกิดซ้ำต่อไปนี้

T(n)2(cn

T(n)=2T(n2)+n
T(n)2(cn2)+ncn+n=n(c+1)=O(n)

เอกสารบอกว่ามันผิดเพราะสมมติฐานอุปนัยที่ ฉันหายไปไหน?

T(n)cn

2
เกิดซ้ำในรูปแบบนี้จะสามารถแก้ไขได้โดยใช้ทฤษฎีบทโท
Juho

2
@ รัน: ฉันไม่คิดว่าทฤษฎีบทหลักเป็นแท็กที่เหมาะสมสำหรับคำถามนี้ คำถามไม่ได้เกี่ยวกับวิธีการแก้ปัญหา แต่เพื่อชี้ให้เห็นถึงการเข้าใจผิดในการโต้แย้งโดยเฉพาะ นอกจากนี้ทฤษฎีบทหลักอาจมีลักษณะเฉพาะเจาะจงเกินไปและอาจไม่สมควรมีแท็กของตนเอง โดยทั่วไปเราควรติดแท็กตามคำถามไม่ใช่คำตอบที่เป็นไปได้ ตัวอย่างเช่นคุณจะแท็ก akra-bazzi นี้หรือไม่
Aryabhata

"เกิดอะไรขึ้นกับข้อพิสูจน์ต่อไปนี้" - ฉันไม่เห็นข้อพิสูจน์ มันมักจะเป็นประโยชน์ในการเขียนหลักฐานที่สมบูรณ์ (เช่นทำให้การเหนี่ยวนำชัดเจน) เพื่อจุดผิดพลาด
Raphael

คำถามทั่วไปที่เกี่ยวข้องเพิ่มเติมคือ แก้หรือใกล้เคียงกับความสัมพันธ์ที่เกิดขึ้นอีกสำหรับลำดับของตัวเลข
Juho

คำตอบ:


12

สมมติว่าเป้าหมายสุดท้ายคือการพิสูจน์ ) คุณเริ่มต้นด้วยสมมติฐานการเหนี่ยวนำ:T(n)=O(n)

ทั้งหมดของฉัน< nT(i)cii<n

และเพื่อให้การพิสูจน์สมบูรณ์คุณต้องแสดงให้เห็นว่าเช่นกันT(n)cn

อย่างไรก็ตามสิ่งที่คุณสามารถอนุมานได้คือซึ่งไม่มีประโยชน์ในการพิสูจน์ให้สมบูรณ์ คุณต้องการหนึ่งคงสำหรับ (เกือบ) ทุกn ดังนั้นเราไม่สามารถสรุปอะไรได้เลยและT ( n ) = O ( n )ไม่ได้รับการพิสูจน์T(n)(c+1)ncnT(n)=O(n)

ขอให้สังเกตว่าคุณสับสนระหว่างผลลัพธ์และกระบวนการพิสูจน์ และอีกจุดหนึ่งเป็นจริงΘ ( n log n )ในกรณีนี้ดังนั้นคุณอาจพิจารณาสมมุติฐานอุปนัยที่เหมาะสมเพื่อให้สามารถพิสูจน์ได้T(n)Θ(nlogn)


ถ้าเราแทนที่ c '= c + 1 มันจะทำการเปลี่ยนแปลงหรือไม่?
Erb

@erb: ไม่มันจะไม่ คุณต้องพิสูจน์ค่าคงที่ที่เลือก หากแทนที่ในที่สุดคุณก็มี T ( n ) ( c + 1 ) n (หรือT ( n ) ( c + 2 ) n ) ดังนั้นผลลัพธ์จะเหมือนกัน c=c+1T(n)(c+1)nT(n)(c+2)n
pad

8

คุณข้ามไปไม่กี่ขั้นตอน ดูเหมือนว่าคุณกำลังพยายามพิสูจน์โดยอุปนัยที่T(n)=O(n)และหลักฐานของคุณไปที่:

สมมติว่าสำหรับk < n หมายความว่าT ( k )T(k)=O(k)k<nสำหรับบางค จากนั้น T ( n ) = 2 T ( n / 2 ) + n 2 c n / 2 + n ( c +T(k)k , ดังนั้น T ( n ) = O ( n )T(n)=2T(n/2)+n2cn/2+n(c+1)nT(n)=O(n) )

การพิสูจน์นี้ผิดไปตั้งแต่เริ่มต้น:“ สำหรับk < n ” ไม่สมเหตุสมผล บิ๊กโอ้เป็นความคิดเชิงความหมาย: T ( k ) = O ( k )หมายความว่ามีค่าคงที่cและขีด จำกัด Nเช่นนั้นk N , T ( k ) cT(k)=O(k)k<nT(k)=O(k)c . และอีกครั้งในตอนท้ายคุณไม่สามารถสรุปได้ว่า“ T ( n ) = O ( n ) ” เพราะมันบอกอะไรบางอย่างเกี่ยวกับฟังก์ชั่น Tโดยรวมและคุณได้พิสูจน์บางอย่างเกี่ยวกับค่าเฉพาะ T ( n ) .kN,T(k)ckT(n)=O(n)TT(n)

คุณต้องมีความชัดเจนเกี่ยวกับความหมายของดังนั้นอาจเป็นข้อพิสูจน์ของคุณ:O

สมมติว่าสำหรับทุก k < n จากนั้น T ( n ) = 2 T ( n / 2 ) + n 2 c n / 2 + n ( c + 1 )T(k)ckk<n .T(n)=2T(n/2)+n2cn/2+n(c+1)n

สิ่งนี้ไม่ได้พิสูจน์ขั้นตอนอุปนัย: คุณเริ่มต้นจากและคุณพิสูจน์ว่าสำหรับ k = n , T ( k ) ( c + 1 )T(k)ckk=n . นี่เป็นข้อ จำกัด ที่อ่อนแอกว่า ดูความหมายของสิ่งนี้: T ( k ) cT(k)(c+1)kหมายความว่าจะมุ่งอัตราการเจริญเติบโตของT แต่คุณมีอัตราที่เพิ่มขึ้นเมื่อ kเพิ่มขึ้น นั่นไม่ใช่การเติบโตเชิงเส้น!T(k)ckcTck

ถ้าคุณมองอย่างใกล้ชิดคุณจะสังเกตเห็นว่าอัตราดอกเบี้ยที่เติบโตโดย1เมื่อใดก็ตามที่kคู่ผสม ดังนั้นอย่างไม่เป็นทางการถ้าm = 2 p kดังนั้นc m = c k + p ; กล่าวอีกนัยหนึ่งc k = c 0 log 2 kc1km=2pkcm=ck+pck=c0log2k k

สิ่งนี้สามารถทำได้อย่างแม่นยำ พิสูจน์โดยอุปนัยว่าสำหรับ , T ( k ) c log 2 ( k )k1T(k)clog2(k) )

ความสัมพันธ์ที่เกิดซ้ำเป็นเรื่องปกติสำหรับอัลกอริทึมการหารและการพิชิตที่แยกข้อมูลออกเป็นสองส่วนเท่า ๆ กันในเวลาเชิงเส้น อัลกอริทึมดังกล่าวทำงานในเวลา (ไม่ใช่ O ( n ) )Θ(nlog(n))O(n)

หากต้องการดูว่าผลที่คาดหวังคือคุณสามารถตรวจสอบความสัมพันธ์เวียนเกิดกับทฤษฎีบทหลัก การแบ่งเป็นและงานพิเศษที่ทำคือn ; log 2 ( 2 ) = 1ดังนั้นนี่เป็นกรณีที่สองซึ่งการเติบโตคือΘ ( n2T(n/2)nlog2(2)=1 )Θ(nlog(n))


7

ฉันกำลังขยายคำตอบที่ได้รับไปแล้วอาจจะอธิบายความคิดเห็นของฉันในรายละเอียดเพิ่มเติมเท่านั้น

เนื่องจากการเดาได้ยากและน่าเบื่อบางครั้งก็มีวิธีที่ดีกว่า วิธีการหนึ่งที่ดังกล่าวเป็นโททฤษฎีบท การเกิดซ้ำของเราอยู่ในขณะนี้ในรูปแบบที่1และ> 1มีค่าคงที่และF ( n )ฟังก์ชั่น โปรดทราบว่าในกรณีของเราn / 2 สามารถตีความได้ว่าหมายถึงn / 2T(n)=aT(n/b)+f(n)a1b>1f(n)n/2n/2. เพื่อความถูกต้องทางเทคนิคการเกิดซ้ำของเราอาจไม่ชัดเจนเนื่องจากอาจไม่ใช่จำนวนเต็ม อย่างไรก็ตามสิ่งนี้ได้รับอนุญาตเพราะมันจะไม่ส่งผลกระทบต่อพฤติกรรม asymptotic ของการเกิดซ้ำ ดังนั้นเรามักพบว่าสะดวกในการปูพื้นและเพดาน การพิสูจน์อย่างเป็นทางการของเรื่องนี้ค่อนข้างน่าเบื่อ แต่ผู้อ่านที่สนใจสามารถค้นหาได้จากCormen et al หนังสือn/2

ในกรณีของเราเรามี= 2 , B = 2 , F ( n ) = Θ ( n ) ซึ่งหมายความว่าเราได้n เข้าสู่ระบบ = n เข้าสู่ระบบ2 2 = n กรณีที่สองของนายทฤษฎีบทใช้ตั้งแต่( n ) = Θ ( n )และเรามีวิธีการแก้T ( n ) = Θ ( n บันทึกa=2b=2f(n)=Θ(n)nlogba=nlog22=nf(n)=Θ(n) )T(n)=Θ(nlogn)


ขอบคุณ! อาจสังเกตได้ว่า "การวางพื้นและเพดาน" สอดคล้องกับการสมมติว่าซึ่งเป็นเรื่องปกติ ข้อสังเกตพื้นฐานคือสำหรับฟังก์ชั่นที่ไม่ลดลงการเติบโตของซีมโทติคเท่ากับการเติบโตของซีมโทติคของลำดับทั้งหมด n=2k
Raphael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.