Вирішення найзначнішого біта двійкового множення


10

Мені цікаво визначити складність наступної проблеми рішення: З огляду на два цілих числа та (кожне з максимум m бітів), вирішіть, чи є найбільш значущим бітом множення 1 (де результат друкується в 2 м біт з можливими ведучими 0)?l1l2l1l2

Деякі відомості про проблему: Очевидно, що ця проблема є особливим випадком двійкового множення, який запитує, чи -й біт множення є 1. У своїй роботі Уніфіковані порогові схеми постійної глибини для ділення та ітераційного множення , Гессе, Аллендер і Баррінгтон доводять, що ітераційне (і, таким чином, двійкове) множення є в - рівномірному . Більше того, мабуть, добре відомо, що двійкове множення вже - рівномірнеil1l2DLogTime TC0DLogTime TC0-твердий. Однак мені не вдалося знайти конкретного джерела, що підтверджувало б цей результат твердості. Як не знаючий складності схем, я також би вдячний вказівці на цей загальний результат твердості. Нарешті, припускаючи, що двійкове множення є - рівномірним -hard, моє запитання також може бути прочитане як: Чи залишається - рівномірним - важко, якщо ми хочемо вирішити лише найзначніший біт двійкового множення?DLogTime TC0DLogTime TC0

ОНОВЛЕННЯ: Відповідь Каве пояснює, чому двійкове множення є -hard (зменшення від COUNT). Точна складність вирішення найбільш значущого біта двійкового множення залишається відкритою (і це щедро для цього питання).TC0


У книзі iirc описової складності є доказ. Я не впевнений, що ви маєте на увазі під самим значущим бітом, він завжди є одним за визначенням.
Kaveh

Це лише жарт вашого вчителя: Біти - це 0 або 1, а найзначніший біт - це небіт 0 біт на найвищій позиції. Він дорівнює 1 за визначенням (якщо один із факторів і не дорівнює нулю). l1l2
Gamow

@Kaveh Дякую за довідку: я перевірю це. Вибачте за плутанину щодо найзначнішого біта. Я неявно припускаю, що результат друкується в 2м-1 бітах і, якщо необхідно, з ведучими 0.
Heyheyhey

@Kaveh: У Книзі описової складності згадується лише верхня межа. Я нічого не міг знайти про твердість двійкового множення.
Heyheyhey

Ви пишете: "Більше того, здається, добре відомо, що двійкове множення вже - рівномірне -hard." Чому так здається? Я знаю, що двійкове множення не в , і це все, що мені зараз цікаво. DLogTime TC0AC0
Томас Клімпель

Відповіді:


6

Множення завершено для і це добре відомий результат. Скорочення відбувається від Count (кількість 1 біт у двійковому числі). Порівняння двійкових чисел у тому можна звести до .TC0AC0MajorityCount

Щоб зменшити до зробіть наступне: врахуйте, що введення . Вставте 0s між s і називайте його . Помножте це з , який, як за винятком того, що з в ньому замінюються 1s. Виберіть . Число в середньому розділі - це відповідь. Зменшення в і показує, що .CountMulta0a1ankaiabaaik>3nabFOCountFO(Mult)


1
Дякуємо за відповіді! Так, це підтверджує, що двійкове множення завершено для TC0. Що стосується найбільш значущого біта, залишаються деякі проблеми. Найбільш значущий біт множення (111 х 111) = 110001 - це 1, а для цього (100 х 100) = 010000 - це 0. Зверніть увагу, що найбільш значущі біти множин є однаковими в обох випадках. Тому я не думаю, що загалом достатньо скласти найбільш значущі шматочки. Я щось пропускаю?
Heyheyhey

1
Якщо і , тоді MSB дорівнює 0, а MSB дорівнює 1 , незважаючи на те, що і можуть відрізнятися лише одним, найменш значущим, бітом. x=2n+1/2y=2n+1/2x2y2xy
Emil Jeřábek

3
Правка невірна. Оскільки ми додаємо m чисел, може не бути лише один біт переносу, але log m. Вирішити, скільки вона поширюється, тоді набагато складніше.
Еміль Єржабек

1
Дійсно, ігнорування всього іншого: обчислення виконання однієї позиції (скажімо, десь посередині) вже еквівалентно Count, отже, TC ^ 0-завершене.
Еміль Єржабек

1
@ Heyheyhey, формула, яку я написав, є FO і тому в єдиній AC0.
Каве
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.