Лабораторная работа 4 ОТКДС (Методичка для 4 лабы по ОТКДС), страница 2
Описание файла
Файл "Лабораторная работа 4 ОТКДС" внутри архива находится в папке "Методичка для 4 лабы по ОТКДС". Документ из архива "Методичка для 4 лабы по ОТКДС", который расположен в категории "". Всё это находится в предмете "основы теории конечных дискретных систем (откдс)" из 4 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "откдс" в общих файлах.
Онлайн просмотр документа "Лабораторная работа 4 ОТКДС"
Текст 2 страницы из документа "Лабораторная работа 4 ОТКДС"
4. N=0+1=1.
5. Рассмотрим матрицу R.
Очевидно, что A4 есть конечная вершина каждого гамильтонова пути, поскольку никакая дуга не имеет эту вершину своим началом, тогда как дуга, исходящая из любой другой вершины, достигает вершину A4.
Это свойство выражается наличием единиц во всем столбце A4 и нулей во всей строке A4 (за исключением их пересечения).
6. Вычеркиваем столбец и строку A4. Получаем матрицу R ' .
7. Произведем умножение матриц R ' R ' = R2 .
В качестве примера рассмотрим получение элемента r21,3 матрицы R2 , т.е. элемента, расположенного в первой строчке и в третьем столбце матрицы R2 r21,3 = 1 0 1 1 0 1 0 0 1 0 = 1 (см. рис. 4.2).
Рис. 4.2
Каждый член этой суммы означает следующее. Пусть мы хотим попасть из A1 в A3. Тогда:
1 0 = 0 - существует прямой путь из A1 в A1, но нет из A1 в A3;
1 1 = 1 - существуют прямые пути из A1 в A2 и из A2 в A3; следовательно, имеется путь длины 2 из A1 в A3;
0 1 = 0 - не существует прямого пути из A1 в A3, но есть из A3 в A3;
0 0 = 0 - нет прямого пути из A1 в A5 и из A5 в A3;
1 0 = 0 - существует прямой путь из A1 в A6, но нет из A6 в A3.
Таким образом, мы получили все пути из A1 в A3 длиной меньшей или равной 2.
Проделав это для всех элементов, мы получим матрицу R2 , все единицы которой обозначают существование путей длиной меньшей или равной 2, а 0 - их отсутствие.
8. Проверяем условие равенства R2 и R ' . Так как они не равны, переходим к п. 9.
9. Проверяем условие равенства всех элементов матрицы единицы; так как оно не выполняется, то снова возвращаемся к п.4.
4. N=2.
5. Рассматриваем матрицу R2 .
Вершина A3 , является конечной вершиной гамильтонова пути на данном цикле вычислений.
6. Вычеркиваем столбец и строку A3. Оставшаяся матрица имеет вид
7. Производим умножение (R2 ) ' R ' = R3.
8. R3 (R2 ) '
9. Все элементы R3, равны единице. Очевидно, что и R4 и R5 и т.д. также будут равны, т.е. будут иметь все элементы, равные единице).
Переходим к п.10.
10. Матрицу R b получаем возвращением строк и столбцов, вычеркнутых в п. 6.
11. Матрицу R c получаем группировкой строк и столбцов матрицы R b (п.10), чтобы все нули были расположены под главной диагональю, а единицы - над ней:
Таким образом, мы получили три класса эквивалентности:
- в первый класс входят вершины A1 A2 A5 A6;
- во второй - вершина A3;
- в третий - вершина A4.
Определение гамильтонова пути становится совсем простым делом. С учетом необходимости выполнения условий (4.4) для вершин, входящих в один класс эквивалентности, он может быть таким: A1,A6,A5,A2,A3,A4.
Алгоритм Фаулкса в общем случае не решает однозначно задачу определения Гамильтонова пути, он только частично упорядочивает множество вершин, снижая тем самым размерность решаемой задачи. В данном примере видно, что в Гамильтоновом пути вершина A3 обязательно должна быть после вершин, входящих в первый класс эквивалентности, а вершина A4 - после вершин, входящих в первый и второй классы эквивалентности.
В случае, когда в каждый класс эквивалентности входит одна вершина, алгоритм Фаулкса определяет Гамильтонов путь однозначно.
Определение связности графа
Используя алгоритм Фаулкса, можно предложить алгоритм решения другой задачи на графе, которую можно сформулировать следующим образом.
Пусть дана матрица смежности некоторого графа G , имеющего n вершин. Необходимо определить, является ли этот граф связным. В случае, если граф несвязный, он распадается на определенное число т связных графов G1, G2,…, Gm таких, что, например, из любой вершины графа G1 можно найти путь к любой другой вершине этого же графа G1 по его ребрам, но нельзя найти путь ни к одной вершине, не принадлежащей графу G1.
В предлагаемой задаче требуется выделить из графа G связные графы G1, G2,…, Gm , указав при этом, какие вершины входят в каждый из графов.
В задаче рассматривается неориентированный граф, у которого в матрице смежности R элементы матрицы rij = rji , i, j = 1,…,n , то есть матрица симметрична относительно главной диагонали.
Порядок решения задачи:
1. Задаем матрицу смежности R графа.
2. Задаем номер цикла вычислений N = 0.
3. Увеличиваем на единицу номер цикла вычислений N = N +1.
4. Находим матрицу R N, полученную перемножением R N-1 R
5. Проверяем условие равенства матрицы R N и R N-1 (равенство каждого элемента rNij = rN-1ij , i, j = 1,…,n). Если это условие выполняется, переходим к п.6, если нет - к п. 3.
Матрица R N позволяет определить количество связных графов и номера вершин, входящих в каждый связный граф.
Для этого необходимо в каждой i - строке матрицы R N найти элементы rNij = 1, i, j = 1, …, n . Номера столбцов j , где rij = 1, и будут номерами вершин, входящих в связный граф. Вполне очевидно, что нет необходимости проверять строки с номерами вершин, образующих этот связный граф, так как полученные номера будут полностью совпадать с номерами вершин, входящих в него.
6. Задаемся номером строки, с которой необходимо начать проверку матрицы i=1.
7. В строке с номером i=1 выбираем элементы rNij = 1. Номера тех столбцов j, в которых rNij = 1, дают нам номера вершин, входящих в один из связных графов.
8. Увеличиваем на единицу номер просматриваемой строки i= i+1.
9. Если среди вершин уже выделенных связных графов есть вершина с номером i , то переходим к п. 10.
10. Если i < n (где n x n - размерность исходной матрицы смежности), то переходим к п. 7, если i = n , то к п. 11.
11. Конец.
Пример.
-
Пусть задана матрица смежности R некоторого графа G , имеющего n = 8 вершин, и надо проверить этот граф на связность:
Наличие единиц в клетках матрицы R показывает, что между соответствующими вершинами имеется путь длиной 1, (т.е. эти вершины непосредственно соединены ребром).
2. Задаем номер начала цикла вычислений: N = 0.
3. N= 0+1 =1.
4. Производим умножение R R = R2
Наличие единиц в клетках матрицы R2 показывает, что между соответствующими вершинами имеется путь длиной меньшой или равной двум.
В матрице R2 по сравнению с матрицей R, появилась, например, единица, показывающая связь между вершинами 1 и 7 (и, соответственно, между 7 и 1). Значит, есть путь длиной 2 из 7 в 1 через вершину 8.
5. Проверяем условие равенства R2 и R . Они не равны. Переходим к п. 3.
N = 1 + 1 = 2.
Умножение R2 R = R3
Проверяем условие равенства матриц R2 и R3. Так как они равны, то это означает, что путь длиной 2 - максимальный в данной графе, и дальнейшее перемножение матрицы не имеет смысла, так как мы будем получать одну и ту же матрицу.
Наличие нулей в полученной матрице показывает, что между соответствующими элементами отсутствует путь любой длины и, следовательно, данный граф — несвязный.
6. i =1.
7. В строке 1 выбираем все элементы r31j , равные единице 1 (j=1,…,n).
r311 = r312 = r317 = r318 = 1.
Номера столбцов, в которых r3ij = 1 - это номера вершин первого связного подграфа, входящего в данный граф, т.е. вершины 1, 2, 7, 8 образуют связный подграф G1 .
8. Определяем номер очередной вершины i = 1 + 1 = 2.
9. Так как среди вершин связного графа G1 есть вершина j=2, то возвращаемся к п.8.
8. i = 2 + 1 = 3.
9. Среди вершин связного графа G1 нет вершины j=3.
10. Номер вершины j=3 меньше числа вершин графа (n=8). Возвращаемся к п. 7.
7. В строке 3 выбираем элементы, равные единице:
r333 = r336 = 1 .
Следовательно, во второй связный подграф G2 входят вершины 3, 6.
8. Определяем номер очередной вершины i = 3 + 1 = 4.
9. Среди вершин связных подграфов G1 и G2 нет вершины j = 4.
10. Так как i < 8 , переходим к п. 7.
7. В строке 4 выбираем элементы, равные единице.
r344 = r345 = 1 .
Следовательно, в третий связный подграф G3 входят вершины 4, 5.
8. i = 4 + 1 = 5.
9. Среди вершин связных графов G1, G2, G3 есть вершина j = 5. Переходим к 8. Аналогично проверяются вершины j = 6, 7, 8.
В результате работы алгоритма будут найдены три связных подграфа:
G1 = {1, 2, 7, 8}; G2 = {3, 6}; G3 = {4, 5}.
Определение Эйлеровой линии в графе
Одна из важных задач теории графов заключается в нахождении цикла, содержащего по одному разу все ребра графа. Этот цикл называется Эйлеровой линией или Эйлеровым путем на графе, а задачу называют задачей Эйлера. Графы, на которых существуют Эйлеровы линии, называют Эйлеровыми графами.
На практике задача нахождения Эйлеровой пинии на графе может встретиться, например, при определении порядка регламентных проверок исправности каналов связи между звеньями какой-нибудь достаточно сложной системы, обслуживаемой одной ремонтной единицей.
Ответ на вопрос о существовании Эйлеровой линии на графах дает теорема Эйлера.
Теорема Эйлера для неориентированных графов: для того чтобы на графе существовала Эйлерова линия, необходимо и достаточно, чтобы он был связным и степени всех его вершин были четными.
Теорема Эйлера для ориентированных графов: для того чтобы на ориентированном графе существовала Эйлерова линия, необходимо и достаточно, чтобы он был связным и для каждой его вершины полустепень исхода равнялась полустепени захода.