Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория_алгоритмов.doc
Скачиваний:
14
Добавлен:
18.03.2016
Размер:
409.09 Кб
Скачать

§ 2.6. Алгоритмически неразрешимые проблемы (анп)

Определение 1: Предикатназывается «разрешимым», если его характеристическая функция, задаваемая формулой :, если– истинно;, если– ложно, вычислима.

Определение 2: Предикатназывается «неразрешимым», если он не являетсяразрешимым.

Алгоритмически Неразрешимые Проблемы:

  1. Теорема Черча «о неразрешимости логики предикатов»: Не существует алгоритма, который для любой формулы логики предикатов устанавливает, общезначима она или нет.

  2. Проблема остановки программы неразрешима:Не существует общего алгоритма проверки программ на наличие в них бесконечных циклов, т.е. на языке исчисления: «Не существует общего алгоритма узнать, имеет ли данноевыражение«нормальную форму» или нет».

  3. Не существует алгоритма установить, что две программы вычисляют одну и ту же одноместную функцию, т.е. универсальное тестирование не возможно.

  4. Диофантово полиномиальное уравнение имеет или не имеет целочисленного решения?Не существует общего алгоритма, который может установить конкретный ответ (Матиясевич доказал эту теорему).

§ 2.7. Сложность алгоритмов.

Определение: Однородный класс вычислительных задач будем называть «проблемой (массовой задачей)» и обозначать через Т, а алгоритм, ее решающий, через А. Частный случай Т обозначим через . А выполняет последовательность вычислений . Длинахарактеризует время вычислений. Глубина- число уровней параллельных шагов – время параллельных вычислений.

1) сложность вычислений «в наихудшем случае», гдемера вычисления может быть выбрана как: а) число элементов или б) глубина или в) число модулей (уровень технологии);–размер.

2) сложность «поведения в среднем», где - вероятность появления I среди возможных частных случаев .

3) Анализ алгоритмов связан с вопросом «для заданной функции размера и меры вычисления точно определить для данного алгоритма А, решающего проблему Т, либо сложность «для наихудшего случая», либо, при подходящих предположениях, «поведение в среднем» .(Кнут «Искусство программирования»).

4) Сложность задачи – сложность наилучшего алгоритма, известного для ее решения (нижняя оценка сложности алгоритма).

Определение: Будем говорить, что функция есть, если существует константа с такая, чтодля всех натуральныхn.

Основной вопрос теории сложности: с какой стоимостью может быть решена заданная проблема?

2.7.1. Классификация задач по степени сложности

а) линейные ; б) быстрее их -; в) полиномиальные алгоритмы принадлежат к классу, для которых временная сложность порядка, гдецелое;

г) экспоненциальные – для них не существует оценки .

Определение: Задача «труднорешаема», если для нее не существует «полиномиального» алгоритма.

Замечание: для малых «экспоненциальный» алгоритм может быть быстрее полиномиального.

Класс Р:

1) найти эйлеров цикл на графе из ребер: алгоритм проверки циклов -; 2) задача Прима-Краскала:городов в плоской стране. Общая длина телефонных линий соединения городов минимальна. Жадный алгоритм находит «остовное» дерево за.

3) Быстрое преобразование Фурье (БПФ) за шагов; 4) Умножение целых чисел по алгоритму Шенхаге-Штрассена (Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов.-М.: Мир, 1979.-536 с.) зашагов по сравнению с умножением двухразрядных чисел по традиционному алгоритму.

5) Умножение матриц - .

КЛАСС Е:

  1. построить множество всех подмножеств; 2) все полные подграфы графа или все поддеревья графа.

ЗАДАЧИ, не принадлежащие к классу Р и не принадлежащие к классу Е :

  1. задача «коммивояжера»; 2) задача «составления расписаний при определенных условиях»; 3) задача «оптимальной загрузки емкости (рюкзака, вагонов поезда, самолета и т.д.); 4) задача «распознавания простого числа» и другие.

Определение: Детерминированный алгоритм – алгоритм, в котором переход из одного состояния в другое однозначный. Недетерминированный имеет несколько вариантов перехода (вероятностный переход).

Определение: Класс NP задач, которые решаемы недетерминированными алгоритмами за время , то есть.

Замечание: Так как число путей вычисления может быть экспоненциально, то алгоритмы NP сильнее алгоритмов класса Р.

Замечание: Оптимизация задачи «коммивояжера» - задача класса NP, так как полиномиального алгоритма пока нет. Алгоритм NP состоит из 2-х стадий: а) стадия угадывания последовательности городов; б) стадия проверки маршрута длины – полиномиальная процедура.