
- •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. Граф «оператор - данные».
- •Оглавление
28. Методика оценки вычислительной сложности алгоритма. Рассмотрите пример.
Пусть А – алгоритм решения некоторого класса задач, а n – размерность входа задач данного класса. Тогда вычислительная сложность – это fA(n), отображающая размерность задачи в «математическое» время ее решения. Т.е. дающее оценку количества некоторых операций, необходимых для решения данным алгоритмом любой задачи данного класса функцией от размеров входа. Эта ф-ция является критерием качества алгоритма с т.з. временных затрат: эффективными являются полиномиальные алгоритмы, т.е. такие, у которых fA(n) растет не быстрее, чем полином от n. Алгоритмы, имеющие экспоненциальную вычислительную сложность (2n, n! и т.п.), пригодны для решения задач ограниченной размерности.
Т.к. вычислительная сложность может быть представлена функциональной зависимостью числа операций, выполняемых алгоритмом, от парамтеров, характеризующих размерность задачи или объекта преобразований, либо оценкой вида О(nк) или О(рn), где к=1,2,.. n; р=2,3,… n. Оценку вычислительной сложности вида О(nк) или О(рn) можно получить, зная размерность задачи, по содержательному описанию алгоритма. При выполнении анализа необходимо учитывать, что: О(n)+О(n)=О(n), О(n)*О(n)= О(n2), О(n)+О(n2)=О(n2).
Задача называется n(p)-полной, если существует алгоритм, обеспечивающий ее решение за полиномиальное время.
Вычислительная сложность, так же как и погрешность, может иметь оценку в лучшем и в худшем. Оценка в худшем (сверху) получается в том случае, если входные данные являются худшими из возможных. Например, для задачи на графах, предположение, что граф – полный.
Улучшение верхней границы означает нахождение алгоритма с лучшей характеристикой в худшем. Как правило, это обеспечивает использование другого метода или других операций преобразования графа, либо специфических приемов снижения вычислительной сложности, направленных на оптимизацию алгоритма.
Однако ориентация на худший случай нередко приводит к пессимистическим оценкам, которые могут привести к неправильному выбору используемого алгоритма. Например, метод ветвей и границ в пределе, имеет экспоненциальную сложность, однако, в то же время, на многих задачах и наборах входных данных зависимость времени решения задачи этим методом от размера входных данных полиномиальна.
Более реалистичной является оценка в среднем. Для задач на графы такая оценка появляется при предположении, что граф – однородный с некоторой средней степенью вершин.
Асимптотическая оценка вычислительной сложности алгоритма
Точность функциональной оценки вычислительной сложности зависит от степени глубины проработки алгоритма и его анализа. На ранних этапах разработки алгоритма степень его детализации ограничена, а на завершающих этапах увеличивается трудоемкость анализа. Для использования вычислительной сложности в кач-ве глобального св-ва алгоритма широко используется асимптотическая оценка. Она задает «порядок». Основанием для использования таких оценок является тот факт, что многие практические задачи имеют большую размерность.
Используются асимптотические оценки двух видов: O(n) и o(n).
Функцию f(n)
определяется как O((n)),
и говорят, что она порядка (n)
если
Порядок f(n) обозначают как f(n)= O((n))
Функция f(n)
имеет порядок o((n)),
если
Например, если f(n)=5n3-3n2+2n+6,
то f(n)=О(n3),
так как
И f(n)=о(n3,1),
так как
Рассмотрим пример оценки вычислительной сложности алгоритмической модели процесса свободной декомпозиции схемы соединения элементов ЭВМ по методу неуравновешенной двоичной свертки.
Моделью схемы является гиперграф H(X,U), в котором множествам элементов Э и цепей С схемы поставлены во взаимно-однозначные соответствия мн-ва вершин Х и ребер U. Гиперграф задан мн-вами вершин Х={xi / i=1}, ребер U={uj / j=1,m} и многозначными отображениями Х в U – ГХ ={Гxi / i=1,n} и U в Х – ГU = {Гuj / j=1,m}. Идея свободной декомпозиции схемы соединения элементов заключается в следующем: начиная с первого уровня (количество элементов, подлежащих объединению равно n), определяем показатели связности всех пар вершин графа.
,
где Ui= Гxi,
Uj= Гxj.
Далее процесс повторяется до тех пор, пока не останутся две последние вершины.
Получим оценку в худшем. Для этого
предположим, что каждая вершина связана
с каждой, а
-
максимальное количество выводов
элементов схемы. Доминирующая операция
при оценке вычислительной сложности –
операция сравнения. Подсчет показателя
связности вершин
требует
операций
сравнения элементов мн-в Ui
и Uj. Так как каждая вершина
связана с каждой, то на некотором шаге
t количество таких
показателей будет равно
Алгоритмическая модель процесса
свободной декомпозиции без учета
операций корректировки гиперграфа
имеет следующий вид (
выполняются пп. 1-3):
: подсчитываем
, где ,
Находим
, такой что
Объединяем в одну вершины хк и хr
Количество операций сравнения, необходимых
для выполнения п.1. равно
.
Выбор пары вершин с максимальным
показателем связности в п.2. потребует
сравнений.
Суммируя по
получим:
В итоге