Граф (математика)
Граф — основной объект изучения математической теории графов, совокупность непустого множества вершин и наборов пар вершин (связей между вершинами).
Объекты представляются как вершины, или узлы графа, а связи — как дуги, или рёбра[1]. Для разных областей применения виды графов могут различаться направленностью, ограничениями на количество связей и дополнительными данными о вершинах или рёбрах.
Многие структуры, представляющие практический интерес в математике и информатике, могут быть представлены графами. Например, строение Википедии можно смоделировать при помощи ориентированного графа, в котором вершины — это статьи, а дуги (ориентированные рёбра) — гиперссылки (тематическая карта).
ОпределенияПравить
Теория графов не обладает устоявшейся терминологией. В различных публикациях под одними и теми же терминами понимаются разные вещи. Ниже приведены наиболее часто встречаемые определения.
ГрафПравить
Граф, или неориентированный граф
Вершины и рёбра графа называются также элементами графа, число вершин в графе
Вершины
Два ребра называются смежными, если они имеют общую концевую вершину.
Два ребра называются кратными, если множества их концевых вершин совпадают.
Ребро называется петлёй, если его концы совпадают, то есть
Степенью
Вершина называется изолированной, если она не является концом ни для одного ребра; висячей (или листом), если она является концом ровно одного ребра.
Ориентированный графПравить
Ориентированный граф (сокращённо орграф)
Дуга — это упорядоченная пара вершин
Смешанный графПравить
Смешанный граф
Ориентированный и неориентированный графы являются частными случаями смешанного.
Изоморфные графыПравить
Граф
Прочие связанные определенияПравить
Маршрутом в графе называют конечную последовательность вершин, в которой каждая вершина (кроме последней) соединена со следующей в последовательности вершиной ребром. Цепью называется маршрут без повторяющихся рёбер. Простой цепью называется маршрут без повторяющихся вершин (откуда следует, что в простой цепи нет повторяющихся рёбер).
Ориентированным маршрутом (или путём) в орграфе называют конечную последовательность вершин и дуг, в которой каждый элемент инцидентен предыдущему и последующему.
Циклом называют цепь, в которой первая и последняя вершины совпадают. При этом длиной пути (или цикла) называют число составляющих его рёбер. Заметим, что если вершины
Путь (или цикл) называют простым, если ребра в нём не повторяются; элементарным, если он простой и вершины в нём не повторяются.
Простейшие свойства путей и циклов:
- всякий путь, соединяющий две вершины, содержит элементарный путь, соединяющий те же две вершины;
- всякий простой неэлементарный путь содержит элементарный цикл;
- всякий простой цикл, проходящий через некоторую вершину (или ребро), содержит элементарный (под-)цикл, проходящий через ту же вершину (или ребро);
- петля — элементарный цикл.
Бинарное отношение на множестве вершин графа, заданное как «существует путь из
Всякий максимальный связный подграф графа
Ребро графа называется мостом, если его удаление увеличивает число компонент.
Дополнительные характеристики графовПравить
Граф называется:
- связным, если для любых вершин
, есть путь из в . - сильно связным или ориентированно связным, если он ориентированный, и из любой вершины в любую другую имеется ориентированный путь.
- деревом, если он связный и не содержит нетривиальных циклов.
- полным, если любые его две (различные, если не допускаются петли) вершины соединены ребром.
- двудольным, если его вершины можно разбить на два непересекающихся подмножества
и так, что всякое ребро соединяет вершину из с вершиной из . - k-дольным, если его вершины можно разбить на
непересекающихся подмножества , , …, так, что не будет рёбер, соединяющих вершины одного и того же подмножества. - полным двудольным, если каждая вершина одного подмножества соединена ребром с каждой вершиной другого подмножества.
- планарным, если граф можно изобразить диаграммой на плоскости без пересечений рёбер.
- взвешенным, если каждому ребру графа поставлено в соответствие некоторое число, называемое весом ребра.
- хордальным, если граф не содержит индуцированных циклов с длиной больше трех.
Также бывает:
Обобщение понятия графаПравить
Простой граф является одномерным симплициальным комплексом.
Более абстрактно, граф можно задать как тройку
- ориентированные графы (орграфы) — когда
всегда является упорядоченной парой вершин; - неориентированные графы — когда
всегда является неупорядоченной парой вершин; - смешанные графы — в котором встречаются как ориентированные, так и неориентированные рёбра и петли;
- эйлеровы графы — граф в котором существует циклический эйлеров путь (эйлеров цикл);
- мультиграфы — графы с кратными рёбрами, имеющими своими концами одну и ту же пару вершин;
- псевдографы — это мультиграфы, допускающие наличие петель;
- простые графы — не имеющие петель и кратных рёбер.
Под данное выше определение не подходят некоторые другие обобщения:
- гиперграф — если ребро может соединять более двух вершин.
- ультраграф — если между элементами
и существуют бинарные отношения инцидентности.
Способы представления графа в информатикеПравить
Матрица смежностиПравить
Таблица, где как столбцы, так и строки соответствуют вершинам графа. В каждой ячейке этой матрицы записывается число, определяющее наличие связи от вершины-строки к вершине-столбцу (либо наоборот).
Это наиболее удобный способ представления плотных графов.
Недостатком являются требования к памяти, прямо пропорциональные квадрату количества вершин.
- Двумерный массив;
- Матрица с пропусками;
- Неявное задание (при помощи функции).
Матрица инцидентностиПравить
Таблица, где строки соответствуют вершинам графа, а столбцы соответствуют связям (рёбрам) графа.
В ячейку матрицы на пересечении строки
- 1
- в случае, если связь
«выходит» из вершины , - −1,
- если связь «входит» в вершину,
- 0
- во всех остальных случаях (то есть если связь является петлёй или связь не инцидентна вершине)
Данный способ является самым ёмким (размер пропорционален
Список смежностиПравить
Список, где каждой вершине графа соответствует строка, в которой хранится список смежных вершин. Такая структура данных не является таблицей в обычном понимании, а представляет собой "список списков".
Размер занимаемой памяти:
Это наиболее удобный способ для представления разреженных графов, а также при реализации базовых алгоритмов обхода графа в ширину или глубину, где нужно быстро получать "соседей" текущей просматриваемой вершины.
Список рёберПравить
Список, где каждому ребру графа соответствует строка, в которой хранятся две вершины, инцидентные ребру.
Размер занимаемой памяти:
Это наиболее компактный способ представления графов, поэтому часто применяется для внешнего хранения или обмена данными.
Языки описания и программы построения графовПравить
Языки описанияПравить
Для описания графов в целях, пригодных для машинной обработки и одновременно удобном для человеческого восприятия используется несколько стандартизированных языков, среди которых:
Программы для построенияПравить
Разработана серия коммерческих программ для построения графов, так, построение графов лежит в основе прикладных программных пакетов фирмы 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.
См. такжеПравить
ПримечанияПравить
- ↑ Richard J. Trudeau. Introduction to Graph Theory. — Corrected, enlarged republication.. — New York: Dover Pub., 1993. — С. 19. — ISBN 978-0-486-67870-2.
ЛитератураПравить
- Оре О. Теория графов. М.: Наука, 1968. 336с.
- Уилсон Р. Введение в теорию графов. Пер с англ. М.: Мир, 1977. 208с.
- Харари Ф. Теория графов. М.: Мир, 1973.
- Кормен Т. М. и др. Часть VI. Алгоритмы для работы с графами // Алгоритмы: построение и анализ = Introduction to Algorithms. — 2-е изд. — М.: Вильямс, 2006. — С. 1296. — ISBN 0-07-013151-1.
- Салий В. Н., Богомолов А. М. Алгебраические основы теории дискретных систем. — М.: Физико-математическая литература, 1997. — ISBN 5-02-015033-9.
- Касьянов В. Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение. — СПб.: БХВ-Петербург, 2003. — С. 1104. — ISBN 5-94157-184-4.
- Емеличев В. А., Мельников О. И., Сарванов В. И., Тышкевич Р. И. Лекции по теории графов. М.: Наука, 1990. 384с. (Изд.2, испр. М.: УРСС, 2009. 392 с.)
- Кирсанов М. Н. Графы в Maple. М.: Физматлит, 2007. — 168 c.