в чем особенности представления графа матрицей смежности

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

Представление матрицы смежности

Пример матрицы смежности

Изображение ниже показывает график и его эквивалентную матрицу смежности.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

В случае неориентированного графа матрица симметрична относительно диагонали, потому что у каждого ребра (i, j) также есть ребро (j, i).

Плюсы матрицы смежности

Основные операции, такие как добавление ребра, удаление ребра и проверка наличия ребра от вершины i до вершины j, являются чрезвычайно эффективными по времени операциями. Операциями с постоянным временем.

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

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

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

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

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

Хотя базовые операции просты, такие операции, как inEdges и outEdges, дороги при использовании представления матрицы смежности.

Код матрицы смежности

Если вы знаете, как создавать двумерные массивы, значит вы также знаете, как создать матрицу смежности.

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

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

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Рекомендуем хостинг TIMEWEB

Рекомендуемые статьи по этой тематике

Источник

Матрица смежности для ориентированного графа

Вы будете перенаправлены на Автор24

Матрица смежности для ориентированного графа — это квадратная матрица порядка n, где n является числом вершин графа. Строки и столбцы матрицы определяют вершины графа.

Введение

Понятие графа является одним из фундаментальных в информатике и математике. Под графом понимается комбинированный набор рёбер и вершин. В качестве примера графа можно привести аналогию с системой дорог. Есть определённое количество городов, между некоторыми городами построены дороги. Дороги есть односторонние, а есть и двухсторонние. Эту дорожную сеть можно назвать дорожным графом. Вершинами графа являются города, а рёбрами графа выступают дороги. Графически граф может иметь вид, представленный на рисунке 1.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Рисунок 1. Граф. Автор24 — интернет-биржа студенческих работ

Данный граф имеет шесть вершин, каждая из которых пронумерована, и семь двухсторонних рёбер. Рёбра принято обозначать номерами пары соединяемых вершин, то есть: 1-2, 1-5, 2-3, 2-5, 3-4, 4-5, 4-6.

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

Если продолжить дорожную аналогию в среде графов, то односторонние (то есть однонаправленные) «дороги» принято называть ориентированными рёбрами графа, а двухсторонние имеют название неориентированных рёбер. Если у графа все рёбра неориентированные, то он называется неориентированным графом, а если все рёбра ориентированные, то и граф будет ориентированным. На рисунке два приведён пример неориентированного графа, а на рисунке три — ориентированного.

Готовые работы на аналогичную тему

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Рисунок 2. Неориентированный граф. Автор24 — интернет-биржа студенческих работ

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Рисунок 3. Ориентированный граф. Автор24 — интернет-биржа студенческих работ

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

Под путём в графе понимается последовательные вершины, соединённые со следующей вершиной, ребром. Как правило, под «путём» понимается простой путь, проходящий через все разные вершины. Если путь попадает на какую-нибудь вершину больше одного раза, то он считается сложным путём. Циклом называется путь, у которого первая вершина на пути совпадает с последней.

Матрица смежности, ее достоинства и недостатки

В программировании есть два главных метода описания графов. Матрица смежности является одним из них. Применяется она достаточно редко, но очень проста в реализации. Граф, который имеет N вершин, может быть задан с помощью матрицы N∗N (двумерный массив) и в ней есть функция g[i][j], которая может иметь значение true или false, что означает есть ребро из вершины i в вершину j, или нет.

Матрица смежности имеет такую особенность: сложно проверить есть ли ребро между двумя вершинами.

К недостаткам матрицы смежности следует отнести:

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

Вторым методом описания графа является список смежности, который применяется намного чаще. Основной постулат этого метода состоит в сохранении для каждой вершины увеличенного массива (вектора), который содержит все соседние вершины.

Основными преимуществами такого метода являются:

К недостаткам списка смежности можно отнести:

Источник

Теория графов. Часть третья (Представление графа с помощью матриц смежности, инцидентности и списков смежности)

Все, что познается, имеет число, ибо невозможно ни понять ничего, ни познать без него – Пифагор

Список смежности (инцидентности)

Взвешенный граф (коротко)

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

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

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

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

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

Но тем кто знает, но чуть забыл, что такое смежность есть краткое определение.

Смежность – понятие, используемое только в отношении двух ребер или в отношении двух вершин: два ребра инцидентные одной вершине, называются смежными; две вершины, инцидентные одному ребру, также называются смежными.

Матрица (назовем ее L) состоит из n строк и n столбцов и поэтому занимает n^2 места.

Каждая ячейка матрицы равна либо 1, либо 0;

Ячейка в позиции L (i, j) равна 1 тогда и только тогда, когда существует ребро (E) между вершинами (V) i и j. Если у нас положение (j, i), то мы также сможем использовать данное правило. Из этого следует, что число единиц в матрице равно удвоенному числу ребер в графе. (если граф неориентированный). Если ребра между вершинами i и j не существует, то ставится 0.

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

А теперь представим его в виде матрицы:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

С одной стороны объем памяти будет:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Но используя вышеописанный подход получается:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

Если граф неориентированный, то, когда мы просуммируем строку или столбец мы узнаем степень рассматриваемой нами вершины.

Если мы используем ориентированный граф, то кое-что меняется.

Здесь отсутствует дублирование между вершинами, так как если вершина 1 соединена с вершиной 2, наоборот соединена она не может быть, так у нас есть направление у ребра.

Возьмем в этот раз ориентированный граф и сделаем матрицу смежности для него:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Если мы работаем со строкой матрицы, то мы имеем элемент из которого выходит ребро, в нашем случаи вершина 1 входит в вершину 2 и 8. Когда мы работаем со столбцом то мы рассматриваем те ребра, которые входят в данную вершину. В вершину 1 ничего не входит, значит матрица верна.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

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

Инцидентность – понятие, используемое только в отношении ребра и вершины: две вершины (или два ребра) инцидентными быть не могут.

Матрица (назовем ее I) состоит из n строк которое равно числу вершин графа, и m столбцов, которое равно числу ребер. Таким образом полная матрица имеет размерность n x m. То есть она может быть, как квадратной, так и отличной от нее.

Ячейка в позиции I (i, j) равна 1 тогда, когда вершина инцидентна ребру иначе мы записываем в ячейку 0, такой вариант представления верен для неориентированного графа.

Сразу же иллюстрируем данное правило:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Сумма элементов i-ой строки равна степени вершины.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Одной из особенностей данной матрицы является то, что в столбце может быть только две ненулевых ячейки. Так как у ребра два конца.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Список смежности (инцидентности)

Список смежности подразумевает под собой, то что мы работаем с некоторым списком (массивом). В нем указаны вершины нашего графа. И каждый из них имеет ссылку на смежные с ним вершины.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

В виде списка это будет выглядеть так:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Когда мы работаем с ориентированным графом, то замечаем, что объем задействованной памяти будет меньше, чем при неориентированном (из-за отсутствия дублирования).

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Сумма длин всех списков:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Со списком инцидентности все просто. Вместо вершин в список (массив) вы вставляете рёбра и потом делаете ссылки на те вершины, с которыми он связан.

К недостатку списка смежности (инцидентности) относится то что сложно определить наличие конкретного ребра (требуется поиск по списку). А если у вас большой список, то удачи вам и творческих успехов! Поэтому, чтобы работать максимальной отдачей в графе должно быть мало рёбер.

Взвешенность графа

К примеру, возьмем граф с весами на ребрах:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

И сделаем матрицу смежности:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

В ячейках просто указываем веса ребра, а в местах где отсутствует связь пишем 0 или -∞.

Более подробно данное определение будет рассмотрено при нахождении поиска кратчайшего пути в графе.

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

Если заметили ошибку или есть предложения пишите в комментарии.

Источник

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

Матрица смежности графа — это квадратная матрица, в которой каждый элемент принимает одно из двух значений: 0 или 1. Прежде чем отобразить граф через матрицу смежности, рассмотрим простой пример такой матрицы (рис. 1).

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Слева на рисунке изображена все та же матрица смежности, имеющая размерность 4×4. Числа, выделенные синим, можно рассматривать как вершины смешанного графа, расположенного справа – того, представлением которого является матрица.

Для графического отображения графа необходимо уметь вычислять по матрице смежности количество его вершин, а также обладать знанием следующего правила. Когда из одной вершины в другую проход свободен (имеется ребро), тогда в ячейку заноситься 1, иначе – 0. Немного формализовав только что сказанное, получим: если из i в j существует ребро, то A[i][j]:=1, в противном случае A[i][j]:=0. Как видно, все элементы на главной диагонали равны нулю, это следствие отсутствия у графа петель. Но ни что не мешает, чтобы некоторые или все элементы главной диагонали были единицами.

В программе матрица смежности задается при помощи обычного двумерного массива, имеющего размерность n×n, где n – число вершин графа.

На языке C++, описать ее можно, например, так:

Источник

В чем особенности представления графа матрицей смежности

Матрица смежности для графов

Матрица смежности графа является квадратной матрицей с элементами, каждый из которых имеет одно из двух значений: 0 или 1.

Простой пример матрицы смежности изображен на рисунке.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

Осторожно! Если преподаватель обнаружит плагиат в работе, не избежать крупных проблем (вплоть до отчисления). Если нет возможности написать самому, закажите тут.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

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

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

В чем особенности представления

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

В том случае, когда граф неизвестен заранее, а определен пользователем, необходимо вводить двумерный массив вручную. Это объясняется условиями работы конкретного языка программирования. При необходимости предоставления графа в виде матрицы смежности требуется \(O(|V|^<2>)\) памяти, так как ее размер соответствует квадрату числа всех вершин.

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

Списки смежности и списки ребер, плюсы и минусы

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

В данном случае, граф состоит из 6 вершин (|V|) и 5 ребер (|E|). Из последних 2 ребра являются направленными и 3 ненаправленными. При этом из каждой вершины выходит, как минимум одно ребро в другую вершину. Таким образом, список смежности рассматриваемого графа содержит |V| строк.

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

В i строке и 1 столбце указана вершина выхода, а в i строке и 2 столбце – вершина входа. Например, из вершины 5 выходят два ребра, входящие в вершины 1 и 4.

В процессе программной реализации списка смежности число вершин и ребер задают с помощью клавиатуры. Можно установить лимиты, то есть задать пару констант, одна из которых определяет максимально допустимое число вершин (Vmax), другая – ребер (Emax). Затем следует использовать три одномерных целочисленных массива:

Допустимым действием является выделение в программе двух ключевых частей. К ним относят ввод ребер для дальнейшего добавления их в список смежности и вывод полученного списка смежности на экран.

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

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Вывод на экран осуществляется:

Функция add производит добавление ребер в изначально пустой список смежности:

Действия реализуются, согласно алгоритму с формальными параметрами, вспомогательной переменной k и тремя одномерными целочисленными массивами:

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

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

Допустим, какая-либо величина p равна количеству всех ребер, которые включены в подмножество d, а s – то же самое относительно k. Тогда для графа G высотой списка ребер будет являться величина:

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

Например, имеется некий граф смешанного типа с 5 вершинами и 4 ребрами, каждому из которых соответствует определенное целое значение (для наглядности оно составлено из номеров вершин):

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Граф содержит 3 направленных ребра и 1 ненаправленное. Путем подстановки значений в формулу можно определить высоту списка ребер: 3+1*2=5

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

На рисунке изображен список ребер для рассматриваемого графа. Таблица в размерах составляет n×3, где n= s+p*2=3+1*2=5. Элементы в первом столбце расположены по возрастанию, во втором – порядок расположения элементов определен первым, а в третьем – зависит от двух предыдущих.

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Максимально допустимое число вершин в графе определено с помощью константы Vmax, а количество ребер – Emax. Вторая константа инициализируется формулой Vmax*(Vmax-1)/2, вычисляющей количество ребер в полном графе при известном числе вершин.

Далее, в программах описываются 5 массивов:

По результатам ввода числа вершин (n) и ребер (m) графа будет запущен цикл, каждый этап которого сопровождается вводом пользователем с клавиатуры пары смежных вершин и веса ребра, расположенного между ними. Если ребро ориентированное, функция записи в список ребер (Add) вызывается единожды, при неориентированном ребре – дважды. Суммарное количество вызовов функции определяется по формуле:

где s – является ориентированными ребрами графа

p – неориентированные ребра

По итогам формирования списка ребер следует умножить на 2 переменную m. Это связано с тем, что при чисто неориентированном графе высота списка составляет:

Завершающим этапом является отображение на экране результирующей конструкции. В связи с тем, что на номер первой вершины, смежной с i-ой вершиной, указывает элемент head[i], каждая новая итерация внешнего цикла начинается с взятия этого номера (k=head[i]). Внутренний цикл прекращает реализацию в том случае, когда отсутствует смежная с i-ой вершины (k станет равной нулю), а внешний – по окончанию вывода списка ребер.

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

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

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

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

Классификация графов

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

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

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

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

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Фактически такая топология является графом. Пять компьютеров представляют собой вершины, а соединения или пути передачи сигналов являются ребрами. Ели выполнить замену компьютеров на вершины, то в результате получится математический объект или граф с 10 ребрами и 5 вершинами. Нумерацию вершин допустимо выполнять произвольно.

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

Применительно к рисунку:

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

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

В сумме все степени графа соответствуют удвоенному количеству всех его ребер. К примеру, на рисунке изображен граф со суммой степеней, равной 20:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

где V – является вершинами, A – определяет направленные ребра.

К третьему типу относят смешанные графы. Такие графы включают направленные и ненаправленные ребра. Формальная запись смешанного графа:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

На рисунке изображен граф с направленными [(e, a), (e, c), (a, b), (c, a), (d, b)] и ненаправленными [(e, d), (e, b), (d, c)…] дугами. Предположим, что имеются два графа:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

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

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

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

При совпадении первой и последней вершины путь называют циклом. Длина пути равна количеству составляющих его ребер. К примеру, на рисунке путь является последовательностью [(e), (a), (b), (c)]. Этот путь представляет собой подграф, так как к нему применимо определение последнего, а именно: граф G’=(V’, E’) является подграфом графа G=(V, E), только тогда когда V’ и E’ принадлежат V, E.

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

Граф, как и другие распространенные типы математических объектов, можно представить на компьютере, то есть сохранить в его памяти. Наиболее известные способы интерпретации графов:

Первые два метода заключаются в хранении графа в виде двумерного массива или матрицы. Размеры этих массивов определяются числом вершин и/или ребер в определенном графе. Таким образом, размер матрицы смежности – n×n (где n – число вершин), а матрицы инцидентности – n×m (n – число вершин, m – число ребер в графе).

В процессе решения многих задач с применением графов требуется обходить все вершины и ребра, то есть дуги. Обойти граф – значит, пройти все его вершины точно по одному разу. Алгоритмы обхода:

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

Обход в глубину выполняют, согласно следующим правилам:

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

В качестве примера можно рассмотреть неориентированный граф, изображенный на рисунке:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Обход следует начинать со стартовой вершины 1. Она является активной и единственной, которая открыта. Другие вершины: 2,3,4,5,6 – новые. Вершина 1 обладает тремя инцидентными ребрами – 1–2, 1–4 и 1–6. Можно начать с ребра 1–2. В результате его прохождения открывается вершина 2. Она обладает одним инцидентным ребром 2–1, которое просмотрено. Вершина 2 была просмотрена, в результате чего она преобразуется в закрытую.

Затем по ребру 2–1 можно вернуться в вершину 1. По ребру 1– 4 легко попасть в вершину 4, которая становится открытой. Вершина 4 обладает четырьмя инцидентными ребрами: 4–1, 4–3, 4–5, 4–6. Таким образом, ребро 4–1 просмотрено.

Далее следует рассмотреть ребро 4–3. С его помощью удобно попасть в вершину 3, которая в результате становится открытой. Вершина 3 обладает одним инцидентным ребром 3–4. Данная вершина просмотрена. В результате вершина 3 закрыта, а по ребру 3–4 можно вернуться в вершину 4. Затем следует рассмотреть ребро 4 – 5.

Вершина 5 обладает двумя инцидентными ей ребрами: просмотренным (4–5) и ребром 5–6, по которому можно попасть в вершину 6. Вершина 6 обладает тремя инцидентными ей ребрами: просмотренным 6–5, 6–1 и 6–4. С помощью ребра 6–1 можно попасть в просмотренную вершину 1. По ребру 6–4 просто попасть в просмотренную вершину 4. В результате все вершины графа просмотрены. Порядок посещения вершин: 1, 2, 4, 3, 5, 6.

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

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

Затем посещаются вершины, которые расположены на расстоянии 2 от А, и так далее. Чем ближе вершина к стартовой вершине, тем раньше она будет посещена. Поиск в ширину направлен на определение наиболее короткого из возможных путей.

В качестве примера можно рассмотреть неориентированный граф, изображенный на рисунке:

в чем особенности представления графа матрицей смежности. Смотреть фото в чем особенности представления графа матрицей смежности. Смотреть картинку в чем особенности представления графа матрицей смежности. Картинка про в чем особенности представления графа матрицей смежности. Фото в чем особенности представления графа матрицей смежности

Обход следует начать со стартовой вершины 1, которая является просмотренной. Вершины 2, 4, 6 и стартовая вершина – смежные. Данные вершины можно отметить, как просмотренные, и поместить в очередь. При рассмотрении вершины 2 можно заметить, что она не обладает смежными вершинами.

Затем нужно рассмотреть вершину 4 с двумя смежными вершинами 3 и 5. Их можно поместить в очередь и отметить, как просмотренные. В результате просмотрены все вершины графа. Порядок посещения вершин: 1, 2, 4, 6, 3, 5.

Как построить граф по матрице смежности

Данная методика отличается удобством, что позволяет представлять плотные графы с количеством ребер (|E|), которое приблизительно соответствует числу вершин в квадрате (|V|2). В процессе требуется заполнить матрицу размером |V| x |V| следующим образом:

A[i][j] = 1 (Если существует ребро из i в j)

Метод допустим к применению в случае ориентированных и неориентированных графов. Во втором варианте матрица A имеет вид симметричной, то есть A[i][j] == A[j][i]. Это объясняется тем, что при существовании ребра между i и j, оно является и ребром из i в j, и ребром из j в i. С помощью данного свойства сокращают практически вдвое объем требуемой памяти, в связи с тем, что элементы хранятся лишь в верхней части матрицы, над главной диагональю.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *