Раздел 1. Предварительная информация о диофантовых множествах и т.п. Чтоб опираться на единую базу, я привожу необходимые определения и теоремы с их нумерацией из книги В.И.Игошин «Теория алгоритмов: Учебное пособие». ISBN 978-5-16-005205-2 (это издание из серии «Высшее образование», есть книга с таким же названием этого автора, но для среднего проф. образования).
Раздел 10.1. Десятая проблема Гильберта, Подраздел «Диофантовы множества и их связь с перечислимыми множествами».
Определение 1. Пусть
. Множество M называется диофантовым, если существует многочлен
с целыми коэффициентами, такой, что для всех
имеем:
Определение 2. Перечислимые множества - это такие, которые могут быть порождены некоторым алгоритмом, или которые являются множеством значений некоторых вычислимых функций.
Приведу для справки и некоторые более базовые определения, на которые опирались изложенные выше определения:
Раздел 5.1 Нумерация алгоритмов и вычислимых функций, Подраздел «Вычислимые функции».
Определение 3. Область значений функции
есть подмножество множества
:
Определение 4. Функция
называется вычислимой, если существует алгоритм, позволяющий вычислять её значения для тех наборов аргументов, для которых она определена, и работающей вечно, если функция для данного набора значений аргументов не определена.
Следующее определение соответствует Википедии (Статья «Класс NP») - оно эквивалентно определению через недетерминированную машину Тьюринга, но удобней для наших целей.
Определение 5. Язык L называется принадлежащим классу
, если существуют двуместный предикат
из класса
(то есть вычислимый за полиномиальное время) и константа
такие, что для всякого слова
верно:
где
,
— длина (разрядность) слов
,
.
Слово
называется сертификатом принадлежности
языку
.
При заданных соответствующих предикате
и константе
мы имеем массовую проблему (задачу) распознавания, относящуюся к классу задач
, а вопрос о принадлежности конкретного слова
языку
- это единичная задача «внутри» данной массовой задачи. Эту единичную задачу можно решить прямым перебором всех возможных сертификатов
с разрядностью
и проверкой
для
, чтобы обнаружить истинность хоть на одном из таких
(либо не обнаружить ни на одном, что означает тогда
). Но такой перебор по времени своей работы экспоненциально долгий.
Проблема равенства и . Вопрос состоит в том, существует ли такой способ, чтобы для любой массовой задачи из класса
, для любой единичной задачи из этой массовой задачи можно было за полиномиальное (от размера проверяемого слова
) время найти сертификат
принадлежности данного
к языку данной массовой задачи
, или выяснить, что такого сертификата нет.
Если говорить технически (опираясь на тезис Чёрча), то вопрос состоит в поиске алгоритма, на вход которому подается текст соответствующего алгоритма
, константа
, проверяемое слово
. А на выходе через полиномиальное время работы (то есть меньшее, чем
, где
и
некоторые константы) в качестве результата получается сертификат
принадлежности
к языку данной массовой задачи
, либо признак отсутствия такого сертификата (что означает тогда
).
Две следующих теоремы и их номера переписаны из книги В.И.Игошин «Теория алгоритмов: Учебное пособие» (о ней сказано в начале сообщения). Раздел 10.1. Десятая проблема Гильберта, Подраздел «Диофантовы множества и их связь с перечислимыми множествами».
Теорема 10.1.1. Всякое диофантово множество является перечислимым множеством.
Теорема 10.1.2. Пусть
и M - перечислимое множество. Тогда множество M является диофантовым множеством.
Это значит, что вместо любого алгоритма мы можем получить точно те же значения что и этот алгоритм (и никаких иных значений) из некоторого диофантова уравнения
. Где
является значением алгоритма (и частью решения уравнения) тогда и только тогда, когда
Последняя теорема позволила элементарно решить Десятую проблему Гильберта (
Теорема 10.1.3. в упомянутой только что книге) о неразрешимости диофантовых уравнений. Метод доказательства:
1. Строится алгоритм
, который:
1-а. Вычисляет произвольный заданный ему алгоритм, зависящий от одной переменной
при произвольных
из
- если такое вычисление дает результат;
1-б. Выдает в качестве своего результат только тот результат заданного ему алгоритма на заданном
, который совпал с номером этого заданного алгоритма (номером алгоритма можно считать его текст, например). А в остальных случаях (включая неполучение результата)
значения не выдавет (зацикливался, например).
2. Порожденное алгоритмом
множество (значений)
перечислимо, но не разрешимо, потому что его дополнение
отличается от области значения каждого алгоритма хотя бы одним значением (если у алгоритма есть значение равное его номеру, то в
- нет, а если у алгоритма нет такого значения, то оно есть в
).
3. Соответственно множеству
было построено (по
Теорема 10.1.2.) диофантово уравнение
4. Это уравнение неразрешимо в силу п.2.
5. Если бы диофантовы уравнения были разрешимы, то подставляя произвольное число в
в уравнении
, можно получить некое диофантово уравнение, и выяснять - решается ли оно и принадлежит ли
множеству
либо множеству
.
6. п.5 невозможен в силу п.4, поэтому диофантовы уравнения в общем случае неразрешимы.
Теорему 10.1.2 доказал Ю.В. Матиясевич, а базу для доказательства заложила группа американских математиков Р.Робинсон, Х.Путнам, Дж. Робинсон, М.Дэвис. Они свели задачу к доказательству диофантовости отношения
и еще к более частному случаю. А Ю.В. Матиясевич нашел конструкцию построения искомого полинома по свойствам перечислимомго множества при помощи последовательности чисел Фибоначи.
Раздел 2. Построение доказательства (?) через диофантову неразрешимость. Идея доказательстваФактически, доказательство неразрешимости диофантовых уравнений опиралось на канторову процедуру диагонализации - пусть и неявно сделанную для
(
является дополнением к перечислимому множеству
). И что интересно - диофантово уравнение «напрашивается» в качестве задачи из класса
в силу своей полиномиальности по времени проверки для данных переменных. И при этом диофантово уравнение может выразить свойства даже «хитрого» (и не полиномиального) алгоритма благодаря
Теорема 10.1.2. То есть - возникает идея построить алгоритм для диагонализации полиномиальных алгоритмов (построить «антиполиномиальный алгоритм» - или короче
) и таким образом доказать
на примере соответствующего данному
диофантового уравнения (обозначим его
). В некотором смысле мы хотим повторить идею доказательства неразрешимости диофантовых уравнений - путь и далеко не буквально.
Три технических решенияНам надо решить три технических вопроса:
Вопрос 1. Обеспечить, чтобы решения уравнения
были и решениями для задачи из
с учетом ограничения
(см.
Определение 5.). Ведь искомые для данного
значения
составляют «сертификат» (решающий уравнение при данном
), но могут быть очень большими, выходящими за рамки заданного ограничения.
Вопрос 2. Отличить полиномиальные функции от прочих при их диагонализации.
Вопрос 3. Обеспечить уникальность всех «сертификатов» нашей задачи. Ведь процедура диагонализации должна охватить каждый полиномиальный алгоритм, но наше уравнение
имеет дело не с номерами алгоритмов, а с их значениями (см.
Теорема 10.1.2. и комментарий за ней). А значения у разных алгоритмов могут быть одинаковыми - в отличие от их номеров.
Решения для поставленных технических вопросов следующие:
1. Достаточно в нашу задачу включить рассмотрение произвольно больших представлений данного полинома - а представление может иметь любой размер. Например, вместо полнима
записать
- где операция добавления нуля стоит сколько угодно раз. И если есть какие-то огромные значения x, y, z при которых полином равен 0, то найдется и столь большое представление данного полинома, что сумма десятичных разрядов всех этих значений будет меньше длины данного представления. И условие на полиномиальную ограниченность проверяемого сертификата будет исполнена. Поэтому зададим просто еще один параметр S, который будет задавать размер нашего представления для полинома
и обозначим представление с дополнительным размером S так:
Тогда ограничение на решения приобретет вид:
То есть, ограничения на размер сертификата в задачах из класса
всегда могут быть как угодно расширены. Принципиальным является факт наличия ограничения, что исключает возможность вечного поиска решения тогда, когда его нет. Но нас случай отсутствия корней не интересует, потому что процедуру диагонализации мы проведем при помощи явного задания значений и работать будем там, где корни у
есть.
2. Для каждого алгоритма зададим множество пар вида:
. Где
- номер самого алгоритма (в качестве номера может выступать текст этого алгоритма), а
- номер произвольного полинома от одной переменной. Этот произвольный полином будет ограничивать время работы
и позволит нам понять - является ли
полиномиальным в пределах
. Если алгоритм
является полиномиальным, то найдется и соответствующий ему
и это будет правильной парой, задающей номер данному алгоритму. А номер для пары взаимно-однозначно задает, например, канторовская нумерация. Не будем тут углубляться в технические детали, достаточно знать, что все операции между канторовым номером и членами пары полиномиальны по времени выполнения. Обозначим:
- номер канторовой пары;
- номер разбираемой в п.2 канторовой пары
;
- левый член пары с номером
;
-правый член пары с номером
.
Случай, когда вместо
у нас есть какой-то «нелепый» номер даже не-алгоритма, тоже рабочий для нашего «антиполиномиального алгоритм»
. В этом случае
выдаст такое же значение, как и в случае неполучения результата от работы заданного ему алгоритма
за время, посчитанное при помощи
. Детали будут в п.3.
Таким образом, вместо одной диагонали, мы задаем целый «лес» диагоналей, «пересекающий» каждый алгоритм по всевозможным его сочетаниям с полиномами-ограничителями. Важно, что номера любых таких «пересечений» для разных алгоритмов всегда отличается между собой.
3. Для заданного номера
наш «антиполиномиальный алгоритм»
выдаст в качестве своего результата канторовский номер
, где
:
3-а. Равен 1, если за время
получен результат
и
3-б. Равен 0, если результат от
за необходимый срок не удалось получить (включая случай номеров
, которые не являются номерами для пар алгоритм-полином), либо
.
Таким образом, мы построили определенный всюду на
алгоритм
, каждое значение
которого взаимно-однозначно соответствует аргументу, при котором оно было вычислено. И аргумент этот можно узнать по значению:
.
Замечание 1. Построенный нами
и использованный метод «множественной диагонализации» алгоритмов по полиномам задает такое соответствие между аргументом и значениями, которое является
полиномиально неразрешимым. Это в большей степени, чем «обычная» неразрешимость, подходит для задач теории алгоритмов - где угрозой является просто очень (неполиномиально) долгое время работы алгоритма. «Обычная» неразрешимость в логике разбирает менее практичную угрозу вечного вычисления.
Построение контрольной задачи из класса На базе построенного нами алгоритма
строим соответствующее ему по
Теорема 10.1.2. диофантово уравнение:
Поскольку в исходном
аргумент
соответствуют значениям
, а нам нужен аргумент
, то мы можем извлечь аргумент из значения (мы так построили
, чтобы иметь такую возможность). И перепишем наше диофантово уравнение в новом виде - уже с дополнительным условием:
В силу того, что у данного уравнения нет никаких иных корней
, кроме значений от
и эти значения однозначно связаны с соответствующими им
через
, то очевидно, что дополнительное условие никак не добавило новые и не уничтожило первоначальные корни уравнения.
Замечание 2. Конечно,
в смысле
Определение 5 - мы так строили наш
, чтобы он давал уникальное значение для каждого
. Но пока мы рассматриваем вопрос о вычислении «сертификата» - ведь в этом состоит
Проблема равенства и . Но если интересно, чтобы не было заведомо
, то и этого можно добиться:
Если удастся доказать, что наша задача из класса
полиномиально неразрешима, то в качестве слова языка
можно будет рассматривать и пару
- благо
и
полиномиально соразмерны для случаев, когда они вместе с прочими переменными являются корнями уравнения. Поэтому ограничения на время работы проверки, заданные относительно
подойдут и для случая расширения проверяемого слова компонентой
. По построению
(см. п.3) ясно, что только одна пара
для данного
будет подходящим вариантом для соответствия
. И только одна пара
для данного
- если рассматривать ее как слово - будет словом языка
.
Теперь строим соответствующую задачу из класса
:
Написано в соответствии с
Определение 5. Константы
,
зависят от степени полинома
и скорости (полиномиальной) работы функции
, разумеется. Про параметр
было сказано в п.1.
Замечание 3. И алгоритм
, и полином
вполне реальные и могут быть построены явно.
Окончание (доказательство) - в следующем сообщении.