Косовская Татьяна Матвеевна, Косовский Николай Кириллович
ПРИНАДЛЕЖНОСТЬ КЛАССУ ЕР ДВАЖДЫ ПОЛИНОМИАЛЬНЫХ ПАСКАЛЕВИДНЫХ ФУНКЦИЙ НАД ПОДПРОЕРАММАМИ ИЗ ЕР
Аннотация
В [3] даны определения числа шагов и длины записи промежуточных вычислений паскалевидных функций. С их помощью было получено представление класса всех функций, вычислимых на машинах Тьюринга за число шагов, ограниченное сверху полиномом от длины записи исходных данных (класса ЕР), с помощью дважды полиномиальных (то есть полиномиальных по числу шагов и по длине записи промежуточных вычислений) паскалевидных функций.
Для удобства доказательства принадлежности паскалевидной функции классу ЕР здесь введено понятие паскалевидных функций над списком 5 паскалевидный функций. Для этих функций даны определения числа шагов и длины записи промежуточных вычислений, наконец, определены дважды полиномиальные паскалевидные функции над списком 5. (для каждой функции из 5 число шагов и длина записи промежуточных вычислений равны единице). Функции из 5 соответствуют базовым подпрограммам. Доказывается теорема о совпадении класса дважды полиномиальных паскалевидных функций над 5 и класса ЕР.
Ключевые слова: верхние оценки числа шагов, машины Тьюринга, класс ЕР, функции языка Паскаль.
ВВЕДЕНИЕ
Эта статья является продолжением статьи [3]. Однако она может читаться и независимо от нее. Она направлена на упрощение для программистов-математиков доказательств принадлежности классу ЕР алгоритмов, реализованных средствами языка Паскаль (паскалевидными функциями).
Полиномиальное число шагов для разных математических понятий алгоритмов не обязательно обеспечивает его принадлежность классу ЕР (классу функций, ко-
© Т.М. Косовская, Н.К. Косовский, 2010
торые могут быть реализованы на машине Тьюринга, число шагов которой не превосходит полинома от длины записи исходных данных). В то же время программирование на машине Тьюринга [1, 2] мало адекватно современной практике программирования.
В интернете время от времени появляются «доказательства» того, что Р = № («решение» одной из семи задач, признанных в 2000 году сложнейшими задачами в математике). Как правило, ошибки в таких «доказательствах» являются следствиями того, что при подсчете числа шагов алгоритмов берется математическая модель алгоритма, для которой не доказа-
но, что из полиномиальности числа шагов его работы следует полиномиальность числа шагов машины Тьюринга, вычисляющего ту же функцию (или предикат).
В связи с этим в [3] было введено математическое понятие целочисленного алгоритма на основе широко распространенного языка Паскаль. Более точно, в основе рассматриваемого понятия лежит предложенный Н. Виртом язык Паскаль [4] с включением возможности описания и использования динамических массивов (то есть массивов с динамически определяемыми верхними границами), а не другие его различные реализованные версии.
Пусть в языке Паскаль переменные типа integer могут принимать в качестве значения любое целое число (то есть целое число с любой сколь угодно большой длиной записи), а другие основные типы переменных не используются. Как иногда говорят, возможно использование только констант и целых чисел произвольной разрядности.
Определение. Целочисленным алгоритмом (паскалевидной функцией) назовем функцию предложенного Н. Виртом языка Паскаль, обрабатыьвающую ее фактические па-раметры1 — целыье числа, поступающие на ее вход, и не использующую файлы1, записи, множества и указатели, а также проце-дурыь и функции, имеющие в качестве параметров свои процедуры1 и функции.
Основой при получении оценок сложности вычислений над заданным списком базовых подпрограмм является определение того, что же считать шагом вычисления и что считать длиной используемой памяти. С определением шага вычисления, как правило, трудностей не возникает. Впрочем, на разных моделях вычисления функция 22 вычисляется за очень разное число шагов, в зависимости от того, какие функции считаются исходными при ее вычислении.
В [3] даны определения числа шагов и длины записи промежуточных вычислений паскалевидных функций. С их помощью было получено представление класса функций, полиномиально быстро вы-
числимых на машинах Тьюринга (класса ЕР) с помощью дважды полиномиальных (то есть полиномиальных по числу шагов и по длине записи промежуточных вычислений) паскалевидных функций.
Для удобства доказательства принадлежности паскалевидной функции классу ЕР здесь введены определения числа шагов и длины записи промежуточных вычислений и, наконец, дважды полиномиальных паскалевидных функций над списком 5 паскалевидных функций (эти три определения не учитывают сложностные характеристики вычисления внутри всех функций из 5). Функции из 5 соответствуют базовым подпрограммам.
В частности, для каждой функции из списка 5 число шагов над 5 (без учета их числа внутри вычисления функций списка 5) считается ровно за один шаг.
Длина записи промежуточных вычислений над 5 (без учета длины записи внутри вычислений функций из списка 5) отличается от длины записи вычислений пас-калевидной функции тем, что не учитывается длина записи промежуточных внутренних вычислений всех функций из 5. В частности, длина записи промежуточных вычислений над 5 (без учета их внутри вычислений функций из списка 5) для каждой функции из 5 совпадает с максимумом длины записи значения функции и суммы длин всех ее аргументов.
Опишем это более подробно.
1. ОПРЕДЕЛЕНИЕ ШАГОВ ВЫЧИСЛЕНИЯ И ДЛИНЫ ЗАПИСИ ПРОМЕЖУТОЧНЫХ ВЫЧИСЛЕНИЙ НАД СПИСКОМ ПАСКАЛЕВИДНЫХ ФУНКЦИЙ
Определение. Назовем термом над списком 5 паскалевидных функций любое арифметическое или булево выьражение, возможно содержащее функции из Б.
Очевидно, что каждый терм однозначно задает некоторую функцию, в частности, терм над списком 5 паскалевидных функций задает паскалевидную функцию при использовании оператора присваивания имени функции, задаваемой этим термом. При этом процесс вычисления терма
Принадлежность классу ЕР дважды полиномиальных паскалевидных функций над подпрограммами из ЕР
г может быть представлен в виде корневого дерева. Глубиной записи г назовем глубину этого дерева.
При вычислении паскалевидной функции используются: оператор присваивания терма над списком паскалевидных функций, условные операторы, операторы цикла и рекурсивные вызовы процедур и функций.
Дадим два совместно рекурсивно задаваемых определения.
Определение. Длиной записи вычисления терма г на глубине г над списком 5 паскалевидных функций назовем сумму длин абсолютных величин значений всех подвыражений глубины г выражения г, в том числе и содержащего функции из Б. Для вновь определяемых процедур и функций, входящих в терм и не входящих в 5, берется длина записи промежуточных вычислений таких функций, включая все их рекурсивные вызовы.
Длиной записи вычисления выражения г над 5 назовем максимум по всем г (от 1 до глубины г) длин записи вычисления г на глубине г над 5.
Определение. На начальном шаге длина записи вычисления над 5 совпадает с длиной записи исходных данных (значений аргументов функции). На заключительном шаге вычисления функции над 5 длина записи вычисления совпадает с длиной записи абсолютной величины результата вычисления функции.
Под длиной записи промежуточных вычислений (то есть используемой памяти) над списком 5 паскалевидных функций понимаем максимум длины записей вычисления по всем шагам этого вычисления над 5, включая начальный и заключительный, но не учитывая внутренних шагов вычисления функции из 5.
Для удобства читателя предполагаем, что все числа записаны в десятичной системе счисления (хоть основание системы счисления может быть любым положительным целым числом, отличным от единицы).
Таким образом, в приведенных определениях не учитываются рекурсивные вызовы подпрограмм из 5, используемые
для вычисления паскалевидной функции, и длина записи внутренних промежуточных вычислений в каждой такой подпрограмме из 5.
Фактически здесь определены число шагов паскалевидной функции и длина записи ее промежуточных вычислений без учета внутренних шагов и внутренних промежуточных вычислений функций из конечного списка 5, являющихся паска-левидными функциями.
Итак, в определенное здесь число шагов над 5 (без учета числа шагов внутри вычисления функций из 5) вызов каждой функции из 5 добавляет только единицу. К длине записи промежуточных вычислений над 5 (также без учета их внутри вычисления функций из 5 вызов каждой функции из 5 добавляет максимум длины записи результата и суммы длин записи всех аргументов при каждом обращении к функции из 5.
Две введенные здесь характеристики сложности вычисления паскалевидной функции над 5 измеряются относительно длины записи исходных данных.
2. ОСНОВНОЙ РЕЗУЛЬТАТ
Определение. Дважды полиномиальной паскалевидной функцией над конечным списком паскалевидных функций 5 назовем такую паскалевидную функцию, для которой как ее число шагов, так и ее длина записи промежуточных данных (без учета их внутри вычисления функций из 5) не превосходят некоторого полинома от длины записи исходных данных.
Теорема. Класс паскалевидных функций (в том числе и класс функций, задающих предикаты), дважды полиномиальных над списком 5, все функции из которого принадлежат классу ЕР, совпадает с классом ЕР (соответственно с классом Р).
Схема доказательства. Ленту машины Тьюринга легко промоделировать двумя линейными динамическими массивами, верхняя граница которых может быть задана ограничением на длину используемой ленты.
Докажем, что всякая дважды полиномиальная паскалевидная функция, удовлетворяющая условию теоремы, принадлежит классу ЕР. Элементы массивов располагаем на дополнительной ленте машины Тьюринга в виде последовательности пар вида ([ 1 ], [а( 1 )]), где [ 1 ] - список значений индексов, [а( 1 )] - значение элемента массива. В этом случае косвенная адресация становится полиномиально ограниченной сверху по числу шагов машины Тьюринга.
Прежде всего отметим, что каждая операция языка Паскаль принадлежит классу ЕР. Более того, ее можно сделать неудлиняющей добавлением фиктивного аргумента, ограничивающего сверху длину записи ее результата. Длина записи этого результата не превосходит полинома от длины записи первоначальных исходных данных.
Используя следствие теоремы 2 из [3] получаем, что вычисление каждого выражения, не содержащего дополнительно определяемых функций, принадлежит классу ЕР. Аналогичное утверждение будет верно и относительно полиномиального числа присваиваний, включающих и косвенную адресацию.
Поскольку имеется полином от длины записи исходных данных, ограничивающий сверху значение всех вычисляемых выражений и подвыражений, встречающихся во время вычисления, то число шагов их вычисления ограничено сверху одним и тем же (но другим, как правило, большей степени) полиномом. Сумма полиномиального числа слагаемых, являющихся полиномами, также является полиномом. Поэтому суммируя все шаги, используемые для вычисления всех выражений, получаем общую полиномиальную оценку числа шагов их вычисления на машине Тьюринга. Все встроенные операции, включая косвенную адресацию, осуществляются за полиномиально ограниченное сверху число шагов.
Рекурсивные процедуры и паскалевид-ные функции могут быть реализованы на РАМ [1] традиционным для программирования способом с помощью стека. В
этом стеке при каждом рекурсивном вызове записываются значения всех внутренних переменных, получивших к этому моменту какие-либо значения.
При этом память ограничена сверху (в том числе и в совокупности присвоенных значений элементам динамических массивов) полиномом от числа выполненных операторов присваиваний, умноженному на полином от длины записи исходных данных, являющемуся верхней границей длин записи всех значений переменных и элементов массива.
Поэтому справедливо следующее утверждение. Каждое присваивание (в том числе и элементу массива), включая присваивание аргументов при рекурсивных вызовах функций, принадлежит FP.
Заметим, что в случае присваивания элементу массива вычисляется пара из совокупности всех индексов и значения этого элемента массива.
Поэтому результаты вычисления любой последовательности полиномиального числа присваиваний с такими же ограничениями на длину записи промежуточных вычислений могут быть реализованы на машине Тьюринга за число шагов, ограниченное сверху некоторым полиномом. ■
Доказанная теорема, по существу, устанавливает замкнутость класса FP относительно задания паскалевидной функции, являющейся дважды полиномиальной над списком подпрограмм (паскалевидных функций) из FP.
Определение. Назовем возвратом при выьчислении паскалевидной функции над S выполнение любого из следующих операторов: goto назад по тексту программыь, повторное выполнение тела цикла, вызов функции из S и, наконец, вызов (в том числе и рекурсивны й) функции не из S или вы зов процедуры (в том числе и рекурсивный).
В определении дважды полиномиальной паскалевидной функции слова «число шагов» можно заменить словами «число возвратов». При этом утверждение теоремы останется верным. Уточним вариант формулировки и докажем его в качестве следствия.
Принадлежность классу FP дважды полиномиальным паскалевидныа функций над подпрограммами из FP
Следствие. Если при выьчислении пас-калевидной функции / над списком 5, все функции которого принадлежат ЕР, число возвратов и длина использованной памяти над 5 не превосходят полинома от длины1 записи ее исходныьх данныьх, то эта функция принадлежит ЕР.
Доказательство. Число шагов функции / над 5 не превосходит числа возвратов над 5, умноженного на число всех операторов, включая и все подоператоры определения функции /. Осталось применить теорему. ■
Литература
Доказанное следствие существенно упрощает доказательство принадлежности паскалевидной функции как классу ЕР, так и классу Р.
Теорема и ее следствие позволяют сравнивать между собой паскалевидные функции из ЕР по трем существенным характеристикам: числу шагов вычисления над списком 5, числу возвратов над списком 5 и длине записи промежуточных вычислений над списком 5, в том числе и над пустым списком 5.
1. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979.
2. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982.
3. Косовская Т.М., Косовский Н.К. Основы доказательств полиномиальной быстроты простейших математических алгоритмов // Компьютерные инструменты в образовании, 2010. № 2. С. 3-13.
4. Форсайт Р. Паскаль для всех. М.: Машиностроение, 1986.
Abstract
[3] gives definitions of time and space comlexity of pascal-like functions. Using this definitions it was obtained the representation of the class of all functions computable by Turing machine in time upper bounded by the polynomial of the length of the initial data (FP class) by means of double polynomial (i.e. polynomial in time and space) pascal-like functions.
For the convinience of proving that a pascal-like function is in FP, we introduce the notion of the pascal-like functions over a list S of pascal-like functions. For such functions we give definitions of time and space complexities, finally, we define double polynomial pascal-like functions over a list S. (for every function in S, time and space complexity are equal to one). Functions from S correspond to basic subroutines. The theorem about the equality of the class of double polynomial pascal-like functions over S and the FP class is proved.
Keywords: Upper bounds for time complexity, Turing machine, FP complexity class, functions of pascal programming language.
Косовская Татьяна Матвеевна, кандидат физико-математических наук, доцент кафедры математики Государственного Морского Технического Университета, kosov@NK1022.spb.edu,
Косовский Николай Кириллович, доктор физико-математических наук, профессор, заведующий кафедрой информатики математико-механического факультета Санкт-Петербургского государственного университета, kosov@NK1022.spb.edu
© Наши аеторы, 2010. Our authors, 2010.