ความซับซ้อนของการคำนวณ


คำตอบ:


12

ด้วยการใช้การแปลงฟูริเยร์ที่รวดเร็วการคูณกับตัวเลข -bit สามารถทำได้ในเวลา˜ O ( k ) (ที่ตัวหนอนแสดงว่าเราไม่สนใจปัจจัยโพลี โดยการทำซ้ำ squaring เราสามารถคำนวณn n 2กับO ( บันทึกn )คูณและแต่ละคูณเกี่ยวข้องกับจำนวนขนาดไม่เกินn n 2ซึ่งมีประมาณn 2 ล็อก2 nบิต ดังนั้นเวลาทั้งหมดที่ต้องใช้คือ˜ O ( n 2 )kO~(k)nn2O(logn)nn2n2log2n )O~(n2(logn)2)=O~(n2)


3

แก้ไขในการตอบสนองต่อความคิดเห็นของ เวลาในการคำนวณสามารถย่อยสลายเป็นเวลาที่ต้องใช้ในการคำนวณ1 ( n ) = n 2และที่จำเป็นต้องใช้ในการดำเนินการn 1 ( n ) ฉันจะคิดว่าคูณเมตรจำนวนบิตโดยnจำนวนบิตจะใช้เวลาตรงเมตรnเวลาด้วยวิธีหนังสือโรงเรียน; เพิ่มเติม ฯลฯ เป็นเวลาคงที่ เป็นผลให้การคำนวณn 2ใช้เวลาล็อก2f(n)=nn2f1(n)=n2nf1(n)mnmnn2เวลาlog22(n)

สมมติว่าเราใช้การยกกำลังไบนารีสำหรับการคำนวณ ) การยกกำลังไบนารีเป็นการดำเนินการสองชนิดในการคำนวณf ( n ) : กำลังสองผลิตภัณฑ์ปัจจุบันและคูณผลิตภัณฑ์ปัจจุบันด้วยnตามว่าบิตปัจจุบันในการขยายฐานสองของn 2คือ 0 หรือ 1 ในกรณีที่แย่ที่สุดn 2คือพลังของสองดังนั้นการยกกำลังเลขฐานสองจะซ้ำกำลังสองของผลิตภัณฑ์ปัจจุบันจนกว่าจะได้คำตอบทราบว่าn 2มีm = 2 log 2 ( nf(n)f(n)nn2n2n2บิตเพื่อให้จำนวนของ squarings ดังกล่าวเป็นเมตร= ' - 1 นี่เป็นกรณีที่เราวิเคราะห์เพิ่มเติมด้านล่างm=2log2(n)m=m1

การ 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บันทึกt1=log22(n)o1=2log2(n)o1t2=o12o2=2o1iเวลาและเอาท์พุต aoi=2ilog2(n)-bit product กระบวนการนี้หยุดที่ขั้นตอนm-th เป็นผลให้ต้องใช้เวลาti=4i1log22noi=2ilog2(n)m

n Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n

เมื่อรวมค่า squaring เริ่มต้นแล้วเราพบว่าเราต้องการเวลามากที่สุด

Texp+log22n

บันทึก

  • ฉันมองข้ามบางชั้นและเพดานในการคำนวณหวังว่าพวกเขาจะไม่ส่งผลกระทบต่อคำตอบอย่างมาก
  • ฉันจงใจละเว้นการวิเคราะห์โดยใช้สนับสนุนขอบเขตบนที่แน่นอนเพื่อความเข้มงวด O
  • การใช้เหตุผลด้านบนทำให้เห็นชัดเจนว่าทำไมการวิเคราะห์ก่อนหน้านี้ของฉันจึงมีข้อบกพร่อง สัญกรณ์ถูกนำมาใช้ในวิธีที่รวดเร็วและหลวมและมันก็ละเว้นสิ่งอำนวยความสะดวกเพื่อให้คงที่เช่นΣ ทีฉันอย่างน่าอัศจรรย์กลายเป็นO ( บันทึกn ) OtiO(logn)
  • การคูณสามารถเร่งความเร็วได้โดย FFT และวิธีอื่น ๆ

1
คุณมีความซับซ้อนในการคำนวณn 2อย่างไร O(1)n2

4
ฉันกำลังจะบอกว่าการคูณตัวเลข bit สองตัวใช้เวลาO ( log n )แทนO ( 1 )เวลาคุณต้องคิดว่ามันเท่ากับต้นทุนของการยกกำลังเลขฐานสองด้วย nO(logn)O(1)
Mark Dominus

2
โปรดทราบว่าผลลัพธ์สุดท้ายมี bits มันเป็นเรื่องยากมากที่จะคำนวณn 2 ล็อก2 nบิตในO ( บันทึกn )เวลา n2log2nn2log2nO(logn)

จุดยุติธรรมฉันจะรับทราบ
PKG

1
@ThomasAndrews: ขึ้นอยู่กับรุ่นของเครื่องและราคา ไม่ใช่เรื่องผิดปกติที่จะสมมติว่ารุ่นของแรมมีราคาเพิ่มขึ้น
ราฟาเอล
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.