Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.97/37: Рейтинг темы: голосов - 37, средняя оценка - 4.97
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418

Проблема останова. В чём противоречие?

18.11.2021, 08:29. Показов 8163. Ответов 176
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Расскажите пожалуйста, в чём суть проблемы останова и как Тьюринг определяет и доказывает отсутствие оракула?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2021, 08:29
Ответы с готовыми решениями:

Проблема применимости и проблема останова
Привет! Как бы я не бился - никак не могу понять проблему останова и применимости алгоритмов в целом. Хочу попросить прям полное объяснение...

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

Выдает ошибку, а я не могу понять в чем проблема. В чем проблема, скажите пожалуйста!
dx=0.0005; epsillon=0.00002; i=0; for x= 0:0.0005:3 i=i+1; if x<1 y (i)=-1; elseif x<2 S=0; ...

176
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
18.11.2021, 09:33
Проблема остановки
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
18.11.2021, 10:13  [ТС]
Простите за скрин, сижу оффлайн. Почему это не решение?
Миниатюры
Проблема останова. В чём противоречие?  
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
18.11.2021, 10:23  [ТС]
Shamil1,

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
OraculThinks(function, arguments)
{
    if(IntoAnotherOracul())
    {
        //Остановится
        return true;
    }
    else
    {
        if(HaltedOutsideOracul(function, arguments))
        {
            //Остановится
            return true;
         }
         else
         {
             //Не остановится
              return false;
          }
        
    }
}
Добавлено через 1 минуту
Если эту функцию передать в себя с аргументом в качестве себя с аргументом в качестве себя..... и так до бесконечности, то она не зависнет и не ошибётся
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
18.11.2021, 11:31
Aycon,
Это "неправильный" анализатор. В доказательстве используется другой - который НЕ останавливается, если тестируемый алгоритм останавливается.
C#
1
2
3
4
5
6
        while(HaltedOutsideOracul(function, arguments))
        {
            //Остановится
         }
         //Не остановится
         return 1;
Добавлено через 4 минуты
Цитата Сообщение от Aycon Посмотреть сообщение
Почему это не решение?
Решение какой задачи?
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
18.11.2021, 12:03  [ТС]
Почему он неправильный? По определению, которым вы поделились, Oracle делает:
Даны описание процедуры и её начальные входные данные. Требуется определить: завершится ли когда-либо выполнение процедуры с этими данными; либо, что процедура всё время будет работать без остановки.
Тьюринг привёл частный случай программы Oracle и опроверг его. В чём достижение? Этим его примером не ограничивается множество программ, которые решают поставленную задачу

Да, я слышал о теореме Гёделя о неполноте. Она доказывается через диагональный аргумент Кантора, который контринтуитивен и не кажется мне надёжным.

Добавлено через 4 минуты
Решение - решение проблемы остановки

Добавлено через 3 минуты
Shamil1, ответ выше
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
18.11.2021, 16:24
Цитата Сообщение от Aycon Посмотреть сообщение
Тьюринг привёл частный случай программы Oracle и опроверг его. В чём достижение?
Это не программа Oracle. Это вход, для которого гипотетический Оракул не сможет выдать правильный ответ.

Предположим, что Oracle(code, input) существует.
Подаём ему на вход code = input = "void F(string x) { while (Oracle(x, x)); }".

Вопрос, что вернёт Оракул?
1
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
19.11.2021, 07:28  [ТС]
Shamil1, мой вернёт true

Добавлено через 5 минут
Shamil1, хотя нет, в данном примере он вернёт false.

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

Добавлено через 3 минуты
Shamil1, всё я понял, кажется. Второй оракул лежит в условии выхода из цикла, но не в цикле. Да, он был прав.

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

Добавлено через 5 минут
Shamil1, сложная тема кароч, на грани полезности

Добавлено через 23 минуты
Shamil1, а если бы в данном примере все оракулы, кроме первого вернули бы false. Вы бы посчитали это корректным результатом? Все оракулы солгали бы кроме первого в рекурсии
0
Модератор
Эксперт функциональных языков программирования
3132 / 2279 / 469
Регистрация: 26.03.2015
Сообщений: 8,870
19.11.2021, 12:34
Оракул, по определению, должен выдавать правильный ответ для любого кода. В том числе, и для кода, который вызывает этот самый Оракул.

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

По поводу полезности, вопрос сложный. Мы, ведь, можем дать новое определение - ПочтиОракул, который возвращает правильный ответ для любого кода, не вызывающего этот самый ПочтиОракул. В этом случае потребуется другое, более сложное доказательство, что такой ПочтиОракул не существует. Интуитивно, это очевидно... но как доказать строго математически?

