Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Основные задачи и методы их решения





 

Критическим путем в ориентированном графе G = (X, U) с источником s и стоком t называется самый длинный путь (путь максимальной длины) вида m[ s, t ] между этими вершинами. Если кратчайший путь в орграфе не существует при наличии контуров отрицательной длины, то критический путь не существует в ориентированном графе с контурами [1].

Таким образом, задача поиска критического пути в графе G = (X, U) имеет решение только в том случае, если этот граф является бесконтурным. Понятие "критический путь" является фундаментальным для методов PERT и CPM управления выполнением проекта и соответствует минимальному времени, необходимому для реализации проекта (см. раздел 1.5). Самый длинный путь m[ s, t ] в сети PERT или CPM называется критическим, так как дуги (xi, xj) Î m[ s, t ] отображают этапы операции проекта, для которых любая задержка начала выполнения приводит к увеличению срока завершения проекта в целом.

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

- модификация графовой модели задачи;

- модификация алгоритма поиска пути.

В первом случае изменяются веса l (xi, xj) всех дуг (xi, xj) Î U исходного графа G = (X, U) на значения l' (xi, xj) = - l (xi, xj). Затем применяется любой алгоритм поиска кратчайшего пути, учитывающий такую модификацию модели без каких-либо изменений. Результат будет определять критический путь в исходном графе G = (X, U).

Второй способ предполагает модификацию применяемого алгоритма. Для этого все операции min заменяются на max, а значения элементов dij = ¥ матрицы весов D (cij = ¥ для матрицы C в алгоритме Флойда), где (xi, xj) Ï U, заменяются на d'ij = -¥ и c'ij = -¥ соответственно. Необходимо отметить, что при поиске критического пути m[ s, t ] изменяется смысл пометок l*(xi) и g*(xi) вершин графа. Значение l*(xi) определяет длину максимального пути m[ s, xi ] от источника s до вершины xi, а g*(xi) - длину максимального пути m[ xi, t ] от xi до стока t.

С учетом различной трудоемкости алгоритмов поиска кратчайших путей и обязательного отсутствия контуров в графовых моделях наиболее целесообразным для определения критического пути m[ s, t ] является применение метода динамического программирования. В качестве примера модификации алгоритма ниже приводится процедура поиска критического пути методом динамического программирования, которая базируется на использовании пометок l(xi) вершин графа.

 

Алгоритм 2.1 (поиск критического пути m [ s,t ] методом

динамического программирования)

 

Данные: бесконтурный граф G = (X, U) с n вершинами, имеющими правильную нумерацию; выделенные источник s = x 1 и сток t; произвольные веса дуг l (xi, xj).

Результат: длина l*(t) критического пути m[ s, t ].

Шаг 1 (присвоение начальных значений)

Задать пометки l*(x 1) = -¥ вершинам xi Î X \ s и l*(x 1) = 0 для s = x 1. Присвоить j = 1.

Шаг 2 (изменение пометок)

Присвоить j = j + 1 и для вершины xj вычислить окончательное значение пометки

(2.1)

где T = Г-1(xj). При T = Ø пометка вершины xj не изменяется.

Шаг 3 (проверка условия окончания)

Если xj = t, то конец алгоритма. Иначе переход к шагу 2.

 

Очевидно, что выражение (2.1) обеспечивает корректный результат только при правильной нумерации вершин графа (см. раздел 1.5), для которой индексы вершин любой дуги (xi, xj) Î U удовлетворяют условию i < j. Построение критического пути m[ s, t ] может быть выполнено на основе известного соотношения (1.2) или с помощью двойных пометок вида [l*(xj), mj ], где l*(xj) - длина максимального пути от источника s до вершины xj.

Наиболее близкими к задаче поиска критического пути на графе являются следующие задачи:

- определить пути m[ s, xj ] максимальной длины от источника s = x 1 до всех других вершин xj Î X \ s;

- определить пути m[ s, t ] максимальной длины от всех вершин xi Î X \ t до стока t = xn;

- определить пути максимальной длины m[ xi, xj ] между всеми парами вершин xi, xj Î X.

Для решения первых двух задач успешно применяется метод динамического программирования (с пометками вершин l(xi) и g(xi) соответственно). Последняя задача может быть решена по алгоритму Флойда после необходимой модификации (см. выше).

У П Р А Ж Н Е Н И Я

 

2.1. Сформулировать задачу поиска критического пути в бесконтурном ориентированном графе в виде задачи целочисленного линейного программирования.

2.2. Почему при решении задачи поиска критического пути в графе не допускается существование контуров?

2.3. Перечислить основные методы определения путей максимальной длины в ориентированных бесконтурных графах.

2.4. Что показывают пометки l(xi) и g(xi), приписываемые вершинам графа в алгоритмах поиска путей максимальной длины?

2.5. Модифицировать алгоритмы Форда - Беллмана и Дейкстры для решения задачи поиска путей максимальной длины.

2.6. Составить программу для построения критичеcкого пути в ориентированном графе методом динамического программирования.

2.7. Определить по методу Дейкстры критический путь от источника s = x 1 до стока t = x 9 в графе, показанном на рис. 1.7.

2.8. Методом динамического программирования определить длину максимального пути от вершины x 1 до вершины x 8 для графа на рис. 1.8.

2.9. Разработать алгоритм построения путей максимальной длины между всеми парами вершин по методу Флойда.

2.10. Определить пути максимальной длины m[ xi, xj ] для всех пар вершин xi и xj в графе, приведенном на рис. 1.9.

 

Date: 2015-10-21; view: 571; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.009 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию