Найбільш суттєвий біт цілочисельних діаграм множення та двійкових рішень


15

Нехай і y два двійкові числа з n бітами і z = x y двійкове число (довжина 2 n ) добутку x і y . Ми хочемо обчислити найбільш значущий біт z 2 n - 1 добутку z = z 2 n -хунz=ху 2нхуz2н-1 .z=z2н-1z0

Для того, щоб проаналізувати складність цієї функції в моделі двійкових діаграм прийняття рішень (зокрема, програм розгалуження, що читаються одноразово), я намагаюся шукати деякі еквівалентні вирази для випадку . Перша очевидна річ - z 2 n - 1 = 1 x y 2 2 n - 1 (тут x і y - відповідні цілі числа двійкових чисел). Я хочу отримати інтуїцію, що станеться, якщо я встановив деякі вхідні біти постійними. Наприклад, якщо я встановив найбільш значущий вхідний бітz2н-1=1z2н-1=1ху22н-1ху і y до 0 я отримую постійну функцію 0. Але біти з меншою значимістю не мають такого впливу на результат.ху

Чи є інші еквівалентні вирази для випадку які допомагають більше зрозуміти, що станеться, якщо я виправляю деякі вхідні біти? Чи є вдосконалені методи обчислення добутку двох двійкових чисел, які можуть допомогти? Або у вас є якийсь інший підхід до цієї проблеми?z2n1=1


Три запитання в останньому абзаці я вважаю досить розпливчастими. Розгляньте питання про конкретніше питання.
slimton

Питання навмисно невиразні. Можливо, у когось є новий підхід або нові ідеї щодо цієї проблеми.
Марк Бері

Ви шукаєте ширину BDD для проблеми?
Sylvain Peyronnet

Мене цікавить нижня межа розміру BDD.
Марк Бері

1
Ви маєте на увазі поліном нижній межі? Множення є в L, отже, воно має рівномірні BDD з величиною многочлена (парна ширина 5, оскільки воно є рівномірним ). NС1
Еміль Йерабек підтримує Моніку

Відповіді:


5

Цікавим джерелом є DE Knuth: Мистецтво комп’ютерного програмування, Том 4, Fascicle 1, Bitwise Tricks & Techniques; Бінарні діаграми прийняття рішень , Аддісон-Уеслі, Пірсон Освіта 2009

На сторінці 96 є BDD для всіх бітів z = x⋅y, де x і y мають 3 біти. Це показує, що у випадку з 3 бітами BDD, що представляє найбільш значний біт, має 7 нетермінальних вузлів. Дивіться зображення нижче, я перемальовував його за допомогою ваших індексів x = (x2, x1, x0) і y = (y2, y1, y0).

На сторінці 140 у книзі Кнут виникає запитання (№ 183) про BDD, що представляє найзначніший біт для множення двох чисел з нескінченно великою кількістю бітів (це називається "обмеженням ведучої бітової функції") - це схоже на те, що ви люблять! Відповідь на сторінці 223 дає перші рівні отриманого BDD та обговорює кількість вузлів на всіх рівнях, але, на жаль, він не дає алгоритму побудови такого BDD.

Найбільш значущий біт для множення двох 3-розрядних чисел

Рис. 1: Найзначніший біт для множення (x2, x1, x0) * (y2, y1, y0)


1
Дякую за довідку. Я не знав, що двійкові діаграми рішення є частиною цієї "енциклопедії програмування".
Марк Бері
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.