uz
Feedback
Математические байки

Математические байки

Kanalga Telegram’da o‘tish

Рассказы про разную математику. Архив: http://dev.mccme.ru/~merzon/mirror/mathtabletalks/

Ko'proq ko'rsatish
4 259
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
+130 kunlar
Postlar arxiv
(спасибо Анне Горденко за рисунки :) )

И получим классический парадокс лжеца: если он останавливается, то он должен был бы зависнуть из-за того, как мы его испортили (вместо того, чтобы напечатать "OK"), а если он зависает, то должен был бы добросовестно напечатать "FAIL" и остановиться.

А теперь запустим его самого на себе:

Испортим эту программу (которая должна была бы давать ответ всегда): пусть она зависает вместо того, чтобы печатать "OK" — но аккуратно печатает "FAIL":

Потому что — пусть такой алгоритм ( = программа) существует:

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

То есть — есть очевидные случаи (скажем, если первой же командой идёт "закончить работу", или первым же делом программа сваливается в бесконечный цикл).

А именно — если мы рассматриваем компьютер (с бесконечной памятью; машину Тьюринга, чтобы формализовать слово "компьютер"), на котором будем запускать программы — то нет никакого универсального алгоритмического способа по любой программе правильно сказать, закончит ли она когда-нибудь работу, или нет.

В этом месте должна бы начинать звучать драматическая музыка — потому что на слова "определить, сколько времени нужно ждать" одной из первых ассоциаций является алгоритмически неразрешимая проблема останова.

И возникает вопрос: хорошо, а как определить, сколько ждать надо?

То есть — вот здесь, например, программа действительно делает недостаточно итераций, и под этим увеличением рисует заметно-неправильное множество.

Для контроля — вот картинка, которую тут строит программа XaoS (спасибо Михаилу Раскину за наводку):

Внутри этих спиралей есть отталкивающая периодическая орбита периода 13 — с чуть большим 1 по модулю мультипликатором (производной за период): | 0.9998485 - 0.0618222 i | = 1.001758 И, соответственно, спирали должны на неё наматываться (потому что множество Жюлиа инвариантно).

Но нет — всё правильно: есть 13 переставляющихся по циклу спиралей; здесь 13 это число Фибоначчи — знаменатель приближения α как 8/13 — это то самое место, где я почти-оборвал цепную дробь золотого сечения 1/(1+1/(1+1/(1+1/(...)))).