Алгоритмы на графах

Автор: Пользователь скрыл имя, 18 Марта 2012 в 15:39, курсовая работа

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

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

Файлы: 1 файл

Курсовая работа.docx

— 271.01 Кб (Скачать)

 

ВВЕДЕНИЕ

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

1 ОСНОВЫ ТЕОРИИ ГРАФОВ

 

 

1.1 Ориентированные и неориентированные графы

 

Графом G=(X, U) будем называть совокупность двух конечных множеств: множества вершин X={x1,…, xn} и множества ребер (дуг)

U = {u1…..um}, состоящего из некоторых пар элементов (xi, xj) множества X.

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

Если пары вершин (xi, xj) в множестве U являются неупорядоченными (т.е., порядок соединения вершин несущественен), то граф называется неориентированным (неорграфом), а пары (xi, xj) – ребрами этого графа (рис. 1, а). При этом вершины xi, xj называют концами (концевыми вершинами) ребра. В данном случае также говорят, что ребро (хi, xj,) соединяет вершины xi и xj. Если пары вершин (xi, xj) в множестве U являются упорядоченными (т.е., порядок соединения вершин существенен), то граф называется ориентированным (орграфом), а пары (xi, xj) – дугами. Дуги орграфа, в отличие от ребер неорграфа, будем обозначать < xi, xj >. При этом xi – начало (начальная вершина) дуги, xj – конец (конечная вершина) дуги. Говорят также, что дуга < xi, xj > исходит из вершины xi и заходит в вершину xj. Заметим, что < xi, xj > и < xi, xj > – это различные дуги в графе. При изображении орграфа дуги обозначают стрелками, указывающими их ориентацию (направление). Графы, в которых имеются и неориентированные ребра, и дуги, называются смешанными. Заметим, что любой неориентированный граф может быть представлен в виде орграфа путем замены каждого его ребра двумя противоположно направленными дугами.

В дальнейшем вершины графа  будем обозначать символами х1, х2,…, ребра – символами u1, u2,… (или парами (xi, xj)), дуги – символами u1, u2,… (или упорядоченными парами < xi, xj >). Число вершин графа обозначим через n, число ребер (дуг) – через m.

Пара вершин xi, xj может соединяться двумя или более ребрами (дугами одного направления). Такие ребра (дуги) называют кратными. Количество одинаковых ребер (xi, xj) (дуг < xi, xj >) называется кратностью соответствующего ребра (дуги). Петлей называется дуга (ребро) с совпадающими начальной и конечной вершинами.

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

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

Так, граф, представленный на рис. 1, а является псевдографом, так как содержит петлю (xi, xj) и кратное ребро (х2, x3); граф на рис. 1, б является мультиграфом, граф на рис. 1, в-простым графом.

Две вершины графа xi и хj называются смежными, если существует соединяющее их ребро (дуга). Два ребра (дуги) смежные, если они имеют общую вершину. Вели ребро (дута) Uk соединяет вершины xi и xj. то говорят, что ребро (дуга) инциндентно вершинам xi и xj, а вершины xi и xj инциндентны ребру (дуге) Uk. Так, на рисунке 1 а вершина x5 инциндетна ребрам U6, U9, U5, ребра U10 и U6 являются смежными; смежными являются вершины х1 и х6, x5 и х6

 

Рисунок 1.1 – Изображения графов

 

Часто граф задают парой (Х, Г), где X – множество вершин графа, а Г – отображение, ставящее в соответствие каждой вершине графа подмножество множества X. При этом для орграфа Г(хi) – множество вершин xj є X, для которых в графе существует дуга <хi, хj>; Г-1i) – множество вершин хk є Х, для которых в графе существует дуга <xk, xi>. Для неорграфа Г (х,)= Г-1i) и означает количество вершин, смежных с вершиной xi.

Подграфом графа G=(X, U) называется граф G’=(X’.U’), для которого X’є X, U’ є U. Остовным подграфом графа G=(X, U) называется граф G0= (X, U0), содержащий все вершины графа G. Порожденным подграфом графа G=(X.H) на множестве вершин Хр называется граф Gp=(Xp, Up), где Хp є Х, а Up - множество ребер (дуг) графа G, оба конца которых принадлежат множеству Хр. Так. на рис. 2, а представлен граф G, на рис. 2, б – его произвольный подграф, на рис. 2, в-порожденный подграф графа G на множестве вершин Х {x1, x2, x3, x4} на рисунке 2, г – один из остовных подграфов графа G.

 

 

Рисунок 1.2 – Изображение остовного подграфа

 

Граф G =(X, U) называется дополнением простого графа G=(X, U), если множества вершин G и G совпадают, а две вершины смежны в G тогда и только тогда, когда они не смежны в G. На рисунке 3 представлен граф G и его дополнение.

 

Рисунок 1.3 – Изображение графа и его дополнения

 

Число дуг, исходящих из вершины  хi, ориентирован но го графа, называется полустепенью исхода вершины хi, и обозначается р-(х,). Число дуг, заходящих в вершин xi, напивается полустепенью захода вершины xi и обозначается р+(х,). В случае ориентированного псевдографа вклад каждой петли, инциндентной некоторой вершине хi, равен 1 как в р-(xi), так и в р+(xi). Так. для орграфа, представленного на рис. 3, 6 p-(x1)=l; p+(x1)=2; р-(x2)=3; р+2)=2. Для любого орграфа выполняется равенство:

 

 (1.1)

 

В неориентированном графе  число ребер, инциндентных данной вершине  xi, называется степенью (валентностью) вершины хi и обозначается р(хi). Вершина графа, имеющая степень 0, называется изолированной, а вершина, имеющая степень I – висячей. Для неориентированного псевдографа вклад каждой петли, инциндентной вершине xi, в р(хi) равен 2. Для неорграфа на рис. 3, а р(х4)=4; p(x1)=5. Число вершин нечетной степени в любом графе четно. Для любого неорграфа справедливо следующее равенство

 

(1.2)

 

1.2 Матричный способ задания графов. Изоморфизм и геоморфизм

 

Матрицей смежности неориентированного графа G=(X, U) с n вершинами называется квадратная матрица А порядка n, элементы которой определяются следующим образом:

Для ориентированного графа:

                             (1.3)

 

                                                     (1.4)

 

В псевдографе aij =k, где k – кратность ребра (xi, xj) (дуги < xi, xj >). Петлям в матрице смежности соответствуют элементы, расположенные на главной диагонали. Сумма – элементов матрицы А неорграфа G пo i – и строке (или по i – му столбцу) равна р(хi). Для орграфа сумма элементов матрицы А по i – й строке равна р-i). по i – му столбцу р+i). Очевидно, что матрица смежности неорграфа является симметричной относительно главной диагонали, Матрицей инциндентности неориентированного графа G=(X, U) с n вершинами и m ребрами называется матрица В размера n x m, элементы которой определяются следующим образом:

 

                     (1.5)

 

Для ориентированного графа:

 

              (1.6)

 

Изоморфизм и геоморфизм.

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

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

Два графа называются гомеоморфными, если оба они могут быть получены из одного и того же графа подразбиением  его рёбер.

 

1.3 Маршруты, цепи, циклы в графах

 

Последовательность ребер  неорграфа (x1, x2), …, (xr-1, xr), в которой конец каждого предыдущего ребра совпадает с началом следующего, называется маршрутом, соединяющим вершины x1 и xг. Аналогом маршрута для орграфа является ориентированный маршрут из х1 в хг. представляющий собой последовательность дуг, в которой конец предыдущей дуги совпадает с началом следующей. При этом x1 и xr называются начальной и конечной вершинами маршрута. Если любые две вершины графа соединены маршрутом, то граф называется связным.

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

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

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

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

Основные типы графов.

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

          Граф, у которого все вершины имеют одинаковую степень k, называется регулярным (однородным) графом степени k. Число ребер m такого графа определяется следующим образом:

 

  (1.7)

 

Граф, не имеющий ребер, называется пустым, а его вершины – изолированными. Пустой граф, имеющий n вершин, обозначается Оn.

Граф называется полным, если все его вершины смежны. Полный граф порядка n обозначается Кn. Число ребер полною графа Кn определяется следующим образом:

 

  (1.8)

 

Граф G=(X, U) называется двудольным, если существует такое разбиение множества его вершин X на два непересекающихся подмножества X1 и X2, что каждое ребро имеет одну концевую вершину в подмножестве X1, а другую – в надмножестве X2. Подмножества X1 и X2 в данном случае называются долями. Если две вершины графа, входящие в разные доли, смежны, то граф называется полным двудольным и обозначается Кn1,n2, где n1=|X1|, n2=|X2|. Аналогично определяются k-дольный и полный k-дольный графы (k>2). Граф является двудольным тогда и только тогда, когда он не имеет простых циклон нечетной длины.

Реберным (смежностным) графом простого графа G=(X, U) называется граф L(G)=(U, V), вершинам которою соответствуют ребра графа G, причем все вершины ui и uj графа L(G) смежны тогда и только тогда, когда смежны соответствующие им ребра ui и uj графа G.

Достижимость и связность.

Вершина xj неорграфа (орграфа) достижима из вершины xj, если существуем маршрут, соединяющий хi и хj (путь из хi в хj). Если в орграфе существуют пути из хi в хj и обратно, то говорят, что вершины хi и хj взаимно достижимы.

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

Информация о работе Алгоритмы на графах