Справочник от Автор24
Поделись лекцией за скидку на Автор24

Теория алгоритмов

  • 👀 437 просмотров
  • 📌 414 загрузок
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Теория алгоритмов» pdf
ТЕМА ТЕОРИЯ АЛГОРИТМОВ Теория алгоритмов – это раздел математики, который изучает общие свойства алгоритмов. Различают качественную и метрическую теорию алгоритмов. Основной проблемой качественной теории алгоритмов является проблема построения алгоритма, обладающего заданными свойствами (ее называют алгоритмической). Метрическая теория алгоритмов исследует алгоритмы с точки зрения их сложности (алгоритмическая теория сложности). Алгоритм – это общий, единообразный, точно установленный способ решения любой задачи из данной массовой проблемы. Приведенное понятие алгоритма нестрогое. Характерные черты алгоритма: - дискретность – каждая последующая величина получается из значений предыдущей по определенному закону; - детерминированность – последующие значения величин зависят от предыдущих; - элементарность шагов алгоритма – закон получения последующей системы величин из предшествующей должен быть простым; - массовость – начальные условия могут варьироваться в бесконечных пределах; - результативность – конечный результат всегда должен быть получен. В уточнении понятия алгоритма выделяются три направления: 1. Уточнение понятия эффективно вычислимой функции. В результате был выделен класс частично математическое определение. рекурсивных функций, имеющих строгое 2. Машинная раскрывается арифметика. путем Здесь рассмотрения сущность процессов, понятия алгоритма осуществляемых в вычислительной машине. 3. Направление, связанное с понятием нормальных алгоритмов из работ А. Маркова. Первое направление – уточнение понятия алгоритма – связано с точным описанием специального класса функций, называемых рекурсивными. Функция y = f (x1, x2, …, xn) называется эффективно вычислимой, если существует алгоритм, позволяющий вычислить ее значения. Простейшие эффективно вычислимые функции: 1. λ (x) = x + 1 – оператор сдвига; 2. О(х) = 0 – оператор аннулирования; 3. Inm f (x1, x2, …, xn) = xm, 1≤m≤n – оператор проектирования. Совокупность вычислимых функций, удовлетворяющих характерным чертам алгоритма, называется совокупностью рекурсивных функций. Примитивно-рекурсивными функциями называются функции, полученные по схеме примитивной рекурсии: Пусть имеются две функции φ ( x2, …, xn) и ψ (x1, x2, …, xn+1 ), n>1. 𝑓(0,x ,x ,...,x )=ϕ(𝑥2 ,x ,...,x ) 3 𝑛 3 𝑛 Определим новую функцию {𝑓(y+1,x ,x ,...,x2 )=ψ(y,f(y,x } ,x ,...,x ),x 2 3 𝑛 𝑛 2 ,x3 ,...,x𝑛 ), 2 3 где функция φ зависит от n-1 аргументов, ψ – от n+1 аргумента, а примитивнорекурсивная функция f – от n аргументов. Функция y = f (x1, x2, …, xn) называется частично рекурсивной, если она может быть получена за конечное число шагов из трех простейших эффективновычислимых функций при помощи операции суперпозиции, схем примитивной рекурсии и операции минимизации. Функция y = f (x1, x2, …, xn) называется общерекурсивной, если она частично рекурсивна и всюду определена. При доказательстве примитивной рекурсивности функций можно использовать не только три простейших эффективно-вычислимых функции, но и те функции, рекурсивность которых уже доказана. Например, операцию сложения F(x, y) = x + y. Задача №1. Доказать, что функция f(x) = 2 x примитивно-рекурсивная. Так как заданная функция f(x) есть функция одного аргумента, то для использования операции примитивной рекурсии мы должны иметь функцию φ, зависящую от 1 аргумента, т.е. константу, и ψ – зависящую от 2 аргументов. Имеем: 𝑓(0) = 20 = 1, { } 𝑓(x+1) = 2x+1 = 2 ⋅ 2𝑥 = 2 ⋅ 𝑓(𝑥). Первая из этих функций есть функция константы φ ( x ) = 1, а вторая ψ (x, y) = 2y – функция двух аргументов. Проверим, что функции выбраны правильно. Из определения операции примитивной рекурсии, имеем: f ( 0 ) = φ ( 0 ) = 1, f ( 1 ) = 2 f ( 0 ) = 2, f ( 2 ) = 2 f ( 1 ) = 4, f ( 3 ) = 2 f ( 2 ) = 8, … Следовательно, f ( x ) = 2 x. Второе направление, связанное с машинной арифметикой, заключается в том, что алгоритмические процессы могут имитироваться на подходяще построенных машинах, которые описываются в точных математических терминах. Машиной Поста или машиной Тьюринга называется абстрактная машина, которая «механически» выполняет вычисления. Тезис Тьюринга: для всякой вычислимой функции может быть построена машина Тьюринга. Машина Тьюринга представляет собой бесконечную в обе стороны ленту, разбитую на ячейки. В каждой ячейке ленты может быть записан один из символов алфавита А = {a0, a1, a2, …, am }, называемого внешним алфавитом машины М. Один из символов алфавита А выделяют, например, а 0 и называют его пустым. Часто этот символ обозначают также как 0, λ или Ø. Его наличие в ячейке означает, что она пустая. Кроме того, машина М имеет универсальную головку (УГ), которая в каждом такте работы машины обозревает одну ячейку ленты. По сигналам с устройства управления (УУ) универсальная головка обозревает символ, записанный в ячейке, либо записывает один из символов алфавита А в ячейку. По сигналам с УУ головка может перемещаться вдоль ленты на одну ячейку вправо, влево или оставаться на месте. УУ машины М управляет всеми процессами в машине и может находиться в одном из состояний множества Q = { q0, q1, …, qn }. Множество Q называют внутренним алфавитом машины М. В этом множестве выделяют два символа: q0 – заключительное состояние машины и q1 – начальное состояние машины. Схематически устройство машины Тьюринга представлено на рисунке. УГ УУ Работа машины происходит по программе, состоящей из отдельных команд. Структура команды имеет вид: ak qi → aj ql W, где ak – символ, обозреваемый головкой на ленте; qi – состояние, в котором находится УУ машины; aj – символ, который УГ записывает в обозреваемую ячейку; ql – состояние, в которое переходит УУ машины; W – команда перемещения головки. Это может быть один из следующих символов: R – перемещение вправо на одну ячейку, L – влево на одну ячейку, S – головка остается на месте. Построить машину Тьюринга – означает написать программу ее работы. Существуют различные варианты построения машины Тьюринга: одно-, двух- и многоленточные, используются различные алфавиты. В дальнейшем рассмотрении и при выполнении контрольной работы будем полагать, что алфавит машины Тьюринга состоит из двух символов: { 0, | }, где 0 – пустой символ, а | («вертикальная черта») – символ занятости ячейки. В этом алфавите любое целое неотрицательное число х представляется х+1 символами |, записанными в соседних ячейках ленты. В этом случае число 0 будет записано так: …0|0… Для сокращения записи число х записывают также следующим образом: … 0 | x+1 0 … Композицией машин Тьюринга М1 и М2 называется машина Тьюринга М, которая первоначально функционирует как машина Тьюринга М 1, заключительное состояние которой q0 изменяют на начальное состояние машины Тьюринга М2. И далее машина М функционирует как машина Тьюринга М 2. Композицию машин Тьюринга обозначают: М = М1 ◦ М2. Задача №2. Имеется машина Тьюринга с внешним алфавитом А = { 0, | }, алфавитом внутренних состояний Q = { q0, q1 } и программой, записанной в виде последовательности из двух команд: q1 0 → q0 | , q1 | → q1 | R. Определите, в какое слово перерабатывает машина слово | 0 | | 0 0 | |, если она находится в начальном состоянии q1 и обозревает ячейку 4, считая слева. Изобразим схематически начальную конфигурацию машины: q1 | | | | | Схема означает, что машина находится в состоянии q1 и обозревает ячейку, в которой записан символ |, в соседней ячейке слева записан тот же символ, а в соседней ячейке справа ничего не записано и т.д. На первом такте работы согласно команде q1 | → q1 | R машина остается в прежнем состоянии 1, в обозреваемую ячейку вписывает символ | и переходит к обозрению следующей ячейки справа. Изобразим схематически положение, в котором оказалась машина: q1 | | | | | На втором такте работы согласно команде q1 0 → q0 | машина записывает в обозреваемую ячейку 5 символ |, продолжает обозревать ту же ячейку и переходит в состояние q0, т.е. останавливается. Создавшаяся конфигурация имеет вид: q1 | | | | | | Таким образом, из данного начального положения слово | 0 | | 0 0 | | перерабатывается машиной в слово | 0 | | | 0 | | . Задача №3. Построить машину Тьюринга с внешним алфавитом А = { 0, | }, вычисляющую функцию f(x) = x + y, исходя из предположения, что перед началом работы на ленте машины записаны исходные значения аргументов и универсальная головка (УГ) обозревает первый слева значащий символ, а после выполнения вычислений УГ останавливается перед первым значащим символом результата. Аргументы функции записаны на ленте машины в виде последовательности символов «|» (х+1 символ – для первого аргумента и у+1 символ – для второго аргумента) и отделяются друг от друга пустым символом. q1 | | … | | | | … | | Определим способ функционирования машины Тьюринга для получения результата. Поскольку результат представляет собой массив занятых ячеек числом х+у+1, определяющих число х+у, машина будет читать символы первого аргумента х, оставляя их неизменными. Как только машина прочтет пустой символ, разделяющий два аргумента, в ячейку, содержащую этот символ, будет записан символ «|». В результате на ленте будет получен сплошной массив занятых ячеек. Число занятых ячеек: х+1+у+1+1, очевидно, не две больше, чем необходимо для представления результата – суммы двух чисел. Одна «лишняя» ячейка будет занятой, так как машина заполнит пустую ячейку, разделяющую первоначально два аргумента. Далее, для представления каждого числа используется один дополнительный символ «|». Поэтому при объединении двух массивов занятых ячеек, представляющих два числа, один из дополнительных символов «|» следует удалить. Таким образом, после заполнения пустой ячейки, разделяющей два аргумента, машина должна вернуться к началу полученного сплошного массива занятых ячеек ленты и в две из них записать пустой символ, после чего остановиться напротив первой слева занятой ячейки. Программа работы машины имеет следующий вид: | q1 → | q1 R 0 q1 → | q2 L | q2 → | q2 L 0 q2 → 0 q3 R | q3 → 0 q4 R | q4 → 0 q0 R Рассмотрим, что означают состояния, в которые переходит устройство управления в процессе работы машины. Когда машина находится в состоянии q1 и читает символ «|», то это состояние означает чтение ячеек, занятых аргументом х. Как только, находясь в состоянии q1, будет прочитана пустая ячейка, машина перейдет в состояние q2. Это состояние означает, что машина читает ячейки, занятые полученным сплошным массивом ячеек ленты. Когда, находясь в состоянии q2, машина прочитает пустую ячейку, УУ перейдет в состояние q3. Это состояние означает, что головка машины уже нашла первую пустую ячейку перед сплошным массивом занятых ячеек и движется вправо, чтобы записать пустой символ вместо символа «|». Наконец, состояние q4 означает, что удален только один из двух символов «|». Состояние q0 – заключительное.
«Теория алгоритмов» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Тебе могут подойти лекции

Смотреть все 938 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot