การตัดสินใจบิตที่สำคัญที่สุดของการคูณแบบไบนารี


10

ฉันสนใจที่จะกำหนดความซับซ้อนของปัญหาการตัดสินใจดังต่อไปนี้: ให้จำนวนเต็มสองตัวและl 2 (แต่ละอันที่ m บิตส่วนใหญ่) ตัดสินใจว่าบิตที่สำคัญที่สุดของการคูณl 1l 2คือ 1 (โดยที่ผลลัพธ์ มีการพิมพ์ใน 2m บิตโดยมี 0 นำหน้า)l1l2l1l2

พื้นหลังของปัญหา: เห็นได้ชัดว่าปัญหานี้เป็นกรณีพิเศษของการคูณเลขฐานสองที่ถามว่า th บิตของการคูณl 1l 2คือ 1 ในกระดาษของพวกเขาวงจรความลึกคงที่สม่ำเสมอสม่ำเสมอสำหรับการหารและทำซ้ำ คูณ , เฮสส์และบาริงตัน Allender พิสูจน์ว่าซ้ำ (และไบนารีจึง) คูณอยู่ในD L o กรัมT ฉันm E - เครื่องแบบT C 0 ยิ่งไปกว่านั้นมันเป็นที่รู้กันดีว่าการคูณแบบไบนารีนั้นมีอยู่แล้วD L o g T iil1l2DLogTime TC0 -ชุด T C 0 -แข็ง อย่างไรก็ตามฉันไม่สามารถหาแหล่งที่มาที่พิสูจน์ผลลัพธ์ความแข็งนี้ได้ ในฐานะที่ไม่ใช่ผู้เชี่ยวชาญในเรื่องความซับซ้อนของวงจรผมก็ขอขอบคุณตัวชี้ไปยังผลลัพธ์ความแข็งทั่วไปนี้ สุดท้ายสมมติว่าคูณไบนารี D L o กรัมT ฉันm E -เครื่องแบบ T C 0 -hard คำถามของฉันยังสามารถอ่านได้: ไม่ก็ยังคง D L o กรัมT ฉันm E -เครื่องแบบ T C 0DLogTime TC0DLogTime TC0DLogTime TC0- ยากไหมถ้าเราต้องการตัดสินใจเพียงบิตที่สำคัญที่สุดของการคูณเลขฐานสอง?

UPDATE: คำตอบของ Kaveh ชี้แจงว่าทำไมการคูณแบบไบนารีคือฮาร์ด (ลดลงจาก COUNT) ความซับซ้อนที่แม่นยำในการตัดสินใจบิตที่สำคัญที่สุดของการคูณแบบไบนารียังคงเปิดอยู่ (และความโปรดปรานสำหรับคำถามนี้)TC0


มีหลักฐานในหนังสืออธิบายความซับซ้อน iirc ไม่แน่ใจว่าสิ่งที่คุณหมายถึงโดยบิตที่สำคัญที่สุดอย่างใดอย่างหนึ่งก็มักจะเป็นหนึ่งโดยการกำหนด
Kaveh

l1l2

@Kaveh ขอบคุณสำหรับการอ้างอิง: ฉันจะตรวจสอบออก ขออภัยในความสับสนเกี่ยวกับบิตที่สำคัญที่สุด ฉันถือว่าโดยปริยายว่าผลลัพธ์ถูกพิมพ์ใน 2m-1 บิตและหากจำเป็นด้วยการนำของ 0
Heyheyhey

@Kaveh: ใน Descriptive Complexity Book จะกล่าวถึงเฉพาะขอบเขตบนเท่านั้น ฉันไม่สามารถหาอะไรเกี่ยวกับความแข็งของการคูณเลขฐานสองได้
Heyheyhey

DLogTime TC0AC0

คำตอบ:


6

TC0AC0MajorityCount

CountMulta0a1ankaiabaaik>3nabFOCountFO(Mult)


1
ขอบคุณสำหรับคำตอบ! ใช่สิ่งนี้ยืนยันว่าการคูณแบบไบนารีนั้นเสร็จสมบูรณ์สำหรับ TC0 สำหรับบิตที่สำคัญที่สุดมีบางประเด็นที่เหลือ บิตที่สำคัญที่สุดของการคูณ (111 x 111) = 110001 คือ 1 และสำหรับอันนี้ (100 x 100) = 010000 ก็คือ 0 โปรดทราบว่าบิตที่สำคัญที่สุดของ multiplicands จะเหมือนกันในทั้งสองกรณี ดังนั้นฉันไม่คิดว่าโดยทั่วไปแล้วมันก็เพียงพอที่จะรวมบิตที่สำคัญที่สุด ฉันพลาดอะไรไปรึเปล่า?
Heyheyhey

1
x=2n+1/2y=2n+1/2x2y2xy

3
การแก้ไขไม่ถูกต้อง เนื่องจากเรากำลังเพิ่มหมายเลข m อาจไม่มีการพกหนึ่งบิต แต่เป็น log m การตัดสินใจว่าจะแพร่กระจายไปมากเท่าใดก็ยากกว่ามาก
Emil Jeřábek

1
แท้จริงแล้วการไม่สนใจสิ่งอื่นทั้งหมด: การคำนวณการกระทำในตำแหน่งเดียว (พูดที่ใดที่หนึ่งตรงกลาง) นั้นมีค่าเทียบเท่ากับ Count ดังนั้น TC ^ 0 จึงสมบูรณ์
Emil Jeřábek

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