ความซับซ้อนของการคำนวณคืออะไร ?
ความซับซ้อนของการคำนวณคืออะไร ?
คำตอบ:
ด้วยการใช้การแปลงฟูริเยร์ที่รวดเร็วการคูณกับตัวเลข -bit สามารถทำได้ในเวลา˜ O ( k ) (ที่ตัวหนอนแสดงว่าเราไม่สนใจปัจจัยโพลี โดยการทำซ้ำ squaring เราสามารถคำนวณn n 2กับO ( บันทึกn )คูณและแต่ละคูณเกี่ยวข้องกับจำนวนขนาดไม่เกินn n 2ซึ่งมีประมาณn 2 ล็อก2 nบิต ดังนั้นเวลาทั้งหมดที่ต้องใช้คือ˜ O ( n 2 ) )
แก้ไขในการตอบสนองต่อความคิดเห็นของ เวลาในการคำนวณสามารถย่อยสลายเป็นเวลาที่ต้องใช้ในการคำนวณฉ1 ( n ) = n 2และที่จำเป็นต้องใช้ในการดำเนินการn ฉ1 ( n ) ฉันจะคิดว่าคูณเมตรจำนวนบิตโดยnจำนวนบิตจะใช้เวลาตรงเมตรnเวลาด้วยวิธีหนังสือโรงเรียน; เพิ่มเติม ฯลฯ เป็นเวลาคงที่ เป็นผลให้การคำนวณn 2ใช้เวลาล็อก2เวลา
สมมติว่าเราใช้การยกกำลังไบนารีสำหรับการคำนวณ ) การยกกำลังไบนารีเป็นการดำเนินการสองชนิดในการคำนวณf ( n ) : กำลังสองผลิตภัณฑ์ปัจจุบันและคูณผลิตภัณฑ์ปัจจุบันด้วยnตามว่าบิตปัจจุบันในการขยายฐานสองของn 2คือ 0 หรือ 1 ในกรณีที่แย่ที่สุดn 2คือพลังของสองดังนั้นการยกกำลังเลขฐานสองจะซ้ำกำลังสองของผลิตภัณฑ์ปัจจุบันจนกว่าจะได้คำตอบทราบว่าn 2มีm ′ = ⌈ 2 log 2 ( nบิตเพื่อให้จำนวนของ squarings ดังกล่าวเป็นเมตร= ม' - 1 นี่เป็นกรณีที่เราวิเคราะห์เพิ่มเติมด้านล่าง
การ squaring แรกใช้เวลาเวลาส่งผลให้o 1 = 2 log 2 ( n ) -bit product การยกกำลังสองครั้งจะใช้ตัวเลขสองบิต1 oบิตและทำงานในt 2 = o 2 1ครั้งทำให้เกิดผลิตภัณฑ์o 2 = 2 o 1บิต ดำเนินการต่อขั้นตอนi -th ใช้เวลาt i = 4 i - 1บันทึกเวลาและเอาท์พุต aoi=2ilog2(n)-bit product กระบวนการนี้หยุดที่ขั้นตอนm-th เป็นผลให้ต้องใช้เวลา
n
เมื่อรวมค่า squaring เริ่มต้นแล้วเราพบว่าเราต้องการเวลามากที่สุด
บันทึก