Эвристические методы

Автор работы: Пользователь скрыл имя, 22 Ноября 2013 в 14:54, курсовая работа

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

ТЕОРИЯ ГРАФОВ - это область дискретной математики, особенностью которой является геометрический подход к изучению объектов. Теория графов находится сейчас в самом расцвете. Обычно её относят к топологии (потому что во многих случаях рассматриваются лишь топологические свойства графов), однако она пересекается со многими разделами теории множеств, комбинаторной математики, алгебры, геометрии, теории матриц, теории игр, математической логики и многих других математических дисциплин. Основной объект теории графов-граф и его обобщения.

Содержание

Введение


I. Основные понятия

1.Эйлеровы графы.

2. Кротчайшие пути.

3. Деревья.

II.Задача коммивояжера.

1.Общие описание.

2.Методы решения ЗК.
а. Жадный алгоритм.
б. Деревянный алгоритм.
в. Метод ветвей и границ.

III. Выводы.

Литература.

Вложенные файлы: 1 файл

kursovik.doc

— 1.67 Мб (Скачать файл)

 

1. Эйлеровы графы.

Эйлеровым путем графа G(V,E) называется путь e1,e2, ..., et такой, что каждое ребро появляется ровно 1 раз, т.е. t = | Е |. Граф G(V,E) называется эйлеровым, если он имеет замкнутый эйлеровый путь, и полуэйлеровым, если существует эйлеров путь, не являющийся замкнутым.

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

 Предположим,  что Р является эйлеровым циклом  в графе G. Тогда при всяком прохождении цикла через любую вершину графа используется одно ребро для входа и одно ребро для выхода. Поскольку каждое ребро используется один раз, то каждая вершина должна иметь четную степень. Обратное утверждение доказываем индукцией по числу ребер в графе G. Пусть граф G связен и степень каждой вершины четна. На основании Факта 3 граф содержит цикл C. Если C содержит каждое ребро, то все доказано. Если же нет, то удаляем из графа G все ребра, принадлежащие циклу C. Получаем новый граф G1, возможно несвязный. Число ребер в G1 меньше чем в G, и каждая вершина имеет четную степень. По индуктивному предположению в каждой компоненте графа d имеется эйлеров цикл. В силу связности графа G каждая компонента графа G1 имеет общие вершины с циклом С. Теперь проходим, ребра графа G следующим образом: идем по ребрам цикла С до первой неизолированной вершины графа G1. Затем проходим эйлеров цикл в компоненте графа G1, затем снова двигаемся по циклу С до следующей неизолированной вершины графа G1. Ясно, что процесс заканчивается в исходной вершине, что и показывает существование эйлерова цикла.

Аналогичным образом  доказывается

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

Аналогично теореме 1 можно доказать следующее утверждение.

Теорема 3. Ориентированный граф G(V,E), у которого связан соответствующий скелетный граф, является Эйлеровым тогда и только тогда, когда либо для всех вершин v, di(v) = d0(v), либо существуют точно две вершины v1 и v2 такие, что d0(v1) = di(v1) + 1,

d0(v2) + 1 = di(v2), а для остальных вершин

dI(v) = d0(v). (3)

В первом случае любой  эйлеров путь является ориентированным  циклом, во втором -

начинается  в вершине v1 заканчивается в вершине v2

Теорема 4. Пусть G - связный граф, имеющий точно 2s > 0 вершин нечетной степени. Тогда существует s и не существует меньшего числа путей P1, ... , Ps, которые в совокупности содержат все ребра графа G точно по одному разу. При этом каждый из путей P1, ..., Ps начинается в одной нечетной вершине и кончается в другой.

Согласно факта 1 в графе G имеется четное число 2s вершин нечетной степени. Разобьем эти вершины на s пар (v1, w1), ..., (vs, ws). Образуем теперь новый граф G1,= добавив каждой паре (vi, wi), i = 1,s ребро. Тогда G - связный граф, у которого все вершины четны. Согласно теореме 1 в графе G1 существует эйлеров цикл С, проходящий по всем ребрам точно по одному разу. Удалим из цикла С добавленные ребра и получим s путей P1, ..., Ps, проходящих каждое ребро точно один раз. Ясно, что каждый путь начинается и кончается в нечетной вершине. Пусть теперь имеется t путей t < s P1, ... , Pt, содержащих все ребра графа G. Тогда каждая нечетная вершина должна быть концом пути и, значит, имея 2s нечетных вершин, нельзя покрыть все ребра графа G менее, чем s путями.

Приведем  теперь алгоритм построения эйлерового пути в данном эйлеровом графе.

Теорема 5. Пусть G - эйлеров граф. Тогда следующая процедура всегда возможна и приводит к построению эйлеровой цепи графа G.

Выходя из произвольной вершины, идем по ребрам графа произвольным образом, соблюдая следующие правила:

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

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

что  оставшийся граф G1 связен и содержит ровно две нечетных вершины

v и u. Согласно теореме 2 граф G1 имеет эйлеров путь Р из v в и. Поскольку удаление первого ребра инцидентного u пути P либо не нарушает связности G1, либо происходит удаление вершины u и оставшийся граф G2 связен с двумя нечетными вер-

шинами, то отсюда получаем, что описанное выше построение всегда возможно на каждом шаге. (Если v = и, то доказательство не меняется, если имеются ребра, инцидентные u). Покажем, что данная процедура приводит к эйлерову пути. Действительно, в G не может быть ребер, оставшихся непройденными после использования последнего ребра, инцидентного u, поскольку в противном случае удаление ребра, смежному одному из оставшихся, привело бы к несвязному графу, что противоречит 2). ♦

В качестве одного из применений эйлеровых графов приведем следующее.

Пусть А = {0, 1, ..., m-1} - алфавит из m букв. Ясно, что имеется

mn ,различных слов длины n в алфавите А. Последовательностью де Брейна называется циклическое слово a0 a1…aL-1  в алфавите А, такое, что подпоследовательности  вида ai ai+1…ai+n-1 i = 0, ..., L-1 состоят из всех возможных L = mn слов длины n. Наиболее важный случай для приложений m = 2. Последовательности де Брейна производятся полноцикловыми регистрами сдвига. Покажем существование последовательностей де Брейна.



Пример.

 

 

 

 

 

 

 

Определим ориентированный  граф Gm,n(V,E) следующим образом

1) V является множеством всех mn-1 слов длины n-1 над A

2) Е является множеством всех mn слов длины n над A



3) дуга (a1, a2 … ,an) имеет начальной вершиной (a1, … ,an-1) и конечной (an, … ,an).

Приведем граф G2,3

Ясно, что последовательности де Брейна соответствует замкнутый  путь в графе Gm,n содержащий каждую дугу точно один раз. Обратно, ориентированный цикл в Gm,n, содержащий каждую дугу точно один раз, приводит к построению цикла де Брейна, если выписывать соответствующие дуги подряд.

Пример. Для графа G2,3. имеем эйлеров путь

000, 001, 011, 111, 110, 101, 010, 100, а соответствующую   последовательность де Брейна

00011101

Теорема 6. Для любых целых m и n граф Gm,n имеет ориентирован-

ный эйлеров цикл.

           Покажем сначала, что граф Gm,n сильно связен, а значит его соответствующий скелетный граф связен. Действительно, пусть b1, ... , bn-1

 и c1, ..., cn-1 две вершины. Тогда их соединяет следующий ориентированный путь

(b1, b2, ..., bn-1, c1), (b2, ... , bn-1, c1, c2), ... , (bn-1, c1, ..., cn-1).

Далее dI(v) = d0(v) = m для любой вершины v.

Действительно, из вершины v = (b1, b2, ..., bn-1) выходят дуги вида:

           (b1, b2, ..., bn-1)

и входят дуги вида (с, b1 ... , bn-1), с А.

Теперь по теореме 3 в графе Gm,n существуют эйлеровы циклы.

Следствие. Для любых целых m, n последовательности де Брейна существуют.



Теорема 7. Для любых натуральных m, n существует точно

 

последовательностей де Брейна.

 

2. Кратчайшие пути.

Пусть G(V,E) - конечный неориентированный граф и пусть заданы две его вершины s и t. Требуется найти кратчайший путь (длина пути равна числу входящих в него ребер) от вершины s к вершине t. Сначала мы опишем алгоритм, который находит длину кратчайшего пути.

Алгоритм ДЛИНА

1) Помечаем  вершину s пометкой 0. Полагаем i = 0.

2)Находим  все непомеченные вершины, связанные ребром с

вершинами, имеющими отметку i. Если таких вершин нет, t недостижимо из s,. Если такие вершины есть, помечаем их i+1.

              3)Если вершина t помечена, переходим к 4). Если нет, то                                           увеличиваем I на 1 и повторяем шаг 2).

            4)Длина кратчайшего пути от s к t равна i+1, стоп. 
Корректность алгоритма следует из следующего утверждения.

Факт 1. Вершина v графа G(V,E) помечается в алгоритме пометкой (v) тогда и только тогда, когда длина кратчайшего пути от вершины s к v равна (v).

♦ Доказательство индукцией по i. Ясно, что при i = 0, (v) = 0 влечет v = s и утверждение справедливо. Предположим, что утверждение верно для всех вершин v, для которых (v) m. Если вершина и не помечена, значит, нет пути от s к u, меньше чем m+1. Если u связана ребром с вершиной, помечной,то ее пометка, во-первых , будет равна m+1 , во-вторых , имеется путь длины m от s к данной вершине и, значит, длина кратчайшего пути от s к u равна m+1. Если u не связана ребром с вершиной, имеющей пометку m, то не существует пути, короче, чем m+1 от s к u, поскольку предыдущая вершина на этом пути имела бы

 пометку m.

Алгоритм  ПУТЬ.

  1. Полагаем i = (t) и помечаем v(i) = t.
  2. Находим вершину u такую, что u связана ребром с v(i) и (u) = i-1. Помечаем v(i-1) = u.
  3. Если i = 1, то останавливаемся, и уменьшаем i на 1 и повторяем шаг 2). ♦ 
    Приводимое ниже утверждение позволяет находить число путей фиксированной длины 
    между любыми двумя вершинами.

Для графа G(V,E), | V | = u определим матрицу смежности, т.е. (n n) - матрицу A = (aij), i,j = l, ... ,u,где

3. Деревья.

1. Связный  граф G(V, E), не имеющий циклов, называется деревом. Следующая теорема перечисляет некоторые основные свойства деревьев.

Теорема 1. Пусть граф G(V, E) имеет п вершин. Тогда следующие утверждения эквиваленты.

  1. G является деревом;
  2. G не содержит циклов и имеет n -1 ребер;
  3. G связен и имеет n - 1ребер;
  4. G связен, но удаление любого ребра нарушает связность;
  5. любые две вершины графа G соединены ровно одним путем;
  6. G не имеет циклов, но добавление любого ребра порождает ровно один цикл.

♦ При n = 1 утверждение очевидно, поэтому считаем n 2. 1) => 2). По определению G не имеет циклов. Рассмотрим некоторое ребро = (v1, v2) и удалим его. Получим граф G'. В графе G' нет пути из v1 в v2 , т.к. если бы такой путь был, то в графе G был бы цикл. Значит G' не связен и не имеет циклов. Значит он состоит из двух компонент, являющихся деревьями с числом вершин n1 и n2 соответственно (n1 + n2 = n). По индуктивному предположению G' имеет     n1 -1 + n2 -1 ребер. Следовательно, граф G имеет n -1 ребер.

  1. => 3). Если бы G был несвязен, то каждая его компонента представляла бы собой связный граф без циклов. Из предыдущего имеем, что число ребер в каждой компоненте меньше на одинo числj ее вершин. Значит, общее число ребер меньше числа вершин по крайней мере на два, что противоречит тому, что G имеет п - 1ребер.
  2. => 4). Удаление любого ребра приводит к графу с n вершинами и n-2 ребрами, 
    который не может быть связным.
  3. => 5). В силу связности G, каждая пара вершин соединена путем. Если бы данная пара была соединена более, чем одним путем, то они образовывали бы цикл. Но тогда удаление любого ребра в цикле не нарушает связности графа.
  4. => 6). Если бы G содержал цикл, то любые две вершины на цикле соединялись бы по крайней мере двумя путями. Добавим теперь к графу G ребро = (v1, v2). 
    Тогда образуется цикл, т.к. вершины v1 и v2 уже соединены путем. Ясно, что цикл единственный.

6) => 1). Если  бы G был несвязен, то добавление ребер, соединяющих вершины из разных компонент, не приводит к образованию цикла. ♦

Следствие. Дерево с более чем одной вершиной имеет по крайней мере две вершины степени 1.

♦ Действительно, пусть v1, ..., vn - множество вершин, тогда имеем

 

В силу связности d(vi) 1 , отсюда и следует утверждение. ♦

2. Для графа G(V, E) определим два полезные понятия.

Вершинный подграф G(V', E') - это граф на множестве вершин              Е' E ребрами Е' Е, такими, что оба конца ребра е' Е' принадлежат V.

Реберный  подграф G(V, E') - это граф, определяемый подмножеством ребер Е' E множеством вершин V V, состоящим из концевых вершин ребер из Е'. Остовным (покрывающим) деревом графа G(V, E) называется его реберный подграф с множеством вершин V, являющийся деревом.

Факт 2. Граф G(V, E) имеет остовное дерево тогда и только тогда, когда он связен. ♦ Предложим процедуру построения остовного дерева. Ясно, что если граф G не связен, то он не может иметь остовного дерева.

Информация о работе Эвристические методы