Сложность вычислений на абстрактных машинах

Сложность вычислений на абстрактных машинах

И.А. Лавров

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

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

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

Еще большие трудности возникают не только в физической и технической объективности, а уже в самом абстрактном подходе к понятиям, связанным с вычислительными процессами. Здесь обнаруживаются принципиально «неразрешимые» задачи на современном уровне понимания эффективности эффективных вычислений.

Теоретическим фундаментом для создания и использования вычислительных машин является современная теория алгоритмов. Ее возникновение связано с попыткой точного математического описания такого интуитивно ясного понятия как «алгоритм». Почти одновременно в 30-х годах XX в. и позднее в разных формах были даны подобные возможные описания (К. Гедель [29], А.Черч [28], С.Клини [32], Э.Пост [36], А.Тьюринг [45], А.А.Марков [9]). Э.Пост и А.Тьюринг избрали форму такого описания в виде абстрактных машин; они теперь называются машинами Тьюринга. К.Гедель,

А.Черч и С.Клини рассматривали эффективные вычисления на языке подходящим образом введенных арифметических функций; такие функции стали называться частично рекурсивными. Сейчас их предпочитают называть частично вычислимыми функциями. А.А.Марков ввел понятие «нормального алгорифма». В этом понятии была осуществлена идея точной детерминированности последовательности выполнений преобразований слов в подходящем алфавите.

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

В настоящее время на русском языке имеется несколько замечательных книг по общей теории алгоритмов

Задачей, следующей за сформированием понятия «алгоритм» в различных его ипостасях, является вопрос о возможном осознании «сложности» алгоритмов. Это так естественно. В нашей обычной речи мы часто используем такие обороты речи: « X решил трудную (или простую) задачу», «а У решил еще более сложную задачу, чем X » и пр. Каким образом можно формализовать наше интуитивное понимание сложности?

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

Общий подход к понятию сложности конструктивных объектов был разработан

A.Н.Колмогоровым [6]. Каждый конструктивный объект может быть задан различными конечными описаниями в тех или иных терминах, избранных в подходящих математических или лингвистических языках. Тогда сложностью конструктивного объекта по Колмогорову считается наименьший объем описания такого объекта.

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

Хотелось бы отметить одно специальное направление теории алгоритмов - теорию нумераций. А.Н.Колмогоров предложил систематически изучить возможные обобщения идеи К.Геделя о нумерациях нечисловых областей объектов натуральными числами. Такая нумерация логических формул позволила К.Геделю [29] доказать одну из самых знаменитых в математике теорем - теорему о неполноте арифметики Пеано натуральных чисел. Реализацией построения подобной теории нумераций занимались

B.А.Успенский [21], А.И.Мальцев [8], Ю.Л.Ершов [2]. Многие зарубежные специалисты также сумели в терминах теории нумераций доказать важные результаты в теории алгоритмов. В рамках этой теории нумераций удалось обнаружить тесные связи между теорией алгоритмов и классическими направлениями математики.

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

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

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

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

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

Некоторые фрагменты данной статьи автор использовал в своих докладах на VIII японско-российском симпозиуме по вычислительной аэрогидродинамике в Tohoku University (Япония, г.Сендай, 2003 г.) и на школе-семинаре в Международном математическом центре им. С.Банаха (Польша, г. Бедлево, 2004 г.). К докладам был проявлен большой интерес. Слушателями были в основном специалисты и молодые исследователи, занимающиеся вопросами использования вычислительных устройств и методов для решения сугубо прикладных задач. Это дает мне уверенность, что знакомство с материалами статьи будет полезным и для тех, кто занимается системным программированием, прикладными задачами и пр.

1. Сложность машин Тьюринга.

Анализируя интуитивное понятие алгоритма, А.Тьюринг [45] предложил в качестве абстрактной интерпретации вычислительных процессов работу на некоторых идеализируемых устройствах. Задача А.Тьюринга заключалась в отыскании элементарных шагов вычислений с тем, чтобы любое «мыслимое» вычисление могло быть скомбинировано из таких элементарных актов. При этом необходимо было добиться, чтобы спектр полу-

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

Аналогичные рассмотрения абстрактных вычислительных устройств были проведены Э.Постом [36].Однако в настоящее время подобные вычислительные средства называются машинами Тьюринга.

Не вдаваясь в излишние подробности, можно сказать, что основными элементами машин Тьюринга являются:

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

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

3) инженерная конструкция, которая может в каждый отдельный момент времени находиться в одном из внутренних состояний; обычно одно или несколько таких состояний считаются заключительными, т.е. машина, попав в такое заключительное состояние,останавливается;

4) программа работы машины, указывающая, что и как будет делать машина, если она обозревает конкретную информацию и находится в конкретном внутреннем состоя-

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

После выполнения такого такта работы машина Тьюринга снова попадает в некоторую ситуацию и согласно программе проделывает новый такт работы. Удобно время работы машин Тьюринга измерять тактами ее работы.

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

Если заключительное состояние не встретится ни на одном этапе работы, то машина Тьюринга будет работать бесконечно. В этом случае надо считать, что мы не получили

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

Итак, каждая машина Тьюринга может быть полностью задана набором из п символов ^,^2,...,^п, которые могут наноситься в память данной машины, набором из т

активных внутренних состояний с/,, с/, данной машины (в это число мы не

включаем заключительные состояния) и программой из п х т команд, указывающей, что делает машина, обозревая, например, символ (1 < г < п), находясь в состоянии д;. (1< у<»г) . Заметим, что в командах могут встречаться заключительные состоя-

Обычно в такой команде указывается:

а) каким символом заменяется символ ;

б) куда передвинется читающее устройство, т.е. какие единицы памяти будут обозреваться на следующем такте;

в) в какое внутреннее состояние перейдет конструкция машины.

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

Если мы внесем в память машины Тьюринга М некую информацию / (с помощью символов машины), «включим» машину, обозревая ранее оговоренную единицу памяти в некотором начальном состоянии, то машина будет «обрабатывать» эту информацию согласно своей программе. Как мы уже говорили, если машина не остановится, то мы не получим окончательной информации. Если же машина остановится, то информация J , размещенная в этот момент в памяти, будет называться результатом работы машины М на начальной информации 1 и обозначаться через J = М(1).

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

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

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

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

Такое перечисление различных программ машин Тьюринга приводит нас к перечислению, или, как говорят, нумерации всевозможных машин Тьюринга:

М0,М1,М2,...

Мы не требуем от подобной нумерации каких-либо особых свойств. Важны лишь следующие обстоятельства:

1) если нам задана программа машины М, то мы можем эффективно указать ее номер в нумерации (1);

2) если нам задана машина Мк то мы можем эффективно указать ее программу команд.

Итак, мы имеем счетный список (нумерацию) (1) всех машин Тьюринга, а по тезису Тьюринга и всех вычислительных процессов и алгоритмов. Число п называется номером или индексом машины Мн .

Интересно отметить, что, не смотря на некоторый произвол, так построенной нумерации (1), она обладает важным свойством главности: для любой нумерации {АГ,}

машин Тьюринга, удовлетворяющей свойствам (1)-(2) существует «хорошо» вычислимая функция а(х) (что это означает, будет ясно из дальнейшего) такая, что = Маш) .

Одним из крупнейших достижений А.Тьюринга было создание концепции универсальной машины. Такая машина Тьюринга и работает следующим образом: если ей задать число п и информацию 1, то и «обработает» информацию 1 как машина Мн . Таким образом, машина и в некотором смысле моделирует любую машину Тьюринга. Кстати, наши современные вычислительные устройства, как правило, работают по принципу универсальных машин Тьюринга. Такое устройство способно исполнять различные задания при соответствующем сообщении о том, какой же процесс нужно проделать.

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

В качестве варианта понятия сложности машины Тьюринга (сложности алгоритма и вычислений) К.Шеннон [42] предложил рассматривать размер программы команд машины Тьюринга, т.е. величину «х/и. Напомним, что здесь п — число допустимых для машины символов, а т — число ее внутренних состояний, не считая заключительных.

Сам К.Шеннон указал, что каждая машина Тьюринга размера пхщ может быть заменена на машины размеров 2хк и 1x2. Под заменой нужно подразумевать построение для машины М другой машины Т такой, что при некоторой кодировке информации машины МиГ осуществляют «одинаковую» обработку исходной информации.

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

Наиболее интересно оценить размеры универсальных машин Тьюринга. Первое впечатление - такие машины должны быть довольно сложными. Но это не так!

Были построены универсальные машины Тьюринга размеров 6x8 и 5x8 (С.Ватанабе [46 ] ) и даже 4x7 (М.Минский [12]).

Исследования по оптимизации пхщ до сих пор продолжаются. Однако, как нам известно, окончательные результаты еще не получены. Сошлемся лишь на работы [15],

[41], где указаны универсальные машины Тьюринга размеров

2 х 18, 24 х 2, 19x2, 10 х 3, 7 х 4, 5 х 5, 3 х 10 и даже 4x6.

Итак, для проведения всевозможных, самых замысловатых вычислений необходимо всего 24 команды!

2. Вычисления функций.

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

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

1) для задания аргументов в информацию на этапе начала работы машины; в этом случае будем говорить, что машине заданы значения аргументов;

2) для извлечения результирующего значения функции из информации, полученной на этапе остановки работы машины (т.е. когда она придет в одно из заключительных состояний, например д0); в этом случае будем говорить, что

машина вычислила значение функции.

Итак, можно считать, что машина Тьюринга М вычисляет функцию /{х1,х2,...,хп) , если, начав работу на аргументах , она остановится через

конечное число шагов и выдаст значение у= /(х1,х2,...,хп) .

Здесь нас подстерегают две неприятности. Во-первых, заключительная информация при остановке машины может не позволить нам извлечь значение функции (например,

эта информация составлена не по правилам заранее оговоренного способа задания информации о числах). Нам ничего не остается делать, как считать, что в данном случае значение функции /(х1,х2,...,хп) при таких значениях аргументов оказалось неопределенным.

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

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

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

По этой причине нам придется ограничиться вычислениями арифметических функций, т.е. таких функций, аргументы и значения которых представляют натуральные числа из множества N = {0,1,2,...} .

Итак, мы будем рассматривать лишь частичные арифметические функции /{х1,х2,...,хп) , у которых значения аргументов х1,х2,...,хп и ее значение являются натуральными числами. Для технических упрощений ограничимся в основном одноместными функциями /(х) . Рассмотрение общего случая многоместных функций мало, чем отличается от рассматриваемого.

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

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

Нам удобно перенумеровать все так получаемые функции в соответствии с нумерацией (1) машин Тьюринга

имея в виду, что (рп — та арифметическая функция, которая вычисляется на машине Тьюринга Мн . Будем называть функции из класса {(рп) вычислимыми по Тьюрингу.

По общим идеологическим установкам современной математики вычислимые по Тьюрингу функции <рп — это как раз те функции, которые могут быть алгоритмически

вычислены. Это - отражение тезиса Тьюринга, который был сформулирован раньше.

В теории алгоритмов С.Клини [32] построил другим способом, не опирающимся на машины Тьюринга, класс частично рекурсивных функций. То, что частично рекурсивные функции адекватны алгоритмически вычислимым функциям, составляет тезис А.Черча. В свою очередь было доказано, что класс вычислимых по Тьюрингу функций совпадает с классом частично рекурсивных функций. С учетом этого результата можно сказать, что тезисы Тьюринга и Черча «равнообъемны».

Для других уточнений понятия алгоритма, о которых говорилось выше, также можно ввести соответствующие понятия вычислимых функций. Удивительный феномен состоит в том, что все так полученные классы функций совпадают с классом {(рп}!

Функции { <рп } играют в математике исключительную роль. Учитывая вышесказанное, мы их будем называть частично вычислимыми (имея в виду, что «частично» понимается в смысле, что при некоторых значениях аргументов значение функции может быть неопределенным). Если функция (рп всюду определена, то она называется вычислимой (прежнее название — рекурсивная). Если мы будем ограничивать себя лишь вычислимыми функциями (т.е. каким-то регулярным способом выделять их из всего класса частично вычислимых функций), то потеряем многие замечательные свойства фундаментального класса {<рп}.

Какие принципиальные трудности могут встретиться при вычислениях частично вычислимых функций? Поясним это на следующем.

Каждая частично вычислимая функция может быть представлена в так называемой нормальной форме Клини

<Р)(х) = А\_цу В(1,х,у) = 0].

Здесь А, В — совершенно конкретные функции, довольно простого вида, вычисление которых не доставляет каких-либо трудностей. Символ /и у, называемый «оператором наименьшего числа», означает, что для данных г и х ищется наименьшее у такое, что В(1,х,у) = 0 . Основная сложность всех вычислений заключена в нахождении

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

Вычисляя последовательно

ВО, х, 0), ВО, х, 1), ВО, х, 2), ...

(каждое такое вычисление вполне осуществимо в реальное время без особых трудностей), мы должны отыскать первое такое у, чтобы В(;,х, у) = 0 . При этом может встретиться и такая ситуация - вычислено уже много элементов этой последовательности, а желаемого 0 все еще нет, и у нас (а тем более у машины) нет каких-либо гипотез или предположений о том, что же произойдет в дальнейшем.

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

Здесь мало, что зависит от величины значений функции (зДх). Могло показаться,

что вся трудность возникает из-за «больших задач», т.е. таких функций, значениями которых являются очень большие числа. Но оказывается можно ограничиваться функциями, принимающими лишь очень простые значения - 0 и 1. И вся трудность переносится на продолжительность счета таких функций. А все, что говорилось для произвольных функций, справедливо и для функций, имеющих значения {0,1}.

Как же можно сравнивать «трудность» или «сложность» вычислений для частично вычислимых функций?

Первое, что подсказывает интуиция, воспользоваться временными характеристиками. Обозначим через 7Дх) — число шагов (тактов) машины Тьюринга М;, которые ей понадобятся для вычисления (зДх); такая функция ТДх) называется временной сигнализирующей для машины М;. Если (зДх) всюду определенная (вычислимая) функция, то и ТДх) — всюду определенная функция. Если (зДх) неопределенна при каком-то значении х , то считаем и ТДх) неопределенным и пишем ТДх) = со . Таким образом, ТДх) — частично вычислимая функция.

Будем говорить, что вычислимая функция ср1 не труднее функции (р1, если ТДх) < ГДх) для почти всех х , т.е. это неравенство выполняется для всех значений х кроме конечного их числа, или, другими словами, оно выполняется для всех натуральных чисел, начиная с некоторого.

Это сравнение сложности вычислений двух функций интуитивно очень понятно и объяснимо. Задача, на которую требуется меньше времени, более простая.

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

Оказывается, что ситуация намного сложнее. Зафиксируем на дальнейшее некоторую вычислимую функцию h(x) .

Теорема об усложнении (Г.Цейтин [23], М.Рабин [38] ). Возможно найти такую вычислимую функцию /(х) , что для всех ее реализаций

Дх) = <р Н0) (*)= <р ,(1) (лг)=.

временная сигнализирующая Т^-}(х) сложнее, чем h{x), т.е. Т/ф(х)>И(х) для почти всех х.

Оказывается, существуют такие «сложные» функции, для вычисления любой реализации которых необходимо как угодно много времени.

Еще более обескураживающий феномен доставляет следующая теорема.

Теорема об ускорении (М.Блюм [27]). Возможно найти такую вычислимую функцию /(х) , что для любой ее реализации /(х) = (р , (х) найдется другая ее реализация /(х) = <р j (дг) такая, что Tj(x) сложнее, чем h Т/(х), т.е. Т,{х)> h Т/(х) для почти всехх.

Оказывается, существуют такие функции, которые не имеют самого быстрого вычисления. Какой бы алгоритм ее вычисления не был указан, можно эффективно указать более быстрый алгоритм.

Для примера возьмем А(х) = 2х . Тогда теорема об ускорении говорит о том, что имеется такая специальная вычислимая функция /(х), что по любому алгоритму ее вычисления можно сконструировать другой алгоритм для вычисления той же функции, но работающий в два раза быстрее.

Такая формулировка этой теоремы часто порождает различные недоумения. Возьмем какую-нибудь подобную вычислимую функцию /(х) = ip ,(х) и построим для нее более быстрый (вдвое быстрее, начиная с некоторого значения аргумента) алгоритм (р]{х). Но для этого алгоритма ср Ддг) есть еще более быстрый алгоритм (рк(х). И так можно строить бесконечную серию все более быстрых алгоритмов для функции /(х) . Но как же так может быть: для каждого конкретного значения аргумента п функция

7] (77) равна некоторому числу m , и это число невозможно уменьшать в два раза бесконечное число раз!

Чтобы рассеять подобные недоумения, нужно понять, что в теореме об ускорении гарантируется «убыстрение» не для всех значений аргумента, а для почти всех. Естественно, при первом переходе от (р , к (р j убыстрение происходило для аргументов, больших какого-то п . Но при следующем переходе от (р ,• к ср к для этого п может никакого убыстрения и не будет - граница, где происходит убыстрение могла сдвинуться к большему числу.

Возвращаясь к теореме об ускорении, хотим еще раз акцентировать внимание на том, что такое ускорение уже имеющегося вычисления возможно реализовать «в любое число раз» т.е. для любой заранее заданной функции /?(х)!

Были исследованы и другие виды сигнализирующих функций. Например, РДх) — объем памяти, т.е. число единиц памяти, использованных М; для вычисления (зДх). И

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

М.Блюм [27] сформулировал довольно простые требования для функций, которые естественно рассматривать как некоторые сигнализирующие. Он называет частично вычислимую функцию ЗДх) сигнализирующей для (зДх), если

1) для всех х функция 5Дх) определена тогда и только тогда, когда функция (зДх) определена;

2) следующая функция

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

