เพื่อขยายแนวคิดของ Steven Stadnicki เราสามารถสร้างอัลกอริธึมไร้เดียงสาที่ทำได้ดีกว่าการคูณเมทริกซ์อย่างรวดเร็วโดยใช้การแปลงฟูเรียร์แบบไม่ต่อเนื่อง
เรานับจำนวนของคนใน หากน้อยกว่าครึ่งหนึ่งเป็นบิตเราจะสร้างรายการที่เชื่อมโยงของตำแหน่งของพวกเขา ในการคูณเราเพียงแค่เลื่อนไปทางซ้ายโดยแต่ละตำแหน่งในรายการ (คูณด้วยบิตนั้นที่เป็นตัวแทน) และเพิ่มผลลัพธ์AB
หากมากกว่าครึ่งหนึ่งของบิตเป็นบิตเราจะทำเช่นเดียวกันกับข้างบน แต่เราใช้ศูนย์แทนการเติมรายการของตำแหน่ง แนวคิดคือเราจะลบผลรวมนี้จากผลรวมที่จะได้รับจากการคูณด้วยจำนวนทั้งหมด เพื่อให้ได้ผลรวมของทุกตัวเราเปลี่ยนตามจำนวนบิตในและลบจากนี้ จากนั้นเราสามารถลบผลรวมของเราที่ได้รับจากรายการที่เชื่อมโยงBAB
เราสามารถเรียกได้ว่าอัลกอริทึมเชื่อมโยงรายชื่อไร้เดียงสา เวลาทำงานของมันคือในกรณีที่แย่ที่สุด แต่ในกรณีทั่วไปซึ่งเร็วกว่า DFT สำหรับขนาดเล็ก.O(n2)O(|B||A|2π−−−√)|A|
ในการใช้แนวคิดของรายการอย่างเหมาะสมเราใช้การหารและการพิชิต เราแบ่งครึ่งและค้นหาขนาดของรายการที่เกี่ยวข้องโดยใช้อัลกอริทึมไร้เดียงสา หากพวกเขามากกว่า 5 เราจะเรียกอัลกอริทึมไร้เดียงสาอีกครั้งในครึ่งที่มากกว่า 5 จนกว่าเราจะจัดการแบ่งครึ่งทั้งหมดให้เหลือน้อยกว่าห้า (นี่เป็นเพราะเราสามารถลดได้ถึง 4 การลบ)A
ยิ่งไปกว่านั้นเรายังปรับปรุงอัลกอริทึมการแบ่งและพิชิตของเรา เราย้ำผ่านชุดที่เป็นไปได้ทั้งหมดของการแตกแขนง, การเลือกที่ดีที่สุดอย่างโลภ การประมวลผลล่วงหน้านี้ใช้เวลาประมาณเดียวกับการคูณจริง
หากเราได้รับอนุญาตให้มีอิสระอย่างไม่มีที่สิ้นสุดด้วยการประมวลผลล่วงหน้าเราจะแก้ไขอัลกอริธึมการแบ่งและพิชิตที่เหมาะสมที่สุดสำหรับทุกสาขาอย่างเหมาะสมที่สุด สิ่งนี้ต้องใช้เวลาในกรณีที่เลวร้ายที่สุด แต่มันควรจะเป็นวิธีที่ดีที่สุดโดยการเพิ่มวิธีการลูกโซ่O(2|A|)
ฉันกำลังคำนวณค่าที่แน่นอนกว่าสำหรับอัลกอริทึมด้านบน