เราจะไปถึงการคูณเชิงเส้นเพิ่มและเปรียบเทียบ (กับจำนวนเต็ม) ได้อย่างไร


21

ตามบทความของ KW Regan ว่า "เชื่อมต่อดวงดาว"เขากล่าวในตอนท้ายว่ามันยังคงเป็นปัญหาที่เปิดกว้างเพื่อค้นหาการแสดงจำนวนเต็มเช่นการดำเนินการเพิ่มการคูณและการเปรียบเทียบในเวลาเชิงเส้น:

มีการแสดงจำนวนเต็มเพื่อให้การบวกการคูณและการเปรียบเทียบทั้งหมดทำได้ในเวลาเชิงเส้นหรือไม่? โดยทั่วไปมีเวลาเชิงเส้นสั่งซื้อเป็นแหวน discretely?

(1) เราจะเข้าใกล้การคูณเวลาเชิงเส้นและการบวกโดยไม่เปรียบเทียบได้อย่างไร ที่นี่ฉันคิดว่าขนาดของปัญหาอาจแตกต่างกันไปดังนั้นเราอาจต้องการโครงสร้างข้อมูล / อัลกอริทึมที่ช่วยให้การเปลี่ยนขนาดจำนวนเต็ม

(2) สำหรับปัญหาที่สมบูรณ์เราสามารถสรุปได้ว่าเราจะหารูปแบบที่เหมาะสมสำหรับการคูณเพิ่มและเปรียบเทียบจำนวนเต็ม เราจะสามารถทำให้การดำเนินการทั้งสามนี้ช้าที่สุด (ในกรณีที่เลวร้ายที่สุด) ในเวลาเชิงเส้นได้อย่างไร และในบันทึกนั้นการปฏิบัติการอื่นจะรวดเร็วแค่ไหน?

งบปัญหาอย่างเป็นทางการ

ในฐานะที่เอมิลJeřábekกล่าวถึงเราต้องการแยกแยะกรณีเล็ก ๆ น้อย ๆ และมุ่งเน้นไปที่พฤติกรรมกรณีที่เลวร้ายที่สุดสำหรับคำถามนี้

ดังนั้นเราจึงถามว่าสำหรับจำนวนเต็มไม่เป็นลบและ∀ yโดยที่0 ≤ x < nและ0 ≤ y < nเราสามารถหาโครงสร้างข้อมูล / อัลกอริทึมที่สามารถทำการบวกการคูณและเปรียบเทียบกับ \ ระหว่างxและyในเวลาO ( n log ( n ) )และพื้นที่O ( log 2 ( n ) ) ?∀x∀y0≤x<n0≤y<nxyO(nlog⁡(n))O(log2⁡(n))


1
ผมจะพูดถึงว่ามันเป็นไปได้ที่จะสร้างโครงการที่มีประสิทธิภาพการดำเนินงานเหล่านี้ในช่วงเวลาที่ใน integers เชิงลบที่nคือ bitsize ของจำนวนเต็มที่ใหญ่ที่สุด (สมมติว่าเรารู้ว่าnก่อนเวลา) ฉันสงสัยว่าเราจะทำได้ดีกว่านี้หรือไม่และทำสิ่งนี้ตามสัดส่วนกับจำนวนเต็มในปัจจุบันที่คำนวณได้ Θ(n)nn
— Matt Groff

5
@TysonWilliams: ใช่! เลขฐานสอง!
— Jeff

2
O(nlog⁡n)

4
n2

5
nf(n)f(n)=Θ(log⁡n)

คำตอบ:


14

n

pn#=exp⁡((1+o(1))nlog⁡n).
NnN<exp⁡((1+o(1))nlog⁡n)N<pn#nnlog⁡n∝log⁡(N)nnlog⁡(n)O(nlog⁡log⁡(N))O(nlog⁡log⁡(N)log⁡log⁡log⁡log⁡(N)log⁡log⁡log⁡(N))nlog⁡n∝log⁡NnO(log⁡N/log⁡log⁡N)O(log⁡N)O(log⁡Nlog⁡log⁡log⁡Nlog⁡log⁡log⁡log⁡N)


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