Итак, идея связать вычисление функции с каким-либо параметром (сигнализирующей), имитирующим некую «сложность» этого вычисления, и по которому можно будет сравнивать вычисления, не приводит к достаточно объективной картине.

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

1) если нам задана программа машины Тьюринга, вычисляющая функцию /, то можно эффективно указать номер этой функции в списке (2);

2) если нам задана функция ср<, то можно эффективно указать программу машины Тьюринга, вычисляющую функцию .

Может показаться, что некий произвольный выбор подобных нумераций создает те трудности, которые возникли при определении сложности вычислений. В частности, то обстоятельство, что каждая функция имеет бесконечно много номеров в нумерации (2). Может быть, если такую нумерацию подбирать специально, то ряда отрицательных эффектов можно избежать. Например, можно ли построить однозначную нумерацию частично вычислимых функций, т.е. такую нумерацию, где каждая функция встречается ровно один раз?

Да, такая однозначная нумерация была построена Р.Фридбергом [31]! Но эта нумерация оказывается крайне сложной и не обладает многими свойствами, необходимыми

1, если 5Д/7) = /?г,

О, в противном случае

является вычислимой.

для доказательства важных теорем. Дело в том, что нумерация (2), в некотором смысле, содержит в себе все эффективные нумерации класса частично вычислимых функций; как говорят, она является главной нумерацией для этого класса. А нумерация Фридбер-га перестает быть главной для этого класса.

Теперь постараемся эффективно выбрать из всех частично вычислимых функций только вычислимые функции. Другими словами, будем искать такую вычислимую функцию а, чтобы класс {_/Дх) = ^Да(х))} содержал все вычислимые функции и только их. Если бы такая функция а нашлась, то функция /Дх) + 1 также была бы вычислимой функцией /Дх) для некоторого конкретного номера у . Но этого быть не может, так как в точке х = у имеем /Ду) ^ /Ду)+1-

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

Г/={с(х,1’)/ У — /(х)}, где с{х,у) — некоторая двуместная функция, кодирующая натуральными числами пары натуральных чисел.

3. Вычисления, связанные с множествами.

Пусть А с N — произвольное подмножество множества натуральных чисел. Для множества А можно сформулировать проблему принадлежности: построить алгоритм

Для двух особых множеств — пустого множества 0 и самого множества N, такие алгоритмы тривиальны:

для множества 0 на любой вопрос « х е А ?» отвечай всегда «нет»;

для множества N на любой вопрос « х е А ?» отвечай всегда «да».

Если мы свяжем с множеством А так называемую характеристическую функцию

I 1, если X £ А,

Х,Лх) = \ „ .

[ 0, если х £ А,

то алгоритмическое решение проблемы принадлежности для множества А состоит в вычислении функции хЛ{х) . Если функция хл{х) вычислима, то и множество А называется вычислимым (старое название рекурсивное). Таким образом, для вычислимых множеств А проблема принадлежности алгоритмически разрешима.

Однако вычислимых множеств сравнительно мало, их счетное число (их не больше, чем всевозможных алгоритмов), в то время как имеется континуум различных подмножеств множества N. Итак, подавляющее число множеств являются невычислимыми. У нас остается единственная возможность — сравнивать «по сложности» вычислений характеристические функции множеств. Как это можно сделать?

Э.Пост [37] предложил следующий способ сравнения проблем принадлежности для множеств. Скажем, что множество А Т -сводится (Тьюрингово сводится) к множеству В (символически А <Т В ), если можно построить алгоритм распознавания принадлежности чисел к множеству А , при условии, что нам известны ответы на любые вопросы вида « у е В ?». Проще говоря, если бы нам был известен алгоритм для решения

проблемы принадлежности для множества В , то мы смогли бы построить алгоритм для решения проблемы принадлежности для множества А . Это неформальное пояснение можно сформулировать в точных терминах, связанных с характеристическими функциями Ха<Хв и частично вычислимыми функциями.

Естественно считать, что если А<т В , то проблема принадлежности для А не труднее аналогичной проблемы для В .

Вполне могло случиться, что для конкретных множеств А и В имеются две сводимости: А <Т В и В <т А . В этом случае говорим, что множества А и В

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

Тьюрингова сводимость частично упорядочивает Т -степени по их сложности, достаточно объективно отражая существо предмета. Изучение структуры Т -степеней привлекло внимание многих специалистов теории алгоритмов. На эту тему опубликовано значительное число статей и монографий, здесь решены многие трудные задачи, созданы оригинальные методы исследований. Однако ряд проблем в рассматриваемом круге вопросов еще ждут своего решения. Достаточно полные обзоры результатов по Т -степеням имеются в [16], [19], [20].

Если мы возьмем любое вычислимое множество А и произвольное множество В , отличное от 0 и N, то понятно, что А<т В . Действительно, рассмотрим следующую

функцию

[6, если %Л(х) = 1,

[с, если %Л(х) = 0,

й(х) =

где Ь е В, с В . Тогда хл{х) = ^(^(х)) , или другими словами х е А <-» /?(х) е В (символ <-> означает фразу «тогда и только тогда, когда»).

Это тривиальное утверждение как раз и означает очень простой вид Т -сводимости А к В . Итак, вычислимое множество Т -сводится к любому собственному подмножеству В множества N . Вычислимые множества не труднее любого множества. Все вычислимые множества составляют минимальную Т -степень, которую обозначают через 0. Множества 0 и N сразу относим к степени 0.

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

сравнимые) друг к другу множества, т.е. такие множества А и В , что не выполняется ни А<т В , ни В <ТА . Для несводимых множеств принято обозначение А \ В .

Вопрос о существовании подобных несводимых множеств составлял в свое время так называемую проблему Поста. Для ее решения Р.Фридбергом [30] и А.А.Мучником

[13] был создан «метод приоритета», который в настоящее время стал одним из основных инструментов в теории алгоритмов.

Если провести некоторую аналогию с теоретическим программированием, то заменяя термин « Т -сводится» термином «транслируется», можно сказать, что эти несводимые множества не транслируются между собой, т.е. ни одно из них не является «транслятором» другого. К тому же, если учесть, для данного множества В имеется не более счетного числа множеств А таких, что А<т В , то получается, что не существует «универсального транслятора», к которому транслируются все множества, которых континуальное число.

Более подробно рассмотрим другую сводимость множеств, которая является наиболее простым и естественным вариантом Т -сводимости.

Скажем, что множество A m -сводится к множеству В (символически А <т В ), если существует вычислимая функция h(x) такая, что для всех натуральных чисел х

хеА <-» /?(х)еВ

Э.Пост называл такую сводимость много-односводимостью (many-one reducibility); отсюда в обозначении и появляется индекс т . Ранее, когда мы Т -сводили вычислимое множество А к любому В ^ 0, N , там в действительности имели m -сводимость.

При m -сводимости А <ш В для решения распознавания принадлежности любого х

множеству А нам нужно решать аналогичную задачу о принадлежности к В всего одного числа h(x), которое получается по х с помощью вычислимой функции. И в этом случае можно считать, что множество А не труднее множества В .

Если А <т В а В <т А , то множества А и В называются т -эквивалентными по т -сводимости (символически А =т В). По мысли Э.Поста т -эквивалентные множества в соответствующем закодированном виде содержат одинаковые массивы информа-

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

т -степени частично упорядочиваются так: а < b <-> А <т В для А е а, В е Ь. Если

а и b не сводятся друг к другу, то называем их несводимыми (несравнимыми) и обозначаем это через а | Ь. Все вычислимые множества лежат в минимальной т -степени 0. В эту степень 0, как и раньше, включаем и степени множеств 0 и N . Далее мы будем часто опускать приставку т -, имея в виду, что далее везде будем говорить о т - сводимости, т -степенях и т.п. Мы увидим, что т -степени являются удобными вариантами оценок сложности множеств.

Введем в рассмотрение один новый класс множеств, играющий в теории алгоритмов такую же фундаментальную роль, как и частично вычислимые функции. Эти множества

будут называться вычислимо перечислимыми (прежнее из название рекурсивно перечислимые множества).

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

А = {/(0),/(1),/(2),...}.

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

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

Такое определение вычислимо перечислимых множеств приводит к их нумерации, индуцированной нумерацией (2) частично вычислимых функций:

Г0,Г1,Г2,...,

где ^ считается областью значений функции ср1 .

Заметим, что нумерация (3) также как и нумерация (2) неоднозначна, одно и тоже множество 1¥< будет повторяться бесконечное число раз. Р.Фридберг [31] построил

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

Ясно, что всякое вычислимое множество А и его дополнение А являются вычислимо перечислимыми: надо для х вычислять /Дх), и если это значение получится равным 1, то перечислить х в А ; если же это значение получится равным 0, то отнести х в А .

Но не всякое вычислимо перечислимое множество является вычислимым. Здесь справедлива теорема, принадлежащая Э.Посту [37].

Теорема Поста. Множество вычислимо тогда и только тогда, когда оно само и его дополнение вычислимо перечислимы.

Для доказательства рассмотрим два перечисления — самого множества и его дополнения:

Л = {/(0),/(1),/(2),...},

3 = {я(0),я(1),я(2),...}.

Тогда алгоритм вычисления характеристической функции/ Дх) состоит в следующем:

Ха =

1) перечисляй А и А до тех пор, пока в одном из этих перечислений не встретится х - это обязательно случится, так как любое число попадет в одно из этих множеств;

2) если х встретится в перечислении множества А , то %л(х) = 1 ;

3) если х встретится в перечислении множества А , то %л(х) = 0 .

Если же про множество А известно только, что оно вычислимо перечислимо, то вычисление %л(х) , используя его перечисление А = {/(0),/(1),/(2),...}, столкнется с

трудностями. Мы будем иметь как бы «половину вычисления» характеристической функции %л(х) : она эффективно вычислится при х е А . Но если х <£ А то, вычислив

как угодно длинный кусок нашего множества А* = {/(0),/(1),...,/(я)}, мы там не обнаружим х , и у нас все время будет сохраняться сомнение - а не появится ли это х на последующих шагах перечисления? В этом случае мы так и не дождемся момента, чтобы положить %л(х) =0, таким образом функция %л(х) в такой точке останется неопределенной.

По этой причине удобнее для множества А рассматривать частично характеристическую функцию

1, если х е А

[неопределено в противном случае.

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

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

Обычно изучение аксиоматических теорий ведется в языке исчисления предикатов и функций первого порядка (ИПФ), внелогические символы которого фиксируют обозначения соответствующих для этой теории основных предикатов и функций. Если использовать подходящую нумерацию всех допустимых формул в таком логическом языке (такие нумерации получили название геделевских, по имени К.Геделя, который эффективно применил подобные нумерации при доказательстве самой знаменитой его теоремы о неполноте арифметики Пеано натуральных чисел [29]), то возможно на логические теории перенести основные понятия теории алгоритмов.

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

Вычислимо перечислимые множества по отношению к сводимости составляют обособленное замкнутое семейство: ясно, что если А <т В а В вычислимо перечислимое

множество, то таким же будет и множество А : надо перечислять множество В и вычислять функцию /(х), и как только какое-то /(х) перечислится в В , число х надо перечислить в множество А .

Среди вычислимо перечислимых множеств Э.Пост [37] открыл замечательный класс множеств и назвал эти множества креативными (творческими). Все креативные множества лежат в одной степени, которую мы обозначим через 1. К этой степени 1 сводятся все другие степени вычислимо перечислимых множеств. Таким образом, степень 1 является самой максимально трудной среди таких степеней, а в любое креативное множество можно универсально транслировать произвольное вычислимо перечислимое множество («универсальный транслятор»).

Построить какое-нибудь креативное множество не так трудно. Пусть с(х,v) — уже упоминавшаяся функция, кодирующая натуральными числами пары натуральных чисел. Рассмотрим следующее множество:

К0 = {с(х,у)/ xeWy}.

Ясно, что это множество вычислимо перечислимо: надо одновременно перечислять все множества Щ , и как только мы увидим, что xeWy, число с(х, v) - номер пары

< х, у >, перечислить в множество К0. Вместе с тем множество Кд не вычислимо, т.к.

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

вычислимо перечислимое множество А . Оно в нумерации (3) имеет некоторый номер п (т.е. А = Wn). Но тогда имеем

х е WH <-> с(х,п) е К0,

что означает сведение множества Wn к множеству К0 с помощью функции с(х,п).

Первый пример неразрешимой проблемы был указан самим А.Тьюрингом [45]. Это так называемая проблема остановки (halting problem). Один из вариантов проблемы остановки состоит в следующем. Пусть Н означает множество номеров машин Тьюринга в нумерации (1), которые обязательно остановятся, начав работу с пустой информации (в памяти машины ничего не записано). Ясно, что множество Н вычислимо перечислимо. Но оказывается, что Н - креативное множество. В частности, это множество не вычислимо - его дополнение не является вычислимо перечислимым множест-

Обозначим через АР множество номеров всех верных теорем классической арифметики Пеано натуральных чисел со сложением и умножением. Множество АР креативно, что свидетельствует о том, что теория чисел - наука чрезвычайно трудная (J.B.Rosser). С другой стороны, арифметика натуральных чисел только с одним сложением является разрешимой теорией (M.Presburger).

Аналогично, оказались креативными арифметики целых и рациональных чисел (в качестве основных операций здесь снова берутся сложение и умножение) (A.Tarski, A.Mostowski, J.Robinson). Однако, арифметика действительных чисел имеет степень О, она разрешима (A.Tarski). Это несколько противоречит нашей интуиции - действитель-

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

Итак, арифметика действительных чисел разрешима. Алгоритм для этой теории, позволяющий для любого утверждения в соответствующем языке узнать, верно оно или нет для действительных чисел, разработал A.Tarski [43].

Аналогичная ситуация и с теорией комплексных чисел - она разрешима. Далее, известно, что элементарная геометрия с помощью введения координат может быть рассмотрена внутри теории действительных чисел. Это означает, что алгоритм А.Тарского будет успешно работать и в геометрии. То же самое можно сказать об элементарной гиперболической геометрии (A.Tarski, W.Schwabhauser).

Были проанализированы на предмет их разрешимости или неразрешимости многие классические математические теории. Обзоры полученных результатов в этом направлении имеются в [44] и [5]. Мы приведем здесь наиболее впечатлительные результаты на эту тему, и если о них говорится в обзоре [5], то будем указывать лишь его авторство, отсылая за ссылками к этому обзору. Также приведем небольшое число примеров элементарных теорий, для которых окончательные решения об их разрешимости или неразрешимости получены после выхода обзора [5], т.е. после 1965 г.; здесь дадим соответствующие ссылки.

Например, теория групп оказывается креативной (A.Tarski). Неразрешимой оказывается теория конечных групп (А.И.Мальцев). Заметим, что данная теория не является аксиоматизированной теорией. Аналогичное положение с теориями полугрупп, колец, структур - все эти теории, как и теории их конечных моделей, неразрешимы (A.Tarski, А.И.Мальцев).

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

Теория полей неразрешима (J.Robinson), но Ю.Л.Ершов [3], J.Ax и S.Kochen [24], [25] доказали, что теория конечных полей разрешима.

Теории одноместных предикатов, равенства, эквивалентности, одноместных функций, линейно упорядоченных множеств, вполне упорядоченных множеств, булевых алгебр разрешимы (L.Lowenheim, A.Janiczak, H.Lauchli, A.Ehrenfeucht, A.Tarski, A.Mostowski).

В противовес этому теория двухместных предикатов, частично упорядоченных множеств, симметрично-рефлексивных предикатов, как и подобные теории для конечных моделей, неразрешимы (A.Church, L.Kalmar, A.Tarski, R.L.Vaught, H.Rogers,

Б.А.Трахтенброт, М.А.Тайцлин, ИА.Лавров). Отсюда, в частности следует, что теория графов и теория конечных графов также алгоритмически неразрешимы.

Отметим еще несколько результатов, относящихся к нелогическим направлениям математики. Проблема тождества слов в группах алгоритмически неразрешима (П.С.Новиков [14]). Неразрешимой оказывается проблема гомеоморфизма в топологии (А.А.Марков [10 ]).

Еще один пример из алгебры. Проблема: для данного конечного множества 3x3 матриц с целыми коэффициентами узнать, будет ли некоторое конечное произведение элементов этого множества равно нулевой матрице. Эта проблема также алгоритмически неразрешима (M.S.Paterson, [35]).

История теории чисел во многом связана с решением диофантовых уравнений, т.е. нахождением целочисленных решений уравнения р(х1,х2,...,хп) = 0 , где р - многочлен

с целыми коэффициентами. Для ряда конкретных диофантовых уравнений такие решения полностью описаны. Однако даже в настоящее время для не очень сложных многочленов р многочисленные попытки описать решения соответствующего диофантового

уравнения не увенчались успехом. В числе знаменитых проблем Д.Гильберта десятая проблема посвящена диофантовым уравнениям: указать алгоритм для решения произвольного диофантового уравнения. Ю.В.Матиясевич [11] доказал, что данная проблема неразрешима.

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

перечислимых множеств. Мы приведем лишь небольшое число результатов в этом направлении.

• а b •

/

Между 0 и 1 лежит бесконечное множество несводимых между собой степеней. Более того, для каждой степени а є Ь0, отличной от 0 и 1, существует степень Ь такая, что

При отыскании вычислимо перечислимых множеств, отличных от вычислимых и креативных, Э.Пост [37] открыл ряд удивительных классов множеств. Приведем лишь один пример на этот счет.

Если множество А креативно, то оно само вычислимо перечислимо, но его дополнение А хотя и бесконечно, но не является вычислимо перечислимым. Вместе с тем в А можно эффективно выделить бесконечное вычислимо перечислимое подмножество. Вычислимо перечислимые множества, которые Э.Пост почему-то назвал простыми (simple) таковы, что в их бесконечном дополнении не содержится ни одного бесконечного вычислимо перечислимого множества. В дополнении А простого множества А нельзя эффективно указать бесконечную серию чисел. И таких множеств и их различных разновидностей довольно много.

Имеются минимальные степени а, т.е. такие степени а, что 0 < а, но между 0 и а нет других степеней. С другой стороны, под степенью 1 нет максимальной: если Ь < 1, то существует степень с (а значит таких степеней бесконечно много) такая, что Ь < с < 1.

Много усилий было потрачено для того, чтобы каким-то регулярным способом описать начальные отрезки Ь0. Цель была достигнута в [33], [34], [4], [1] - дано вполне

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

1

О

Из этого описания, в частности, следует, что если а < 1, то кусок [а,1] = ={Ь/а<Ь<1}в точности похож (изоморфен) на все Ь0 =[0,1]. Это напоминает эффект

голографии.

По-другому можно сказать и так: если бы в самом начале теории алгоритмов в качестве вычислимых (разрешимых) множеств был избран другой вариант - «вычислимыми множествами» считались бы множества из степени а * 1, то качественная картина семейства степеней осталась бы прежней.

Если мы обозначим через а степень таких множеств А, дополнение которых А принадлежит степени а, то строение двух таких семейств Ь и Ь0 будут совершенно

идентичны (изоморфны) и будут соприкасаться лишь в степени 0 (так как 0= 0 ).

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

Дадим лишь два примера на этот счет. Проблема принадлежности к множеству №? = {х / 1¥х - конечное множество} имеет так называемую сложность 82 , а проблема принадлежности к множеству Ъфп - {х / }УХ - бесконечное множество} имеет сложность Я, = 8, . Позднее мы объясним, почему применяем здесь такие обозначения. Кстати, степень 1 при таких обозначениях имеет сложность 81, степень 1 — сложность Я1, а степень 0 — сложность 80 = Я0.

Обе эти степени 82 и Я, — проблемы узнавания про вычислимо перечислимое множество, является ли оно конечным или бесконечным, не сводимы друг к другу и более сложные, чем 1 и 1 . Можно строить еще более сложные степени 83,Я3,84,Я4,...

Взаимоотношения между такими степенями можно схематически изобразить следующим образом:

Попробуем записать логическую формулу, задающую множество Fin : х е Fin <->3yV~[y < - —> - <£ Wx] (в формуле говорится, что, начиная с некоторого места, все числа не принадлежат Wx).

В теории алгоритмов известно, что aeWb <r^3cR(a,b,c) для некоторого вычислимого предиката R , т.е. такого предиката, что множество \c3(a,b,c) / R(a,b,c)} вычислимо. Здесь с3 — вычислимая функция, взаимно однозначно нумерующая натуральными числами всевозможные тройки натуральных чисел.

Легкие преобразования написанной выше формулы для Fin приведут нас к формуле х &Fin <-»3yV-0(x, у, ~) для некоторого вычислимого предиката О . Последняя формула записана в так называемой пренексной нормальной форме, имеющей такую структуру: в начале (приставка формулы) идут кванторы, после кванторной приставки записан некоторый вычислимый предикат. Оценка типа подобных формул вычисляется так - это будет X», или П», в зависимости от того, с какого квантора 3 или V начинается кванторная приставка, а число п означает число перемен разноименных кванторов. Для множества Fin тип формулы получается Хг- А степень этого множества 82 —

максимальная по сводимости степень множеств типа Х2- Заметим, что в приставке 3V имеется две перемены кванторов - сперва идут 3 . потом V .

Аналогичные рассуждения свидетельствует, что множество Infin имеет тип ГЪ и его степень Я2 максимальна среди степеней множеств типа ГЪ-

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

Отметим еще одно обстоятельство, навеянное множествами Fin и Infin . Эти множества обладают следующим свойством: если какой-то номер (индекс) п множества А попадает в такое множество, то туда же попадут и все другие номера (индексы) этого же множества. В устоявшейся терминологии теории алгоритмов множества с таким свойством называются индексными.

Пусть 21 - некоторое семейство вычислимо перечислимых множеств. Тогда

G%={xlWx е 21}

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

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

Так семейство Fin индуцирует следующую проблему распознавания: является или нет множество Wx конечным? Семейство же Infin связано с проблемой распознавания

бесконечности множества 1¥х. Мы уже знаем, что обе эти проблемы не являются алгоритмически разрешимыми, их степени 82 и Я, .

Для двух семейств, 2(1 - пустого семейства, т.е. не содержащего ни каких множеств, и полного семейства, т.е. содержащего все вычислимо перечислимые множества, проблемы распознавания очевидно разрешимы. Эти два семейства и индуцированные ими свойства называются тривиальными. Как следует из следующей теоремы, эти семейства совершенно уникальны по отношению к проблеме распознавания.

Теорема Райса.[39] Всякое нетривиальное свойство не распознаваемо.

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

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

В [40] дано достаточно ясное описание семейств вычислимо перечислимых множеств, индексные множества которых вычислимо перечислимы (множества типа Х1): это эффективные объединения открытых множеств типа {IV / В ^ IV } , где £> - конечное множество, в топологии на классе всех вычислимо перечислимых множеств (теорема Райса-Шапиро).

Из-за простой связи множеств типа П1 и Х1 можно получить и описание семейств вычислимых перечислимых множеств, индексные множества которых являются дополнениями вычислимо перечислимых множеств.

К сожалению, не смотря на многочисленные попытки, в настоящее время нет удовлетворительного описания (в терминах как в теоремах Райса и Райса-Шапиро) семейств вычислимо перечислимых множеств, индексные множества которых имеют ТИПЫ Ей и П», при 2 < п . В работах [17], [18] приведен ряд доводов, свидетельствующих о трудности подобных проблем, особенно в случае п = 2 .

Литература.

[1] Денисов С.Д., Строение верхней полурешетки рекурсивно перечислимых множеств т т -степеней и смежные вопросы. I, Алгебра и логика, 1978, 17, 6, 643-683.

[2 ] Ершов Ю.Л., Теория нумераций, М.: Наука, 1977.

[3] Ершов Ю.Л., Об элементарных теориях локальных полей, Алгебра и логика, 1965. 4, 2, 5-30.

[4] Ершов Ю.Л., Верхняя полурешетка нумераций конечного множества, Алгебра и логика, 1975Ю 14, 3, 258-284.

[5] Ершов Ю.Л., Лавров И.А., Тайманов А.Д., Тайцлин М.А., Элементарные теории, УМН, 1965, 20, 4, 37-108

[6] Колмогоров А.Н., Три подхода к определению «количества информации», Проблемы передачи информации, т.1, в.1, 3-11

[7] Мальцев А.И., Алгоритмы и рекурсивные функции, М.: Наука, 1986.

[8] Мальцев А.И. Конструктивные алгебры, I, УМН, 1961, 16, 3, 3-60.

[9] Марков А.А., Теория алгорифмов, Труды математического института АН СССР, 1951,38, 176-184; 1954, 42.

[10] Марков А.А., Неразрешимость проблемы гомеоморфизма, Proc. Inter.Congress Math., London, Cambridge, University Press, 1958, 300-306.

[11] Матиясевич Ю.В., Диофантовость перечислимых множеств, ДАН СССР, 1970, 191, 279-282.

[12] Минский М. (Minsky M.L), Вычислимость и автоматы, М.: Мир, 1971.

[13] Мучник А.А., Неразрешимость проблемы сводимости теории алгоритмов, ДАН СССР, 1948, 108, 194-197.

[14] Новиков П.С., Об алгоритмической неразрешимости проблемы тождества слов в теории групп, Труды математического института АН СССР, 1955, 44.

[15] Рогожин Ю., Семь универсальных машин Тьюринга, Матем.исследования, 1982, 69, 76-90.

[16] Роджерс X. ( Rogers Н.), Теория рекурсивных функций и эффективная вычислимость, М.:Мир. 1972.

[17] Селиванов B.JL, Об индексных множествах в иерархии Клини-Мостовского, Труды математического института, Новосибирск, 1982, 2, 135-158.

[18] Селиванов B.JL, Индексные множества в гиперарифметической иерархии, СМЖ, 1984,25, 164-181.

[19] Соар Р. ( Soare R.I.) Вычислимо перечислимые множества и степени, Казань, 2000.

[20] Справочная книга по математической логике, ч.Ш, Теория рекурсии, ч. III, М.: Наука, 1982.

[21] Успенский В.А., Лекции о вычислимых функциях, М.: Физматгиз, 1960.

[22] Успенский В.А., Семенов А.Л., Теория алгоритмов: основные открытия и приложения, М.: Наука, 1987.

[23] Цейтин Г., Оценка числа шагов при применении нормального алгоритма, Математика в СССР за сорок лет, т.1, М, 1959, 44-45

[24] Ах J., The elementary theory of finite fields, Ann.Math., 1968, 88, 239-271.

[25] Ax J., Kochen S., Diophantine problems over local fields, Amer.J.Math., I-II, 1965, 87, 605-648

[26] Ax J., Kochen S., Diophantine problems over local fields III, Ann. Math. 1966, 83, 437-456.

[27] Blum М., Independent theory of the complexity of recursive functions, Jour. Assoc. Comput. Math., 1967, 14, 322-336.

[28] Church A., On unsolvable problem of elementary number theory, Amer.jour.math. 1936, 58, 345-348.

[29] Godel K., Uber formal unentscheidbare Satze der Principia Mathematica und ver-wandter Systeme, I Monatsh. Math, und Phyc., 1931,38, 173-198.

[30] Friedberg R.M., Two recursively enumerable sets of incomparable degrees of unsolvability (solution of Post’s problem 1944), Proc. Nat. Acad.Sci., 1957, 43, 236-238.

[31] Friedberg R.M., Three theorems on recursive functions: I Decomposition. II Maximal sets. Ill Enumeration without duplication, Jour.Symb.logic, 1958, 23, 309-316.

[32] Kleene S.C., General recursive functions of natural numbers, Math.Ann., 1936, 112, 727-742

[33] Lachlan A., Initial segments of many-one degrees, Canad. Jour.Math., 1970, 22, 1, 75-85.

[34] Lachlan A., Recursively enumerable many-one degrees, Алгебра и логикаб 19726 116 36 326-358.

[35] Paterson M.S., Unsolvability in 3 x 3 matrices, Studies in Appl.Math., 1970, 49, 105-107.

[36] Post E.L., Finite combinatory processes - formulation I, Jour.Symb.logic, 1936, 1, 103-105.

[37] Post E.L. Recursive enumerable sers of positive integers and their decision problems, Bull. Amer. Math. Soc., 1944, 50, 284-316.

[38] Rabin M.O., Real-time computation, Israel Jour. Math., 1963, 1, 203-211.

[39] Rice H.G., Classes of recursively enumerable sets and their decision problems, Tras. Amer. Math. Soc., 1953, 74, 358-366.

[40] Rice H.G., On completely recursively enumerable classes and their key arrays, Jour. Symb.logic, 1956, 304-308.

[41] Rogozhin J., Small universal Turing machines, Theoretical Computer Science, 1996, 168, 215—240.

[42] Shannon C.E., A universal Turing machine with two internal states, Automata Studies, Princeton, 1956.

[43] Tarski A., A decision method for elementary algebra and geometry, Berkeley, Los Angeles, 1951.

[44] Tarski A., Mostowski A., Robinson R., Undecidable theories, 1953, North-Holland Publishing Company, Amsterdam.

[45] Turing A. М., On computable numbers, with an application to the Entscheidung-sproblem, Proc. London Math.Soc., ser.2, 1936, 42, 230-265;.1937, 43, 544-546.

[46] Watanabe S., 5-symbol 8-state and 5-symbol 6-state universal Turing machines, Jour. Assoc. Comp. Math., 1964, 8, 4, 476-483.