- •1.Алгебра высказываний
- •2.Приложения алгебры высказываний
- •3.Формулы. Вывод формул
- •4.Функции алгебры высказываний (булевы функции)
- •5.Метод синтеза релейно-контактных схем
- •6.Приложение в теории множеств
- •7.Аксиоматическая система в исчислении высказываний
- •8.Равносильные формулы
- •9.Алгебра Буля
- •10.Истинные и общезначимые формулы
- •11.Проблема разрешимости
- •12.Предикаты
- •13.Кванторы
- •14.Система аксиом в исчислении предикатов
- •15.Формальная арифметика
- •16.Алгоритмы и вычислимые функции
- •17.Алгоритм. Интуитивное представление
- •18.Нормальные алгоритмы Маркова
- •19.Машины Тьюринга
- •20.Частично рекурсивные функции
- •21.Класс примитивно рекурсивных функций
- •22.Сложность вычислений
- •23.Мера сложности
- •Конечный автомат
23.Мера сложности
Оценка алгоритма бывает нужной в том случае, когда при решении некоторой задачи есть несколько разных алгоритмов, и стоит задача выбора одного из них для реализации. Даже если задача решается единственным алгоритмом, бывает нужно оценить сложность его реализации и его работы (объём памяти, время решения).
Под пространственной эффективностью понимают объём памяти, требуемой для выполнения программы.
Временная эффективность программы определяется временем, необходимым для ее выполнения.
Самым простым способом оценить алгоритм - сопоставить ему число элементарных операций в описании. При реализации это может быть число команд в программе или объём памяти, которую занимает программа. В этом случае оценка алгоритма A есть некоторое число k: (A) = k.
Более интересной может быть оценка пары: алгоритма A и конкретной задачи , которая им решается. Например, оценкой может быть объем памяти под программу, исходные и промежуточные данные, необходимые для решения данной задачи, или время для решения данной задачи с помощью алгоритма A. В любом случае это будет число (A()) = k().
Свойство массовости алгоритма предполагает, что алгоритм будет использоваться для решения класса A подобных задач, с разными исходными данными. Поэтому более сложной оценкой будет оценка как функция свойства задачи. Cопоставим каждой задаче из класса задач, решаемым алгоритмом, некоторый вектор числовых параметров задачи N = (n1, n2, …, nt). В этом случае оценка (A(A)) = k(N), и это уже будет функция от параметров задачи.
Конечный автомат
Конечный автомат — абстрактный автомат без выходного потока, число возможных состояний которого конечно. Результат работы автомата определяется по его конечному состоянию.
Существуют различные варианты задания конечного автомата. Например, конечный автомат может быть задан с помощью пяти параметров: M = (Q, Е (почти как z перевернутая), б, q0, F), где
• Q — конечное множество состояний автомата;
• q0 — начальное (стартовое) состояние автомата (q0 принадлежит Q)
• F — множество заключительных (или допускающих) состояний, таких что F дуга вправо и подчеркивание Q;
• Е— допустимый входной алфавит (конечное множество допустимых входных символов), из которого формируются строки, считываемые автоматом;
• б — заданное отображение множества Q х Е во множество P(Q) подмножеств Q:
б: Q х Е -> P (Q)
(иногда б называют функцией переходов автомата).
Автомат начинает работу в состоянии q0, считывая по одному символу входной строки. Считанный символ переводит автомат в новое состояние из Q в соответствии с функцией переходов. Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово «принимается» автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово «отвергается».
Конечные автоматы широко используются на практике, например в синтаксических, лексических анализаторах, и тестировании программного обеспечения на основе моделей.