109: (Default)
[personal profile] 109
почитал Хайтина про halting problem. по-моему, это всё попытка побрить того, кто не бреется сам. не понимаю, как таким образом можно что-то доказать.

ну хорошо, а давайте возьмём множество не всех программ, а только всех, которые гарантированно halt. и тем же диагональным макаром построим новый number, которого в списке до того не было. будет нашa программа halting? ясен пень, она же только перебирает output других гарантированно halting программ. а почему же её в списке не было? чё мы этим доказали? по-моему, только то, что так нельзя рассуждать.

(no subject)

Date: 2008-06-01 03:59 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Интересная статья, спасибо за ссылку.

А с твоим аргументом не так вот что: когда ты говоришь, дескать, давайте возьмём множество гарантированно останавливающихся программ, ты говоришь a set, not the set, ты берёшь одно из таких множеств. Ну, например множество программ, где эн-тая печатает эн единиц. Или эн-тое натуральное число, неважно. Ты применяешь к выбранному множеству процедуру диагонализации и получаешь какое-то другое множество, тоже обладающее этим свойством, все программы в нём гарантированно останавливаются. В нём, конечно, есть программы, не входившие в первое множество, никакого противоречия в этом не возможно усмотреть.

Если же ты имеешь в виду _the_ set останавливающихся программ (я не очень понимаю, какой тогда смысл добавлять слово "гарантированно"), то, извини, его ты взять не можешь, потому что его не существует. Что, собственно, и доказывается Чайтиным и Тьюрингом. Причём ты не только знаешь, что его не существует, его несуществование больно бьёт тебя по голове как только ты пытаешься построить хотя бы его кусочек. Почитай про Работящего Бобра, уже среди машин Тьюринга с бинарным алфавитом и пятью состояниями (десять чисел от 0 до 5, блин!) есть приблизительно сорок штук, про которых как бы непонятно, останавливаются ли они вообще.

(no subject)

Date: 2008-06-01 04:32 pm (UTC)
From: [identity profile] ygam.livejournal.com
Он существует, но принадлежность к нему мы не можем узнать.

(no subject)

Date: 2008-06-01 04:54 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Хм, тут я внезапно вообще перестал понимать, что [livejournal.com profile] 109 имел в виду под процедурой диагонализации.

Там же не останавливающиеся программы рассматриваются, там рассматриваются программы, выводящие знаки какого-то числа. Многие из них выводят бесконечные числа, например пи, и, соответственно, не останавливаются, но нас это не очень расстраивает, нас расстраивает то, что мы не можем для данной конкретной программы сказать, выведет ли она очередной символ. То есть разные виды неостанавливания -- одно дело, когда наша программа раз в сто тактов выводит цифру и делает это сколь угодно долго, другое -- когда она что-то делает сколь угодно долго ничего не выводя.

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

(no subject)

Date: 2008-06-01 08:12 pm (UTC)
From: [identity profile] 109.livejournal.com
Если мы среди них выберем только программы, выводящие конечные числа за конечное время, и применим диагональный аргумент к получившемуся множеству так же, как к оригинальному, то получим программу, выводящую _бесконечное_ число.

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

(no subject)

Date: 2008-06-01 08:47 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Чайтин использует программы, выводящие бесконечные числа.

Неверзелесс, если ты попытаешься применить его аргумент к программам, выводящим конечные числа, то получишь программу, выводящую бесконечное число. И никакого противоречия, потому что у него противоречие возникает когда он как бы конструирует программу, которая с одной стороны должна принадлежать исследуемому множеству (потому что в него входят ВСЕ программы, удовлетворяющие признакам), а с другой -- не принадлежит по построению.

(no subject)

Date: 2008-06-02 01:29 am (UTC)
From: [identity profile] 109.livejournal.com
хайтин использует всякие программы, halting и не halting.

очевидным образом, halting programs выводят конечные числа.

(no subject)

Date: 2008-06-01 05:34 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
У меня какие-то странные вещи получаются...

Во-первых, под "печатает очередной символ" видимо понималось что-то вроде "проходит через специальное состояние Принт0 или Принт1", а не в содержимом ленты он искался. С ответом такая интерпретация совпадает, по крайней мере =).

Ну вот, возьмём множество программ {M_i}, для которых верно, что для любого n существует k(M_i, n), такое что в течение k ходов они пройдут через (состояние Принт1 или Принт2) хотя бы n раз или остановятся. Пусть такое множество существует, хотя мы и не знаем (и не имеем формального способа узнать), какие программы в него входят. И значения k(M_i, n) мы тоже не знаем, и вообще это вариант невычислимой Busy Beaver.

Далее, это множество счётно, не правда ли? Ну, между конечной и счётной мощностью ничего нет точно, а мощнее счётного оно вроде как быть не может, потому что является подмножеством счётного множества (всех конечных программ).

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

Значит, где-то "существует" алгоритм, который используя эту неизвестную нам биекцию берёт первую программу из множества и n = 1, получает ответ, ксорит с 1 и выдаёт наружу, затем берёт вторую программу, получает ответ для n = 2, инвертирует и выдаёт, и так далее. И приходим к противоречию.

Как его интерпретировать? Можно сказать, что этого множества всё-таки не существует, for all conceivable purposes. С другой стороны, можно запретить говорить о "где-то существующих алгоритмах", особенно использующих какие-то биекции, которые могут представлять собой невычислимые функции (и в данном случае представляют, собственно). Или заметить, что если наш алгоритм не вызывает биекцию явно, чтобы получить очередную программу, а содержит их все в себе как бы захардкоженные (хотя мы и не знаем, какие именно и в каком порядке), то он, очевидно, имеет бесконечную длину и поэтому по праву не принадлежит рассматриваемому множеству конечных программ.

(no subject)

Date: 2008-06-01 08:24 pm (UTC)
From: [identity profile] 109.livejournal.com
мы вполне можем ограничиться множеством программ не длиннее N, где N - длина нашей новой программы. и тогда оно конечное.

про проблемы с биекцией не понял. хайтин же тоже берёт какое-то множество, и "используя неизвестную биекцию" применяет канторовскую диагонализацию.

(no subject)

Date: 2008-06-01 08:49 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Чайтин не берёт "какую-то" биекцию, он берёт естественный алфавитный порядок на множестве всех программ.

Если мы ограничимся каким-то конечным N, то проблема останова превращается в P=NP, насколько я понимаю.

(no subject)

Date: 2008-06-02 01:31 am (UTC)
From: [identity profile] 109.livejournal.com
ну и мы так же возьмём, как хайтин.

проблемы останова у нас нет, у нас есть проблема, что программа одновременно в списке и не в списке.

(no subject)

Date: 2008-06-02 09:02 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Почему она должна быть в списке?

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

(no subject)

Date: 2008-06-04 08:11 am (UTC)
From: [identity profile] 109.livejournal.com
я не могу чётко и ясно, я же не математик. но я не вижу разницы с тем, что хайтин делает: давайте возьмём множество всех computable numbers, а теперь построим вот так вот ещё один number. поскольку его (по построению) нет в списке, он не computable. ровно та же фигня, как и сказать, что получившаяся у меня программа - не halting. хотя она очевидно halting.

(no subject)

Date: 2008-06-04 08:16 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Нет, ты берёшь не множество всех computable numbers, ты берёшь его подмножество, производимое останавливающимися машинами -- то есть состоящее из чисел конечной длины. А диагональная процедура даёт тебе бесконечное вычислимое слово. Ну, оно в выписанное тобой множество действительно не входит, никакого противоречия.

(no subject)

Date: 2008-06-04 11:04 pm (UTC)
From: [identity profile] 109.livejournal.com
да почему же бесконечное-то? я уже отвечал на эту тему, дежавю.

(no subject)

Date: 2008-06-05 07:27 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Ну, как ты его вычисляешь? Берёшь инвертированный первый символ первого слова (или любой, если оно закончилось раньше), инвертированный второй символ второго слова и так далее. Бесконечно! Нигде остановиться ты не можешь. И у тебя получается бесконечное слово.


Вообще это глупо как-то. Я понимаю, что от оригинального доказательства веет наёбкой и кажется, что можно его чуть изменить и получить что-нибудь прикольное. Ну, как с капиллярным эффектом, очень он подозрительный, кажется, что проделав в нужном месте дырочку можно получить вечный двигатель.

