Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора.Информатика.doc
Скачиваний:
7
Добавлен:
14.04.2019
Размер:
171.01 Кб
Скачать

3)Алгорифм Маркова

Элементарной операцией над последовательностями знаков может считаться замена подслова на некоторое слово (текстовая замена). Будем исходить из множеств M и M’ слов над общим набором знаков V (это можно делать без ограничения общности). Отдельную операцию замены (продукцию) будем записывать в виде а -> b и понимать её так:

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

Тезисы Черча и Тьюринга, принцип нормализации Маркова.

В 1936 г. А. Черчем был сформулирован тезис:

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

тезис Тьюринга: всякий алгоритм может быть реализован машинойТьюринга

А.А. Марковым был сформулирован принцип нормализации: всякая вычислимая в интуитивном смысле функция вычислима с помощью некоторого нормального алгорифма

Эквивалентность тезисов Черча и Тьюринга.

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

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

Часть2 №2

Введение в алгоритмическую сложность

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

Эффективность алгоритма.

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

Массовая и индивидуальная задача. Входная длина описания алгоритма. Временная сложность алгоритма.

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

(1) общим списком всех ее параметров,

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

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

Например, различные конкретные задачи о коммивояжере можно описать с помощью алфавита {с, [, ], /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, Пример: с[1]с[2]с[3]с[4]//10/5/9//6/9//3

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

Полиномиальные и экспоненциальные алгоритмы.

Будем говорить, что функция f(n) есть 0(g(n)), если существует константа с, такая, что |f(n)| c|g(n)| для всех значений n 0. Полиномиальным алгоритмом (или алгоритмом полиномиальной временной сложности) называется алгоритм, у которого временная сложность равна 0(р(п)), где р(п) - некоторая полиномиальная функция, а n —входная длина. Алгоритмы, временная сложность которых не поддается подобной оценке, называются "экспоненциальными". Различие между двумя указанными типами алгоритмов становится особенно заметным при решении задач большого размера. Различие между полиномиальными и экспоненциальными алгоритмами проявляется еще более убедительно, если проанализировать влияние увеличения быстродействия ЭВМ на время работы алгоритмов. Полиномиальные алгоритмы обычно считаются более предпочтительными по сравнению с экспоненциальными. Эта точка зрения различающая, с одной стороны, полиномиальные алгоритмы, а с другой стороны, экспоненциальные, является отправным пунктом в нашем определении труднорешаемых задач и теории NP- полных задач. Часто отождествляют полиномиальные алгоритмы с "хорошими" алгоритмами. Согласно такой точке зрения, экспоненциальные алгоритмы не следует считать "хорошими", и чаще всего так оно и есть. задача не считается "хорошо решаемой" до тех пор, пока для нее не получен полиномиальный алгоритм. Поэтому мы будем называть задачу труднорешаемой, если для её решения не существует полиномиального алгоритма

P, NP и NP полные проблемы.

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

Класс NP, определяемый неформально, - это класс всех задач распознавания П, которые при разумном кодировании могут быть решены недетерминированными (N - nondeterministic) алгоритмами за полиномиальное (P - polynomial) время принадлежность задачи П классу P влечет принадлежность дополнительной задачи классу P, но не известно, имеет ли место аналогичное утверждение для класса NP.

Любой детерминированный алгоритм может быть использован в качестве стадии проверки недетерминированного алгоритма.

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

Фундамент теории NP-полных задач был заложен в работе С. Кука, опубликованной в 1971 г. под названием "Сложность процедур вывода теорем". В этой короткой, но элегантной работе Кук получил несколько важных результатов. Во-первых, он подчеркнул важность понятия "сводимость за полиномиальное время", т. е. сводимость, которая выполняется с помощью алгоритма с полиномиальной временной сложностью. Если одна задача сводится за полиномиальное время к другой, то любой полиномиальный алгоритм решения второй задачи может быть превращен в полиномиальный алгоритм решения первой. Во-вторых, он обратил внимание на класс задач распознавания свойств (класс NP), которые могут быть решены за полиномиальное время на недетерминированном вычислительном устройстве. (Задачей распознавания свойств называется задача, решениями которой могут быть либо "да", либо "нет".) Большинство не поддающихся решению задач, которые встречаются на практике, после переформулировки их в виде задач распознавания попадают в этот класс. В-третьих, С. Кук доказал, что одна конкретная задача из NP, называемая задачей о выполнимости, обладает тем свойством, что всякая другая задача из класса NP может быть сведена к ней за полиномиальное время'). Таким образом, если задача о выполнимости может быть решена за полиномиальное время, то и любая задача из класса NP полиномиально разрешима, а если какая-то задача из NP труднорешаема, то и задача о выполнимости также должна быть труднорешаемой Таким образом, в некотором смысле задача о выполнимости - "самая трудная" в классе NP. Вопрос о том, действительно ли NP-полные задачи труднорешаемы, в настоящее время считается одним из основных открытых вопросов

Полиномиальная сводимость.

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

Проблема-переполнение памяти.

Сводимость по Карпу также называют полиномиальной сводимостью, а часто — просто сводимостью.