ฉันพยายามที่จะเข้าใจสิ่งที่ผิดกับหลักฐานต่อไปนี้ของการเกิดซ้ำต่อไปนี้
T(n)≤2(c⌊n
เอกสารบอกว่ามันผิดเพราะสมมติฐานอุปนัยที่ ฉันหายไปไหน?
ฉันพยายามที่จะเข้าใจสิ่งที่ผิดกับหลักฐานต่อไปนี้ของการเกิดซ้ำต่อไปนี้
T(n)≤2(c⌊n
เอกสารบอกว่ามันผิดเพราะสมมติฐานอุปนัยที่ ฉันหายไปไหน?
คำตอบ:
สมมติว่าเป้าหมายสุดท้ายคือการพิสูจน์ ) คุณเริ่มต้นด้วยสมมติฐานการเหนี่ยวนำ:
ทั้งหมดของฉัน< n
และเพื่อให้การพิสูจน์สมบูรณ์คุณต้องแสดงให้เห็นว่าเช่นกัน
อย่างไรก็ตามสิ่งที่คุณสามารถอนุมานได้คือซึ่งไม่มีประโยชน์ในการพิสูจน์ให้สมบูรณ์ คุณต้องการหนึ่งคงคสำหรับ (เกือบ) ทุกn ดังนั้นเราไม่สามารถสรุปอะไรได้เลยและT ( n ) = O ( n )ไม่ได้รับการพิสูจน์
ขอให้สังเกตว่าคุณสับสนระหว่างผลลัพธ์และกระบวนการพิสูจน์ และอีกจุดหนึ่งเป็นจริงΘ ( n log n )ในกรณีนี้ดังนั้นคุณอาจพิจารณาสมมุติฐานอุปนัยที่เหมาะสมเพื่อให้สามารถพิสูจน์ได้
คุณข้ามไปไม่กี่ขั้นตอน ดูเหมือนว่าคุณกำลังพยายามพิสูจน์โดยอุปนัยที่และหลักฐานของคุณไปที่:
สมมติว่าสำหรับk < n หมายความว่าT ( k )สำหรับบางค จากนั้น T ( n ) = 2 T ( ⌊ n / 2 ⌋ ) + n ≤ 2 c ⌊ n / 2 ⌋ + n ≤ ( c + , ดังนั้น T ( n ) = O ( n ) )
การพิสูจน์นี้ผิดไปตั้งแต่เริ่มต้น:“ สำหรับk < n ” ไม่สมเหตุสมผล บิ๊กโอ้เป็นความคิดเชิงความหมาย: T ( k ) = O ( k )หมายความว่ามีค่าคงที่cและขีด จำกัด Nเช่นนั้น∀ k ≥ N , T ( k ) ≤ c . และอีกครั้งในตอนท้ายคุณไม่สามารถสรุปได้ว่า“ T ( n ) = O ( n ) ” เพราะมันบอกอะไรบางอย่างเกี่ยวกับฟังก์ชั่น Tโดยรวมและคุณได้พิสูจน์บางอย่างเกี่ยวกับค่าเฉพาะ T ( n ) .
คุณต้องมีความชัดเจนเกี่ยวกับความหมายของดังนั้นอาจเป็นข้อพิสูจน์ของคุณ:
สมมติว่าสำหรับทุก k < n จากนั้น T ( n ) = 2 T ( ⌊ n / 2 ⌋ ) + n ≤ 2 c ⌊ n / 2 ⌋ + n ≤ ( c + 1 ) .
สิ่งนี้ไม่ได้พิสูจน์ขั้นตอนอุปนัย: คุณเริ่มต้นจากและคุณพิสูจน์ว่าสำหรับ k = n , T ( k ) ≤ ( c + 1 ) . นี่เป็นข้อ จำกัด ที่อ่อนแอกว่า ดูความหมายของสิ่งนี้: T ( k ) ≤ cหมายความว่าคจะมุ่งอัตราการเจริญเติบโตของT แต่คุณมีอัตราคที่เพิ่มขึ้นเมื่อ kเพิ่มขึ้น นั่นไม่ใช่การเติบโตเชิงเส้น!
ถ้าคุณมองอย่างใกล้ชิดคุณจะสังเกตเห็นว่าอัตราดอกเบี้ยที่เติบโตโดย1เมื่อใดก็ตามที่kคู่ผสม ดังนั้นอย่างไม่เป็นทางการถ้าm = 2 p kดังนั้นc m = c k + p ; กล่าวอีกนัยหนึ่งc k = c 0 log 2 k k
สิ่งนี้สามารถทำได้อย่างแม่นยำ พิสูจน์โดยอุปนัยว่าสำหรับ , T ( k ) ≤ c log 2 ( k ) )
ความสัมพันธ์ที่เกิดซ้ำเป็นเรื่องปกติสำหรับอัลกอริทึมการหารและการพิชิตที่แยกข้อมูลออกเป็นสองส่วนเท่า ๆ กันในเวลาเชิงเส้น อัลกอริทึมดังกล่าวทำงานในเวลา (ไม่ใช่ O ( n ) )
หากต้องการดูว่าผลที่คาดหวังคือคุณสามารถตรวจสอบความสัมพันธ์เวียนเกิดกับทฤษฎีบทหลัก การแบ่งเป็นและงานพิเศษที่ทำคือn ; log 2 ( 2 ) = 1ดังนั้นนี่เป็นกรณีที่สองซึ่งการเติบโตคือΘ ( n )
ฉันกำลังขยายคำตอบที่ได้รับไปแล้วอาจจะอธิบายความคิดเห็นของฉันในรายละเอียดเพิ่มเติมเท่านั้น
เนื่องจากการเดาได้ยากและน่าเบื่อบางครั้งก็มีวิธีที่ดีกว่า วิธีการหนึ่งที่ดังกล่าวเป็นโททฤษฎีบท การเกิดซ้ำของเราอยู่ในขณะนี้ในรูปแบบที่≥ 1และข> 1มีค่าคงที่และF ( n )ฟังก์ชั่น โปรดทราบว่าในกรณีของเรา⌊ n / 2 ⌋สามารถตีความได้ว่าหมายถึงn / 2. เพื่อความถูกต้องทางเทคนิคการเกิดซ้ำของเราอาจไม่ชัดเจนเนื่องจากอาจไม่ใช่จำนวนเต็ม อย่างไรก็ตามสิ่งนี้ได้รับอนุญาตเพราะมันจะไม่ส่งผลกระทบต่อพฤติกรรม asymptotic ของการเกิดซ้ำ ดังนั้นเรามักพบว่าสะดวกในการปูพื้นและเพดาน การพิสูจน์อย่างเป็นทางการของเรื่องนี้ค่อนข้างน่าเบื่อ แต่ผู้อ่านที่สนใจสามารถค้นหาได้จากCormen et al หนังสือ
ในกรณีของเราเรามี= 2 , B = 2 , F ( n ) = Θ ( n ) ซึ่งหมายความว่าเราได้n เข้าสู่ระบบข = n เข้าสู่ระบบ2 2 = n กรณีที่สองของนายทฤษฎีบทใช้ตั้งแต่ฉ( n ) = Θ ( n )และเรามีวิธีการแก้T ( n ) = Θ ( n บันทึก )