Графы (работа 2)

Содержание

Введение

    Графы, орграфы, деревья

    Операции над графами

    Хранение графов в ЭВМ

    Задача о максимальном потоке

    Построение максимального потока. Примеры разбираемых задач

Литература

Введение

В коммерческой деятельности большинство возникающих задач удобно представлять для восприятия и анализа в виде сетей, которые позволяют ответить на два главных вопроса: до какого места необходимо дойти (цель) и какой путь следует избрать (как). Коммерческую деятельность можно рассматривать как совокупность задач, предназначенных для передвижения, складирования и распределения товаров, денег, документов, информации о поставках и покупателях воды, нефти, газа, электроэнергии, теле- и радиосистем. Наглядность и логическая обоснованность методов сетевого анализа позволяет выбрать довольно естественный подход к решению задач коммерческой деятельности. Сетевые модели для людей, не занимающихся научной работой, являются более понятными, чем другие модели, поскольку для них все же лучше один раз увидеть, чем сто раз услышать. В значительной степени методы сетевого анализа основаны на теории графов – области математики, началом развития которой явилась задача о кенигсбергских мостах, сформулированная швейцарским ученым Л. Эйлером в 1736 г. Через реку Прегель, на которой стоял город Кенигсберг, построено семь мостов (рис. 1), которые связывали с берегами и друг с другом два острова. Задача заключалась в том, чтобы пройти по всем мостам только один раз и вернуться обратно к началу маршрута. Эйлер доказал неразрешимость этой задачи.

Позже Д.К. Максвелл и Г.Р. Кирхгоф на основе исследования электрических цепей сформулировали некоторые принципы сетевого анализа. Были разработаны методы расчета наибольшей пропускной способности телефонных линий. В 40-х годах в результате развития теории исследования операций был разработан ряд математических методов, необходимых для анализа больших систем. В 50–60-х годах проводились работы по построению новых сетевых моделей и разработке алгоритмов их решения на основе элементов теории графов.

Графы, орграфы, деревья

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

Основы теории графов разработал Л. Эйлер, решавший задачу о разработке замкнутого маршрута движения по мостам в г. Кенигсберге. При решении задачи он обозначил каждую часть суши точкой, а каждый мост – линией, их соединяющей. В результате был получен граф (рис. 1).

Эйлер доказал, что такая задача решения не имеет.

Эйлер Леонард (1707–1783) швейцарский математик, механик, физик, астроном. Автор более 800 работ по различным разделам математики и другим наукам.

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

Пусть на плоскости задано некоторое множество вершин X и множество U соединяющих их дуг. Графом называют бинарное отношение множества X и множеств U: G = = (X; U), или, иначе ƒ: X → К Здесь ƒ – отображение инциденций.

Граф называется ориентированным, если указано направление дуг и неориентированным, если такое направление не указано. Примером неориентированного графа является карта дорог.

Граф называется петлей, если его начало и конец совпадают.

Две вершины называются смежными, если существует соединяющая их дуга.

Ребро u>j> называется инцидентным вершине х>j>, если оно выходит или входит в вершину.

Степенью (валентностью) вершины называется число инцидентных ей ребер. Кратностью пары вершин называется число соединяющих их ребер или дуг.

Подграфом G>a> графа G называется граф, в который входит лишь часть вершин графа G вместе с дугами их соединяющими.

Частным графом G>b> графа называется граф, в который входит лишь часть дуг графа G вместе с вершинами их соединяющими. Карта шоссейных дорог это граф. Дороги Саратовской области это подграф, а главные дороги – это частный граф.

Путем в графе G называется такая последовательность дуг, в которой конец каждой последующей дуги совпадает с началом предыдущей. Длиной пути называют число входящих в этот путь дуг. Путь может быть конечным и бесконечным. Путь, в котором никакая дуга не встречается дважды, называется элементарным.

Контур – это конечный путь, у которого начальная и конечная вершины совпадают. Контур называется элементарным, если все его вершины различны (кроме начальной и конечной). Контур единичной дуги называется петлей.

В неориентированном графе понятие дуга, путь, контур заменяются соответственно на ребро, цепь, цикл.

Ребро – отрезок, соединяющий две вершины, цепь – последовательность ребер.

Цикл – конечная цепь, у которой начальная и конечная вершина совпадают.

Граф называется связанным, если любые его две вершины можно соединить цепью. Граф сильно связан, если для его двух любых вершин х>i> ≠х>j> существует путь, идущий из х>i> и х>j>.

Граф, который не является связанным, может быть разбит на конечное число связных графов, называемых компонентами, или частями.

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

Точкой сочленения графа называется вершина, удаление которой приводит к увеличению числа его компонент связности.

На рисунке 3 ребро к – мост, а на рисунке 4 вершина 1 – точка сочленения.


Неразделимым называется связный граф, не имеющий точек сочленения.

Блоком графа называют максимальный неразделимый подграф.

На рисунке 5 приведен граф G и его блоки А, В, С и D.


Дерево это конечный, связный, не ориентированный граф, не имеющий циклов.

Характеристическое свойство деревьев состоит в том, что любые две вершины дерева соединены единственной цепью.

Теория деревьев была, в основном, разработана Кирхгофом. Он применил ее для решения систем линейных уравнений, описывающих работу электрических цепей.

Кирхгоф Густав (1824–1887) немецкий физик, механик, математик.

Развитие теории графов (деревьев) связано с именем немецкого химика Кели, который успешно применил ее для решения задач органической химии (для изучения изомеров углеводородов с заданным числом атомов).

Совокупность деревьев называется лесом.

Если все вершины графа принадлежат дереву, то он называется покрывающим. Пусть дано множество вершин графа. Одну из вершин, например х>1>, примем за начальную, которую назовем корнем дерева. Из этой вершины проводим ребра к остальным вершинам х>2>, х>3> и т.д.

Простейшее дерево состоит из двух вершин, соединенных ребром.

Если добавить ребро, то добавляется и вершина. Таким образом, дерево с п вершинами имеет n-1 ребро. Дерево имеет корень в вершине В> если существует путь от х>1>, к каждой из вершин. Ребра графа, принадлежащие дереву, называют ветвями, остальные ребра называют хордами.

Граф называется планарным, если он может быть изображен на плоскости таким образом, что его ребра будут пересекаться только в планарных вершинах (рис. 6).

Дерево, являющееся подграфом графа G, называется покрывающим граф G, если оно содержит все его вершины.

Пусть имеется х>1>, х>2>,…, х>n>> >вершин и u>1>, u>2>…, u>m> дуг, их содержащих. Матрицей смежности S порядка п называется матрица, состоящая из чисел S., равных сумме чисел ориентированных ребер, идущих из х в х. (или чисел неориентированных ребер, соединяющих эти вершины). Если дуга отсутствует, то S>r> = 0.

Матрица смежности для ориентированного и неориентированного графа, вообще говоря, имеет разный вид. Запишем матрицу смежности 5, для ориентированного графа, изображенного на рисунке 7:


Матрицей инциденции Т размера m x n называется матрица, состоящая из чисел:

t>ij>> =>

1

-1

если дуга и>j> выходит из вершины х>i>,

если дуга и>j> входит в вершину х>i>,


0

если такой дуги нет.


Запишем матрицу инциденции для графа, изображенного на рисунке 7:


Операции над графами

Объединением двух, или более графов G>1>, U G>2> U … U G>n>> >называется граф, у которого множество вершин и множество дуг объединены (рис. 8).

Рис. 8



G>1>, U G>2> U…U G>n >' = {X>1> U X>2> U ...; U>1>, U U>2> U ...).


Суммой графов G>1> и G>2> называется граф, определяемый как объединение графов, причем каждая вершина, не вошедшая в объединение, соединяется с другими вершинами (рис. 9).

Будем говорить, что вершина и>j> конусирует граф G, если она смежная со всеми вершинами графа.

Произведением двух графов называется граф

G>1> * G>2> = {(X>j>>1>; X>j>>2>) Є G>1 >* G>2>}.

Вершина представляет собой бинарное отношение, т.е. вершин у нас будет 6.

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

Через два рукава перекинуты семь мостов: а, Ь, с, d, e, ƒ, g. Можно ли спланировать прогулку таким образом, чтобы по каждому мосту пройти только один раз и вернуться в начальное положение? Поставим в соответствие каждому мосту ребро графа, а суше вершину (рис. 11).

Эйлеровым путем в графе G называется такой путь в котором каждое ребро встречается один раз. Эйлер доказал, что такой путь существует тогда и только тогда, когда граф G содержит не более двух вершин нечетной степени и являются связными. В данной задаче существует четыре вершины нечетной степени (5, 3, 3, 3). Таким образом, задача о Кенигсбергских мостах не содержит Эйлеров путь и не имеет решения.

Если граф содержит точно две вершины нечетной степени, то в эйлеровом пути эти вершины должны быть конечными.

Если вершин нечетной степени нет, то граф имеет замкнутый эйлеров путь.

На рисунке 12, а нет замкнутого эйлерова пути; на рисунке 12, б эйлеров путь замкнут.

Теорема 4. (теорема Эйлера). В любом конечном графе сумма степеней вершин равна удвоенному числу его ребер. В XIX в. Гамильтон придумал игру, состоящую в том, что на доске располагались города в виде додекаэдра (рис. 13).

Играющий (игрок) должен обозначить шнуром замкнутый круг, соединяющий последовательно одну вершину с другой, посетив при этом все города, зайдя в каждый только один раз. Граф G называют Гамильтоновым, если он содержит простейший путь, проходящий через его вершину.

Задача о коммивояжере принадлежит к классу задач математического программирования. Требуется найти такой путь коммивояжера, по которому необходимо посетить и-1 городов, зайдя в каждый город, вернуться домой, причем протяженность пути должна быть минимальной. Таким образом, среди всех гамильтоновых циклов графа с п вершинами нужно найти сумму длин ребер, путь по которым будет минимальным. Математически эта задача решения не имеет.

Дерево игры – это способ описания игры, в которой последовательно, по ходам, фиксируется, какой информацией должны располагать игроки, какие варианты они могут выбрать, а также средний размер платежей в конце игры. Игра, описываемая при помощи такого дерева, называется игрой в развернутой форме или позиционной игрой.

Дерево решений – это система, отражающая структуру оптимизации задачи принятия решений. Ветви – это события, которые имеют место, а вершины – состояния в которых возникает проблема выбора. Узлы выбора различны. В одних решения принимает руководитель, в других выбор производит «природа», т.е. выбор ситуации от руководителя не зависит и он может только оценить вероятность принятия того или иного решения. Дерево решений применяется тогда, когда количество альтернатив и принятых решений конечно.

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

    Метод кратчайшего пути.

    Проект оценки и пересмотра проекта.

Характерным для этих методов является изображение проекта в виде сети взаимосвязанных работ.

Хранение графов в ЭВМ

При выполнении анализа на компьютере граф неудобно задавать графически, а лучше представлять его в виде матриц, операции с которыми достаточно просто проводить на компьютере.

Известно несколько типов матриц, позволяющих задавать граф.

Матрицей смежности графа, содержащего n-вершин, называется квадратная матрица А>nxn>, каждый элемент которой а>ij> определяется следующим образом:


1, если вершины i и j соединены ребром или дугой;

a>ij>=

0, в противном случае.

Для графа с кратными ребрами (дугами) вместо 1 записывается число ребер (дуг) между вершинами i и j.

Для неориентированного графа, матрица смежности имеет размерность (7 х 7) и записывается в виде

1 2 3 4 5 6 7

А=

Слева и сверху проставлены номера вершин.

Для ориентированного графа, матрица смежности имеет размерность (4 х 4) и записывается в виде

1 2 3 4

А=

Матрицу смежности чаще применяют для задания неориентированного графа. Для задания ориентированного графа лучше использовать матрицу инцидентности.

Матрицей инцидентности ориентированного графа с n вершинами и m ребрами называется матрица В с n строками и m столбцами, элемент которой b>ij> определяется следующим образом:

1, если вершина является началом ребра (i, j);

-1, если вершина является концом ребра (i, j);

b>ij>= 2, если вершина и начало, и конец ребра (i, j);

0, если вершина и ребро не инцидентны.

Для ориентированного графа, матрица инцидентности В>4х5> имеет следующий вид:

1 2 3 4 5

В=

Взвешенный ориентированный граф без петель, в котором выделено k-вершин, называемых полюсами, является k-полюсной цепью. Среди сетей особо выделяется двухполюсная транспортная сеть (рис. 14) S=(N, U) с множеством вершин N и множеством дуг U, для которых выполняется следующее условие:

1) существует только одна вершина сети s є N, в которую не заходит ни одна дуга. Эта вершина называется входом, или истоком сети;

2) существует только одна вершина сети t є N, из которой не выходит ни одной дуги сети. Эта вершина называется выходом, или стоком сети;

3) каждой дуге сети u є U поставлено в соответствие неотрицательное число с(u), называемое пропускной способностью дуги.

Рис. 14

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

Примерами дуг сети могут быть дороги, линии электропередачи, телефонные линии, авиалинии, водные магистрали, нефте- и газопроводы.

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

Задача о максимальном потоке

Рассмотрим двухполюсную сеть S=(N, U) с одним входом (источником) s є N и выходом (стоком) t є N, дуги сети (i, j) є U имеют ограниченную пропускную способность с>ij>. Задача о максимальном потоке заключается в поиске таких потоков >ij> по дугам (i, j) если, что результирующий поток из источника в сток является максимальным.

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

найти такие значения >ij>>,> при которых

V= >sj> = >sj>> > max;

j j

при ограничениях:

0<= >ij>> ><=c>ij>

 >ij> ->ij >=0 i є N is it.

j j

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

Построение максимального потока

На практике часто возникают задачи определения максимального количества товара, которое может быть перевезено от производителя потребителю. Аналогичными являются задачи определения максимальной пропускной способности системы автомагистралей, определения максимального количества нефти или газа, передаваемых по трубопроводам, информации, пропускаемой по компьютерной или телефонной сети. Формально эти проблемы сводятся к задаче построения максимального потока в сети. Для их решения необходимо ввести несколько понятий.

Пусть задана сеть S=(N, U) с множеством вершин N и множеством дуг U.

Определение. Дуга u є U, соединяющая вершины i є N, j є N сети S, называется допустимой дугой, если она обладает одним из следующих свойств:

1) направление дуги совпадает с направлением потока, и значение потока по этой дуге меньше ее пропускной способности:

u=(i, j), (u)<c(u);

2) направление дуги противоположного направлению потока, и величина потока отлична от нуля:

u=(j, i), (u)>0.

Дуги, обладающие первым свойством, называют увеличивающими; дуги, обладающие вторым свойством, – уменьшающими.

Определение. Увеличивающей цепью, соединяющей вход и выход сети, называется простая цепь, все дуги которой являются допустимыми.

Пример 1. Построим увеличивающую цепь для сети S=(N, U), представленной на рисунке 15.


Над каждой дугой указана ее пропускная способность, в скобках – поток по этой дуге.

Цепь (s, 1, 2, 4, t) является увеличивающей, так как все дуги – допустимые:

    дуга (s, 1) – увеличивающая, так как она проходит по направлению потока, и поток по ней меньше ее пропускной способности: 6 < 9;

    дуга (1,2) – также увеличивающая дуга: 3 < 6;

    дуга (2,4) – уменьшающая, так как она проходит против потока и поток по ней 2 > 0;

    дуга (4, t) – увеличивающая: 4 < 7.

Пример 2. Построим максимальный поток для сети, представленной на рис. 4.16.

Рис. 16

Начальное значение потока равно нулю V=0.

Увеличивающие цепи:

    (s, 1, 2, t),  = min (8, 4, 10) = 4;

    (s, 1, 3, 4, t),  = min (8–4, 3, 2, 9) = 2.

Больше увеличивающих цепей построить нельзя.

V>max> = 6.

Построим теперь максимальный поток для неориентированной сети с той же структурой рис. 17.

Рис. 17

Увеличивающие цепи:

    (s, 1, 2, t),  = 4;

    (s, 1, 3, 5, t),  = 3;

    (s, 3, 2, t),  = 2;

    (s, 3, 4, t),  = 2.

Больше увеличивающих цепей не существует. Максимальный поток V>max> = 7+4 = 9+2 = 11. Оптимальная ориентация показана на рис. 18.

Рис. 18

Литература

    Гончарова Г.А., Молчалин А.А. «Элементы дискретной математики»: Учебное пособие. М.: ФОРУМ: ИНФРА-М, 2005. (Серия «профессиональное образование»).

    Фомин Г.П. «Математические методы и модели в коммерческой деятельности»: Учебник. – М.: Финансы и статистика, 2007.