
- •1. Задачи структурного синтеза: понятие, формальная постановка, пример.
- •2. Исходные данные для решения задач структурного синтеза.
- •3. Этапы решения прикладной задачи структурного синтеза.
- •4. Содержательная постановка и анализ задачи структурного синтеза. Результат анализа (рассмотреть пример). Пример постановки и формализации задачи структурного синтеза
- •5. Выбор аппарата формализации задач структурного синтеза. Разработка моделей объекта и результата проектирования, доказательство их адекватности (приведите пример перехода от объекта к модели).
- •6. Формальная постановка комбинаторно-оптимизационной задачи структурного синтеза на графах. Рассмотреть пример для задачи поиска остовного дерева минимальной длины.
- •8. Представление схемы неориентированным графом и гиперграфом. Неориентированный граф.
- •9. Стратегии декомпозиции пространства решений.
- •10. Отсечение и выбор перспективной вершины дерева решений. Верхняя и нижняя границы целевой функции. Пример.
- •Некоторые особенности оценочных функций
- •11. Метод поиска в глубину. Пример точного алгоритма, основанного на этом методе.
- •12. Метод поиска в глубину с возвращением. Привести пример применения.
- •13. Метод поиска в ширину. Привести пример применения.
- •14. Идея метода ветвей и границ. Основные способы отсечения ветвей.
- •15. Основные способы ветвления при построении дерева решений в методе ветвей и границ.
- •Разбиение множества вариантов на подмножества по методу в ширину и выбор вершины по min(max).
- •Разбиение множества вариантов по методу поиска в глубину с возвращением – последовательное построение ветвей с заданным порядком их развития.
- •Комбинация декомпозиции в глубину и в ширину
- •16. Конструирование оценочной функции для верхней и нижней границ целевой функции. (Рассмотрите на примере задачи поиска простой цепи графа).
- •17. Метод итерационного улучшения
- •18. Метод параллельно-последовательной свертки. Алгоритм сортировки слиянием. Оценка его вычислительной сложности.
- •19. Точность алгоритма. Докажите, что алгоритм Прима является точным.
- •20. Оценка точности алгоритма. Определение оценок в лучшем и в худшем для алгоритма решения задачи коммивояжора по методу поиска в глубину.
- •21. Вычислительная и емкостная сложность алгоритма
- •22. Основные этапы построения алгоритма. Сущность алгоритма решения задачи на графах.
- •23. Разработка алгоритмической модели процесса решения задачи. Пример модели для решения задачи декомпозиции схемы по методу неуравновешенной двоичной свёртки.
- •Пример модели для решения задачи декомпозиции схемы по методу неуравновешенной двоичной свёртки
- •24. Определение операций преобразования исходного графа в граф результата. Выбор способа представления графов и его реализация в памяти эвм.
- •25. Детальная проработка алгоритма. Способы снижения вычислительной сложности алгоритмов. (Проиллюстрировать примерами).
- •26. Последовательный алгоритм разрезания гиперграфа схемы.
- •27. Итерационный алгоритм улучшения начального разрезания гиперграфа схемы.
- •28. Методика оценки вычислительной сложности алгоритма. Рассмотрите пример.
- •Асимптотическая оценка вычислительной сложности алгоритма
- •29. Управляющий граф алгоритма.
- •30. Граф «оператор - данные».
- •Оглавление
21. Вычислительная и емкостная сложность алгоритма
Физическое время реализации алгоритма
при некотором наборе входных данных
может быть определено как
,
где
- количество операций i-ого
типа,
- время выполнения операции i-го
типа, n – количество типов
операций. Для одного и того же алгоритма
при заданном наборе входных данных
время t зависит от языка
программирования и быстродействия
конкретной ЭВМ. Если мы имеем такую
оценку для нескольких алгоритмов решения
одной и той же задачи, реализованных на
разных языках и предназначенных для
выполнения на ЭВМ с различным
быстродействием, очевидно, что объективный
выбор алгоритма выполнить невозможно.
Можно принять за эталон некоторую
операцию и, зная отношение времени
выполнения i-й операции
ко времени выполнения эталонной, можно
определить суммарное число эталонных
операций:
.
Коэффициенты
можно трактовать как относительное
количество тактов
.
Объективная мера временной сложности
алгоритма должна быть машинно- и
программно-независимой. В качестве
такой меры может выступать
или
.
,
где
- отношение количества тактов выполнения
i-й операции к количеству
тактов выполнения эталонной;
- количество тактов выполнения алгоритма
при заданном наборе входных данных.
В зависимости от существующей на данной стадии разработки алгоритма его детализации аналогичной по смыслу с и оценкой может быть суммарное количество некоторых доминирующих операций или основных действий или шагов. Однако все эти оценки являются некоторой скалярной величиной, так как определяются для заданного набора входных данных. Очевидно, что для входных данных, имеющих другой размер, они будут отличаться. Размер входа задачи может быть как скаляром, так и вектором.
Временная и вычислительная сложность являются функцией от размера входа. Размер входа – скаляр, если количество, например, некоторых действий или шагов зависит только от одного параметра входа задачи. Например, в задачах на графах – только от количества вершин или рёбер. Размер входа – вектор, если от нескольких: для графов – количество вершин, рёбер, локальной степени вершин и т. д.
Понятие вычислительной сложности
Пусть A – алгоритм
решения некоторого класса задач, а n
– размерность задачи этого класса,
тогда вычислительная сложность алгоритма
– это некоторая функция
,
отображающая размерность задачи в
«математическое» время ее решения, то
есть дающая оценку количества некоторых
операций, необходимых для решения данным
алгоритмом любой задачи данного класса
как функции от n. Функция
fA(n)
является критерием качества алгоритма
с точки зрения возможных временных
затрат. Эффективным является понятие
полиномиальный алгоритм, у которого
растет не быстрее, чем полином от n.
Алгоритм, имеющий экспоненциальную
сложность:
,
пригоден для решения задач ограниченной
размерности. Такие задачи определяют
принадлежащими к классу NP
– non-polynomial.
Вычислительная сложность, так же как и погрешность, может иметь оценку в лучшем и в худшем. Оценка в худшем (сверху) получается в том случае, если входные данные являются худшими из возможных. Например, для задачи на графах, предположение, что граф – полный.
Улучшение верхней границы означает нахождение алгоритма с лучшей характеристикой в худшем. Как правило, это обеспечивает использование другого метода или других операций преобразования графа, либо специфических приемов снижения вычислительной сложности, направленных на оптимизацию алгоритма.
Однако ориентация на худший случай нередко приводит к пессимистическим оценкам, которые могут привести к неправильному выбору используемого алгоритма. Более реалистичной является оценка в среднем. Для задач на графы такая оценка появляется при предположении, что граф – однородный с некоторой средней степенью вершин.
Емкостная сложность алгоритма
Емкостная сложность характеризует объем памяти, который необходим для реализации алгоритма. В общем случае объем, который для этого необходим, включает в себя память, требуемую для программы, исходных данных, а также промежуточных и конечных результатов.
При разработке алгоритма оцениваются последние три составляющие. Единица измерения может быть как общепринятая, так и некоторая условная. Оценка емкостной сложности – простая задача, хотя, в ряде случаев, может быть достаточно трудоемкой. При использовании сложных иерархических структур данных задача выбора размеров указателей и прочих компонентов может быть достаточно сложной.
Вычислительная и ёмкостная сложность
скоррелированы: как правило, снижение
вычислительной сложности достигается
за счёт увеличения ёмкостной и наоборот.
В качестве обобщенной характеристики
сложности алгоритма было предложено
использовать так называемый коэффициент
сложности
,
где N – суммарное количество
эталонных (или доминирующих) операций,
V – общий объем памяти.