Цитата Сообщение от Aycon Посмотреть сообщение
Все оракулы солгали бы кроме первого в рекурсии
Проверяемый код вызывает одну и ту же чистую функцию (одного и того же Оракула) с одним и тем же входом.
1
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
19.11.2021, 12:50  [ТС]
Shamil1, Да, вы правы. Пойду писать своего почти Оракула для анализа кода на brai**** без ограничений
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
28.11.2021, 22:45  [ТС]
Shamil1, прошу прощения за душноту, но у меня есть предложение чистой функции, которое решает данный парадокс.

Положение 1:
Представим себе множество всех программ, записанных в виде последовательности символов некоторого конечного алфавита. Например, в двоичном виде. Некоторые последовательности могут быть бесконечны в длинну, в соответствии с определением входных данных на бесконечной ленте машины Тьюринга. Таким образом, любая программа представима в виде последовательности (возможно бесконечной) символов конечного алфавита. Упорядочим набор таких последовательностей следующим образом:
1) На нечётных местах находятся последовательности бесконечной длинны, на чётных - последовательности конечной длинны.
2) Каждая конечная последовательность возрастает, если читать её справа налево.
3) Каждая бесконечная последовательность возрастает, если читать её справа налево от того места, начиная с которого в последовательности бесконечно идут нулевые символы.
4) Первая строка всегда заполнена единицами.

Таким образом, у нас есть следующая последовательность:
1111 1111 111...
0
0000 0000 000...
1
1000 0000 000...
01
0100 0000 000...
11
1100 0000 000...
...
И так далее.
По аналогии с диагональным аргументом Кантора, найдём такую последовательность символов, которой нет в данном порядке.
Для этого возьмём инвертированный бит первой строки, затем инвертированный бит третьей строки и так дальше для всех нечётных строк. Последовательность получится бесконечной длинны, таким образом она будет отличаться от всех чётных (конечных) записей. От всех нечётных записей, она будет отличаться по крайней мере одним битом. Таким образом, существует такая последовательность Q, которая не является ни одной из существующих программ. Запомним её.

Положение 2:
Оракул содержит исполняемый код в своей реализации, а также последовательность Q, которая не препятствует её исполнению.
В момент исполнения Оракул проверяет, существует ли данная последовательность во входных данных, и если существует - возвращает false, если количество таких последовательностей чётно и true, если количество - нечётно, если не существует - работает как оракул.

В чём я ошибаюсь?
Я полагаю, что диагональный аргумент Кантора не работает, это софистика, но я его использую, дабы исключить проблему остановки, либо его.
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
29.11.2021, 10:57
Цитата Сообщение от Aycon Посмотреть сообщение
Представим себе множество всех программ, записанных в виде последовательности символов некоторого конечного алфавита.
Не совсем понятно, что за множество вы рассматриваете? Это множество каких-то выбранных вами алгоритмов? Или множество абсолютно всех существующих алгоритмов? Какова, на ваш взгляд, мощность такого множества?
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
29.11.2021, 11:12  [ТС]
Sindbad_M, всех алгоритмов.
Википедия говорит, что мощность - это характеристикиа конечного множества:

Мо́щность, или кардина́льное число́, мно́жества (лат. cardinalis ← cardo «главное обстоятельство; основа; сердце») — характеристика множеств (в том числе бесконечных), обобщающая понятие количества (числа) элементов конечного множества.

Добавлено через 37 секунд
Если я правильно понял
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
29.11.2021, 11:16
Цитата Сообщение от Aycon Посмотреть сообщение
всех алгоритмов
т.е. абсолютно всех существующих алгоритмов, так?

Цитата Сообщение от Aycon Посмотреть сообщение
Википедия говорит, что мощность - это характеристикиа конечного множества:
нет же:
Цитата Сообщение от Aycon Посмотреть сообщение
характеристика множеств (в том числе бесконечных)
Ок. Спрошу проще. Сколько элементов в этом множестве?
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
29.11.2021, 11:19  [ТС]
А, ок, неправильно. Сейчас разберёмся

Добавлено через 1 минуту
Элементов бесконечно много. Мощность как у натурального ряда. Мне не приходит в голову последовательность, которой нет в этом множестве

Добавлено через 1 минуту
Sindbad_M, написал выше, забыл обратиться
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
29.11.2021, 11:29
Цитата Сообщение от Aycon Посмотреть сообщение
Мне не приходит в голову последовательность, которой нет в этом множестве
как так? А Q?

И все-таки, чтобы потом не было недоразумений, вы рассматриваете множество абсолютно всех существующих алгоритмов, так?
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
29.11.2021, 11:39  [ТС]
Sindbad_M, да, так точно!

Q не принадлежит этому множеству, я не представляю себе такую последовательность. Ровно как и последовательность, которую выводят с помощью Диагонального аргумента Кантора. Поэтому я и говорю , что на мой взгляд его доказательство несостоятельно. Таким образом я хочу развеять одну из этих теорий - проблема останова или диагональный аргумент Кантора.

Добавлено через 3 минуты
Sindbad_M, Кроме того, если вы посмотрите внимательно, вы увидете, что эта последовательность Q -
0111 1111 1111 1111...

Хотя, я всё сделал по правилам, вроде бы.Кантор обошёл это нечестным путём, ведь он не указал в каком порядке мы упорядочиваем последовательность, а это важно. Я мог поступить также и сказать "упорядочим в каком-нибудь порядке", но я хочу разобраться, а не слукавить.
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
29.11.2021, 12:25
Aycon, ну если уж вы рассматриваете не просто последовательности из {0, 1}, а именно алгоритмы, то прежде чем вы перейдете к финалу - пляскам над диагональным аргументом, нужно проговорить множество деталей.

Итак,
1. Есть множество всех возможных алгоритмов. Если алгоритмы-оракулы существуют, то они также являются элементами этого множества, верно?

2. Что символизируют бесконечные цепочки {0, 1}? Обычно алгоритмом называют пусть и сколь угодно длинную, но конечную цепочку команд. Что такое алгоритм бесконечной длины?

Это если говорить об алгоритмах. Если же говорить о множествах, то

Цитата Сообщение от Aycon Посмотреть сообщение
Мощность как у натурального ряда.
Что-то мне кажется, что больше. Вы ввели в множество любые последовательности бесконечной длины, мощность будет как у множества вещественных чисел. Если считаете что множество счетное - доказывайте. Соответственно, вызывает сомнение возможность упорядочить элементы вашего множества описанным способом, т.к. на нечетных местах расставляются элементы подмножества имеющего бОльшую мощность, чем на четных.
0
13 / 11 / 2
Регистрация: 07.05.2015
Сообщений: 418
29.11.2021, 12:42  [ТС]
Sindbad_M,

1. Верно (догадываюсь к чему вы клоните)
2. Что-ж, позвольте уточнить, вы рассматриваете алгоритм без входных данных? (Лента Тьюринга)
Тогда да, только конечной. Это упростит мне задачу.
3. Если диагональный аргумент не работает - теория о мощностях множеств, которая на нём зиждется - тоже.

4. Как доказать отсутствие помледовательности, не входящей в описанный выше порядок? Не могу пока представить. У меня есть вопросы к периодическим (повторяющимся) последовательностям, а также иррациональные в двоичном представлении числа, то есть, когда их последовательность апериодична (т. е. все остальные), но я могу найти каждого их соседа слева и справа в порядке. Однозначно. А затем, по индукции если у них есть место в этом ряду, у их соседей есть место в этом ряду, у соседей их соседей есть место в ряду, то исходная последовательность и все её соседи в этом ряду. Мне кажется, это необходимое условие, но недостаточное. Не чувствую где цепляется...
0
485 / 411 / 126
Регистрация: 23.05.2016
Сообщений: 1,653
29.11.2021, 12:55
Цитата Сообщение от Aycon Посмотреть сообщение
вы рассматриваете алгоритм без входных данных?
Я ничего самостоятельно не рассматриваю и не строю собственных теорий, а только разбираю ваши рассуждения. Поэтому и прошу объяснить, что вы называете алгоритмом.

Цитата Сообщение от Aycon Посмотреть сообщение
, но я могу найти каждого их соседа слева и справа в порядке. Однозначно.
Запишем число Пи в виде бесконечной непериодической двоичной дроби и уберем символ разделения целой и дробной части. Для получившейся последовательности найдите левого и правого соседа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.11.2021, 12:55
Помогаю со студенческими работами здесь

VsCode и Rust проблема с точками останова
Всем привет. Начал изучать Rust, столкнулся с такой проблемой: в VsCode не срабатывают точки останова. Использую вот такую конфигурацию...

Проблема останова лжеца Гёделя и брадобрея Кантора
Наваял тут трактат о логике и основаниях математики. Расскажите, пожалуйста, в чём я не прав.

Подскажите, в чем ошибка (exe вызвал срабатывание точки останова)
Код #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <Windows.h> #include <locale> using namespace std; ...

В чем заключаются ошибки в работе программы.Ошибка "вызвал срабатывание точки останова."
Matrix.h #ifndef MATRIX_H #define MATRIX_H #include <ostream> class Matrix { private: int **ptr; // указатель на матрицу ...

Проблема с кодом. Выдает ошибку, я не могу понять в чем проблема
Работаю первый раз с Maple. Установлен версии 2015 года. Выдает ошибку я не могу понять в чем проблема Вот код: restart: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru