Представьте такую ситуацию: вам дана машина, которая может выполнять сложение. Если вы ей дадите 2 + 2, то она посчитает, если вы ей дадите 183517627484638 + 68881337228585, то она опять же посчитает, однако, если вы зададите ей пример 7 * 3, то она не сможет посчитать и сломается. Тогда нам показывают машину, которая может сказать, что будет с первой машиной: пойдёт ли все по пизде или нет, и она никогда не ошибается. Вы загружаете в эту машину схему первой и задачу на сложение. Она ответит нам «Все норм». Но если вы закинете умножение, то она скажет «Давай по новой, всё хуйня».

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

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

Если нам дано описание процедуры и входящие данные, то мы не можем составить 100% алгоритм, а алгоритм, который работает не на 100% – хуйня ебаная, поэтому этот алгоритм не может быть создан.

Но для чего этот алгоритм вообще может быть нужен? Да блять для чего угодно: например, для решения гипотезы Биля (a^x + b^y = c^z, где x, y, z > 2), для нахождения нечетного совершенного числа (совершенное число – это когда сумма его делителей равна самому числу: 6 = 3 + 2 + 1), для решения гипотезы Римана и тому подобное.





Спасибо за то, что вы с нами.
С любовью, Рителлинг favorite