- •Сеть дорог можно представить в виде графа с положительными весами. Вершины
- •ПОИСК В ГРАФАХ
- •ПОИСК В ГРАФАХ
- •Кратчайшим путем между двумя вершинами s и d в сети называется такой направленный
- •Задаа́ча о кратчаа́йшем пути— задача́
- •ПОИСК КРАТЧАЙЧЕГО ПУТИ В
- •Существуют различные постановки задачи о кратчайшем пути:
- •кратчайший путь (А,B,D,F)
- •Алгоритм Дейкстры
- •Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе
- •Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе
- •Алгоритм Дейкстры. Поиск оптимальныхмаршрутов на графе S
- •S повтор
- •Пример
- •Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе
- •Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе
- •Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе
- •Алгоритм Дейкстры. Поиск оптимальных маршрутов на графе
- •. Поиск оптимальных маршрутов на графе
- •Алгоритм
- •• Алгоритм Джонсона — позволяет найти кратчайшие пути между всеми парами вершин взвешенного
- •Такая весовая функция строится с помощью так называемой потенциальной функции
- •Задача о кратчайшем пути - задача поиска самого короткого пути (цепи) между двумя
- •ПОСТАНОВКА ЗАДАЧИ: Дано
- •Эта задача называется иногда задачей двухпроцессорного обслуживания задач, или задачей Джонсона (по имени
- •Построение алгоритма
- •Построение алгоритма
- •Построение алгоритма
- •Построение алгоритма
- •Построение алгоритма
- •Построение алгоритма
- •Тем самым, мы :
- •Можно упростить сортировку.
- •Тем самым мы получаем другую форму алгоритма: отсортировать детали по минимуму из
- •Повтор
- •Повтор Алгоритм Джонсона
- •ПРИМЕР
- •ОБОЗНАЧЕНИЯ ДЛЯ ФОРМАЛЬНОЙ ПОСТАНОВКИ ЗАДАЧИ
- •Формальная постановка задачи
- •Алгоритм решения задачи Джонсона (первые 6 шагов)
- •Алгоритм Джонсона. Задача о двух станках
- •Пример. Пусть информация о времени обработки задана таблицей:
- •В итоге упорядоченная информация принимает вид
- •Время простоя второй машины (сотрудника/тестировщика) при первичном порядке равно:
- •Пример . Пусть информация о
- •Самостоятельно
- •Задача распределения работы между сотрудниками
- •Решение
- •Рассчитываем общие затраты времени на
- •Данные заносим в табл:
- •Распределение задач по командам/сотрудникам
- •Построим диаграмму Ганта
- •Построим диаграмму Ганта
- •Тогда имеем
Алгоритм
Джонсона
• Алгоритм Джонсона — позволяет найти кратчайшие пути между всеми парами вершин взвешенного ориентированного графа.
Данный алгоритм работает, если в графе содержатся рёбра с положительным или отрицательным весом, но отсутствуют циклы с отрицательным весом. (Назван в честь Д. Б. Джонсона, опубликовавшего алгоритм в 1977 году).
В этом алгоритме используется метод изменения веса.
Суть его заключается в том, что для заданного графа G строится новая весовая функция , неотрицательная для всех ребер графа G и сохраняющая кратчайшие пути.
Такая весовая функция строится с помощью так называемой потенциальной функции
.
Когда, веса всех ребер неотрицательны, и кратчайшие пути сохранятся, можно запустить алгоритм Дейкстры из каждой вершины и, таким образом, найти кратчайшие расстояния между всеми парами вершин
Задача о кратчайшем пути - задача поиска самого короткого пути (цепи) между двумя точками (вершинами) на графе, в которой минимизируется сумма весов ребер, составляющих путь.
ПОСТАНОВКА ЗАДАЧИ: Дано
Имеется n деталей и два станка. Каждая деталь должна сначала пройти обработку на первом станке («А»), затем — на втором («В»).
При этом i-ая деталь обрабатывается на первом станке за ai времени, а на втором — за bi времени.
Каждый станок в каждый момент времени может работать только с одной деталью.
Требуется: составить такой порядок подачи деталей на
станки, чтобы итоговое время обработки всех деталей было бы минимальным
Эта задача называется иногда задачей двухпроцессорного обслуживания задач, или задачей Джонсона (по имени S.M. Johnson, который в 1954 г. предложил алгоритм для её решения).
Если количество станков больше двух, эта задача становится NP-полной (как доказал Гэри (Garey) в 1976 г.).
Построение алгоритма
Можно считать, что порядок обработки деталей на первом и втором станках должен совпадать.
В самом деле, т.к. детали для второго станка становятся доступными только после обработки на первом, а при наличии нескольких доступных для второго станка деталей время их обработки будет равно сумме их независимо от их порядка — то выгоднее всего отправлять на второй станок ту из деталей, которая раньше других прошла обработку на первом станке.
Построение алгоритма
Рассмотрим порядок подачи деталей на станки, совпадающий с их входным порядком:
Для первой детали мы имеем: x1=a1
Для второй — т.к. она становится готовой к отправке на второй станок в момент времени a1+a2
торой станок освобождается в момент времени x1+b1