Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_po_TA.doc
Скачиваний:
26
Добавлен:
18.04.2019
Размер:
1.11 Mб
Скачать

35.Интуитивное опре­де­ле­ние по­ня­тия «ал­го­ритм». Свой­ст­ва ал­го­рит­ма.

Мухаммед ибн Муса ал-Хорезми (IX в) в своем арифметическом трактате изложил основы индийской системы счисления и искусство счета в ней. Латинский перевод трактата, относящийся к XII в начинается словами «Dixit algorizmi» – «Сказал аль-Хорезми». С тех пор термин «алгоритм» стал применяться для обозначения первых алгоритмов цифровых вычислений, затем и для произвольных алгоритмов.

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

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

Это не является определением, т.к. выражение «единый», «конечное число шагов» лишены математической точности.

Черты, характерные для интуитивного понятия алгоритма:

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

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

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

Эффективность (результативность). Каждый шаг работы алгоритма должен заканчиваться результатом.

Массовость алгоритма. Начальная система величин может выбираться из некоторого бесконечного счетного множества Х.

Конструктивность. Объекты из Х, над которым работает алгоритм, должны быть конструктивными.

Конструктивный объект – тот, который может быть набран весь целиком и представлен для рассмотрения.

Примерами конструктивных объектов являются булевы функции, формулы алгебры логики, натуральные и рациональные числа, матрицы с натуральными или рациональными элементами, многочлены от  неизвестных с рациональными коэффициентами.

Неконструктивными объектами являются, например, любые действительные числа, представления которых в десятичной записи a0 a1…an… ни для какого nиз натуральных чисел не может быть целиком представлено для рассмотрения. Числа  и  не являются конструктивными объектами.

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

Примеры алгоритмов:

-Алгоритмы арифметических действий с числами в двоичной системе счисления

-алгоритм нахождения НОД 2-х целых чисел, 2-х многочленов от переменной х;

-алгоритм извлечения ?n,?n?N ;

-алгоритм дифференцирования многочлена от переменной ;

-алгоритм нахождения определителя квадратной матрицы А над ?;

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

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

36) Определение.   Говорят, что функция y получена из функций j и f1,...,fm операцией постановки (суперпозицией) и обозначают этот факт: y=Submn(j;f1,...,fm) или просто y=Sub(j;f1,...,fm), если y(x1,x2,...,xn)=j(f1(x1,x2,...,xn),...,fm(x1,x2,...,xn)).   Остановимся на важном применении функций проецирования, предложенном К.Гёделем (1934). Заметим, что все функции, определяемые термами fi, зависят от n переменных, а функция, определяемая термом j, имеет столько переменных, каково количество термов fi. Однако иногда требуется найти результат суперпозиции некоторых функций, но какое-то из указанных выше условий (все функции fi зависят от n переменных, а у функции j имеется столько переменных, каково количест­во функций fi) не выполнены. Тем не менее, за счет введения фиктивных аргументов и функций Imn это можно сделать. Примеры. 1. Функция y(x,y,z)=j(f1(x),f2(x,y,z),y,z) получена суперпозицией из функции j(x1,x2,x3,x4) и функций F1(x,y,z)«I13(x,y,z), F2(x,y,z)«f2(x,y,z), F3(x,y,z)«I23(x,y,z), F4(x,y,z)«I33(x,y,z). 2. Пусть j(x,y,z)«z(x,h(y,q(x)),2). Определение функции j через функции z,h,q может быть символически выражено так: j=Sub33(z;I13,Sub23(h;I23,Sub13(q;I13)),C23). "Вывод" можно записывать и следующим образом: Мы будем строить класс вычислимых функций, который будет замкнутым относительно суперпозиции функций, т.е. если он содержит некоторые функции, то он содержит и их суперпозицию. Ответ на вопрос, почему это так, даёт следующее Предложение (свойства суперпозиции). Операция подстановки сохраняет: (1) интуитивную вычислимость функций; (2) всюду определённость функций. Доказательство. (1) Если мы каким-либо образом умеем вычислять значения функций f1,...,fm и j, то ясно, как на­до вычислять значение функции y. Придадим переменным x1,...,xn некоторые значения a1,...,an. Вычислим все fi(a1,...,an). Получим b1=f1(a1,...,an),...,bm=fm(a1,...,an). Вычисляя теперь c=j(b1,...,bm), получим: y(a1,...,an)=c. Итак, если функции f1,...,fm,j интуитивно вычислимы, то и функция y интуитивно вычислима. (2) Если все функции f1,...,fm и j - всюду определённые, то функция y всюду определена. Фун­кция y будет не всюду определённой, если одна из функций f1,...,fm не всюду определена или если можно найти такие a1,...,an, что b1=f1(a1,...,an),...,bm=fm(a1,...,an), но значение j(b1,...,bm) неопределено. Предложение доказано.

Определение. Будем говорить, что функция f(x1,...,xn,y) получена из функций g и h в результате применения операции примитивной рекурсии, если: (а) для n¹0 имеют место равенства Эта система равенств называется схемой примитивной рекурсии с параметрами x1,...,xn (первое равенство называется начальным условием, а второе - рекурсивным шагом); (б) для n=0 имеют место равенства (qÎN) Эта система равенств называется схемой примитивной рекурсии без параметров. Функцию, полученную операцией примитивной рекурсии, обозначим: (а) для n=0: f(x)=Rec(q,h(x,y)) или f=Rec(q,h); (б) для n¹0: f(x1,...,xn,y)=Rec(g(x1,...,xn),h(x1,...,xn,y,z)) или f(x1,...,xn,y)=Recn(g(x1,...,xn),h(x1,...,xn,y,z)), или f=Rec(g,h), или f=Recn(g,h). Примеры (схем примитивной рекурсии). 1. g(x)«0, 2. g(x)«1, 3. g(x)«x, h(x,y,z)«z+x, h(x,y,z)«z×x, h(x,y,z)«xz, Оказывается (это можно доказать методом математической индукции), что приведённые схемы описы­вают соответственно функции:                                                                      x                                                                 x f(x,y)=x×y; f(x,y)=xy; f(x,2)=x ,...   Мы будем строить класс вычислимых функций, который будет замкнутым относительно операции при­митивной рекурсии, т.е. если он содержит некоторые функции из строящегося класса, то он содержит и результат применения к ним операции примитивной рекурсии. Ответ на вопрос, почему это так, даёт следующее Предложение (свойства операции примитивной рекурсии). Операция примитивной рекурсии сохраняет: (1) всюду определённость функций; (2) интуитивную вычислимость функций. Доказательство. (1) Действительно, пусть f=Rec(g,h), и функции g(x1,...,xn) и h(x1,...,xn,y,z) всюду определе­ны. Докажем, что функция f определена на любом наборе (x1,...,xn,y). Проведём доказательство индукцией по y. (а) y=0, тогда f(x1,...,xn,0)=g(x1,...,xn), а т.к. функция g всюду определена, то функция f на наборе (x1,...,xn,0) также определена. (б) Пусть на наборе (x1,...,xn,y) функция f определена. Тогда по определению операции примитивной рекурсии f(x1,...,xn,y+1)=h(x1,...,xn,y,f(x1,...,xn,y)). В силу всюду определённости функции h, получаем, что функция f определена на наборе (x1,...,xn,y+1), а т.к. f:Nn+1®N - арифметическая функция, то метод математической индукции позволяет сделать вывод, что функция f всюду определена. (2) Аналогично тому, как это делалось для операции подстановки, можно показать, что если фун­кции g и h интуитивно вычислимы и f=Rec(g,h), то существует и алгоритм af, вычисляющий фун­кцию f. Этот алгоритм состоит в следующем. Пусть задан некоторый набор (x1,...,xn,y). Применяем алгоритм ag, вычисляющий функцию g, к набору (x1,...,xn). В случае остановки через конечное число шагов получаем значение функции g на наборе (x1,...,xn), равное, по определению, f(x1,...,xn,0). После этого используем алгоритм ah, вычисляющий функцию h, применяя его после­довательно к наборам (x1,...,xn,0,f(x1,...,xn,0)), (x1,...,xn,1,f(x1,...,xn,1)),..., (x1,...,xn,y-1,f(x1,...,xn,y-1)). Если каждый раз работа алгоритма ah заканчивается остановкой, в результате мы получим соответ­ственно значения: h(x1,...,xn,1,f(x1,...,xn,1))=f(x1,...,xn,2),..., h(x1,...,xn,y-1,f(x1,...,xn,y-1))=f(x1,...,xn,y). Если же не произошло остановки алгоритма ag при работе на наборе (x1,...,xn) или не закончи­лась результативно работа алгоритма ah на одном из этапов (при вычислении h(x1,...,xn,yl,f(x1,...,xn,yl-1)) для какого-то ylÎ{0,1,...,y-1}), то перехода к следующему этапу никогда не произойдет, и искомый алгоритм af считаем неприменимым к набору (x1,...,xn,y). Предложение доказано. Таким образом, наш метод описания класса функций состоит в отборе функций, получаемых с помощью рекурсивных определений. МетаОпределение (содержательное). (1) Рекурсивным определением (лат.recurso, recurro) - "бежать назад, возвращаться") называется определение, которое основывается на "возвращении" от неизвестного к известному. (2) Рекурсивное определение функции - это определение, в котором значения функции для данных аргументов непосредственно определяются значениями той же функции для "более простых" аргументов или значениями "более простых" функций. Термин "более простой" следует уточнять выбором формализаций (простейшими, как правило, являются все константы).