Обчислення кількості біт великої цілої сили


10

Враховуючи два цілих числа і у двійковому поданні, яка складність обчислення бітового розміру ?n x nхнхн

Один із способів зробити це - обчислити шляхом обчислення апроксимації з достатньою точністю. Виявляється, обчислення з бітами точок може бути виконано в де - час, необхідний для обчислення добутку двох цілих чисел довжини . Це дає (не спеціально простий) алгоритм складності приблизно якщо є обмеженим на біт розмірів як і (якщо я не допустив помилки).log 2 ( x ) log 2 ( x ) k O ( M ( k ) log k ) M ( k ) k O ( s log 2 с ) s x n1+журнал2(хн)=1+нжурнал2(х)журнал2(х)журнал2(х)кО(М(к)журналк)М(к)кО(сжурнал2с)схн

Чи можемо ми перемогти де розмір і (у випадку, коли вони мають порівнянні розміри)? Чи є простий алгоритм, щоб отримати цю складність чи краще?О(сжурнал2(с))схн

Примітка: Мене цікавить складність такої теоретичної моделі, як машини Тьюрінга.


пропонуємо перенести / "просувати" це на Теоретичні інформатики
vzn

@vzn: Я не думаю, що це корисно ...
Бруно,

чому ні? це питання нагадує мені алгоритмічні атаки на гіпотезу Дійсона, наприклад, як охоплений RJLipton в 1 , 2
vzn

Просто тому, що я знайшов відповідь на своє запитання, тому мені не потрібно його іншим запитувати.
Бруно

Відповіді:


1

[редагувати] Як пропонується, я редагую свою відповідь, щоб надати більше деталей.

Відповідь на моє друге питання - ні :

Пропозиція. Обчислювальний до точності k принаймні такий же складний, як і обчислення розміру біта x 2 k .журнал(х)кх2к

Доказ. Нехай позначають бітовий розмір цілого числа y . Спочатку зауважте, що для негативного цілого числа y розмір біта y дорівнює 1 + log y .|у|ууу1+журналу

Таким чином, . Тепер 2 k log ( x ) - log ( x ) зміщений k позицій вліво. Таким чином, можна обчислити log ( x ) до точності k , просто віднявши 1 до розміру біта x 2 k і змістивши результати k позицій вправо.|x2k|=1+2klogx2klog(x)log(x)klog(x)k1х2кк


1
Чому кількість біт у дає змогу обчислити log x до k біт точності? Чи справді зменшення працює? Що робити, якщо особливий випадок, коли n = 2 k було набагато простіше / важче, ніж усі інші можливі значення n (не-потужність-два)? Чи є у вас спосіб виключити таку можливість? х2кжурналхкн=2кн
DW

@DW: Я повертаюся до цього питання після коментаря vzn. Мій доказ такий: Кількість бітів цілого числа дорівнює 1 + log y . Таким чином, кількість бітів у x 2 k дорівнює 1 + 2 k log x . Далі, 2 k log x - це те саме, що log x, але зрушено k позицій вліво. Таким чином, 2 k log x дає (принаймні) k перших бітіву1+журналух2к1+2кжурналх2кжурналхжурналхк2кжурналхк . Таким чином, якщо ви можете обчислити кількість бітів x 2 k , віднявши 1 до результату, ви отримаєте перші k біт log x . Це має сенс? журналхх2к1кжурналх
Бруно

Так, це має для мене більше сенсу! Тим більше що ви просто намагаєтесь проявити твердість. Чи можу я заохотити вас оновити свою відповідь за допомогою цього більш детального пояснення? Дякуємо, що повернулися до цього і задокументували відповідь на власне запитання.
DW
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.