การคำนวณผลรวมของพหุนามแบบกระจัดกระจายกำลังสองในเวลา O (n log n)?


18

สมมติว่าเรามีพหุนามของระดับมากที่สุด ,เช่นนั้นจำนวนสัมประสิทธิ์ที่ไม่ใช่ศูนย์ทั้งหมดคือ (กล่าวคือพหุนามมีเบาบาง) ฉันสนใจอัลกอริทึมที่มีประสิทธิภาพสำหรับการคำนวณพหุนาม:p1,...,pmnn>mn

ipi(x)2

ตั้งแต่พหุนามนี้มีการศึกษาระดับที่มากที่สุดทั้งอินพุทและเอาท์พุทขนาดคือ(n) ในกรณีเราสามารถคำนวณผลโดยใช้ FFT ในเวลาn) สามารถทำได้สำหรับใด ๆ? ถ้ามันสร้างความแตกต่างฉันสนใจในกรณีพิเศษที่ค่าสัมประสิทธิ์เป็น 0 และ 1 และการคำนวณควรทำกับจำนวนเต็ม2nO(n)m=1O(nlogn)m<n

ปรับปรุง ฉันรู้ว่าวิธีแก้ปัญหาอย่างรวดเร็วสำหรับด้านบนจะบอกเป็นนัยถึงความก้าวหน้าในการคูณเมทริกซ์อย่างรวดเร็ว โดยเฉพาะอย่างยิ่งถ้าเราสามารถอ่านเป็นค่าสัมประสิทธิ์ของใน 2 ดังนั้นการคำนวณสอดคล้องกับการคำนวณผลิตภัณฑ์ด้านนอกของเวกเตอร์สองตัวและการคำนวณผลรวมสอดคล้องกับการคำนวณผลิตภัณฑ์เมทริกซ์ หากมีวิธีการแก้ปัญหาที่ใช้เวลาในการคำนวณจากนั้นเราสามารถคูณเมทริกซ์สองโดย -ในเวลาpk(x)=i=1naikxi+j=1nbkjxnjaikbkjxi+njpk(x)2pk(x)2kpk(x)2k p k ( x ) 2 n n f ( n 2 , n )f(n,m)kpk(x)2nnf(n2,n)ซึ่งหมายความว่าสำหรับจะต้องมีการค้นพบครั้งใหญ่ แต่ , โดยที่\ omegaคือเลขชี้กำลังปัจจุบันของการคูณเมทริกซ์อาจเป็นไปได้ ไอเดียใคร ๆm n f ( n , m ) = n ω / 2 ωf(n,m)=O(nlogn)mnf(n,m)=nω/2ω


1
สวัสดีราสมุส ฉันคิดว่าคุณตั้งใจจะให้มันไปที่เว็บไซต์หลัก นี่คือเว็บไซต์เมตาสำหรับคำถามเกี่ยวกับเว็บไซต์
Suresh Venkat

คำตอบ:


3

กู้หน้าพหุนามกับภัณฑ์สัมประสิทธิ์ต้องใช้เวลาใช้คูณระยะโดยระยะสามัญดังนั้นนี้ควรได้รับการแนะนำในการ FFT สำหรับหลายชื่อเหล่านั้นที่n} ถ้าจำนวนพหุนามที่มีมากกว่าคือและสิ่งเหล่านี้จะใช้เวลาไปยังสี่เหลี่ยมจัตุรัสและรวม (เช่นชื่อพหุนามที่เหลือ) นี่คือการปรับปรุงกว่าอย่างเห็นได้ชัดที่ถูกผูกไว้เมื่อเป็นn}) O ( x 2 i ) x i < xiO(xi2)ฉันxi=nxixi<nlognixi=nxi O(nlognO(n 3 / 2 (บันทึกn) 1 / 2 )O(nlogn)ม.Θ(O(n/logn)O(n3/2(logn)1/2)O(mnlogn)mΘ(n/logn)


1
สิ่งที่ฉันสนใจคือวิธีการคำนวณผลรวมโดยไม่ต้องคำนวณแต่ละคำ การทำ FFT หรือการคูณตามระยะเวลาสำหรับแต่ละผลิตภัณฑ์จะช้าเกินไปสำหรับแอปพลิเคชันที่ฉันมีอยู่ในใจ
Rasmus Pagh

2

ไม่ใช่คำตอบที่สมบูรณ์ แต่อาจมีประโยชน์

Caveat: ใช้งานได้ดีถ้าการสนับสนุนของมีขนาดเล็กpi2

สำหรับพหุนามให้ได้รับการสนับสนุนและเป็นขนาดของการสนับสนุน ส่วนใหญ่จะเบาบางนั่นคือจะมีการสนับสนุนเล็กน้อยq=a0+a1x++anxnSq={iai0}sq=|Sq|pi

มีอัลกอริธึมที่จะกระจายพหุนามและ ในเวลากึ่งเส้นตรงในขนาดของการสนับสนุนของผลิตภัณฑ์ดูตัวอย่างเช่นhttp://arxiv.org/abs/0901.4323abab

การสนับสนุนของเป็น (ที่มีอยู่ใน)ที่ผลรวมของสองชุดและถูกกำหนดให้เป็น\} หากการสนับสนุนของผลิตภัณฑ์ทั้งหมดที่มีขนาดเล็ก, การพูด, การเชิงเส้นในรวมแล้วหนึ่งก็สามารถคำนวณผลิตภัณฑ์และเพิ่มขึ้น monomials ทั้งหมดabSa+SbSTS+T:={s+tsS,tT}n

แต่มันเป็นเรื่องง่ายมากที่จะหาพหุนามและดังกล่าวว่าขนาดของการสนับสนุนของเป็นกำลังสองในขนาดของการสนับสนุนของและขในแอปพลิเคชันนี้โดยเฉพาะเรากำลังประมวลผลพหุนาม ดังนั้นคำถามคือวิธีการที่มีขนาดใหญ่มากเมื่อเทียบกับSการวัดตามปกติสำหรับสิ่งนี้คือจำนวนสองเท่า. มีชุดที่มีจำนวนสองเท่าไม่ จำกัด แต่ถ้าคุณสามารถแยกชุดที่มีจำนวนสองเท่าเป็นจำนวนมากเพื่อรองรับคุณจะได้อัลกอริทึมที่รวดเร็วสำหรับปัญหาของคุณ abababS+SS|S+S|/|S|pi


1
ถึงแม้ว่าผมจะไม่คุ้นเคยกับ combinatorics สารเติมแต่งผมคิดว่าโดยทั่วไปการก้าวหน้าเลขคณิตและ Freiman-Ruzsa ทฤษฎีบทเกี่ยวกับชุดที่มีขนาดเล็กเพิ่มขึ้น
Tsuyoshi Ito

@Tsuyoshi: ถูกต้องฉันจะแก้ไขคำตอบของฉัน อย่างไรก็ตามมี GAP ที่มีค่าคงตัวเพิ่มขึ้นเป็นสองเท่า
5501

โดยส่วนตัวฉันไม่คิดว่าวิธีการนี้จะเป็นไปได้ A (ไม่ถูกต้องสวย) ความหมายของทฤษฎีบท Freiman-Ruzsa คือ | S + S | / | S | มีขนาดเล็กเพียงในกรณีพิเศษและดังนั้นจึงเป็นส่วนหนึ่ง“ถ้าคุณสามารถยกเว้นชุดที่มีจำนวนเพิ่มขึ้นเป็นขนาดใหญ่สนับสนุนของ p_i ว่า” เป็นใหญ่มากถ้า อย่างไรก็ตามอย่างที่ฉันพูดฉันไม่คุ้นเคยกับ combinatorics เพิ่มเติมและคุณควรใช้คำพูดของฉันกับเกลือเม็ด
Tsuyoshi Ito

แน่นอนมันใช้งานได้เฉพาะเมื่อแอปพลิเคชันในใจ (ซึ่งฉันไม่ทราบ) ให้การสนับสนุนที่ดี
5501

จากนั้นจะเข้าใจง่ายขึ้นหากคุณทำให้สมมติฐานนั้นชัดเจนยิ่งขึ้นในคำตอบของคุณ วิธีการเขียนสมมติฐานปัจจุบันในคำตอบแสดงให้เห็นว่าคุณพิจารณาว่าสมมติฐานของจำนวนที่เพิ่มขึ้นสองเท่านั้นไม่ใช่เรื่องใหญ่
Tsuyoshi Ito

2

อยากทราบอัลกอริทึมการประมาณตามธรรมชาติ สิ่งนี้ไม่ได้ใช้ประโยชน์จาก sparsity แม้ว่า

คุณสามารถใช้การสุ่มลำดับ(σi)i[n] ถ่ายX=iσipi(x)เราสามารถคำนวณX2ในnlognเวลาใช้ FFT จากนั้นEX2=ipi(x)2=SและVX2=O(S)) ดังนั้นคุณจะได้รับ1+εประมาณในเวลาO(ε2nlogn))


วิธีการที่ดี! แต่คุณไม่ต้องการการทำซ้ำมากขึ้นเพื่อให้สัมประสิทธิ์ทั้งหมดมีความน่าจะเป็นสูงใช่ไหม
Rasmus Pagh

@RasmusPagh ขวาคุณอาจจะได้รับการระยะถ้าคุณต้องการสัมประสิทธิ์ทั้งหมดเพื่อที่จะรักษาด้วยความน่าจะเป็น1 - δ log(n/δ)1δ
Thomas Ahle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.