Главная
Новости
Строительство
Ремонт
Дизайн и интерьер




02.10.2022


01.10.2022


29.09.2022


29.09.2022


29.09.2022





Яндекс.Метрика

Граф (математика)

24.08.2022

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

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

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

Графы являются основным объектом изучения теории графов.

Определения

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

Простой граф

Определение. Простой граф G ( V , E ) {displaystyle G(V,E)} есть совокупность двух множеств – непустого множества V {displaystyle V} и множества E {displaystyle E} неупорядоченных пар различных элементов множества V {displaystyle V} . Множество V {displaystyle V} называется множеством вершин, множество E {displaystyle E} называется множеством рёбер

G ( V , E ) = ⟨ V , E ⟩ , V ≠ ∅ , E ⊆ V × V , { v , v } ∉ E , v ∈ V {displaystyle G(V,E)=leftlangle V,E ight angle ,quad V eq varnothing ,quad Esubseteq V imes V,quad left{v,v ight} otin E,quad vin V} ,

то есть множество E {displaystyle E} состоит из 2-элементных подмножеств множества V {displaystyle V} .

Сопутствующие термины

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

  • Вершина (узел, точка) (англ. vertex, node, point) графа G {displaystyle G} есть элемент множества вершин v ∈ V ( G ) {displaystyle vin V(G)} ;
  • Ребро (линия) (англ. edge, line) графа G {displaystyle G} есть элемент множества ребер e ∈ E ( G ) {displaystyle ein E(G)} , или e = { v 1 , v 2 } {displaystyle e=left{v_{1},v_{2} ight}} , где v 1 ∈ V ( G ) , v 2 ∈ V ( G ) {displaystyle v_{1}in V(G),quad v_{2}in V(G)} ;
  • Элементами графа G {displaystyle G} называются его вершины v ∈ V ( G ) {displaystyle vin V(G)} и рёбра e ∈ E ( G ) {displaystyle ein E(G)} графа;
  • Порядок (англ. order) графа G {displaystyle G} есть кардинальное число множества вершин n = | V ( G ) | {displaystyle n=|V(G)|} или, другими словами, количество вершин;
  • Размер (англ. size) графа G {displaystyle G} есть кардинальное число множества ребер m = | E ( G ) | {displaystyle m=|E(G)|} или, другими словами, количество ребер;
  • Вершина v {displaystyle v} инцидентна (англ. incident) ребру e {displaystyle e} , если v ∈ e {displaystyle vin e} ; тогда еще говорят, что e {displaystyle e} есть ребро при v {displaystyle v} ;
  • Концевые вершины (концы) (англ. endvertices, ends) есть две вершины, инцидентные ребру. Ребро соединяет (англ. joins) свои концевые вершины;
  • Соседние (смежные) вершины (англ. neighbours, adjacent) есть такие вершины v 1 {displaystyle v_{1}} и v 2 {displaystyle v_{2}} что { v 1 , v 2 } ∈ E ( G ) {displaystyle left{v_{1},v_{2} ight}in E(G)} или, другими, словами обе вершины являются концевыми для одного ребра;
  • Смежные ребра (англ. adjacent edges) это ребра, инцидентные одной вершине или e 1 = { v , v 1 } {displaystyle e_{1}=left{v,v_{1} ight}} и e 2 = { v , v 2 } {displaystyle e_{2}=left{v,v_{2} ight}} - смежные;
  • Степень (валентность) вершины (англ. degree, valency) есть количество инцидентных ей рёбер. Степень вершины обозначается как d ( v ) {displaystyle d(v)} ;
  • Изолированной вершиной (англ. isolated) называется вершина со степенью d ( v ) = 0 {displaystyle d(v)=0} , то есть не является концом ни для одного ребра;
  • Висячей вершиной (листом) (англ. leaf) называется вершина со степенью d ( v ) = 1 {displaystyle d(v)=1} , то есть которая является концом ровно одного ребра.

Обычно граф изображают диаграммой: вершины – точками, ребра – линиями.

Псевдограф

Псевдограф G ( V , E ) {displaystyle G(V,E)} есть совокупность двух множеств – непустого множества V {displaystyle V} и множества E {displaystyle E} неупорядоченных пар элементов множества V {displaystyle V} .

G ( V , E ) = ⟨ V , E ⟩ , V ≠ ∅ , E ⊆ V × V {displaystyle G(V,E)=leftlangle V,E ight angle ,quad V eq varnothing ,quad Esubseteq V imes V}

В множестве ребер псевдографа разрешен элемент { v , v } ∈ E ( G ) {displaystyle left{v,v ight}in E(G)} .

  • Петлей (англ. loop) называется элемент e = { v , v } {displaystyle e=left{v,v ight}} , являющийся ребром, у которого концевые вершины совпадают.

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

Мультиграф

Мультиграф G ( V , E ) {displaystyle G(V,mathbf {E} )} есть совокупность двух множеств – непустого множества V {displaystyle V} и мультимножества E {displaystyle mathbf {E} } неупорядоченных пар различных элементов множества V {displaystyle V} .

G ( V , E ) = ⟨ V , E ⟩ , V ≠ ∅ , E ⊆ V × V { v , v } ∉ E , v ∈ V {displaystyle G(V,mathbf {E} )=leftlangle V,mathbf {E} ight angle ,quad V eq varnothing ,quad mathbf {E} subseteq V imes Vquad left{v,v ight} otin mathbf {E} ,quad vin V}
  • Кратными рёбрами называются одинаковые элементы мультимножества { e , e , … , e } ∈ E {displaystyle left{e,e,dots ,e ight}in mathbf {E} } , то есть ребра, чьи концевые вершины совпадают.

Другими словами Если E {displaystyle E} не множество, а семейство, то есть если E {displaystyle mathbf {E} } содержит одинаковые элементы, то такие элементы называются кратными рёбрами, а граф называется мультиграфом .

Псевдомультиграф

Псевдомультиграф G ( V , E ) {displaystyle G(V,mathbf {E} )} есть совокупность двух множеств – непустого множества V {displaystyle V} и мультимножества E {displaystyle mathbf {E} } неупорядоченных пар элементов множества V {displaystyle V} .

G ( V , E ) = ⟨ V , E ⟩ , V ≠ ∅ , E ⊆ V × V {displaystyle G(V,mathbf {E} )=leftlangle V,mathbf {E} ight angle ,quad V eq varnothing ,quad mathbf {E} subseteq V imes V}

Другими словами Если E {displaystyle mathbf {E} } семейство содержащее одинаковые элементы (кратные ребра) и E {displaystyle mathbf {E} } может содержать петли, то граф называется псевдомультиграфом.

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

Ориентированный граф (орграф) (англ. directed graph or dirgaph) G ( V , E ) {displaystyle G(V,E)} есть совокупность двух множеств – непустого множества V {displaystyle V} и множества E {displaystyle E} дуг или упорядоченных пар различных элементов множества V {displaystyle V}

G ( V , E ) = ⟨ V , E ⟩ , V ≠ ∅ , ⟨ { v 1 , v 2 } , ≺ ⟩ ∈ E , v ∈ V {displaystyle G(V,E)=leftlangle V,E ight angle ,quad V eq varnothing ,quad leftlangle left{v_{1},v_{2} ight},prec ight angle in E,quad vin V} .

совместно с двумя отображениями

i n i t : E → V , t e r : E → V {displaystyle init:E ightarrow V,quad ter:E ightarrow V} ,

где отображение i n i t : E → V {displaystyle init:E ightarrow V} ставит в соответствие каждой дуге ее начальную вершину (начало дуги) i n i t ( e ) {displaystyle init(e)} , а отображение t e r : E → V {displaystyle ter:E ightarrow V} ставит в соответствие каждой дуге ее конечную вершину (конец дуги) t e r ( e ) {displaystyle ter(e)} . Говорят что дуга e {displaystyle e} ведет из i n i t ( e ) {displaystyle init(e)} в t e r ( e ) {displaystyle ter(e)}

Смешанный граф

