Перейти на главную страницу
Понятие алгоритма принадлежит к числу основных понятий математики. Примерами алгоритмов являются:
В связи со сказанным можно дать следующее интуитивное определения понятия алгоритма.
Отметим характерные черты понятия алгоритма.
Пусть имеется некоторый алфавит. Обозначим через S множество всех слов в данном алфавите, а через M подмножество множества S.
Пусть множество М разрешимо. Тогда существует алгоритм, решающий проблему вхождения x в М. Пользуясь этим алгоритмом, составим список элементов, входящих в М, и список элементов, входящих в СМ. Следовательно, мы получим два алгоритма А и В, позволяющих перечислить множества М и СМ. Примерам эффективно перечислимого множества являются множество М = {1, 4, 9 ,…,n2,…} квадратов натуральных чисел.
Действительно, множество М = {n2} перечислимо, т.к. для получения его элементов нужно последовательно брать натуральные числа и возводить их в квадрат. Более того, это множество является также и разрешимым: для проверки того, принадлежит ли некоторое натуральное число х множеству М, нужно разложить число на простые множители, и это даст возможность установить, является ли оно точным квадратом.
Теорема 3. Существует перечислимое, но неразрешимое множество натуральных чисел. Для доказательства теоремы, как это следует из теоремы Поста, достаточно привести пример такого множества натуральных чисел U, которое само было бы перечислимым, а его дополнение CU перечислимым не было.
Пусть М0, М1, М2, … – эффективное перечисление всех перечислимых множеств натуральных чисел, т.е. такое перечисление, что по любому n N можно восстановить само множество Мn.
Рассмотрим теперь алгоритм А, который последовательно перечисляет все элементы множества U. На шаге с номером (m, n) этот алгоритм вычисляет элемент с номером m множества Мn, и если этот элемент совпадает с n, то оно относит его в множество U, т.е. nU nMn.
Отсюда ясно, что множество CU отличается от любого перечислимого множества хотя бы одним элементом, т.к. CU состоит из всех таких элементов n, что n Mn. Поэтому CU не является перечислимым. Следовательно, согласно теореме Поста U не разрешимо.
В истории математики накопилось много случаев длительных и часто безрезультатных поисков тех или иных алгоритмов. При этом естественно возникало сомнение в существовании алгоритма.
Одним из ярких примеров такого случая является история решения десятой проблемы Д.Гильберта.
В 1900 году на втором международном математическом конгрессе в Париже немецкий математик Давид Гильберт огласил список 23 трудных проблем, на важность решения которых он обращал внимание математической общественности. Среди них была и следующая 10-я проблема Гильберта: требуется выработать алгоритм, позволяющий для любого диофантова уравнения выяснить, имеет ли оно целочисленное решение.
Рассмотрим всевозможные диофантовы уравнения, т.е. уравнения вида P = 0, где P является многочленом с целочисленными коэффициентами. Такими будут, например, уравнения
x2 + y2 – 2xz = 0,
10x5 + 7x2 + 5 = 0,
из которых первое с тремя неизвестными, а второе с одним неизвестным. В общем случае рассматривают уравнения с любым числом неизвестных. Такие уравнения могут иметь целочисленные решения, а могут и не иметь.
Так, уравнения x2 + y2 – 2xz = 0 имеет бесконечное множество целочисленных решений, а уравнение 10x5 + 7x2 + 5 = 0 таких решений не имеет.
Для частного случая диофантова уравнения с одним неизвестным давно известен алгоритм, позволяющий найти все целочисленные решения. Установлено, что если уравнение
Рn(x) = a0xn + a1xn-1 +…+ an-1x + an = 0
с целочисленными коэффициентами имеет целый корень, то он обязательно является делителем аn. В связи с этим можно предложить такой алгоритм:
В подходах к определению понятия алгоритма можно выделить три основных направления.
Удивительным научным фактом является доказательство эквивалентности приведенных выше определений алгоритма. Эквивалентность двух абстрактных моделей алгоритма состоит в том, что любой класс проблем, которые можно решить с помощью моделей одного типа, можно решить и на моделях другого типа. Оказалось, что все известные алгоритмы могут быть представлены аналогичными алгоритмами в рамках предложенных направлений (различных определений алгоритма).
Переход от алгоритма к эффективно вычислимой функции дает определенные преимущества. Дело в том, что все требования, которые предъявляются к алгоритмам, выполняются и для совокупности всех вычислимых функций, которая получила название совокупности рекурсивных функций.
Класс вычислимых функций можно построить следующим образом. Для начала выбираются простейшие функции:
Далее вводятся операции над функциями.
Если каким-либо образом можно вычислить функции fi для определенных значений ai переменных xi, то, очевидно можно вычислить и функцию .
Отметим, что функция зависит от n – 1 аргументов, – от n + 1, а f – от n.
Функции, определенные с помощью таких равенств называются функциями, полученными по схеме рекурсии.
В качестве примера рассмотрим функцию f(y, x):
Здесь функция (x) = x, а (y, f(y, x), x) = y + 1. Рассмотрим, как можно вычислить значение функции f(y, x) при y = 5, x = 2. Так как f(0, x) = (2) = 2, то из второго равенства последовательно имеем (начиная с y = 0):
(читается: «наименьшее y такое, что f(x, y) = 0»)
Аналогично можно определить функцию для многих переменных:
( x1, x2,…, xn) = y[f(x1, x2,…, xn, y) = 0].
Переход от функции f к функции называется применением -оператора.
Функция может быть вычислена следующим образом:
Примерами общерекурсивных функций являются: f(x, y) = x + y, f(x, y) = x y, f(x, y) = x + n.
Этот тезис нельзя доказать, так как он связывает нестрогое понятие интуитивно вычислимой функции со строгим математическим понятием частично рекурсивной функции. Но этот тезис можно опровергнуть, если построить пример функции интуитивно вычислимой, но не являющейся частично рекурсивной.
При выполнении алгоритма в интуитивном смысле мы можем пользоваться потенциально неограниченной памятью, запоминая в процессе выполнения алгоритма по мере необходимости нужную информацию, например, на листочке бумаги. И если для решения проблемы известен алгоритм, то для его реализации необходимо лишь четкое выполнение шагов алгоритма. Таким образом, по своей сути, алгоритм есть механический процесс обработки информации.
Впервые английский математик Алан Тьюринг определил понятие алгоритма исходя из понятия автоматически работающей машины; более того, он предложил формальную модель такого устройства, которое интуитивно моделирует действия человека, решающего задачу, руководствуясь некоторым алгоритмом. Это устройство было названо машиной Тьюринга.
Рассмотрим один из вариантов указанной машины.
|
А0 |
а1 |
а2 |
а3 |
… |
… |
… |
аn |
а0 |
А0 |
|
|
|
|
|
|
|
|
В качестве начальной информации на ленту можно подать любую конечную систему знаков внешнего алфавита (любое слово в этом алфавите), расставленную произвольным образом по ячейкам. Но в зависимости от того, какая была подана начальная информация, возможны два случая:
Здесь ai, av – буквы внешнего алфавита; qj, qs – состояния машины; п, л, н – символы сдвига.
В зависимости от того, какая буква на ленте обозревается управляющей головкой (в нашей записи ai) и в каком состоянии (в нашей записи qj) находится машина, в данном такте вырабатывается команда, состоящая из трёх элементов:
|
a0 |
a1 |
a2 |
q1 |
a2 л q3 |
a1 п q2 |
a2 л q1 |
q2 |
a0 н q2 |
a2 н q1 |
a1 н q2 |
q3 |
a0 п q1 |
a1 п q4 |
a2 н q1 |
q4 |
a1 н q3 |
A0 п q4 |
a2 п q4 |
Ясно, что работа машины Тьюринга полностью определяется её программой. Иными словами, две машины Тьюринга с общей функциональной схемой неразличимы, и различные машины Тьюринга имеют различные программы.
На эти вопросы современная теория алгоритмов предлагает ответ в виде следующей гипотезы:
Всякий алгоритм может быть задан посредством тьюринговой функциональной схемы и реализован в соответствующей машине Тьюринга.
Эта гипотеза называется тезисом Тьюринга. Её нельзя доказать, т.к. она связывает нестрогое определение понятия алгоритма со строгим определением понятия машины Тьюринга.
Эта гипотеза может быть опровергнута, если удастся привести пример алгоритма, который не может быть реализован с помощью тьюринговой функциональной схемы.
Однако все известные до сих пор алгоритмы могут быть заданы посредством тьюринговых функциональных схем.
Напомним также, что другие способы уточнения понятия алгоритма (понятие нормального алгоритма А.А.Маркова, понятие рекурсивного алгоритма (рекурсивной функции), введённого Чёрчем, Гёделем и Клини) оказались равносильными.
Этот факт является важным доводом в пользу сформулированной гипотезы.
Основная операция при работе алгоритмов Маркова – это переработка слов в некотором алфавите А. Алфавитом называется всякое непустое конечное множество символов, а сами символы – буквами. Словом в алфавите А называется всякая конечная последовательность букв данного алфавита.
Эта переработка заключается в производстве некоторого количества замен определенных последовательностей символов. Эти замены совершаются в строго определенном порядке, а именно: после каждой замены алгоритм читается с самого начала, а слово анализируется с самого первого символа. В отличие от машин Тьюринга, алгоритмы Маркова выполняются без какого – либо устройства, осуществляющего движения и имеющего внутреннюю память.
Алгоритм представляет собой совокупность строк определенного вида, причем порядок строк имеет важнейшее значение. Формат строки следующий:
{ai} {bj} [•], где
{ai} – последовательность символов, которая ищется в слове
– знак перехода к операции записи
{bj} – последовательность символов, которая записывается вместо найденной [•] – знак принудительного окончания алгоритма (необязательный параметр).
Окончание работы алгоритма происходит в тот момент, когда выполняется строка, содержащая знак принудительной остановки, либо тогда, когда более ни одна строка не может быть выполнена (в слове нет ни одной из искомых последовательностей символов).
Например, алгоритм, состоящий из одной строки, вида 0 * будучи примененным к слову в алфавите {0,1}, заменит все нули на звездочки.
В свою очередь алгоритм0 * • будучи примененным к слову в алфавите {0,1}, заменит на звездочку первый встреченный ноль.
Довольно сложная для реализации на машинах Тьюринга задача сортировки слова по возрастанию, допустим в алфавите {0,1,2}, решается при помощи Маркова весьма изящно:
20 02
10 01
Некоторые задачи переработки слов нельзя решить без расширения алфавита. Например, дано произвольное двоичное слово. Надо убрать из него два первых знака. Рассмотрим алгоритм вида:
00 •
01 •
11 •
λ 0 α 0
λ 1 α 1
Применив такие правила к слову λ 1100101 λ, получим: λ α 1100101 λ.
Дальше мы перемещаем эту букву по слову вправо, стирая и отсчитывая символы
(стерли первый):
α 0 β
α 1 β
β 0 •
Однако если мы расположим эти строки в обычном порядке, а именно:
λ 0 α 0
λ 1 α 1
α 0 β
α 1 β
β 1 •
Правильный алгоритм выглядит следующим образом.
β 0 •
β 1 •
α 1 β
λ 1 α 1
Ту же самую задачу можно решить, используя всего один дополнительный символ:
α00 •
α10 •
α0 •
λ 0 α 0
Понятие алгоритма принадлежит к числу основных понятий математики. Примерами алгоритмов являются
30 09 2014
1 стр.
Реклама неличная платная форма коммуникации с целью продвижения товара, услуги с помощью сми от имени спонсора
14 09 2014
12 стр.
Астахова, В. И. Студент XXI века: его сущностные черты и характерные особенности / В. И. Астахова // Alma mater. – 2010. № С. 60-63
09 10 2014
1 стр.
Сборник методических материалов по курсу «Мировая экономика». – М.: Импэ им. А. С. Грибоедова, 2003. – 18 с
30 09 2014
1 стр.
Страница 1: Условия и характерные черты развития русской культуры в 13-15 веках
17 12 2014
1 стр.
Цель: изучить характерные черты народного деревянного зодчества, в том числе вспомнить о традициях, связанных со строительством
11 10 2014
1 стр.
Противоположностью совершенной конкуренции является чистая монополия
01 09 2014
1 стр.
Сирийская Арабская Республика расположена в Юго-Западной Азии, или как принято называть – на Ближнем Востоке. Территория ее равна 185,2 тыс кв км
10 10 2014
3 стр.