Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Struktury.docx
Скачиваний:
37
Добавлен:
04.04.2018
Размер:
2.84 Mб
Скачать

Критерии и оценки алгоритма. Общие методы.

Оценка алгоритма должна начинается на этапе выбора решения. Следующая оценка – выбор структуры данных. Структура данных влияет на алгоритм. Завершая работу с оценкой алгоритма реализация алгоритма в выбранной системе программирования.

Асимптотические характеристики

Размерами задачи rj назовем оценки объема исходных данных и иногда и результирующих. Время решения задачи конкретным алгоритмом называется трудоемкостью. Трудоемкость зависит от числа основных действия алгоритма, они определяют вычислительную сложность (ВС). ВС зависит от объемов задачи, но при одних и тех же rj она может быть не постоянной, поэтому оценивается в среднем, приближенно. Вычислительная сложность, приходящаяся на 1 размера задач называется удельная вычислительная сложность. Важная приближенная оценка – асимптотическая оценка вычислительной сложности. Получается при устремлении размера задачи к бесконечности. О(f(r1,..,rn)). Строгое математическое определение : существуют константы С К1 К1 и тд, кn, такие что в случае всех rj>kj число основных действий меньше либо равно произведению С на функция размера задачи. Ч.осн.д <= * f(r1,r2,..,rn). Действия число которых оцениваются должны иметь ограниченную сложность.

При решении прогрессирующих задач больших размеров играет роль вычислительная сложность алгоритма, а не поколение ЭВМ.

Пр. Задача имеет размер.

T=1c, n=100 O(2^n) как возрастет время решение, если n=10000

Умножаем секунду на 2^10 000 = 10^2700 с.

Многие алгоритмы имеют полимодальную оценку АВС. На их примере рассмотрим правило записи АВС.

  1. Из определения АВС следует, что от значения коэффициентов зависит только величина С, поэтому все множители константы заменяют 1.

  2. При n стремящихся к бесконечности. Отношения n^k к n^j стремится к 0 -> в АВС можем оставить старшее слагаемое n^j и погасить все члены полинома меньше степени.

Для указания нижней границы есть обозначение Ω., например, нижняя граница среднего числа сравнений ключей при сортировки n ключей, оценивается как Ωlg(n!). АЕС (емкостная) показывает увеличение затрат памяти с ростом размеры задачи. Удобна удельная АЕС – затраты памяти отнесенная к размеру задач. Задачи сводятся к решению подзадач имеющих различную вычислительную сложность и емкостную сложность. Если для подзадач есть выбор, то определение лучшего ряда решения задачи усложняется.

Роль и методы в снижении трудоемкости решения задачи

Улучшение за счет выбора структур, данных и выбора метода для этих структур. Выбор техники программирования гораздо менее существенен. Есть несколько широко использованных методов для решения задач. Рассмотрим ситуацию, когда решение комбинируется из нескольких переменных. Каждое множество отвечает заданным требованиям задачи и называется доменом. Задачи – задачи выбора. Простой перебор комбинаций нежелателен (патология).

Частичным решением (чр) назовем под комбинацию из которой может произрасти полное решение. Метод поиска с возвратами (МПВ) представляет систему порождения частых решений, которой очередное частное решение является частью решения другого частного решения. предыдущего. Если ни одно не удовлетворяет критериям, имеем то тупик. Исключается последнее решение и пробуем другой вариант поиска.

Частичное решение – это цепи элементов, имеющие большую или меньшую часть. Поиск с возвратом можно отобразить деревом или лесом.

Задача: о размещении ферзей на шахматной доске размером 8*8

*

*

*

*

*

8

7

6

5

4

3

2

1 1     2   3 4     5    6    7      8

Исключаемые 8 позиций будут полным решением

Стек – обязательный инструмент метода поиска с возвратом. В стеке накапливаются методы частичный решений, непригодные элементы удаляется из верхушки стека. Чередование частичных успехов и неудач выражается в пульсациях размера стека. Метод поиск с возращением приводит к поиску быстрее, если есть критерий, позволяющий на ранней стадии урезании ветвей дерева поиска. Разновидность метода с усечением называется методом ветвей и границ. Но не любую задачу можно решать по жесткой схеме. Само число подзадач могут промежуточных результатов, часть зависит от данных. Причем подзадачи могут проявляться динамически. Результаты запоминаются.

Емкостная сложность задачи может быть большой. Тогда имеем метод динамического программирования.

Во всех задачах обеспечивается экстремальность решения на основе того или иного критерия, применяемый динамически.

Пр. Упорядочить систему создания некоторой сущности. Создание некоторой части, из которых больше, далее еще больше и т.д. до построения этой сущности. Время построения может быть произвольным.

Предположим, что создание jй части не начинается, пока не будут готовы предыдущие части. Это называется асинхронным процессом. Множество работ упорядоченно следующим принципом: Группа работ не начинается, пока не будут начаты следующие циклы – при постройке дома идет с 0 цикла. (закладка фундамента)

Момент, когда начальная группа параллельных работ под узлом, работы, исходящие из узла – начальная работа – дуги. Выходящие в узел дуги – подготовительная работа.

Для отображения используем решетку #. Между двумя узлами может быть не 1 путь, но циклы запрещены.

Длительность dj каждой работы стоит возле дуги ( вес дуги). В каждом узле необходимо узнать момент времени (tj)

Завершение последней работы из работ входящих. Указанный момент в узле — это часть результата. Итог для нас – момент окончания строительства. Выбираем наибольший вариант из входящих!

Итогом решения является время окончания строительств и критический путь, по которому пришли. Это путь с наибольшим числом задержек.

Обычно это схема – прогноз. Строится для выявления критического пути. Далее принимаются меры по уменьшению задержек.

Должен быть в схеме узел – источник (обязательно). Если исходные работы начинаются разновременно, то в схема добавляется фиктивный узел, который станет истоком и соединяется по дугам с источником. Дуги - фиктивные работы, их вес учитывает разное время начала.

Решение задачи динамического программирования разворачивается в пространстве. Т.е. требуются не малые затраты памяти. Если в задаче n-узлов и m-дуг, то оценка трудоемкости O(n+m) прямо пропорционально сумме оценки. Если стэк не применять, а использовать перебор, то оценка =O(n2+m)

Оптимальное прохождение критического пути

Организуем вектор S, каждый jй элемент которого содержит число дуг входящий в этот узел.

1

2

0

4

2

2

2

3

1

2

2

0

1

2

3

4

5

6

7

8

9

10

S

Отправной узел 2 получает оценку t2=0. Она постоянна. Оценка tj любого другого узла – это наибольшая сумма оценки узла другого предка и веса идущей от него ветви.

Последовательное нахождение оценок

Например, для узла 3 оценку сделали только тогда, когда обработали все 4 входящих дуги. Т.е. априорно(заведомо) к этому узлу. Заранее до того к узлу должно быть найдено t3:t0,t1,t8.

Обрабатывая дугу буде вычитать 1 из счетчика Sj узла j. Если в Sj оказывается 0 следующий узел получил окончательную оценку и может служить базой для получения оценках в узлах, к которым идут дуги от этого же условия. После обработки всех дуг, исходящих из счётчика =0 и уменьшение других счетчиков, выбираем для обработки узел с нулевым счетчиком.

Последним выбираем узел 7 – но оценка покажет срок окончания работ. Это топологический порядок выбора узлов – узлы выбираются после обработки всех предков. Поиск нулевого счетчика Sj=0 выбирается не перебором. Организуем стек. Будем помещать в стек номера узлов ,у которых счетких стал 0. Узер из верхнего стека обрабатывается вышеописанных способом и исключается из стека. Для каждого узла j в элементе Rj будем запоминать предка от которого получено решение. Элементы в Rj дадут оценку в обратном порядке.

R3=8 , тогда мы получим цель R7=4 R4=6 R6=3 R3=8 R8=2 R2

Соседние файлы в папке Лекции