avva: (Default)
[personal profile] avva
Недавно наткнулся, прыгая по ссылкам, на интересную статью (англ.; требует определенных познаний в теории сложности), из которой узнал о функции tau(n). tau(n) = наименьшее количество арифметических операций, из которых можно добраться до n, начиная с 1 и 2.

Например, если мы начнем с 1 и 2, и будем просто умножать каждый раз последнее полученное число на само себя: 1 2 4 16 256..., то за n шагов мы доберемся до числа 22n. Так что в принципе за n шагов можно добраться довольно далеко. Кроме того, тривиально добраться до самого числа n за n шагов (просто сложить 1 n раз) и даже за О(log(n)) шагов (используя двоичное разложение числа, перемножать двойки и складывать нужные разряды).

В контексте алгоритмической сложности это понятие легче рассматривать в применении к последовательностям чисел, а не одному числу. Пусть есть последовательность {xn}; скажем, что она легко вычислима, если есть многочлен p(x), так, что tau(xn) ≤ p(log(n)) для всех n. Говоря словами, последовательность легко вычислима, если вычислимость ее членов растет не быстрее, чем логарифм n (возможно, в какой-то степени).

Несмотря на то, что, вычисляя по этой модели, можно добраться за малое числое шагов довольно далеко, интуитивно говоря, "сложные" числа - содержащие в себе много информации - не будут легко вычислимы. Скажем, 2n легко вычислимо, и в это легко поверить - это всего лишь n раз двойка; а n! (n факториал) - видимо, трудно вычислить, хотя пока что никто не может это доказать (сама статья демонстрирует связь между легкой вычислимостью некоторых последовательностей, например n!, и определенными гипотезами в теории сложности арифметических цепей; я эти темы совсем почти не знаю, так что для меня это потемки).

Но особенно меня заинтересовал упомянутый вскользь факт, что если в этой модели вдобавок к сложению и умножению разрешить также деление (с остатком), то - несколько странным образом - вычислить n! становится легким делом. На этот результат есть ссылка к A. Shamir, Factoring numbers in O(log(n)) arithmetic steps. Inform. Process. Lett. 8, 28-31. У меня нет легкого доступа к этой статье; если кому-то нетрудно переслать или выложить, буду благодарен.

Date: 2008-07-21 10:31 pm (UTC)
From: [identity profile] dimrub.livejournal.com
Factoring numbers in O(log(n)) arithmetic steps.

???

Date: 2008-07-21 10:33 pm (UTC)
From: [identity profile] avva.livejournal.com
Видимо, речь идет о модели, в которой каждая арифметическая операция стоит O(1), и подсчитывается только количество операций. В реальном мире арифметика обходится нам чуть подороже :-)

Date: 2008-07-21 10:37 pm (UTC)
From: [identity profile] dimrub.livejournal.com
Испугал :)

Date: 2008-07-21 10:40 pm (UTC)
From: [identity profile] ygam.livejournal.com
Всё равно маловато.

Date: 2008-07-21 10:42 pm (UTC)
From: [identity profile] avva.livejournal.com
Все претензии к Шамиру. Я, как видишь, даже статью не могу найти!

Date: 2008-07-21 10:52 pm (UTC)
From: [identity profile] dimrub.livejournal.com
Шамир, как Тарас Бульба. "Я тебя породил..."

Date: 2008-07-22 12:36 am (UTC)
From: [identity profile] amigofriend.livejournal.com
"Я тебя парадигма..."
весь день вертится.

Date: 2008-07-21 11:56 pm (UTC)
From: [identity profile] eterevsky.livejournal.com
Я точно помню, что в гугловой рассылке пробегала информация о доступе к библиотеке ACM. Думаю, там эта статья должна быть.

Date: 2008-07-22 08:41 am (UTC)
From: [identity profile] avva.livejournal.com
Там есть доступ только к журналам ACM.

Date: 2008-07-22 12:23 am (UTC)
From: [identity profile] max-i-m.livejournal.com
Статью послал.

Date: 2008-07-22 08:41 am (UTC)
From: [identity profile] avva.livejournal.com
Большое спасибо!

Date: 2008-07-22 10:34 am (UTC)
From: [identity profile] dimrub.livejournal.com
Ну так что, Шамир научился факторизировать за полиномиальное время - или можно выдыхать?

Date: 2008-07-22 02:03 pm (UTC)
From: [identity profile] avva.livejournal.com
Да это статья 79-го года примерно, выдыхай :)
Результат примерно такой, как я и предполагал выше.

Date: 2008-07-22 01:56 am (UTC)
From: [identity profile] spamsink.livejournal.com
Интересно, я первый догадался проверить и послать?

Date: 2008-07-22 08:42 am (UTC)
From: [identity profile] avva.livejournal.com
Проверить и послать что?

Date: 2008-07-22 03:08 pm (UTC)
From: [identity profile] spamsink.livejournal.com
Слоану.

Date: 2008-07-22 04:31 am (UTC)
From: [identity profile] yury-lifshits.livejournal.com
эта функция тау - частный случай Колмогоровской сложности
http://en.wikipedia.org/wiki/Kolmogorov_complexity

Date: 2008-07-22 08:46 am (UTC)
From: [identity profile] avva.livejournal.com
Но не очень интересный, наверное, в контексте Колмогоровской сложности? Ведь "программы" в данном случае не Тьюринг-полны.

Date: 2008-07-22 09:03 pm (UTC)
From: [identity profile] yury-lifshits.livejournal.com
Тьюринг полнота тут не к селу ни к городу. Тьюринг-полнота модели вычислений X означает следующее: любую Тьюринг-вычислимую ФУНКЦИЮ можно вычислять и в модели X.

В данном случае мы говорим о порождении ОДНОЙ СТРОЧКИ. Поэтому даже самый тупой способ типа "продиктовать строку" так же полон как и машина Тьюринга.

Поэтому тау - вполне осмысленный вариант уолмогоровской сложности.

Другой известный вариант: сложность строчки = длина ее lempel-ziv encoding.

Ну и вообще, сложность строчки = размер ее архивного представления каким-нибудь стандартным архиватором.

Date: 2008-07-22 09:08 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, я действительно глупость сказал, спасибо :-)

Date: 2008-07-22 04:56 am (UTC)
From: [identity profile] kouzdra.livejournal.com
В том, что деление нацело упрощает факториал, нет ничего удивительного: есть известная задачка (была очень давно в 239 на одной из первых школьных олимпиад по программированию):

Написать пользуясь операциями Алгола-60 (арифметика + степень) формулу для C(n,k)

Решается просто: 10^большой степени + 1 возводится в n-ю степень - получается строка треугольника Паскаля, откуда с помощью деления с остатком вырезается нужный коэффициент. Поскольку C(n,k) с факториалом связано довольно близко - вполне вероятно, что и факториал считается.

Кстати - интересная задачка - можно ли в тех же условиях написать формулу для n!

Date: 2008-07-22 08:11 am (UTC)
From: (Anonymous)
Казалось бы, факториал из биномиальных коэффициентов считается уже тривиально за логарифм операций: (2n)!=C(2n,n)(n!)^2, (2n+1)!=C(2n+1,n)(n+1)(n!)^2.

Date: 2008-07-22 05:00 am (UTC)
From: [identity profile] kouzdra.livejournal.com
PS: У Кнута, кстати, очень много места во втором томе посвящено аддитивным цепочкам - это тоже самое, только с операцией сложения. Задача оценки их длинны оказывается неожиданно сложной: например быстро выплывает то, что бинарный алгоритм возведения в степень не является оптимальным - простейший пример - 15 - там он дает 6 умножений, тогда как на самом деле достаточно 5: через разложение 15=3*5

Date: 2008-07-22 02:52 pm (UTC)
From: [identity profile] ex-andrey-t.livejournal.com
бинарный алгоритм возведения в степень не является оптимальным - простейший пример - 15 - там он дает 6 умножений, тогда как на самом деле достаточно 5: через разложение 15=3*5

Тут еще не учтено, что мы потратим две операции деления, для разложения числа 15 на множители.

Date: 2008-07-22 03:13 pm (UTC)
From: [identity profile] spamsink.livejournal.com
Простые степени тоже поддаются этой оптимизации. Вопрос в нахождении оптимального сжатия двоичной записи числа по Лемпелю-Зиву.

Date: 2008-07-23 01:18 am (UTC)
From: [identity profile] spamsink.livejournal.com
Кстати, хорошая задача: написать программу, находящую τ(n).

Date: 2008-07-27 03:46 pm (UTC)
From: [identity profile] gaz-v-pol.livejournal.com
На всероссийской олимпиаде школьников по математике когда-то меня поразила задача (автор А.Я.Канель-Белов):

Пусть ЦЛ(n) - минимальное количество применений циркуля и линейки, позволяющих увеличить данный отрезок в n раз, а Ц(n) - то же, но только циркулем (без линейки). Доказать, Ц(n)/ЦЛ(n) неограниченно (ссылка (http://rrc.dgu.ru/res/www.math.msu.su/~fpm/rus/k01/k012/k01216h.htm)).

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 10:16 pm
Powered by Dreamwidth Studios