Смешанный граф (англ. Mixed graph) G ( V , E , U ) {displaystyle G(V,E,U)} — это совокупность трех множеств – непустого множества вершин V {displaystyle V} , и множества дуг E {displaystyle E} или упорядоченных пар различных элементов множества V {displaystyle V} и множества ребер U {displaystyle U} неупорядоченных пар различных элементов множества V {displaystyle V}

G ( V , E , U ) = ⟨ V , E , U ⟩ , V ≠ ∅ , ⟨ { v 1 , v 2 } , ≺ ⟩ ∈ E , { v 3 , v 4 } ∈ U , v ∈ V {displaystyle G(V,E,U)=leftlangle V,E,U ight angle ,quad V eq varnothing ,quad leftlangle left{v_{1},v_{2} ight},prec ight angle in E,quad left{v_{3},v_{4} ight}in U,quad vin V} .

совместно с двумя отображениями

i n i t : E → V , t e r : E → V {displaystyle init:E ightarrow V,quad ter:E ightarrow V}

Ориентированный и неориентированный графы являются частными случаями смешанного.

Изоморфные графы

Граф G {displaystyle G} называется изоморфным графу H {displaystyle H} , если существует биекция f {displaystyle f} из множества вершин графа G {displaystyle G} в множество вершин графа H {displaystyle H} , обладающая следующим свойством: если в графе G {displaystyle G} есть ребро из вершины A {displaystyle A} в вершину B {displaystyle B} , то в графе H {displaystyle H} должно быть ребро из вершины f ( A ) {displaystyle f(A)} в вершину f ( B ) {displaystyle f(B)} и наоборот — если в графе H {displaystyle H} есть ребро из вершины A {displaystyle A} в вершину B {displaystyle B} , то в графе G {displaystyle G} должно быть ребро из вершины f − 1 ( A ) {displaystyle f^{-1}(A)} в вершину f − 1 ( B ) {displaystyle f^{-1}(B)} . В случае ориентированного графа эта биекция также должна сохранять ориентацию ребра. В случае взвешенного графа биекция также должна сохранять вес ребра.

Прочие связанные определения

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

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

Циклом называют цепь, в которой первая и последняя вершины совпадают. При этом длиной пути (или цикла) называют число составляющих его рёбер. Заметим, что если вершины u {displaystyle u} и v {displaystyle v} являются концами некоторого ребра, то согласно данному определению, последовательность ( u , v , u ) {displaystyle (u,v,u)} является циклом. Чтобы избежать таких «вырожденных» случаев, вводят следующие понятия.

Путь (или цикл) называют простым, если рёбра в нём не повторяются; элементарным, если он простой и вершины в нём не повторяются (за исключением начальной и конечной в случае цикла).

Простейшие свойства путей и циклов:

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

Бинарное отношение на множестве вершин графа, заданное как «существует путь из u {displaystyle u} в v {displaystyle v} », является отношением эквивалентности и, следовательно, разбивает это множество на классы эквивалентности, называемые компонентами связности графа. Если у графа ровно одна компонента связности, то граф связный. На компоненте связности можно ввести понятие расстояния между вершинами как минимальную длину пути, соединяющего эти вершины.

Всякий максимальный связный подграф графа G {displaystyle G} называется связной компонентой (или просто компонентой) графа G {displaystyle G} . Слово «максимальный» означает максимальный относительно включения, то есть не содержащийся в связном подграфе с большим числом элементов.

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

Дополнительные характеристики графов

