УДК 519,85 ГРАФ СТРУКТУРИЫХ СВЯЗЕЙ ОСНОВНЫХ СЕТЕВЫХ ЗАДАЧ Акбердин Р.А., Долгов Р.В. (СКГУ им. М.Козыбаева) Перечислим основные сетевые задачи «Теории графов». 1. 2. 3. 4. 5. 6. 7, 8. 9. 10. 11. 12. 13. Достижимость и контрдостижимость КомпонеНты связности Базы и антибазы Стягивающие деревья и леса Минимальные покрывающие деревья и леса Максимальные покрывающие деревья и леса Нахождение всевозможных путей между парами вершин Фундаментальная система циклов Циклический маршрут 14. 15. 16. 17. 18. Эйлеров цикл Гамильтонов цикл Задача кратчайшего пути Поиск всевозможных кратчайших путей Поиск кратчайших путей между всевозможными парами вершин Минимаксная и минисуммная задачи Задача о максимальном потоке Задача о назначениях Расчет сетевых графиков Первые две задачи, которые в дальнейшем используются при решении большинства сетевых задач. будем называть базовыми, Авторами работы были установлены следуюіцие взаимосвязи между перечисленными выше задачами с учетом реализованных алгоритмов решения этих задач. 1) 1 - » 2 Через матрицы достижимости іі и контрдостижимости <2 находим по формуле 8 = К®(2 матрицу 8 с компонентами связности. 2) 1—>3 и 2 - > 3 На основании полученных компонент связности в матрице достижимости К меняем 1 на 0 на пересечении строк и столбцов, соответствующих вершинам одной и той же компоненты связности. Таким образом, в новой матрице достижимости IV номера нулевых столбцов будут соответствовать базам, а номера нулевых строк - антибазам. 3) 1 —>7, 1 —»12, 1 ->13 Проверяем по матрице достижимости вершин достижима ли конечная верщина из начальной. 4) 2 - > 4 Если граф не связен, то для каждой компоненты связности находим стягивающее дерево. Найденные стягивающие деревья будут образовывать стягивающий лес. 5) 4~>2 Если граф не связен, то останутся вершины, не включенные в стягивающее дерево. В этом случае можно получить стягиваюіций лес для данного графа, а также выделить его компонеиты связности. 17 6) 2 - 4 5 и 2—»6 Если граф не связен, то для каждой компоненты связности наход: покрывающее дерево. Найденные покрывающие деревья будут образовьге:: покрывающий лес. 7) 5—> 2, 6 - > 2 Если граф не связен, то останутся вершины, не включенньіе покрывающее дерево. В этом случае можно получить покрывающий лес для данн, графа, а также выделить его компоненты связности. 8) 2 - > 9 , 2 - » 10, 2 - > 11 Если граф не связен, то для каждой компоненты связнос находим соответетвенно циклический маршрут, эйлеров цикл (контур), гамильток цикл (цепь). 9) 9->2, 10->2, 11->2 Если граф не связен, то останутся вершины, не включенн: соответственно в циклический маршрут, эйлеров цикл, гамильтонов цикл. В эт. случае можно выделить компоненты связности графа. 10) 2 14 Перед использованием алгоритма Флойда проверяем граф на связность. 11)4->5 и 4 - > 6 Используя последовательное порождение каркаса, находим в. стягивающие деревья. Затем находим вес каждого найденного каркаса и в зависимос: от выбранной задачи выбираем из найденных каркасов деревья либо минимальног либо максимального веса. Если граф не связен, то выполняем все выше перечисленнс: но уже для каждой компоненты связности. Найденные покрывающие деревья буд; образовывать покрывающий лес. 12)5-0-6 Различие алгоритмов нахождения минимального и максимально: покрывающего дерева заключается в том, что при нахождении минимально: покрывающего дерева происходит просмотр ребер с минимальным весом, а пг нахождении максимального покрывающего дерева - с максимальным весом. 13)4—>8 Для каждой компоненты связности находим покрывающее дерево, использ} поиск. в глубину, и для каждого такого дерева находим фундаментальную систе: циклов. 14) 7 —> 8 Для выделения циклов используем дерево поиска, выбирая в качесті: начальной и конечной вершин одну из вершин хорды. 15) 7 - > 11 Как при нахождений всевозможных путей между парами вершин, так и пр: нахождении гамильтонова цикла используется дерево поиска с той лишь разницей, чт гамильтонов цикл должен содержать все вершины графа. 16) 7->12 Для нахождения кратчайшего пути используется алгоритм обратног: просмотра, который при реализации программного продукта был реализован путе: модификации алгоритма построения дерева поиска. Данная модификация позволяе: находить не один из возможных кратчайших путей, как предлагают алгоритм; Дейкстры и Форда, а всевозможные. 17) 7 - > 1 3 При поиске всевозможных кратчайших путей для іюстроения дереврешения необходимо использовать алгоритм дерево поиска, предназначенный дг : нахождения всевозможных путей между парами вершин. 18 * .18)14-» 12 Длину кратчайшего пути, ведущего из истока в сток, можно найти, используя не тольқо алгоритмы Дейкстры и Форда, но и алгоритм Флойда, предназначенный для поиска кратчайших путей между, всевозможными парами вершин. В случае наличия отрицательных весов ребер (дуг) для проверки графа на наличие циклов отрицательной длины можно использовать алгоритм Флойда. 19) 12-»13 и 14-»13 При поиске всевозможных кратчайших путей для нахождения длин кратчайших путей, ведущих до всех вершин из истока в исходном орграфе и из стока в обратном орграфе, можно использовать как алгоритмы Дейкстры и Форда, так и алгоритм Флойда. 20) 14->15 По матрице кратчайших путей между всевозможными парами вершин находим внешние, внутренние и внешневнутренние центры и медианы. 21) 16-»17 Задача о назначениях сводится к построению максимального потока в некоторой сети. На основе выявленных взаимосвязей можно составить следующий граф (рисунок 1.1). Рисунок 1.1 - граф структурных связей основных сетевых задач ІІостроенньш «іраф связей» использован при разработке программного обеспечения, реализующего решения основных сетевых задач, а также позволяет выделить из общего пакета программ отдельные подпакеты. 1. 2. Литература: Липский В. Комбинаторика для программистов / Пер с польского. Под ред. А.П. Ершова. - М.: Мир, 1 9 8 8 , - 2 0 0 с. Окулов С. Программирование в алгоритмах. - М.: БИНОМ. Лаборатория знаний, 2004. - 341 с. 19