Но самое интересное, и с проблемой останова, и с капиллярным эффектом, заключается как раз в том, что они на самом деле работают, они являются проявлениями глубоких общих законов, поэтому когда честно выписываешь детали своего очередного Хитрого Плана, вместе с формулками если нужно, оказывается, что он не работает. После нескольких попыток даже начинаешь понимать, почему, начинаешь ощущать контуры этого невидимого закона, мешающего сделать фигню.

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

(no subject)

Date: 2008-06-05 07:39 pm (UTC)
From: [identity profile] 109.livejournal.com
Бесконечно! Нигде остановиться ты не можешь.

почему бесконечно, если у нас конечное количество halting programs (длиной не более нашей программы, которая производит диагональную процедуру)? мы останавливаемся, когда всех их переберём.

я хочу докопаться до истины, я только не понимаю, что можно делать с сетами, а что нельзя. мне кажется, что нельзя делать так, как хайтин, потому что если так делать, то можно доказать любую фигню, что я и пытаюсь показать.

(no subject)

Date: 2008-06-05 08:11 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
(длиной не более нашей программы, которая производит диагональную процедуру)
---
Оппа.
Ты про это ничего не говорил. И это совсем не похоже на Чайтиновское доказательство.

Но так у тебя тоже ничего не получится. Если мы конечное количество программ перебираем, то всё же просто совсем. У нас есть наша перебирающая программа, которая в явном виде генерирует перебираемые программы, так? Мы прям написать её можем: вот у нас есть процедура, генерирующая программы (гарантированно останавливающиеся, как ты хочешь), вот процедура, запускающая n-тую, получающая n-тый бит и инвертирующая его.
Если генерирующая процедура НЕ генерирует в том числе и саму перебирающую программу, то никакого противоречия нет. Она в множество не входит по построению множества, всё хорошо.
Если генерирует, то что должна сделать проверяющая процедура? Если она тупо запустит программу, то тут же и зависнет. Ни о какой "гарантированной остановке" таким образом речи быть не может, получаем противоречие с предположением о том, что генерирующая процедура генерирует только останавливающиеся программы.

Или мы можем добавить в проверяющую процедуру кусок, который, увидев что ему скормили нашу программу, выведет, например, 1. Это, кстати, точный аналог "добавления утверждения как аксиомы" в стандартном Гёделевском доказательстве. Отлично, сама программа теперь выведет 0 на этом месте. Так мы её написали. Какой в этом глубокий философский смысл -- не знаю.

(no subject)

Date: 2008-06-05 08:27 pm (UTC)
From: [identity profile] 109.livejournal.com
Ты про это ничего не говорил.

ну как же не говорил, всё время же: http://109.livejournal.com/413545.html?thread=1566825#t1566825

Но так у тебя тоже ничего не получится.

в каком смысле ничего не получится? получается противоречие, из которого следует, что так делать нельзя.

противоречие заключается в том, что процедура в сете одновременно есть (по определению сета) и нет (поскольку она выводит новый number, которого нет в сете). всё точно так же, как с computable numbers у хайтина. программа наша никогда не зацикливается, поскольку её input - это не тексты других программ, а конечные числа, вычисленные ими. точно так же, как у процедуры диагонализации, применяемой хайтиным.

про генерирование программ не понял, я про генерирование программ ничего никогда не говорил.

(no subject)

Date: 2008-06-05 08:44 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
А, я тогда не понял.

поскольку её input - это не тексты других программ, а конечные числа, вычисленные ими.
---
Нет, у неё инпута вообще нет. Она сама как-то строит исследуемый сет. Процедура построения должна быть в ней, явно.

Если ты про перебор конечного числа программ говоришь, то это уже совсем не непонятная теория множеств, это ты берёшь и пишешь программу на C#, которая как-то генерит программы (гарантированно останавливающиеся!), запускает их и записывает результаты. Если она в том числе и себя сгенерила и тупо запустила, значит, ты ошибся, потому что она зависнет и вовсе не будет гарантированно останавливающейся. Ты ошибся, когда процедуру генерации гарантированно останавливающихся программ писал, а не с теорией что-то не то.

Кстати, у меня вдруг сомнения появились, ты самое правильное доказательство невычислимости halting problem видел-то? Без диагонализации и прочего? Могу написать, если не видел.

(no subject)

Date: 2008-06-06 12:00 am (UTC)
From: [identity profile] 109.livejournal.com
никто не генерит программы, откуда ты это взял, вообще? Cantor's diagonal procedure напускается на output. то есть output этих halting/not halting programs - это input для Cantor's diagonal procedure.

первый же результат запроса http://google.com/search?q=cantor%27s+diagonal+procedure+wiki гласит, что "in reality Cantor's diagonal procedure proves nothing", так что я явно onto something here.

доказательство halting problem к данному посту не имеет отношения. отношения имеют действия, производимые хайтиным, которые у меня вызывают подозрения. ты, кстати, не прокомментировал мой пост по поводу того, что любой computable number можно вычислить программой длиной в один байт. ты согласен с этим заявлением?

(no subject)

Date: 2008-06-06 07:27 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
никто не генерит программы, откуда ты это взял, вообще? Cantor's diagonal procedure напускается на output. то есть output этих halting/not halting programs - это input для Cantor's diagonal procedure.
---
Ты чо? Какой аутпут? Откуда он у нас возьмётся?

Чайтин, на секундочку, как раз undecidability of the halting problem вот так смешно доказывает, если ты не заметил.

И делает это буквально так: наша гипотетическая программа сама генерирует и получает результаты всех программ в лексикографическом порядке, если бы она действительно могла это сделать, то мы бы получили противоречие -- она бы сгенерила вычислимое число, которого нет в списке вычислимых чисел. Процедура генерации программ есть явно, вот она. Значит, невозможно построить процедуру проверки, которая а) вернёт результат работы независающей программы, б) вернёт единицу или ещё что-нибудь для зависающей (не зависнув сама!).

Вот, никакого input никакие мистические высшие силы чайтиновской программе не дают. Это сердце его доказательства.


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

Нет, ты неправильно всё понял, перечитай теперь статью ещё раз =).


Так это, на всякий случай, ты таки знаком с простым и понятным доказательством undecidability of the halting problem, без диагонального аргумента? В википедии не оно, почему-то.

PS: Я бы крайне не рекомендовал искать в интернетах фразы вроде "Эйнштейн был неправ!" и делать выводы.

(no subject)

Date: 2008-06-06 07:46 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Кстати, случай с фиксированным конечным множеством программ вообще говоря не столько про хальтинг проблем, сколько про некорректность фразы "первое число, которое нельзя описать менее чем двадцатью словами" (если воспринимать её как описание некоего числа).

Ты именно это пытаешься сделать, написать программу, которая перебирает какую-то часть программ фиксированной длины и что-то делает с их выводом; отлично, что она должна делать со своим собственным выводом, если она входит в этот список? И откуда она его должна взять: тупо запустить если, она зависает, а так можно постулировать произвольный, конечно.

(no subject)

Date: 2008-06-06 10:17 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Я всё-таки напишу правильное доказательство, потому что оно показывает, что на самом деле происходит в доказательстве Чайтина.

Итак, берём машину Тьюринга. Конкретный механизм, это важно, и я хочу подчеркнуть, что мы не говорим о "программах вообще", мы говорим предельно конкретно. Фиксируем способ записи программы нулями и единицами -- ну, там, фиксируем способ записи чисел префиксным кодом, записываем количество состояний, записываем длину алфавита, для каждого состояния записываем все переходы и так далее.

Предположим, что у нас есть машина тьюринга А, которая получает на ленте закодированную машину тьюринга, закодированное начальное состояние ленты и оставляет 1, если та МТ останавливается для тех данных, или 0, если нет. Но сама обязательно останавливается рано или поздно. Я буду писать A(M, L) = 1, если машина M останавливается на данных L.

Делаем машину А1(M) = A(M, M). То есть берём с ленты код машины, клонируем его и запускаем машину А. Ещё раз подчеркну, мы вполне конкретно это делаем, если у нас есть C# класс, реализующий машину тьюринга, мы вызываем у него конкретные методы "добавить состояние", "добавить переход" и так далее, дописывая небольшой кусочек кода, копирующий данные.

Делаем машину А2(М), которая вызывает А(М) и, если та вернула 1 (то есть сказала, что M(M) останавливается), то уходит в бесконечный цикл. Иначе останавливается и всё.

Запускаем А2(А2). Раз мы предположили, что А обязательно останавливается, то и А2(А2) остановится. Это значит, что А1(А2) выдала 0 (единственный способ для А2 не зависнуть). Это значит, что А(А2, А2) выдала 0. Это значит, что А2(А2) не останавливается. Получили противоречие, следовательно, такой машины А не может существовать и проблема останова undecidable.

Теперь, что делает Чайтин. Он точно так же предполагает, что у нас есть машина А, проверяющая останов данной ей машины на данной ей ленте. Но модифицирует её он по-другому. Он предполагает, что у нас есть два фиксированных состояния, первое и второе например, соответствующие выводу очередной цифры.

Он строит машину А1(M, n), которая патчит данную ей машину так, что та останавливается ровно после n проходов через первое или второе состояние, затем запускает А(M*, "") (на патченной машине, с пустой лентой), которая говорит, дойдёт ли M до n-той цифры, если да, то узнаёт n-тую цифру и выводит её, иначе выводит 0. Надеюсь, ты понимаешь, что это можно сделать, и не очень сложно (особенно если performance is not a worry).

Он строит машину А2(), генерирующую все возможные машины M_i в лексикографическом порядке, вызывающую А1(M_i, i) и выводящую отрицание очередного полученного значения (то есть проходящую через 0 если вернули 1 и наоборот).

Он запускает А2(). Дальше он, в статье, говорит много общих слов, которые действительно не очень убедительны. На самом же деле всё просто: по построению А2 в какой-то момент вызовет А1(А2, n), ну, с каким-то конечным n, номером самой А2. Полученный результат A1 инвертирует и возвращает как n-тый бит, это то же самое n. Теперь, по построению мы видим, что А2 не зависнет. Следовательно, А1(А2, n) выдаст именно тот бит, который выдаёт А2 на n-той позиции. Но А2 полученный бит инвертирует и выдаёт! Она должна выдать на n-том месте не тот бит, который она выдаёт на n-том месте, по построению! Получили противоречие. Значит, машина А пиздит -- либо зависая, либо выдавая неправильный результат (потому что "правильного" результата существовать не может).

Теперь, надеюсь, понятно, что твои попытки обмануть природу и заставить А2() перебирать не все машины, а только "гарантированно останавливающиеся", обходясь без вызова А, ни к чему не приведут. Если А2 не попадает в построенный список гарантированно останавливающихся, то никакого противоречия нет, нигде. Если же мы её туда добавляем, то она либо виснет (а, значит, мы её туда добавили неправомерно), либо выдаёт бессмысленный результат (не удовлетворяющий требованию "Выдать на n-том месте не тот бит, который n-тая машина выдаёт на n-том месте" для n равного её собственному номеру).

(no subject)

Date: 2008-06-06 12:31 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Ой, во-первых опечатался: Делаем машину А2(М), которая вызывает А1(М) и, если та вернула 1 (то есть сказала, что M(M) останавливается), то уходит в бесконечный цикл.

Во-вторых, всё-таки два случая надо рассмотреть. Если А2(А2) останавливается, то всё так, как я описал. Если А2 не останавливается, то она не останавливается именно потому, что ушла в бесконечный цикл когда А1 вернула 1. Потому что А1 останавливается всегда. Тогда, раз А1(А2) вернула единицу, значит, А(А2, А2) сказала, что А2(А2) останавливается, что как бы противоречит нашему предположению.

(no subject)

Date: 2008-06-01 08:08 pm (UTC)
From: [identity profile] 109.livejournal.com
то, извини, его ты взять не можешь, потому что его не существует.

да, но хайтин-то делает то же самое. он берёт множество _всех_ computable numbers, а потом строит number, отличный от всех numbers в этом множестве. и на основании этого этот number считается uncomputable. точно так же можно сказать, что исходного сета не существует.

(no subject)

Date: 2008-06-01 08:51 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Нет, нет, он не так делает, он берёт множество всех программ. Он явно его предоставляет, вместе с процедурой энумерации. И вот получающиеся числа он называет computable.

(no subject)

Date: 2008-06-02 01:33 am (UTC)
From: [identity profile] 109.livejournal.com
число, получившееся в результате применения диагональной процедуры, он называет uncomputable. почему? потому что его в списке computable не было.

(no subject)

Date: 2008-06-03 08:09 am (UTC)
From: [identity profile] sasha-gil.livejournal.com
Твоё рассуждение доказывает конкретный факт (а не то, "что так рассуждать нельзя"): какой бы ты способ "гарантии остановки" не изобрёл, он будет неполным (отталкиваясь от данного способа диагональным методом ты укажешь новую "заведомо останавливающуюся" программу, которую данный способ пропустил). Нельзя придумать программу, перечисляющую все останавливающиеся программы.

(no subject)

Date: 2008-06-05 07:42 pm (UTC)
From: [identity profile] 109.livejournal.com
отлично, значит нельзя говорить, что число, получившееся в результате диагональной процедуры, uncomputable, только потому, что его не было в списке computable numbers, с которого мы начали? в чём разница между тем, что я делаю и тем, что хайтин делает?

(no subject)

Date: 2008-06-07 07:51 am (UTC)
From: [identity profile] sasha-gil.livejournal.com
(пардон)
Хайтин (на самом деле он пересказывает построение Тьюринга) не вводит дополнительного требования "незацикливаемости" и без этого требования у Тьюринга получается более общий и фундаментальный результат, чем в твоём рассуждении.

В твоём рассуждении тоже получается осмысленный результат, не бессмыслица (как, как мне кажется, ты полагаешь). Я могу попробовать это объяснить в отдельных репликах. А то я уже напечатал довольно подробный текст и потерял, теперь буду кусками.

(no subject)

Date: 2008-06-07 07:59 am (UTC)
From: [identity profile] sasha-gil.livejournal.com
Во-первых, ты отталикиваешься от "гарантированно halting программ". Возвращаясь к заметке Хайтина, я тебя поправлю. Тебе интересны не "гарантированно останавливающиеся" программы (такие могут выводить поциферно только числа из определённого подмножества рациональных чисел, поскольку в некий момент прекращают работу - значит, все ненапечатанные цифры забиваются нолями), а "гарантированно незацикливающиеся", то есть продолжающие печатать цифру за цифрой (не "зависающие" на бесконечное количество шагов после печати очередной цифры), согласен?

(no subject)

Date: 2008-06-07 08:01 am (UTC)
From: [identity profile] sasha-gil.livejournal.com
Далее, для проведения диагонального метода тебе нужен алгоритм (выразимый в данном формализме), перечисляющий такие программы. Я могу привести очевидный пример такого алгоритма, если тебе любопытно.

(no subject)

Date: 2008-06-07 08:04 am (UTC)
From: [identity profile] sasha-gil.livejournal.com
НаконецЮ отталкиваясь от данного алгоритма, ты диагональным методом строишь доказанно незацикливающуюся прогамму, которую данный алгоритм никогда не выведет как "незацикливающуюся" (в терминологии этого алгоритма).

(no subject)

Date: 2008-06-07 08:09 am (UTC)
From: [identity profile] sasha-gil.livejournal.com
Результат? Свойство "незацикливаемости" невыразимо конструктивно. Его легко выразить в формальной математической системе с помощью квантора сущесвтования. Однако, когда ты пытаешься построить конструктивное определение (без квантора сущесвтования, но с алгоритмом перечисления "незацикливаемых" программ), оно всегда оказывается неполным (по данному алгоритму можно построить "незацикливаемую" программу, которую алгоритм никогда не выведет в его списке "незацикливаемых").

Я понятно излагаю? Мне пока вроде всё понятно. Дай знать, если тебе нужны дополнительные пояснения.

(no subject)

Date: 2008-06-07 08:18 am (UTC)
From: [identity profile] sasha-gil.livejournal.com
иными словами, у тебя получается известный результат типа "свойство 'незакливаемость' невычислимо". Чайтин же рассуждает о других результатах, нет?

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags