Реферат на тему:
Тео́рия алгори́тмов — наука, изучающая общие свойства и закономерности алгоритмов и разнообразные формальные модели их представления. К задачам теории алгоритмов относятся формальное доказательство алгоритмической неразрешимости задач, асимптотический анализ сложности алгоритмов, классификация алгоритмов в соответствии с классами сложности, разработка критериев сравнительной оценки качества алгоритмов и т. п.
Развитие теории алгоритмов начинается с доказательства К. Гёделем теорем о неполноте формальных систем, включающих арифметику, первая из которых была доказана в 1931 г. Возникшее в связи с этими теоремами предположение о невозможности алгоритмического разрешения многих математических проблем (в частности, проблемы выводимости в исчислении предикатов) вызвало необходимость стандартизации понятия алгоритма. Первые стандартизованные варианты этого понятия были разработаны в 30-х годах XX века в работах А. Тьюринга, А. Чёрча и Э. Поста. Предложенные ими машина Тьюринга, машина Поста и лямбда-исчисление Чёрча оказались эквивалентными друг другу. Основываясь на работах Гёделя, С. Клини ввел понятие рекурсивной функции, также оказавшееся эквивалентным вышеперечисленным.
Одним из наиболее удачных стандартизованных вариантов алгоритма является введённое А. А. Марковым понятие нормального алгоритма. Оно было разработано десятью годами позже работ Тьюринга, Поста, Чёрча и Клини в связи с доказательством алгоритмической неразрешимости ряда алгебраических проблем.
Следует отметить также немалый вклад в теорию алгоритмов, сделанный Д. Кнутом, A. Ахо и Дж. Ульманом. Одной из лучших работ на эту тему является книга «Алгоритмы: построение и анализ» Томаса Х. Кормена, Чарльза И. Лейзерсона, Рональда Л. Ривеста, Клиффорда Штайна.
Алан Тьюринг высказал предположение (известное как Тезис Чёрча — Тьюринга), что любой алгоритм в интуитивном смысле этого слова может быть представлен эквивалентной машиной Тьюринга. Уточнение представления о вычислимости на основе понятия машины Тьюринга (и других эквивалентных ей понятий) открыло возможности для строгого доказательства алгоритмической неразрешимости различных массовых проблем (то есть проблем о нахождении единого метода решения некоторого класса задач, условия которых могут варьироваться в известных пределах). Простейшим примером алгоритмически неразрешимой массовой проблемы является так называемая проблема применимости алгоритма (называемая также проблемой остановки). Она состоит в следующем: требуется найти общий метод, который позволял бы для произвольной машины Тьюринга (заданной посредством своей программы) и произвольного начального состояния ленты этой машины определить, завершится ли работа машины за конечное число шагов, или же будет продолжаться неограниченно долго.
В течение первого десятилетия истории теории алгоритмов неразрешимые массовые проблемы были обнаружены лишь внутри самой этой теории (сюда относится описанная выше проблема применимости), а также внутри математической логики (проблема выводимости в классическом исчислении предикатов). Поэтому считалось, что теория алгоритмов представляет собой обочину математики, не имеющую значения для таких её классических разделов, как алгебра или анализ. Положение изменилось после того, как А. А. Марков и Э. Л. Пост в 1947 году установили алгоритмическую неразрешимость известной в алгебре проблемы равенства для конечнопорождённых и конечноопределённых полугрупп (т. н. проблемы Туэ). Впоследствии была установлена алгоритмическая неразрешимость и многих других «чисто математических» массовых проблем. Одним из наиболее известных результатов в этой области является доказанная Ю. В. Матиясевичем алгоритмическая неразрешимость десятой проблемы Гильберта.
В настоящее время теория алгоритмов развивается, главным образом, по трем направлениям.
Целью анализа трудоёмкости алгоритмов является нахождение оптимального алгоритма для решения данной задачи. В качестве критерия оптимальности алгоритма выбирается трудоемкость алгоритма, понимаемая как количество элементарных операций, которые необходимо выполнить для решения задачи с помощью данного алгоритма. Функцией трудоемкости называется отношение, связывающие входные данные алгоритма с количеством элементарных операций.
Трудоёмкость алгоритмов по-разному зависит от входных данных. Для некоторых алгоритмов трудоемкость зависит только от объема данных, для других алгоритмов — от значений данных, в некоторых случаях порядок поступления данных может влиять на трудоемкость. Трудоёмкость многих алгоритмов может в той или иной мере зависеть от всех перечисленных выше факторов.
Одним из упрощенных видов анализа, используемых на практике, является асимптотический анализ алгоритмов. Целью асимптотического анализа является сравнение затрат времени и других ресурсов различными алгоритмами, предназначенными для решения одной и той же задачи, при больших объемах входных данных. Используемая в асимптотическом анализе оценка функции трудоёмкости, называемая сложностью алгоритма, позволяет определить, как быстро растет трудоёмкость алгоритма с увеличением объема данных. В асимптотическом анализе алгоритмов используются обозначения, принятые в математическом асимптотическом анализе. Ниже перечислены основные оценки сложности.
Основной оценкой функции сложности алгоритма f(n) является оценка . Здесь n — величина объёма данных или длина входа. Мы говорим, что оценка сложности алгоритма
если при g > 0 при n > 0 существуют положительные с1, с2, n0, такие, что:
при n > n0, иначе говоря, можно найти такие с1 и c2, что при достаточно больших n f(n) будет заключена между
и
.
В таком случае говорят еще, что функция g(n) является асимптотически точной оценкой функции f(n), так как по определению функция f(n) не отличается от функции g(n) с точностью до постоянного множителя (см. асимптотическое равенство). Например, для метода сортировки heapsort оценка трудоёмкости составляет
то есть g(n) = nlogn
Из следует, что
.
Важно понимать, что представляет собой не функцию, а множество функций, описывающих рост
с точностью до постоянного множителя.
дает одновременно верхнюю и нижнюю оценки роста функции. Часто бывает необходимо рассматривать эти оценки по отдельности. Оценка
представляет собой верхнюю асимптотическую оценку трудоемкости алгоритма. Мы говорим, что
если
Иначе говоря, запись означает, что f(n) принадлежит классу функций, которые растут не быстрее, чем функция g(n) с точностью до постоянного множителя.
Оценка задает нижнюю асимптотическую оценку роста функции f(n) и определяет класс функций, которые растут не медленнее, чем g(n) с точностью до постоянного множителя.
если
Например, запись обозначает класс функций, которые растут не медленнее, чем
, в этот класс попадают все полиномы со степенью большей единицы, равно как и все степенные функции с основанием большим единицы. Равенство
выполняется тогда и только тогда, когда
и
.
Асимптотический анализ алгоритмов имеет не только практическое, но и теоретическое значение. Так, например, доказано, что все алгоритмы сортировки, основанные на попарном сравнении элементов, отсортируют n элементов за время, не меньшее .
Важную роль в развитии асимптотического анализа алгоритмов сыграли A. Ахо, Дж. Ульман, Дж. Хопкрофт.
В рамках классической теории осуществляется классификация задач по классам сложности (P-сложные, NP-сложные, экспоненциально сложные и др.). К классу P относятся задачи, которые могут быть решены за время, полиномиально зависящее от объёма исходных данных, с помощью детерминированной вычислительной машины (например, машины Тьюринга), а к классу NP — задачи, которые могут быть решены за полиномиально выраженное время с помощью недетерминированной вычислительной машины, то есть машины, следующее состояние которой не всегда однозначно определяется предыдущими. Работу такой машины можно представить как разветвляющийся на каждой неоднозначности процесс: задача считается решённой, если хотя бы одна ветвь процесса пришла к ответу. Другое определение класса NP: к классу NP относятся задачи, решение которых с помощью дополнительной информации полиномиальной длины, данной нам свыше, мы можем проверить за полиномиальное время. В частности, к классу NP относятся все задачи, решение которых можно проверить за полиномиальное время. Класс P содержится в классе NP. Классическим примером NP-задачи является задача о коммивояжёре.
Поскольку класс P содержится в классе NP, принадлежность той или иной задачи к классу NP зачастую отражает наше текущее представление о способах решения данной задачи и носит неокончательный характер. В общем случае нет оснований полагать, что для той или иной NP-задачи не может быть найдено P-решение. Вопрос о возможной эквивалентности классов P и NP (то есть о возможности нахождения P-решения для любой NP-задачи) считается многими одним из основных вопросов современной теории сложности алгоритмов. Ответ на этот вопрос не найден до сих пор. Сама постановка вопроса об эквивалентности классов P и NP возможна благодаря введению понятия NP-полных задач. NP-полные задачи составляют подмножество NP-задач и отличаются тем свойством, что все NP-задачи могут быть тем или иным способом сведены к ним. Из этого следует, что если для NP-полной задачи будет найдено P-решение, то P-решение будет найдено для всех задач класса NP. Примером NP-полной задачи является задача о конъюнктивной форме
Исследования сложности алгоритмов позволили по-новому взглянуть на решение многих классических математических задач и найти для ряда таких задач (умножение многочленов и матриц, решение линейных систем уравнений и др.) решения, требующие меньше ресурсов, нежели традиционные.
wreferat.baza-referat.ru
| Код ссылки для вставки в веб-сайты, социальные сети и блоги :Теория алгоритмов |
Перед Вами представлен документ: Теория алгоритмов.
ПОЛЬЗОВАТЕЛЬСКОЕ СОГЛАШЕНИЕ
| Пользовательское соглашение об использовании документа (вид: методичка), именуемого как: Теория алгоритмов, опубликованного по адресу: http://referat7.ru/neo/source/edu-content-13105.html. Файл - методичка на тему Теория алгоритмов является результатом учебной деятельности. Интеллектуальные права на данный (ую) методичка принадлежат его автору. Данный документ представлен исключительно для ознакомительных целей, без вовлечения в коммерческий оборот. Копирование и публикация любой информации с данной страницы допустимы только при условии указания прямой индексируемой гиперссылки. Если Вы являетесь правообладателем информации, размещенной на этой странице и не согласны с её публикацией в открытом доступе - сообщите об этом администратору для решения данной проблемы. Загрузка и использование файла работы на тему "Теория алгоритмов" с веб-ресурса Referat7.ru означает согласие с данными пользовательскими соглашениям. |
Кафедра: Автоматика и информационные технологии
ТЕОРИЯ АЛГОРИТМОВ
Екатеринбург
2006
Приводится формализация понятия «алгоритм». Обсуждаются два способа формального описания алгоритма -с помощью нормальных алгоритмов Маркова и через машины Тьюринга. Приводятся меры сложности алгоритмов, определяются легко и трудноразрешимые задачи, классы задач P и NP, алгоритмически неразрешимые проблемы.
алгоритм вычисления математической функции, алгоритм технологического процесса, алгоритм проектирования ЭВМ или цеха завода и т.д. Элементарные операции могут
достаточно сложными: при вычислении функции это способен быть, например, нахождение корней уравнения, в проектных или технологических алгоритмах - принятие сложных проектных или технологических решений.Данное выше определение алгоритма не является формализованным и строгим по двум причинам. В первую очередь,в нём не формализовано понятие элементарной операции, и, во-вторых, не формализовано представление последовательности операций. Важность разработки общего для всех алгоритмов формального описания заключается в том, что оно даёт возможность иметь общие инструментарии для сравнения, оценки, преобразования и других действий над алгоритмами. Формализация операций алгоритмов связано со следующим. Любой алгоритм определён для некоторого объекта действия, каждый объект представляется в виде описания, причём описанием способен
не только тексты на языке, но и рисунки, чертежи и т.п. Значит, можно предположить, что объект описан в виде слова в заданном алфавите.Объект способен находиться в различных состояниях, чему соответствуют различные слова. Так, объектом для математических алгоритмов являются математическое описание задачи в форме матриц коэффициентов, графа смежности и т.п.т., для проектных алгоритмов - проектируемый объект в виде технического задания на проектирование или перечень требований и условий к результату.Операция определяется над описанием объекта и её результатом является новое (изменённое) описание (новое слово). Например, если решается графовая задача, то результатом операции способен
описание графа с промежуточным взвешиванием рёбер и/или вершин. Результатом проектной операции будет более полное, уточнённое описание объекта. Результатом работы всего алгоритма в графовой задаче способен
выделенный путь или цепь, частичный подграф или веса вершин или ребер. Результатом работы алгоритма проектирования является описание объекта проектирования, достаточное для его изготовления в заданной технологической базе.Рассмотрим несколько способов формального описания алгоритмов.Нормальный алгоритм МарковаАлгоритмическая система, созданная А.А.Марковым, основана на соответствии между словами в абстрактном алфавите A.Алгоритм задают в виде системы подстановок, реализующих отображение слов pi в слова qi.pi qi=1,…,k.Порядок подстановок зафиксирован. Объектом i-й элементарной операции алгоритма является слово в алфавите A, операция состоит в нахождении в этом слове первого слева вхождения слова pi и замене его на qi. Результатом операции будет изменённое слова, если вхождение найдено, или входное слово, если не найдено.Факт замены фиксируется и используется в организации следования операций.Исходное задание представляется некоторым словом в алфавите A. Это слово является входным для первой операции, если замена произошла, то снова выполняется первая операция, если нет, то выполняется следующая операция. После каждой операции выполняется следующая операция, если замена произошла, иначе переходят к выполнению первой операции.Алгоритм удобно представить в виде ориентированного графа, вершинами которого являются элементарные операторы и распознаватели. Распознаватель проверяет условие - имеет ли место вхождение рi во входное слово p. Если ДА, то за ним следует оператор, который заменяет первое слева вхождение слова рi на слово qi. Если НЕТ, то управление передается на вход следующего распознавателя.Дуги, исходящие из операторных вершин, подсоединяются либо к первой вершине - распознавателю, либо к выходной вершине. В первом случае подстановка называется обычной, во втором - заключительной.Кроме того, имеются входная и выходная вершины. Входная вершина связана дугой с первым распознавателем. На вход графа подается некоторое входное слово p.Пример. Граф для трех подстановок (к = 3) (рис.1) имеет три распознавателя (РВ1,РВ2,РВ3) и три операторные вершины (ОП1,ОП2,ОП3).Если подстановки заданы как ba ab, bc ba, bb ac, а входное слово р = bcbaab, то работа алгоритма будет иметь следующий вид.Пpимеp. Задан алфавит А={+, 1} и система подстановок:`1+1' `11' , `1'`1`.Обычная Заключительнаяподстановка подстановкаПусть дано входное слово р = '11+11+1'. Оно перерабатывается алгоритмом в строку:`11+11+1' `1111+1' `11111' `11111` !Алгоритм реализует сложение единиц.Тезис МарковаДля любого алгоритма в произвольном конечном алфавите А можно построить эквивалентный ему нормальный алгоритм.Все известные до сих пор алгоритмы нормализуемы.Машина ТьюрингаОдно из уточнений понятий алгоритма было дано Э. Постом и А. Тьюрингом независимо друг от друга в 1936-1937гг. Основная мысль их заключалась в том, что алгоритмические процессы - это процессы, которые способен свершить подходящим образом устроенная ”машина”. Ими были описаны гипотетические (условные) устройства, которые получили название «Машина Поста» и «Машина Тьюринга»(МТ). Так как в них много общего, то рассмотрим только машину Тьюринга.Машина Тьюринга состоит из следующих частей:1. Информационной ленты, представляющей бесконечную память машины. Это бесконечная лента, разделенная на ячейки. В каждой ячейке можно поместить лишь один символ из возможного их множества S={S1,S2,….,Sm},которое составляет внешний алфавит МТ. В этом алфавите один из символов (пусть это будет S1) соответствует пустому символу.2. Считывающей головки - чувствительного специального элемента, способного обозревать содержимое ячеек. Лента способен перемещаться вдоль головки так, что в каждый момент времени головка обозревает одну ячейку.3. Управляющего устройства (УУ), которое в каждый момент времени находится в некотором состоянии. Число состояний конечно. Обозначим множество состояний как {q1,q2,…,qn}. Среди состояний одно соответствует заключительному, при котором МТ останавливается. УУ связано со считывающей головкой.Кроме того, УУ вырабатывает три команды на перемещение ленты: П, Л, Н, гдеП - переместиться на соседнюю справа ячейку;Л - переместиться соседнюю слева ячейку;Н - продолжать обозревать ту же ячейку.Совокупность символов {q1,q2,…,qn} и {П,Л,Н} образуют внутренний алфавит МТ.Работа машины происходит в дискретном времени. В начальный момент времени в ограниченный участок ленты записано слово в алфавите S, представляющее исходное условие задачи. В остальных ячейках предполагается записанным пустой символ. Управляющее устройство находится в начальном состоянии q1. На каждом шаге работы МТ обозревает на ленте символ Skи в зависимости от него и от состояния qi, переходит в состояние qj, заменяет Sk на символ Sl и передвигает ленту (либо нет) на одну ячейку. Каждая элементарная операция имеет вид qiSk qjSl П(Л,Н). Множество элементарных операций упорядочено и образует абстрактную программу, которая представляет алгоритм.Считывающая головка и управляющее устройство образуют логический блок, который представляет собой (2,3)-полюсник.Структура МТ имеет следующий вид:Q - ячейка хранит символ состояния, а Р - ячейка - символ сдвига. В них происходит задержка данных символов до начала следующего такта.В качестве начальной информации на ленту можно записать любую конечную последовательность символов (входное слово) U внешнего алфавита. В начале работы алгоритма устройство управления находится в начальном состоянии, головка обозревает первый слева непустой символ входного слова U. Если после конечного числа тактов МТ останавливается, переходя в заключительное состояние, а на ленте оказывается информация B, то говорят, что машина применима к последовательности U и перерабатывает ее в последовательность B.Если остановка и сигнал об остановке никогда не поступают, то говорят, что МТ не применима к последовательности U.Рассмотрим функционирование МТ на примере сложения двух чисел, которые будем изображать в виде набора единиц.Внешний алфавит будет состоять из символов: {1, +, }, где - пустой символ.Внутренний алфавит будет состоять из четырех символов {q1, q2, q3, !}, где символ q1 означает начальное состояние, а ! - заключительное состояние.Пусть на ленте записана начальная информация:МТ должна ее переработать в результирующую информацию:Абстрактная программа, реализующий операцию сложения, будет иметь вид:| 1q1>q3П1q3>1q3П +q3>+q3П | q3>1q2H +q2 >+q2Л1q2>1q2Л q2 >q1П +q1 >!Н |
q1 | q2 | q3 | ||
1 | q3П | 1q2Л | 1q3П | |
q1П | q1П | 1q2H | ||
+ | !Н | +q2Л | +q3П |
задан посредством тьюринговой функциональной схемы и реализован в соответствующей машине Тьюринга.Обоснование гипотезы.Речь не идет о доказательстве гипотезы, так как она содержит не формализованные математические понятия.Уверенность в справедливости гипотезы основана, главным образом, на опыте. Все известные к настоящему времени алгоритмы могут
заданы посредством тьюринговых функциональных схем. Кроме того, внутри самой теории алгоритмов основная гипотеза не применяется, т.е. при доказательстве теорем этой теории ссылок на основную гипотезу не делается.Машина Тьюринга крайне примитивна. Но примитивность ее не в том, что она использует ленту и механическое движение головки, а то, что ее набор операций с памятью очень прост (запись и чтение символов) и что доступ к памяти в ней происходит не по адресу, а путем последовательного перемещения вдоль ленты. Поэтому выполнение на ней
таких простых функций как сложение и умножение требует много шагов. Машина Тьюринга была придумана не для того, чтобы производить на ней реальные вычисления, а чтобы показать, что сколь угодно сложный алгоритм можно построить из очень простых операций, причем сами операции и переход от одной операции к другой выполняются автоматически.Универсальная машина ТьюрингаУниверсальная машина позволяет решить любую задачу, если наряду с исходными данными в неё записать алгоритм. Как и любая машина Тьюринга, универсальная машина должна иметь конечные внешний и внутренний алфавиты, в то же время она должна иметь возможность принимать в качестве внешнего алфавита любые алфавиты. Это достигается за счёт кодирования внешнего алфавита в алфавите универсальной машины Тьюринга.Требования к кодированию:1. различным буквам должны сопоставляться различные кодовые группы, и одна и та же буква везде заменяется одной и той же кодовой группой;2. Строка текста должна однозначным образом разбиваться на кодовые группы.Сложность универсальной машины Тьюринга определяется произведением числа символов её внешнего алфавита на число состояний усторйства управления. Теорема Триттера определяет, что минимальная универсальная машина Тьюринга имеет 4 символа во внешнем алфавите и её УУ имеет 6 состояний.МЕPЫ СЛОЖНОСТИ АЛГОPИТМОВОценка алгоритмаОценка алгоритма бывает нужной в том случае, когда при решении некоторой задачи есть несколько разных алгоритмов, и стоит задача выбора одного из них для реализации. Даже если задача решается единственным алгоритмом, бывает нужно оценить сложность его реализации и его работы (объём памяти, время решения).Под пространственной эффективностью понимают объём памяти, требуемой для выполнения программы. Временная эффективность программы определяется временем, необходимым для ее выполнения. При этом необходимо учитывать следующие моменты.В первую очередь,время работы программы способен ограничиваться ее назначением. Если эта программа реального времени, например, бронирования авиабилетов, то время обработки задания не должно превышать нескольких минут. Если эта программа автоматического управления каким-либо устройством (например, управлением самолёта), то она должна «успевать» отрабатывать поступающую информацию и своевременно выдавать управляющие воздействия. Далее, -бывает важно знать, как изменяется время работы программы при увеличении размерности задачи. Это позволит оценить объем исходных данных, которые могут
обработаны на компьютере за приемлемое время.Реальное время работы программы на компьютере зависит не только от выбранного алгоритма. В значительной степени оно определяется типом ЭВМ, структурой представления данных, программной реализацией.Самым простым способом оценить алгоритм - сопоставить ему число элементарных операций в описании. При реализации это способен
число команд в программе или объём памяти, которую занимает программа. В этом случае оценка алгоритма A есть некоторое число k: (A) = k.Более интересной способен
оценка пары: алгоритма A и конкретной задачи , которая им решается. Например, оценкой способен
объем памяти под программу, исходные и промежуточные данные, необходимые для решения данной задачи , или время для решения данной задачи с помощью алгоритма A. В любом случае это будет число (A()) = k().Свойство массовости алгоритма предполагает, что алгоритм будет использоваться для решения класса A подобных задач, с разными исходными данными. Поэтому более сложной оценкой будет оценка как функция свойства задачи. Cопоставим каждой задаче из класса задач, решаемым алгоритмом, некоторый вектор числовых параметров задачи N = (n1, n2, …, nt). В этом случае оценка (A(A)) = k(N), и это уже будет функция от параметров задачи. Пример. Необходимо ценить алгоритм Прима - алгоритм выделения минимального остова. В первом случае мы рассматриваем число операторов в описании программы, реализующий алгоритм - число сравнений, условных переходов и т.д. Во втором случае анализируется работа алгоритма (программы) выделения остова некоторого заданного графа и определяется необходимый объём памяти. В последнем случае графу припишем параметры - число вершин в графе и число его рёбер, и сопоставим решению задачи функцию от этих параметров.Во многих задачах возможно свести вектор задачи к одному параметру. Так, для графа возможно характеризовать его числом вершин, учитывая, что число ребер в нём коррелированно с числом вершин. Для задач, связанных с булевыми функциями, параметром способен
число аргументов функции. Будем рассматривать только такие задачи. В этом случае оценкой алгоритма будет функция от одного параметра. Временная сложность алгоритма отражает требующиеся для его работы затраты времени Эта функция вставит каждой входной длине n в соответствие максимальное ( по всем индивидуальным задачам длины n) время, затрачиваемое алгоритмом на решение индивидуальных задач этой длины. Пример. Пусть функция оценки имеет вид как на рис.1. Необходимо решать задачи с параметром n, лежащим в пределах от 5 до 15. В этом случае необходимо выбрать для реализации алгоритм A1. Если параметр меняется от 20 до 30, лучше использовать алгоритм A2. Если параметр меняется в пределах от 10 до 35, то возможно или выбрать любой из данных алгоритмов, или построить новый алгоритм, который, например, проверяет каждый раз значение параметра и выбирает соответствующий алгоритм.Предположим, что можно рассмотреть все возможные алгоритмы Aiрешения задачи и для каждого параметра n оценить задачу двумя оценками 1() = min ((Ai ())) и 2() = max ((Ai ())), где min и max берётся по всем алгоритмам . В этом случае получим две границы решения данной задачи - нижнюю и верхнюю (рис.2). Этот рисунок определяет тот разброс сложности решений задачи и помогает ответить на вопрос: нужно ли тратить силы на поиск хорошего алгоритма или достаточно взять первый попавшийся. Очень часто возможно оценить исходя из анализа самой задачи вид функции оценки с точностью до некоторого сомножителя - константы. В этом случае эта оценка будет не только оценка алгоритма, но и оценка задачи. Функция f (n)есть O(g(n)), если существует константа с, такая, что f (n)0. По виду этой функции алгоритмы разделяются на следующие группы:с линейной оценкой сложности, если функция =C·n;с квадратичной сложностью, если = C · n2;с полиномиальной сложностью, если = C0 + C1·n +…+ Ck · nk;с факториальной сложностью, если =C·n!;с экспоненциальной сложностью, если = C · a n;с гиперэкспоненциальной сложностью, если = C · a t, где t = a n.Здесь C, a и k = некоторые константы, при этом число C способен
очень большим.Практические и NP-полные алгоритмыПо виду функций алгоритмы (и соответствующие задачи) делятся на два класса. К первому относятся алгоритмы групп 1-3, когда для полиномиальных алгоритмов k? 7. Эти алгоритмы называются практическими. Все
алгоритмы составляют второй класс и называются NP - полными.В табл. 1 приведена зависимость времени работы алгоритмов различной сложности для задач различной размерности, при условии, что время выполнения одной операции во всех алгоритмах одинаковы. Из таблицы видно, что для полинома, степени 5 задачу размерности 6о решить можно за приемлемое время, в то же время для экспоненциальных алгоритмов уже для размерности, больше 30 задача не решается. Таблица 1. | |||||||
Сложность задачи | |||||||
| Сложность алгоритма | 10 | 20 | 30 | 40 | 50 | 60 | |
N | 0.00001с | 0,00002с | 0,00003с | 0,0004с | 0,0005с | 0,00006с | |
N^2 | 0,0001с | 0,0004с | 0,0009с | 0,0016с | 0,025с | 0,0036с | |
N^3 | 0,001с | 0,008с | 0,027с | 0,064с | 0,125с | 0,216с | |
N^5 | 0,1 c | 3,2 c | 24,3 c | 1,7 мин | 5,2 мин | 13,0мин | |
2^n | 0,001 c | 1 c | 17,9 мин | 12,7 дней | 35,7 лет | 366 столетий | |
3^n | 0,059c | 58 мин | 6,5 лет | 3855 столетий | 2*10^8стол | 1,3*10^13 стол |
Таблица 2 | ||||
Сложность алгоритма | Максимальный размер задачи, разрешимый за единицу времени | |||
На современных ЭВМ | Если производ*10 | Если производ*1000 | ||
N | k | 10k | 1000k | |
Nlog n | k | Почти 10k при больших к | Почти 10k при больших к | |
N^2 | k | 3,16k | 31,6k | |
N^3 | k | 2,15k | 10k | |
2^n | k | K+3,3 | K+9,97 |
сведена любая известная задача.Например, рассмотрим задачу поиска пути в лабиринте. Изобразим лабиринт в виде графа, в котором вершинам соответствуют площадки, а ребрам -- соединяющие их коридоры. Каждой площадке или вершине графа сопоставим некоторое слово. Каждому коридору или ребру xixj сопоставим неориентированную подстановку, переводящую слово, соответствующее xi, в слово, соответствующее xj.Например, если вершине x1 соответствует слово `xypt', а смежной вершине x2 -- слово `xyqt', то неориентированная подстановка будет иметь вид:`p' -- `q'.Задача слов решена для некоторых частных случаев. Например, пусть даны алфавит {x, y, z, p, q} и система неориентированных подстановок:xz -- zx, xp -- px, yz -- zy, yp -- py, xyxz -- xyxzq, qzx -- xq, qpy -- yq.Спрашивается, эквивалентны ли в данном ассоциативном исчислении слова: xyxxzp и xzypxp?Ответ: нет, не эквивалентны, так как в первом слове нечетное число букв x, а во втором -- четное; система же подстановок сохраняет четность или нечетность букв x в словах.В общем же случае задача слов алгоритмически неразрешима.4 Задача распознавания выводимостиС задачей эквивалентности двух слов в ассоциативном исчислении тесно связана задача распознавания выводимости, которая является одной из важнейших задач математической логики.Задача распознавания выводимости состоит в следующем:для любых двух слов (формул) S и T в логическом исчислении определить выводима ли формула T из формулы S.Эта задача также алгоритмически неразрешима.Теория алгоритмов Методическое пособие по дисциплине «Математическая логика и теория алгоритмов» / В.П. Битюцкий, Н.В. Папуловская. Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2006, с.
Далее в список учебных работ по дисциплинеПрограммирование, компьютеры и кибернетика
Referat7.ru бесплатные учебные материалы (с) 2010-2018
referat7.ru
Агентство по управлению государственными учреждениями Пермского края
ГОУ СПО «Осинский профессионально-педагогический колледж»
Реферат
Элементы теории алгоритмов
Черныш Семен Олегович
Специальность 050709(0312)
Преподавание в начальных классах
Курс 2, группа 25Руководитель:
Бурдыга Валентина Павловна
Оса, 2010
Введение 3
1.Понятие алгоритма 4
2.Свойства алгоритмов 6
2.1.Дискретность 6
2.2.Детерминированность 7
2.3.Конечность 7
2.4.Массовость 7
2.5.Результативность 8
3.Виды алгоритмов 9
3.1.Линейный алгоритм 9
3.2.Циклический алгоритм 9
3.3.Разветвляющийся алгоритм 10
3.4.Вспомогательный алгоритм 10
4. Способы описания алгоритмов 12
4.1.Словесный способ 12
4.2.Блок-схемы 12
Заключение 14
Литература 15
Целью реферата является раскрытие базовых знаний об элементах теории алгоритмов.
Для решения поставленной цели необходимо выполнить следующие задачи:
Предположим, вы хотите вылепить из пластилина дракона. Результат во многом будет зависеть от вашего умения и опыта. Однако достичь поставленной цели окажется гораздо легче, если вы предварительно наметите план действий, например следующий:
Понятие алгоритма, является фундаментальным понятием математики и информатики, возникло задолго до появления вычислительных машин. Само же слово алгоритм появилось в средние века, когда европейцы познакомились со способами выполнения арифметических действий в десятичной системе, описанными узбекским математиком Мухаммедом бен Муса аль-Хорезми. Слово алгоритм – европеизированное произношение слов аль-Хорезми.
Первоначально под словом алгоритм понимали способ выполнения арифметических действий над десятичными числами. В дальнейшем это понятие стали использовать для обозначения любой последовательности действий, приводящих к решению поставленной задачи.
Область математики, известная как теория алгоритмов, посвящена исследованию свойств, способов записи, видов и сферы применения различных алгоритмов. Научное определение понятия алгоритма дал А. Черч в 1930 году. Позже и другие математики вносили свои уточнения в это определение. В школьном курсе информатики обычно пользуются следующими определениями:
Значение слова алгоритм очень схоже со значением слов рецепт, процесс, метод, способ. Однако любой алгоритм, в отличие от рецепта или способа обязательно обладает свойствами.
Обычно мы выполняем привычные действия не задумываясь, механически. Например, вы хорошо знаете, как открыть дверь ключом. Однако, чтобы научить этому малыша, придется четко разъяснить и самим действия, и порядок их выполнения:
Хочется заметить, что в 1969 году Эдсгер В. Дийкстра в статье «Структуры данных и алгоритмы» доказал, что для записи любого алгоритма достаточно трех основных алгоритмических конструкций: линейных, ветвящихся, циклических. Рассмотрим эти конструкции.
Циклический алгоритм – описание действий, которые должны повторяться указанное число раз или пока не выполнено заданное условие.
Перечень повторяющихся действий называется телом цикла.
Вспомним сюжет из русской сказки. Царевич останавливается у развилки дороги и видит камень с надписью: «Направо пойдешь – коня потеряешь, налево пойдешь – сам пропадешь…»
Подобная ситуация, заставляющая принимать решение в зависимости от некоторого условия, постоянно встречается в повседневной жизни.
Логика учит правильно формулировать условие, под которым понимается предложение, начинающееся со слова «если» и заканчивающееся перед словом «то». Условие может принимать значение «истина», когда оно выполнено, или «ложь», когда оно не выполнено. От значения условия зависит наше дальнейшее действие.
Вспомогательному алгоритму должно быть присвоено имя.
Допустим, вы хотите научиться жонглировать двумя или даже тремя мячами. Если внимательно приглядеться к действиям профессионального артиста и попытаться понять, как это ему удается делать, то оказывается – секрет в том. Что надо научится искусно выполнять несколько определенных движений, которым присвоим соответствующие названия:
Таблица 1 Стандартные графические объекты блок-схемы
| Вид стандартного графического объекта | Назначение |
![]() | Начало алгоритма |
![]() | Конец алгоритма |
| Гуляю | Выполняемое действие записывается внутри прямоугольника |
![]() | Условие выполнения действий записывается внутри ромба |
![]() | Последовательность выполнения действий:
|

nashaucheba.ru
Приводится формализация понятия «алгоритм». Обсуждаются два способа формального описания алгоритма –с помощью нормальных алгоритмов Маркова и через машины Тьюринга. Приводятся меры сложности алгоритмов, определяются легко и трудноразрешимые задачи, классы задач P и NP, алгоритмически неразрешимые проблемы.
Содержание ФОPМАЛИЗАЦИЯ ПОНЯТИЯ АЛГОPИТМА Определение Нормальный алгоритм Маркова Тезис Маркова Машина Тьюринга Основная гипотеза теории алгоритмов (тезис Чёрча) Универсальная машина Тьюринга МЕPЫ СЛОЖНОСТИ АЛГОPИТМОВ Оценка алгоритма Практические и NP-полные алгоритмы Алгоритмически неразрешимые проблемы
«Формализация понятия алгоритма; Машина Тьюринга. Тезис Черча; Алгоритмически неразрешимые проблемы. Меры сложности алгоритмов. Легко и трудноразрешимые задачи. Классы задач P и NP. NP – полные задачи. Понятие сложности вычислений; эффективные алгоритмы.» ( из стандарта специальности ВМКСС, дисциплина «Математическая логика и теория алгоритмов)
Пpимеp. Задан алфавит А={+, 1} и система подстановок: ‘1+1’ ® ‘11’ , ‘1’®`1`. Обычная Заключительная подстановка подстановка
Пусть дано входное слово р = ’11+11+1’. Оно перерабатывается алгоритмом в строку: ‘11+11+1’ ® ‘1111+1’ ® ‘11111’ ® `11111` ! Алгоритм реализует сложение единиц.
SHAPE \* MERGEFORMAT Структура МТ имеет следующий вид:
| 1q1 | Ùq3→1q2H +q2 →+q2Л 1q2→1q2Л Ùq2 →Ùq1П +q1 →Ù!Н |
После первого шага состояние YY=q3, состояние ленты как на рис.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||||
| | + | 1 | 1 |
| q1 | q2 | q3 | |
| 1 | Ùq3П | 1q2Л | 1q3П |
| Ù | Ùq1П | Ùq1П | 1q2H |
| + | Ù!Н | +q2Л | +q3П |
www.coolreferat.com