Граф называется:

  • связным, если для любых вершин u {displaystyle u} , v {displaystyle v} есть путь из u {displaystyle u} в v {displaystyle v} .
  • сильно связным или ориентированно связным, если он ориентированный, и из любой вершины в любую другую имеется ориентированный путь.
  • деревом, если он связный и не содержит нетривиальных циклов.
  • полным, если любые его две (различные, если не допускаются петли) вершины соединены ребром.
  • двудольным, если его вершины можно разбить на два непересекающихся подмножества V 1 {displaystyle V_{1}} и V 2 {displaystyle V_{2}} так, что всякое ребро соединяет вершину из V 1 {displaystyle V_{1}} с вершиной из V 2 {displaystyle V_{2}} .
  • k-дольным, если его вершины можно разбить на k {displaystyle k} непересекающихся подмножеств V 1 {displaystyle V_{1}} , V 2 {displaystyle V_{2}} , …, V k {displaystyle V_{k}} так, что не будет рёбер, соединяющих вершины одного и того же подмножества.
  • полным двудольным, если каждая вершина одного подмножества соединена ребром с каждой вершиной другого подмножества.
  • планарным, если граф можно изобразить диаграммой на плоскости без пересечений рёбер.
  • взвешенным, если каждому ребру графа поставлено в соответствие некоторое число, называемое весом ребра.
  • хордальным, если граф не содержит индуцированных циклов с длиной больше трёх.

Также бывает:

  • k-раскрашиваемым
  • k-хроматическим

Обобщение понятия графа

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

Более абстрактно, граф можно задать как тройку ( V , E , φ ) {displaystyle (V,E,varphi )} , где V {displaystyle V} и E {displaystyle E} — некоторые множества (вершин и рёбер, соотв.), а φ {displaystyle varphi } — функция инцидентности (или инцидентор), сопоставляющая каждому ребру e ∈ E {displaystyle ein E} (упорядоченную или неупорядоченную) пару вершин u {displaystyle u} и v {displaystyle v} из V {displaystyle V} (его концов). Частными случаями этого понятия являются:

  • эйлеровы графы — граф, в котором существует циклический эйлеров путь (эйлеров цикл);

Способы представления графа в информатике

Матрица смежности

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

Это наиболее удобный способ представления плотных графов.

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

  • Двумерный массив;
  • Матрица с пропусками;
  • Неявное задание (при помощи функции).

Матрица инцидентности

Таблица, где строки соответствуют вершинам графа, а столбцы соответствуют связям (рёбрам) графа. В ячейку матрицы на пересечении строки i {displaystyle i} со столбцом j {displaystyle j} записывается:

1 в случае, если связь j {displaystyle j} «выходит» из вершины i {displaystyle i} , −1, если связь «входит» в вершину, 0 во всех остальных случаях (то есть если связь является петлёй или связь не инцидентна вершине)

Данный способ является довольно ёмким (размер пропорционален | V | | E | {displaystyle |V||E|} ) для хранения, поэтому применяется очень редко, в особых случаях (например, для быстрого нахождения циклов в графе).

Список смежности

Список, где каждой вершине графа соответствует строка, в которой хранится список смежных вершин. Такая структура данных не является таблицей в обычном понимании, а представляет собой «список списков».

Размер занимаемой памяти: O ( | V | + | E | ) {displaystyle O(|V|+|E|)} .

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

Список рёбер

Список, где каждому ребру графа соответствует строка, в которой хранятся две вершины, инцидентные ребру.

Размер занимаемой памяти: O ( | E | ) {displaystyle O(|E|)} .

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

Языки описания и программы построения графов

Языки описания

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

  • DOT
  • GraphML
  • Trivial Graph Format
  • GML
  • GXL
  • XGMML
  • DGML

Программы для построения

Разработана серия коммерческих программ для построения графов, так, построение графов лежит в основе прикладных программных пакетов фирмы ILOG (с 2009 года принадлежит корпорации IBM), среди других программ — GoView, Lassalle AddFlow, LEDA (есть бесплатная редакция).

Также существует свободная программа для построения графов igraph и свободная библиотека Boost.

Программы для визуализации

Для визуализации графов применяются следующие программные средства:

  • Graphviz (Eclipse Public License)
  • LION Graph Visualizer.
  • Графоанализатор — русскоязычная программа, с простым пользовательским интерфейсом (GNU LGPL; только для Windows).
  • Gephi — графическая оболочка для представления и изучения графов (GNU GPL, CDDL).
  • Библиотека GraphX — свободная библиотека для .NET для расчёта и отрисовки графов, использует WPF 4.0.
  • Библиотека MSAGL — свободная библиотека для .NET.