функция тау
Jul. 22nd, 2008 12:06 amНедавно наткнулся, прыгая по ссылкам, на интересную статью (англ.; требует определенных познаний в теории сложности), из которой узнал о функции 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. У меня нет легкого доступа к этой статье; если кому-то нетрудно переслать или выложить, буду благодарен.
Например, если мы начнем с 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. У меня нет легкого доступа к этой статье; если кому-то нетрудно переслать или выложить, буду благодарен.
no subject
Date: 2008-07-21 10:31 pm (UTC)???
no subject
Date: 2008-07-21 10:33 pm (UTC)no subject
Date: 2008-07-21 10:37 pm (UTC)no subject
Date: 2008-07-21 10:40 pm (UTC)no subject
Date: 2008-07-21 10:42 pm (UTC)no subject
Date: 2008-07-21 10:52 pm (UTC)no subject
Date: 2008-07-22 12:36 am (UTC)весь день вертится.
no subject
Date: 2008-07-21 11:56 pm (UTC)no subject
Date: 2008-07-22 08:41 am (UTC)no subject
Date: 2008-07-22 12:23 am (UTC)no subject
Date: 2008-07-22 08:41 am (UTC)no subject
Date: 2008-07-22 10:34 am (UTC)no subject
Date: 2008-07-22 02:03 pm (UTC)Результат примерно такой, как я и предполагал выше.
no subject
Date: 2008-07-22 01:56 am (UTC)no subject
Date: 2008-07-22 08:42 am (UTC)no subject
Date: 2008-07-22 03:08 pm (UTC)no subject
Date: 2008-07-22 04:31 am (UTC)http://en.wikipedia.org/wiki/Kolmogorov_complexity
no subject
Date: 2008-07-22 08:46 am (UTC)no subject
Date: 2008-07-22 09:03 pm (UTC)В данном случае мы говорим о порождении ОДНОЙ СТРОЧКИ. Поэтому даже самый тупой способ типа "продиктовать строку" так же полон как и машина Тьюринга.
Поэтому тау - вполне осмысленный вариант уолмогоровской сложности.
Другой известный вариант: сложность строчки = длина ее lempel-ziv encoding.
Ну и вообще, сложность строчки = размер ее архивного представления каким-нибудь стандартным архиватором.
no subject
Date: 2008-07-22 09:08 pm (UTC)no subject
Date: 2008-07-22 04:56 am (UTC)Написать пользуясь операциями Алгола-60 (арифметика + степень) формулу для C(n,k)
Решается просто: 10^большой степени + 1 возводится в n-ю степень - получается строка треугольника Паскаля, откуда с помощью деления с остатком вырезается нужный коэффициент. Поскольку C(n,k) с факториалом связано довольно близко - вполне вероятно, что и факториал считается.
Кстати - интересная задачка - можно ли в тех же условиях написать формулу для n!
no subject
Date: 2008-07-22 08:11 am (UTC)no subject
Date: 2008-07-22 05:00 am (UTC)no subject
Date: 2008-07-22 02:52 pm (UTC)Тут еще не учтено, что мы потратим две операции деления, для разложения числа 15 на множители.
no subject
Date: 2008-07-22 03:13 pm (UTC)no subject
Date: 2008-07-23 01:18 am (UTC)no subject
Date: 2008-07-27 03:46 pm (UTC)Пусть ЦЛ(n) - минимальное количество применений циркуля и линейки, позволяющих увеличить данный отрезок в n раз, а Ц(n) - то же, но только циркулем (без линейки). Доказать, Ц(n)/ЦЛ(n) неограниченно (ссылка (http://rrc.dgu.ru/res/www.math.msu.su/~fpm/rus/k01/k012/k01216h.htm)).