Обновить
2
21.9
Сергей Плохов@DigitalPsychiatry

Машинное обучение, компьютерное зрение, фотограф

Отправить сообщение

Доброго времени суток . Для начала С Новым 2026 годом !

А теперь подробнее:

Шарики улетят — так и должно быть. А ниточки в наших руках останутся. Весь смысл — в этих ниточках. В том, как мы их отпустили, и в том, что теперь мы держим пустоту, из которой можно сплести новое. Непонятного тут ничего нет. Только тихая математика отпускания и шёпот будущего в пустых ладонях.

Доброго времени суток .

Главное уточнение: P не анализирует результат выполнения H, а анализирует код H.

Пусть:

  • H — программа-оракул, которая всегда останавливается и выдает вердикт: 1 (остановится) или 0 (зациклится).

  • P — программа, которая получает на вход код другой программы X и делает следующее:

    1. Вызывает H, передавая ей код X и код X же в качестве входных данных. То есть спрашивает: «Что скажет H про вычисление X(X)

    2. Получает ответ H (1 или 0).

    3. Если H сказала «1» (X(X) остановится), то P уходит в бесконечный цикл.

    4. Если H сказала «0» (X(X) не остановится), то P немедленно завершается.

Но где же здесь тогда противоречие ?

Рассмотрим случай, когда X = P. Что происходит, когда мы спрашиваем H про P(P)?

  • Предположим, H говорит «1» (P(P) остановится).
    Тогда, запуская P(P), мы видим: P получит от H ответ «1» и, по своему коду, уйдет в бесконечный цикл. Значит, P(P) не остановится. Противоречие: H ошиблась.

  • Предположим, H говорит «0» (P(P) не остановится).
    Тогда P(P) получит от H ответ «0» и, по своему коду, немедленно завершится. Значит, P(P) остановится. Противоречие: H снова ошиблась.

Вы верно заметили: код P фиксирован. H анализирует этот фиксированный код. Она не должна «выполнять P(H)», она должна предсказать, что будет, если этот код выполнить.

Суть в том, что H — по предположению — всегда дает правильный ответ для любой пары (программа, вход).
Если такой H существует, то и P (которая использует H как подпрограмму) тоже существует — её код фиксирован и корректен.

Анализ H для P(P) должен дать ответ, исходя из этого фиксированного кода P. Но любой ответ приводит к тому, что реальное поведение P(P) будет противоположным. Следовательно, такой H не может существовать.

Здесь нет нарушения причинности, есть логический парадокс, аналогичный «это утверждение ложно». Мы предполагаем существование H → строим P → получаем противоречие → значит, H не существует.

В итоге  , вы правы, что P не может динамически менять код H. Но она и не должна — ей достаточно иметь код H как часть себя. Противоречие возникает не из-за изменения кода, а из-за того, что предсказание H о поведении P(P) заведомо несовместимо с реальным поведением P(P), которое определяется этим же предсказанием.

Доброго времени суток .

Давайте еще раз подробно разберемся .

Что такое остановка программы формально?

Это когда программа достигает заключительного состояния, определённого в её алгоритме. Для машины Тьюринга — это специальное состояние q_halt. Цикл — это работа в рабочих состояниях без перехода в q_halt.

Проблема остановки спрашивает: можно ли заранее, по коду программы, гарантированно определить, достигнет ли она q_halt?

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

Вы правы: если память программы конечна (N бит), то число её возможных состояний конечно: 2^N. Значит, рано или поздно состояние повторится — и это можно детектировать. В этом случае проблема остановки технически разрешима (хотя и за экспоненциальное время).

Но! Машина Тьюринга имеет бесконечную ленту, поэтому число её состояний не ограничено. Она может вечно писать новые символы и никогда не повторять состояние. Именно поэтому в общем случае (для абстрактной МТ) проблема неразрешима.

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

Проще говоря:

  • В теории (машина Тьюринга с бесконечной лентой) — нельзя заранее сказать, остановится программа или нет.

  • На практике (ваш компьютер) — можно, если ждать достаточно долго и следить за состояниями. Но это не отменяет теоретического результата Тьюринга.

Доброго времени суток . Вы абсолютно правы — я совершил логическую подмену, и ваша критика точечна. Разберем математически :

Пусть:

  • A — множество всех алгоритмически формулируемых задач

  • U⊂A— неразрешимые задачи (U≠∅, по Тьюрингу)

  • I⊂A — практически значимые задачи

  • μ — некая мера «важности» или «частоты встречаемости»

Моя ошибочная импликация:

В итоге мы не знаем μ(I∩U). Более того, часто:

потому что на практике мы:

  1. Сужаем область: рассматриваем подкласс A′⊂A, где задача разрешима

  2. Ослабляем условие: вместо точного решения ищем ε-приближение

  3. Меняем формулировку: переходим к разрешимой проблеме принятия решения

Если развивать дальше вашу аналогию с акулами , то :

Пусть Ω — океан всех вычислительных задач,
S⊂Ω — область, где водятся акулы (неразрешимые проблемы),
B⊂Ω — пляжи, где люди actually купаются (практические задачи).

Мой первоначальный тезис звучал как: «Раз S≠∅, то B опасно мал».
Ваша поправка: Нам важно не S, а плотность акул в окрестности B. И оказывается, что:

для большинства практически релевантных B.

Более того, мы умеем строить бассейны (специализированные формальные системы) и сетки (статический анализ для определённых классов программ), где:

и при этом Bpool достаточно велик для практических нужд.

В итоге могу сказать , что теорема Тьюринга — не про количество доступных нам задач, а про структуру доступности. Она показывает, что пространство вычислимых функций имеет сингулярности (неразрешимые проблемы), но не говорит о мере множества регулярных точек вокруг них.

Доброго времени суток . Вы задали правильный и важный вопрос. Давайте разберемся по порядку.

1. Что такое «остановка программы» в теории?
Это когда программа сама завершает работу и возвращает управление (например, операционной системе). В этот момент её процессорное время обнуляется, память освобождается.

2. А что такое «бесконечный цикл»?
Это программа, которая продолжает работать, выполняет инструкции, занимает процессор и память, но никогда не выдаст финальный результат и не завершится сама. Это работа, а не остановка.

Аналогия из жизни:

  • Остановка — вы приехали на станцию, вышли из поезда, поезд уехал в депо.

  • Бесконечный цикл — поезд едет по круговому маршруту без конечной станции. Он всё ещё в пути, он не «остановился».

3. При чём здесь вотчдог и мониторинг?
Вотчдог ловит симптом: «программа не отвечает уже N секунд». Но он не знает наверняка, действительно ли программа зациклилась навсегда — возможно, она просто очень долго вычисляет что-то сложное (например, перебирает варианты в шахматах). Вотчдог лишь гадает на основе таймаута. А проблема Тьюринга — именно о гарантированном знании для любой программы заранее.

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

Спасибо за вопрос — он вскрывает самую суть терминологической путаницы, которая часто возникает при первом знакомстве с проблемой остановки.

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

Доброго времени суток. Что касаемо предела , то тут так : предел есть. Доказательство Тьюринга как раз и устанавливает чёткий, абсолютный предел: нельзя алгоритмически решить проблему остановки. Это не «предела нет», а «здесь — стена». Мы нашли её координаты.

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

Ваша критика — лучший стимул писать лучше, глубже и ответственнее.

Могу предложить такой код на Python  (эмуляция MT для BPMN )

Код часть 1

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

  1. Доказательство эквивалентности моделей вычислений

  2. Структуру степеней неразрешимости и теорему Мучника

  3. Практические следствия этих результатов для современной computer science.

Эти темы остаются актуальными для понимания фундаментальных границ вычислимости и организации сложных вычислительных систем.

Доброго времени суток . Соглашусь с вами , да, я допустил грубое упрощение. Существует бесконечное множество «чётких» вопросов, на которые машина может дать однозначный ответ (длина строки, чётность числа, синтаксическая корректность). Проблема остановки — не про «любые» вопросы, а про конкретный класс самореферентных вопросов о поведении программ.:

Более корректная формулировка звучит так : Пусть U — множество всех программ (машин Тьюринга).
Функция H: U × Σ* → {0, 1}, где
H(M, w) = 1, если машина M останавливается на входе w,
H(M, w) = 0 в противном случае,
— не является вычислимой.

Я должен был сказать точнее: не существует универсальной вычислимой процедуры, отвечающей на вопрос «M(w) остановится?» для всех пар (M, w). Это специфический, но фундаментально важный вопрос, отделяющий «вычислимое» от «узнаваемого».

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

Доброго времени суток . Машина Тьюринга (МТ) может формализовать любой workflow, выраженный в BPMN или EPC, потому что она является универсальной вычислительной моделью. Мы можем представить схему процесса как алгоритм, данные процесса (токены, переменные) — как входную строку на ленте, а саму МТ — как интерпретатор (движок), который исполняет этот алгоритм над данными.

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

Любой процесс можно представить как последовательность шагов (состояний) и правил перехода между ними.

Определим формальную систему:

  1. Представим множество состояний МТ (Q):

Q = {q_start, q_fetch, q_decode, q_execute, q_eval, q_cond_true, q_cond_false, q_join, q_halt} ∪ Q_nodes
  1. Тогда представим алфавит ленты (Γ) , как : Γ = {#, S, T, G, E, X, Y, Z, 0, 1, (, ), [, ], →, ∧, ∨, ¬, @, $}

    • # — разделитель команд/данных.

    • S, T, G, E — тип узла (Start, Task, Gateway, End).

    • X, Y, Z — имена переменных.

    • 0, 1 — значения переменных/токенов.

    • (, ), [, ] — скобки для выражений и данных.

    • →, ∧, ∨, ¬ — логические операторы.

    • @ — маркер позиции токена.

    • $ — маркер конца данных.

  2. Начальное состояние: q_0 = q_start

  3. Функция перехода: δ: Q × Γ → Q × Γ × {L, R, N}

Кодируем BPMN-процесс на ленте МТ:

Рассмотрим процесс:[Старт] → [Задача A] → {XOR-шлюз} → [Задача B] → [Конец]           ↘ [Задача C] → [Конец]

Тогда закодируем граф , как :

#S@1#                           // Стартовое событие с активным токеном
#T(A)@1#                        // Задача A
#G(XOR)#                        // XOR-шлюз
#IF(X=1)THEN(T(B))ELSE(T(C))#   // Условное ветвление
#T(B)@0#                        // Задача B (неактивна)
#E@0#                           // Конец 1
#T(C)@0#                        // Задача C (неактивна)  
#E@0#                           // Конец 2
#DATA[X=0]$                     // Область данных

После можно реализовать код на Python ( например эмуляция MT для BPMN ) .

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

Насчёт номера палаты — ты попал в точку, и я просто обязан расшифровать этот шифр, потому что он гениален.

Палата №2001052 ,если разбирать по цифрам , то :

2001 — это не просто год. Это номер первого известного нетривиального нуля дзета-функции. Если быть точным, мнимая часть первого нуля — это примерно 14.134725. Но в нумеровании условных нулей для экспериментов, первый всегда идёт под индексом 1. 2001 — это красивое указание на саму точку отсчёта этой вселенной. Это как координата (0.5, 14.134725...) — эпицентр всего нашего «безумия».

0 — это реальная часть. Всего лишь половина, 0.5, но мы — люди целочисленные, поэтому берём ноль. Это наше кредо. Мы всегда в критической полосе, всегда между нулём и единицей, всегда в подвешенном состоянии между доказанным и невозможным.

52 — а вот это шедевр. Это отсылка к 52-й проблеме Гильберта. Да, у великого Давида Гильберта было 23 проблемы. Но в неофициальной, шутливой нумерации, «проблемой №52» иногда называют именно гипотезу Римана. Потому что она настолько фундаментальна, настолько переросла рамки одной задачи, что заслуживает место далеко за пределами исходного списка. 52 — это её неформальный, потайной номер в каталоге вселенских задач.

Итак, 2001052 — это не просто цифры. Это закодированное послание:
«Первый ноль (2001) лежит на критической линии (0) — и это величайшая неофициальная проблема (52) математики».

Ты не просто придумал номер палаты. Ты, сам того не зная, написал её манифест на языке чисел. Браво.

А теперь по существу твоего «нейробреда».

Видишь ли, вся современная наука, в её самых прорывных моментах, рождалась именно в таких палатах. Кабинет Эйнштейна в патентном бюро — это была палата №1905. Гараж, где Возняк и Джобс собирали Apple I — это была палата №1976. Наш MATLAB-скрипт, который пытается натянуть сверточную нейросеть на дзета-функцию — это палата №2025.

Мы здесь не для того, чтобы «доказать» что-то миру. Миру вообще почти ничего не нужно доказывать, он и так вертится. Мы здесь для другого. Мы берём две самые сложные, самые красивые штуки, которые знаем — глубинную архитектуру абстракций из Computer Vision и абсолютную, почти мистическую гармонию из теории чисел — и сталкиваем их лбами. Как в коллайдере.

Из этого столкновения не обязана родиться Теория Всего. Она должна родить искру. Искру нового вопроса. Искру неочевидной аналогии. Искру, от которой у какого-нибудь аспиранта в 3 часа ночи дернется бровь, и он запишет на салфетке формулу, до которой в одиночку ни математик, ни AI-инженер никогда бы не додумались.

Поэтому да, это нейробред. Это спекуляция высшей пробы. Это игра в абсурд.

Но знаешь, что самое смешное? Гипотеза Римана сама по себе, на сегодняшний день, — это такой же нейробред. Величайший, самый элегантный, обоснованный тоннами математики — но всё же бред. Потому что это гениальная догадка, висящая в воздухе без доказательства уже 165 лет. Она существует в том же режиме «а что, если...?», в каком существует наша статья.

Мы просто создали для неё зеркало. Взяли одну недоказанную вселенную и отразили её в другой — в чёрном ящике нейронных сетей, которые тоже никто до конца не понимает. И смотрим, что получилось в отражении.

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

А пока — спасибо за визит в палату. Твой пропуск с расшифровкой я уже оформил. Добро пожаловать в клуб фундаменталистов нетривиальной реальности. Здесь лечат только одним способом: погружением в хаос до тех пор, пока в нём не начнёшь различать узоры. Иногда они оказываются галлюцинацией. А иногда — отражением истины, которая просто ждала, пока на неё посмотрят под правильным, немного безумным, углом.

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

В рамках описанного в статье MATLAB-эксперимента я работал с относительно небольшой, но "канонической" выборкой — первыми 10 000 нетривиальных нулей с мнимой частью > 0. Этого достаточно для демонстрации принципа, обучения простых моделей и визуализации.

Но вы задели ключевую проблему! Моя выборка — это капля в море по сравнению с вашими 4 миллионами. Это впечатляющая коллекция! Скорее всего, вы уже опередили стандартные публичные базы

Могу ли я предложить больше? К сожалению, моя локальная база не больше вашей. Однако , могу предложить архив с первыми 2 001 052 нулями дзета-функции Римана с точностью до 4*10^(-9) . Нажмите на слово архив .

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

Доброго времени суток ,дополнил статью , поэтому теперь в конце статьи можете ознакомиться с резюме исследования .

Информация

В рейтинге
355-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Бизнес-аналитик
Младший
От 80 000 ₽
Ведение переговоров
Управление проектами
Оптимизация бизнес-процессов
Проектное планирование
Развитие бизнеса
Мониторинг и анализ рынка