Скачать 178.43 Kb.
|
АлгоритмыПонятие алгоритма и его характерные чертыПонятие алгоритма принадлежит к числу основных понятий математики. Примерами алгоритмов являются:
В каждом из приведённых примеров приходится иметь дело с классом однотипных задач, или, как говорят, с массовой проблемой. Задачи такого класса отличаются друг от друга значениями входящих в них параметров. Так, в задаче отыскания решения квадратного уравнения ax2+bx+c=0 участвует три параметра a, b и c; меняя их, получаем различные задачи одного класса. В связи со сказанным можно дать следующее интуитивное определения понятия алгоритма. Алгоритмом называется общий единообразный, точно определённый способ решения любой задачи из данной массовой проблемы. Отметим характерные черты понятия алгоритма.
Разрешимые и перечислимые множестваПусть имеется некоторый алфавит. Обозначим через S множество всех слов в данном алфавите, а через M подмножество множества S. Определение 1. Множество М называется разрешимым, если для него существует алгоритм, решающий проблему вхождения слова x в М. Определение 2. Множество М называется эффективно перечислимым, если существует алгоритм, позволяющий перечислить все элементы этого множества (возможно с повторениями). Теорема 1. Если множества М и L эффективно перечислимы, то эффективно перечислимы множества M L и M L. Доказательство. Пусть множества М и L эффективно перечислимы. Тогда для каждого из них существует свой алгоритм, позволяющий перечислить все элементы данного множества. Алгоритм для эффективного перечисления множеств М L и M L получается путём одновременного применения алгоритмов для эффективного перечисления множеств М и L. Теорема 2 (Поста). Множество М разрешимо тогда и только тогда, когда оно само и его дополнение эффективно перечислимы. Доказательство. Путь множество М и его дополнение СМ эффективно перечислимы, то есть существуют алгоритмы А и В, с помощью которых можно перечислить элементы этих множеств. Но тогда при перечислении элементов множеств М и СМ в их списке встретится элемент х. Следовательно, существует алгоритм С, позволяющий узнать, принадлежит элемент x множеству М или не принадлежит. Пусть множество М разрешимо. Тогда существует алгоритм, решающий проблему вхождения 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. В связи с этим можно предложить такой алгоритм:
Поиски решения десятой проблемы Гильберта привлекли внимание многих математиков и длились около 70 лет. И только в 1968 году молодым математиком Ю.Матиясевичем было доказано, что нет алгоритма, дающего решение поставленной задачи. В подходах к определению понятия алгоритма можно выделить три основных направления. Первое направление связано с уточнением понятия эффективно вычислимой функции. Этим занимались А.Черч, К.Гедель, С.Клини, определившие алгоритм как последовательность построения сложных функций из более простых. В результате был выделен класс так называемых частично-рекурсивных функций, имеющих строгое математическое определение. Анализ идей, приведших к этому классу функций, дал им возможность высказать гипотезу о том, что класс эффективно вычислимых функций совпадает с классом частично рекурсивных функций. Второе направление связано с машинной математикой. Здесь сущность понятия алгоритма раскрывается путём рассмотрения процессов, осуществляемых в машине. Впервые это было сделано Тьюрингом, который предложил самую общую и вместе с тем самую простую концепцию вычислительной машины. Её описание было дано Тьюрингом в 1937 году. При этом Тьюринг исходил лишь из общей идеи работы машины как работы вычислителя, оперирующего в соответствии с некоторым строгим предписанием. Третье направление связано с понятием нормальных алгоритмов, введённым и разработанным российским математиком А.А.Марковым. В рамках этого направления алгоритм рассматривается как конечный набор правил подстановок цепочек символов. Удивительным научным фактом является доказательство эквивалентности приведенных выше определений алгоритма. Эквивалентность двух абстрактных моделей алгоритма состоит в том, что любой класс проблем, которые можно решить с помощью моделей одного типа, можно решить и на моделях другого типа. Оказалось, что все известные алгоритмы могут быть представлены аналогичными алгоритмами в рамках предложенных направлений (различных определений алгоритма). Вычислимые функции. Частично рекурсивные и общерекурсивные функцииДля алгоритмических проблем типичным является то обстоятельство, что требуется найти алгоритм для решения задачи, в условия которой входят значения некоторой конечной системы целочисленных параметров x1, x2,…, xn, а искомым результатом также является целое число y. Следовательно, стоит вопрос о существовании алгоритма для вычисления значений числовой функции y, зависящей от целочисленных значений аргументов x1, x2,…, xn. Определение 1. Функция называется эффективно вычислимой, если существует алгоритм, позволяющий вычислить ее значения. Переход от алгоритма к эффективно вычислимой функции дает определенные преимущества. Дело в том, что все требования, которые предъявляются к алгоритмам, выполняются и для совокупности всех вычислимых функций, которая получила название совокупности рекурсивных функций. Класс вычислимых функций можно построить следующим образом. Для начала выбираются простейшие функции:
Ясно, что все три простейшие функции всюду определены и интуитивно вычислимы. Далее вводятся операции над функциями.
(x1, x2,…, xт) = ( f1(x1, x2,…, xn), f2(x1, x2,…, xn), …, fm(x1, x2,…, xn)). Если каким-либо образом можно вычислить функции fi для определенных значений ai переменных xi, то, очевидно можно вычислить и функцию .
f(0, x2, x3,…, xn) = (x2, x3,…, xn), f(y + 1, x2, x3,…, xn) = (y, f(y, x2, x3,…, xn), x2, x3,…, xn). Отметим, что функция зависит от n – 1 аргументов, – от n + 1, а f – от n. Функции, определенные с помощью таких равенств называются функциями, полученными по схеме рекурсии. В качестве примера рассмотрим функцию f(y, x): f(0, x) = x, f(y + 1, x) = f(y, x) + 1. Здесь функция (x) = x, а (y, f(y, x), x) = y + 1. Рассмотрим, как можно вычислить значение функции f(y, x) при y = 5, x = 2. Так как f(0, x) = (2) = 2, то из второго равенства последовательно имеем (начиная с y = 0): f(1, 2) = (0, 2, 2) = 2 + 1 = 3, f(2, 2) = (1, 3, 2) = 3 + 1 = 4, f(3, 2) = (2, 4, 2) = 4 + 1 = 5, f(4, 2) = (3, 5, 2) = 5 + 1 = 6, f(5, 2) = (4, 6, 2) = 6 + 1 = 7 – искомое значение функции.
(x) = y[f(x, y) = 0]. (читается: «наименьшее y такое, что f(x, y) = 0») Аналогично можно определить функцию для многих переменных: ( x1, x2,…, xn) = y[f(x1, x2,…, xn, y) = 0]. Переход от функции f к функции называется применением -оператора. Функция может быть вычислена следующим образом:
Если окажется, что для всех достижимых (т.е. принадлижащих области определения) значений у функция f(x1, x2,…, xn, у) 0, то функцию ( x1, x2,…, xn) считают неопределенной. Определение 2. Функция f(x1, x2,…, xn) называется частично рекурсивной, если она может быть получена за конечное число шагов из простейших функций при помощи операций суперпозиции, схем примитивной рекурсии и -оператора. Определение 3. Функция f(x1, x2,…, xn) называется общерекурсивной, если она частично рекурсивна и всюду определена. Примерами общерекурсивных функций являются: f(x, y) = x + y, f(x, y) = x y, f(x, y) = x + n. Тезис А. Чёрча. Каждая интуитивно вычислимая функция является частично рекурсивной. Этот тезис нельзя доказать, так как он связывает нестрогое понятие интуитивно вычислимой функции со строгим математическим понятием частично рекурсивной функции. Но этот тезис можно опровергнуть, если построить пример функции интуитивно вычислимой, но не являющейся частично рекурсивной. Машины Тьюринга.При выполнении алгоритма в интуитивном смысле мы можем пользоваться потенциально неограниченной памятью, запоминая в процессе выполнения алгоритма по мере необходимости нужную информацию, например, на листочке бумаги. И если для решения проблемы известен алгоритм, то для его реализации необходимо лишь четкое выполнение шагов алгоритма. Таким образом, по своей сути, алгоритм есть механический процесс обработки информации. Впервые английский математик Алан Тьюринг определил понятие алгоритма исходя из понятия автоматически работающей машины; более того, он предложил формальную модель такого устройства, которое интуитивно моделирует действия человека, решающего задачу, руководствуясь некоторым алгоритмом. Это устройство было названо машиной Тьюринга. Рассмотрим один из вариантов указанной машины. Устройство машины Тьюринга включает в себя:
Каждое сведение, хранящееся на ленте, изображается конечным набором символов (букв) внешнего алфавита, отличного от а0. К началу работы машины на ленту подаётся начальное сведение (начальная информация). В этом случае управляющая головка, как правило, находится у крайнего левого знака с указанием начального состояния q1 (начальная конфигурация).
q0 Работа машины складывается из тактов, по ходу которых происходит преобразование начальной информации в промежуточные информации. В качестве начальной информации на ленту можно подать любую конечную систему знаков внешнего алфавита (любое слово в этом алфавите), расставленную произвольным образом по ячейкам. Но в зависимости от того, какая была подана начальная информация, возможны два случая:
В каждом такте работы машины она действует по функциональной схеме, которая имеет вид: aiqj av{п, л, н}qs Здесь ai, av – буквы внешнего алфавита; qj, qs – состояния машины; п, л, н – символы сдвига. В зависимости от того, какая буква на ленте обозревается управляющей головкой (в нашей записи ai) и в каком состоянии (в нашей записи qj) находится машина, в данном такте вырабатывается команда, состоящая из трёх элементов:
Совокупность всех команд образует программу машины Тьюринга. Программа представляется в виде двумерной таблицы и называется Тьюринговой функциональной схемой.
Ясно, что работа машины Тьюринга полностью определяется её программой. Иными словами, две машины Тьюринга с общей функциональной схемой неразличимы, и различные машины Тьюринга имеют различные программы. Основная гипотеза теории алгоритмов.Машина Тьюринга даёт один из путей уточнения понятия алгоритма. В связи с этим возникают вопросы: насколько общим является понятие машины Тьюринга? Можно ли считать, что способ задания алгоритмов с помощью машины Тьюринга является универсальным? Может ли всякий алгоритм задаваться таким образом? На эти вопросы современная теория алгоритмов предлагает ответ в виде следующей гипотезы: Всякий алгоритм может быть задан посредством тьюринговой функциональной схемы и реализован в соответствующей машине Тьюринга. Эта гипотеза называется тезисом Тьюринга. Её нельзя доказать, т.к. она связывает нестрогое определение понятия алгоритма со строгим определением понятия машины Тьюринга. Эта гипотеза может быть опровергнута, если удастся привести пример алгоритма, который не может быть реализован с помощью тьюринговой функциональной схемы. Однако все известные до сих пор алгоритмы могут быть заданы посредством тьюринговых функциональных схем. Напомним также, что другие способы уточнения понятия алгоритма (понятие нормального алгоритма А.А.Маркова, понятие рекурсивного алгоритма (рекурсивной функции), введённого Чёрчем, Гёделем и Клини) оказались равносильными. Этот факт является важным доводом в пользу сформулированной гипотезы. Нормальные алгоритмы МарковаОсновная операция при работе алгоритмов Маркова – это переработка слов в некотором алфавите А. Алфавитом называется всякое непустое конечное множество символов, а сами символы – буквами. Словом в алфавите А называется всякая конечная последовательность букв данного алфавита. Эта переработка заключается в производстве некоторого количества замен определенных последовательностей символов. Эти замены совершаются в строго определенном порядке, а именно: после каждой замены алгоритм читается с самого начала, а слово анализируется с самого первого символа. В отличие от машин Тьюринга, алгоритмы Маркова выполняются без какого – либо устройства, осуществляющего движения и имеющего внутреннюю память. Алгоритм представляет собой совокупность строк определенного вида, причем порядок строк имеет важнейшее значение. Формат строки следующий: {ai} {bj} [•], где {ai} – последовательность символов, которая ищется в слове – знак перехода к операции записи {bj} – последовательность символов, которая записывается вместо найденной [•] – знак принудительного окончания алгоритма (необязательный параметр). Окончание работы алгоритма происходит в тот момент, когда выполняется строка, содержащая знак принудительной остановки, либо тогда, когда более ни одна строка не может быть выполнена (в слове нет ни одной из искомых последовательностей символов). Например, алгоритм, состоящий из одной строки, вида 0 * будучи примененным к слову в алфавите {0,1}, заменит все нули на звездочки. В свою очередь алгоритм0 * • будучи примененным к слову в алфавите {0,1}, заменит на звездочку первый встреченный ноль. Довольно сложная для реализации на машинах Тьюринга задача сортировки слова по возрастанию, допустим в алфавите {0,1,2}, решается при помощи Маркова весьма изящно: 20 02 10 01 21 12 Некоторые задачи переработки слов нельзя решить без расширения алфавита. Например, дано произвольное двоичное слово. Надо убрать из него два первых знака. Рассмотрим алгоритм вида: 00 • 01 • 10 • 11 • Если в слове случайно первыми двумя символами были нули (например, «001011»), то алгоритм действительно выполнит указанную задачу. Также работа закончится успешно, если в слове ни разу не встретилось два нуля подряд, а первыми символами оказалась пара 01 (например, «01011101»). Но в слове 1100101 выбросятся два нуля, которые вовсе не являются первыми символами слова. В этом случае существующий алфавит надо расширить вспомогательными буквами, которых нет в начальном слове, и которые появляются в ходе вычисления. По сути, это некоторые аналоги внутренней памяти (состояний машин Тьюринга). Они вводятся с помощью формулы λ α (α – вспомогательная буква) или, что более корректно, пары формул λ 0 α 0 λ 1 α 1 Применив такие правила к слову λ 1100101 λ, получим: λ α 1100101 λ. Дальше мы перемещаем эту букву по слову вправо, стирая и отсчитывая символы (стерли первый): α 0 β α 1 β (стерли второй): β 0 • β 1 • Однако если мы расположим эти строки в обычном порядке, а именно: λ 0 α 0 λ 1 α 1 α 0 β α 1 β β 0 • β 1 • алгоритм будет работать совсем не так, как хотелось бы. В частности вся его деятельность будет сводиться к созданию бесконечно большого числа символов α поочередно со стиранием символов слова. Это связано с тем, что после выполнения каждой замены управление передается снова первой строке, а слово анализируется с левого символа. Поэтому чаще всего алгоритм пишется как бы «снизу-вверх», т.е. в самом начале ставятся строки, относящиеся к группе «окончание алгоритма», далее «тело программы» и в самом низу блок «инициализация», которая будет выполняться только однажды, а затем управление перейдет к более ранним строкам. Правильный алгоритм выглядит следующим образом. β 0 • β 1 • α 0 β α 1 β λ 0 α 0 λ 1 α 1 Ту же самую задачу можно решить, используя всего один дополнительный символ: α00 • α01 • α10 • α11 • α0 • α1 • λ 0 α 0 λ 1 α 1 |
Тип урока Излагаемый материал должен быть научным, достоверным, доступным, должен быть связан с жизнью и опираться на прошлый опыт детей | Понятие о метаболизме Такие пути могут быть линейными и разветвленными. Ферменты, катализирующие реакции, протекающие на этих путях, в организме объединены... | ||
Основной психофизический закон В результате он получил два ряда переменных величин — величины раздражителей и соответствующие им величины ощущений. Ощущения растут... | Программа по формированию навыков безопасного поведения на дорогах... Излагаемый материал должен быть научным, достоверным, доступным, должен быть связан с жизнью и опираться на прошлый опыт детей | ||
Программа по формированию навыков безопасного поведения на дорогах... Урок сегодня Каким он должен быть образец современного урока? Какой должна быть его структура, форма, методика? Каким требованиям... | Каким он должен быть? Каким он должен быть? Устарели ли требования, предъявляемые к построению урока, методика его проведения? Конечно же, нет. Триединство... | ||
Реферат по 10-15 стр реферат должен быть написан самостоятельно Реферат должен быть написан самостоятельно и построен по типу статьи: краткая аннотация 4-5 строчек, введение (цели, задачи реферата,... | Президент Российской Федерации вправе отменить закон, противоречащий... До получения на руки экземпляра трудового договора работник не вправе приступать к работе | ||
21 ноября 2011 года принят Федеральный закон «О бесплатной юридической... Федеральный закон, направленный на создание условий получения бесплатной юридической помощи для малоимущих и иных социально незащищенных... | Темы рефератов по разделу «Компьютерные телекоммуникации» Реферат должен быть объемом 2-5 печатных листов. Ученик должен уметь рассказать содержание реферата и отвечать на вопросы по теме.... | ||
В здании должен быть как минимум один вход, доступный для инвалидов... Если для инвалидов оборудован отдельный вход, то он должен быть обозначен знаком доступности | Рабочая программа дисциплины «Экономико-математические методы в стратегическом управлении» Дисциплина является предшествующей для следующих дисциплин: «Корпоративные информационные системы», «Компьютерные технологии в управлении»,... | ||
Урок это не только и не столько средство передачи знаний, сколько... Муниципальное общеобразовательное учреждение средняя общеобразовательная школа №9 | Сценарий праздника "Прощание с начальной школой" Очень рады видеть вас сегодня в нашем зале на «Празднике прощания с начальной школой». Как сказал великий русский педагог К. Д. Ушинский,... | ||
Пропуск для прохода в здание должен быть заказан не менее чем за... Определение наилучшего предложения о заключении договора на поставку телефонных гарнитур и аксессуаров к ним по фиксированным ценам... | Объем реферата не менее 15-20 страниц реферат должен быть правильно... Объем реферата не менее 15-20 страниц. Реферат должен быть правильно оформлен. Это значит, что в реферате должно быть введение, заключение... |