Матрицы в теории графов

Автор: Пользователь скрыл имя, 07 Декабря 2011 в 21:38, курсовая работа

Краткое описание

Цель моей курсовой работы – научиться решать классические задачи, касающиеся различных матриц в теории графов.
Задачами данной работы будут:
изучить основные матрицы графов и их теоремы;
научиться строить матрицы по графическому рисунку графа и графы по данной матрице;
изучить метрические характеристики графов, связанные с матрицами;
научиться находить пути графа по матрице (минимальные и максимальные).

Оглавление

ВВЕДЕНИЕ 3
ГЛАВА I. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 4
Основные понятия 4
Способы задания графов 6
1.2.1 Латинская матрица. 6
1.2.2 Матрица смежностей. 7
1.2.3 Матрица инциденций. 11
1.2.4 Матрицы связности и достижимости. Матрица
контрдостижимости. 13
Метрические характеристики графа 15
Выявление маршрутов с заданным количеством рёбер 17
Определение экстремальных путей на графах. Метод
Шимбелла. 20
1.6. Нахождение кратчайших путей. Алгоритм Дейкстры. 22
1.7 . Алгоритм нахождения максимального пути. 26
ГЛАВА II. ПРАКТИЧЕСКАЯ ЧАСТЬ 29
ЗАКЛЮЧЕНИЕ 40
СПИСОК ЛИТЕРАТУРЫ 41

Файлы: 1 файл

Матрицы в теории графов.doc

— 1.13 Мб (Скачать)

       
 
 

А =     
 

– симметричная матрица порядка d + 1, все элементы которой, за исключением двух ближайших к главной диагонали полос, равны нулю. Минор порядка d матрицы А, остающийся после вычёркивания первого столбца и последней строки, равен единице. Следовательно, rank G = rank P(G) ≥ rank A ≥ d = d(G), т. е. rank = G d(G). 

      Вершина x называется центральной, если e(x) = r(G). Множество всех центральных вершин графа называется его центром. Центром может быть единственная вершина графа или несколько вершин (рис. 1.7). Здесь e(x1)=e(x2)=e(x4)=e(x6)=3, e(x3) = e(x7) = 4, e(x5) = 2. Таким образом, d(G) = 4, R(G) = 2. Периферийные вершины: x3 и x7, диаметральные цепи: x3 – x2 – x5 – x6 – x7 и x3 – x4 – x5 –x6 –x7, центральная вершина x5.

       
 
 
 
 
 

          Рис. 1.7 
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           

     1.4 Выявление маршрутов с заданным количеством рёбер 

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

     Теорема: Для определения количества маршрутов, состоящих из k рёбер (дуг), необходимо возвести в k-ую степень матрицу смежности вершин. Тогда элемент p даст количество маршрутов длины k (состоящих из k рёбер) из вершины xi в вершину xj.

     Доказательство: Используем индукцию по k. Для k = 1 маршрут длины 1 как раз является ребром G,  следовательно,  результат теоремы при  k = 1 вытекает из определения матрицы смежности А. Пусть результат имеет место для k - 1.

                       (A(k - 1))ij = Lij, (A)ij = aij, тогда

                                              n

                       (Ak)ij = (A(k - 1)*A)ij = SUM Liq * aqj.

                                             q=1

         где Liq - число маршрутов длины (k-1) от vi к vq, aqj - число маршрутов длины 1 от vq к vj.

         Следовательно, Liq * aqj - число маршрутов длины k из vi в vj, где vq - предпоследняя вершина маршрута. Отсюда следует, что n SUM Liq * aqj есть число маршрутов длины k от vi к vj. q = 1 

     Пример 5. Рассмотрим  неориентированный  граф, изображенный ниже (Рис. 1.8).

       

                     Рис. 1.8 
                 

     Составим матрицу смежности вершин и возведем ее  в  квадрат.

       Результат возведения:

     

           =    
 

    Рассмотрим первую строку. Элемент p = 3. Это значит,  что существуют три маршрута из А в А длиной два ребра. Действительно, это маршруты Au1Bu1A, Au2Cu2A, Au3Du3A. Из А  в B существуют два маршрута: Au2Cu5B, Au3Du4B. Если использовать числовую матрицу смежности вершин, то для нахождения самих маршрутов необходимо работать с графом. Если же воспользоваться модифицированной матрицей смежности, в ячейки которой записаны названия ребер, то можно получить не только количество маршрутов, но и сами маршруты.

    Действительно, для данного примера имеем: 

           

                            = 

      
 
 
 
 

    Аналогично  обстоит дело и с орграфом. У  него матрица смежности вершин несимметрическая.

    Пример 6: Рассмотрим следующий орграф (Рис. 1.9) и определим все маршруты с тремя ребрами.

      
 
 

    Рис. 1.9

    Матрица смежности и результаты ее возведения в квадрат и куб находятся ниже.

 

    P2 =  =  

      

    P3 =  =  
 

    Рассмотрим  элемент p после возведения  матрицы смежности вершин в квадрат. p = 2, то есть из вершины В в вершину В есть два маршрута длиной две дуги.  Это  маршруты и Bu3Cu4B и Bu2Au1B. После возведения матрицы в куб сохраняется та же картина. Например, p = 2; это значит, что есть два маршрута длиной три дуги из вершины А в вершину В. Это маршруты Au1Bu2Au1В и Au1Bu3Сu4В. Для получения цепей (маршрутов, в которых каждое ребро встречается один раз) нужно в модифицированной матрице P3 вычеркнуть те слагаемые, в которых какой-либо сомножитель встречается более одного раза. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    1. 5  Определение экстремальных путей на графах. Метод

    Шимбелла

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

    1). Операция умножения двух величин  a и b при возведении матрицы в степень соответствует их алгебраической сумме, то есть

      

                  (1. 5. 1)

     2). Операция сложения двух величин  a и b заменяется выбором из этих величин минимального (максимального) элемента, то есть

                                  (1. 5. 2)

    нули  при этом игнорируются. Минимальный  или максимальный элемент выбирается из ненулевых элементов. Нуль в результате операции (1.5.1) может быть получен лишь тогда, когда все элементы из выбираемых – нулевые.

    С помощью этих операций длины кратчайших или максимальных путей между всеми вершинами определяются возведением в степень весовой матрицы Ω, содержащей веса рёбер. Например, элементы матрицы Ω2 вычисляют следующим образом:

    ω = min (max){( ω + ω ), (ω + ω ), …, (ω + ω )}.

    Аналогично  находят элементы k-ой степени матрицы Ω.

    Пример 7: Составим для указанного графа (Рис 1. 10) матрицу весов. Она определяет все  маршруты, состоящие из одного ребра. Найдем кратчайшие  пути  из двух ребер, для этого возведем эту матрицу в квадрат с учетом операций Шимбелла (min – кратчайшие пути).

      
 
 

    Рис. 1. 10 

      
 

    Например: ω = min{( ω + ω ), (ω + ω ), (ω + ω ), (ω + ω )} = min{(0 + 0), (1 + 2), (3 + 0), (2 + 0)} = min {0, 3, 0, 0} = 3.

    Аналогично, кратчайшими путями из трёх рёбер  будут

      
 
 

    и так далее. Например, длина кратчайшего  пути из трёх рёбер из вершины D в вершину С равна 7. это путь DBAC. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

    1. 6. Нахождение кратчайших путей. Алгоритм Дейкстры. 

    Для начала рассмотрим алгоритм Фалкерсона (графический способ упорядочивания элементов):

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

    Теперь  рассмотрим алгоритм нахождения кратчайшего пути между двумя заданными  вершинами в ориентированном графе. Пусть G = {S, U, Ω } – ориентированный граф со взвешенными дугами. Обозначим s-вершину – начало  пути и t-вершину -  конец пути.

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

    Этап 1. Нахождение кратчайшего пути.

    Шаг 1. Присвоение  вершинам начальных меток.

    Полагаем  d(s)=0* и считаем эту метку постоянной (постоянные метки помечаются сверху звёздочкой). Для остальных вершин xi S, xi ≠s полагаем d(xi) = ∞ и считаем эти метки верными. Пусть x” = s, x” – обозначение текущей вершины.

    Шаг 2. Изменение меток.

    Для каждой вершины xi с временной меткой, непосредственно следующей за вершиной x”, меняем ее метку в соответствии со  следующим правилом:

    dнов.(xi) = min{dстар.(xi), d(x”)+ω(x”, xi)}.  (1. 6. 1)

    Шаг 3. Превращение метки из временной в постоянную.

    Из  всех вершин с временными  метками  выбираем вершину xj* с наименьшим значением метки

    d(xj*) = min {d(xj) / xj S, d(xj) – временная}.    (1. 6. 2)

    Превращаем  эту метку в постоянную  и  полагаем x” = xj*.

    Шаг 4. Проверка на завершение первого этапа.

    Если  x” = t, то d(x”) – длина кратчайшего пути от s до t. В противном случае происходит возвращение ко второму шагу.

    Этап 2. Построение кратчайшего пути.

    Шаг 5. Последовательный поиск дуг кратчайшего пути.

    Среди вершин, непосредственно предшествующих вершине x” c постоянными метками, находим вершину xi, удовлетворяющую соотношению

    d(x”) = d(xi) + ω(xi, x”).   (1. 6. 3)

    Включаем  дугу (xi, x”) в искомый путь и полагаем x” = xi.

    Шаг 6. Проверка на завершение второго этапа.

    Если  x” = s, то кратчайший путь найден – его образует последовательность дуг, полученных на пятом шаге и выстроенных в обратном порядке. В противном случае возвращаемся к пятому шагу. 

    Пример 8: Задана весовая матрица Ω графа G. Найти минимальный путь из вершины x1 в вершину x6 по алгоритму Дейкстры.

    

    

                      Рис. 1. 11

    На рисунке 1. 11 изображён сам граф по данной матрице весов. Поскольку на данном графе есть цикл между вершинами x2, x3 и x5, то вершины графа нельзя упорядочить по алгоритму Фалкерсона. На рисунке графа временные и постоянные метки указаны над соответствующей вершиной. Итак, распишем подробно работу алгоритма Дейкстры по шагам.

    Этап 1.

    Шаг 1. Полагаем d(x1) = 0*, x” = x1,

    d(x2) =  d(x3) =  d(x4) = d(x5) = d(x6) = ∞.

    1-ая  итерация.

    Шаг 2. Множество вершин, непосредственно следующих за x” = x1 со временными метками S” = {x2, x4, x5}. Пересчитываем временные метки вершин: d(x2) = min{∞, 0*, + 9} = 9,

    d(x4) = min{∞, 0* + 6} = 6, d(x5) = min{∞, 0* + 11} = 11.

    Шаг 3. Одна из  временных  меток превращается в постоянную min{9, ∞, 6, 11, ∞} = 6* = d(x4), x” = x4.

    Шаг 4. x” = x4 ≠ t = x6,  происходит возвращение на второй шаг.

    2-ая  итерация.

    Шаг 2. S” = {x2, x3, x5}, d(x2) = min{9, 6* + 5} = 9,

Информация о работе Матрицы в теории графов