EssayAI
Блог
Блог

Как найти матрицу инцидентности графа: пошаговое решение

Запрос

Дано: неориентированный граф на пяти вершинах v1,v2,v3,v4,v5v_1, v_2, v_3, v_4, v_5 с шестью рёбрами e1=v1v2e_1 = v_1v_2, e2=v1v3e_2 = v_1v_3, e3=v2v3e_3 = v_2v_3, e4=v2v4e_4 = v_2v_4, e5=v3v5e_5 = v_3v_5, e6=v4v5e_6 = v_4v_5. Найти: матрицу инцидентности этого графа, а затем её вариант со знаками для орграфа.

Матрица инцидентности строится механически: строк столько, сколько вершин, столбцов столько, сколько рёбер, а единица в клетке означает, что вершина является концом этого ребра. Размер матрицы здесь 5×65 \times 6, в каждом столбце ровно две единицы, всего их двенадцать. Ответ: строки матрицы равны 1 1 0 0 0 0; 1 0 1 1 0 0; 0 1 1 0 1 0; 0 0 0 1 0 1; 0 0 0 0 1 1, а их суммы 2, 3, 3, 2, 2 совпадают со степенями вершин. Калькулятор сверху открыт ровно на этом графе: сними ребро, и столбец исчезнет вместе с отрезком на схеме.

Решение по шагам

Дано. Граф G=(V,E)G = (V, E) без петель и кратных рёбер, где

V={v1,v2,v3,v4,v5},E={v1v2, v1v3, v2v3, v2v4, v3v5, v4v5}.V = \{v_1, v_2, v_3, v_4, v_5\}, \qquad E = \{v_1v_2,\ v_1v_3,\ v_2v_3,\ v_2v_4,\ v_3v_5,\ v_4v_5\}.

Найти. Матрицу инцидентности B\mathbf{B} размера 5×65 \times 6 и матрицу инцидентности орграфа, полученного ориентацией каждого ребра от вершины с меньшим номером к вершине с большим.

Шаг 1. Фиксируем порядок вершин и рёбер. Это не формальность: матрица зависит от нумерации, и если рёбра заданы списком, порядок списка становится порядком столбцов. Вершины идут сверху вниз как v1,…,v5v_1, \dots, v_5, рёбра слева направо в порядке условия: e1=v1v2e_1 = v_1v_2, e2=v1v3e_2 = v_1v_3, e3=v2v3e_3 = v_2v_3, e4=v2v4e_4 = v_2v_4, e5=v3v5e_5 = v_3v_5, e6=v4v5e_6 = v_4v_5. Дальше остаётся заполнить пустую таблицу пять на шесть.

Шаг 2. Заполняем столбцы по одному ребру. Удобнее идти не по строкам, а по столбцам: каждое ребро даёт ровно две единицы, и обе ставятся сразу. Берём e1=v1v2e_1 = v_1v_2 - единицы в строках v1v_1 и v2v_2, остальные три клетки столбца нулевые. Берём e2=v1v3e_2 = v_1v_3 - единицы в строках v1v_1 и v3v_3. И так до последнего ребра.

Вершинаe1e2e3e4e5e6Сумма
v11100002
v21011003
v30110103
v40001012
v50000112
Сумма22222212

Шаг 3. Записываем ответ матрицей. Тот же результат в привычной записи, где строка номер ii отвечает вершине viv_i, а столбец номер jj - ребру eje_j:

B=(110000101100011010000101000011).\mathbf{B} = \begin{pmatrix} 1 & 1 & 0 & 0 & 0 & 0 \\ 1 & 0 & 1 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 & 0 & 1 \\ 0 & 0 & 0 & 0 & 1 & 1 \end{pmatrix}.

Шаг 4. Проверяем себя двумя суммами. Сумма каждого столбца обязана равняться двум: у ребра два конца, третьего не дано. Сумма строки ii равна степени вершины viv_i, потому что строка перечисляет все инцидентные ей рёбра. Получаем deg⁡v1=2\deg v_1 = 2, deg⁡v2=3\deg v_2 = 3, deg⁡v3=3\deg v_3 = 3, deg⁡v4=2\deg v_4 = 2, deg⁡v5=2\deg v_5 = 2. Общее число единиц равно 2⋅6=122 \cdot 6 = 12, и это же число получается как сумма степеней - знакомая лемма о рукопожатиях, которую подробно разбирает страница о том, как найти степени вершин графа.

Шаг 5. Ориентируем рёбра и расставляем знаки. Пусть каждая дуга идёт от вершины с меньшим номером к вершине с большим: v1→v2v_1 \to v_2, v1→v3v_1 \to v_3, v2→v3v_2 \to v_3, v2→v4v_2 \to v_4, v3→v5v_3 \to v_5, v4→v5v_4 \to v_5. В столбце дуги теперь стоит +1+1 у начала и −1-1 у конца:

Bор=(110000−1011000−1−1010000−1010000−1−1).\mathbf{B}_{\text{ор}} = \begin{pmatrix} 1 & 1 & 0 & 0 & 0 & 0 \\ -1 & 0 & 1 & 1 & 0 & 0 \\ 0 & -1 & -1 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 & 0 & 1 \\ 0 & 0 & 0 & 0 & -1 & -1 \end{pmatrix}.

Проверка здесь другая: сумма каждого столбца равна нулю, потому что +1+1 и −1-1 гасят друг друга. Суммы строк дают 2,1,−1,0,−22, 1, -1, 0, -2 - это разности полустепеней исхода и захода, и в сумме по всем вершинам они обязаны давать ноль.

Ответ. Матрица инцидентности имеет размер 5×65 \times 6, её строки равны (1,1,0,0,0,0)(1,1,0,0,0,0), (1,0,1,1,0,0)(1,0,1,1,0,0), (0,1,1,0,1,0)(0,1,1,0,1,0), (0,0,0,1,0,1)(0,0,0,1,0,1), (0,0,0,0,1,1)(0,0,0,0,1,1); суммы строк 2,3,3,2,22, 3, 3, 2, 2 совпадают со степенями вершин, суммы столбцов равны 2. Для орграфа та же матрица получает минусы у концов дуг, и суммы её столбцов равны нулю.

Что стоит в клетке матрицы инцидентности

Определение занимает одну строку, и всё остальное из него выводится. Для неориентированного графа с вершинами v1,…,vnv_1, \dots, v_n и рёбрами e1,…,eme_1, \dots, e_m матрица инцидентности B=(bij)\mathbf{B} = (b_{ij}) имеет размер n×mn \times m, причём

bij={1,если вершина vi инцидентна ребру ej,0,иначе.b_{ij} = \begin{cases} 1, & \text{если вершина } v_i \text{ инцидентна ребру } e_j, \\ 0, & \text{иначе}. \end{cases}

Слово «инцидентна» означает ровно «является концом»: вершина и ребро инцидентны, вершина и вершина смежны. Отсюда и главное отличие от матрицы смежности - та квадратная и описывает пары вершин, а эта прямоугольная и описывает пары «вершина и ребро».

Петля выбивается из схемы, и на ней чаще всего спотыкаются. У петли оба конца в одной вершине, поэтому в её столбце стоит либо двойка, либо, в другой распространённой договорённости, единица; какое соглашение принято в вашем курсе, стоит подписать рядом с матрицей. Кратные рёбра, в отличие от петель, проблемы не создают: каждое получает свой столбец, и в матрице появляются два одинаковых столбца - то самое, чего матрица смежности показать не умеет.

Матрица инцидентности орграфа: откуда берутся знаки

В ориентированном графе у дуги есть начало и конец, и одной единицы уже мало: иначе дуга v1→v2v_1 \to v_2 и дуга v2→v1v_2 \to v_1 дали бы одинаковые столбцы. Поэтому в клетке ставят

bij={+1,vi - начало дуги ej,−1,vi - конец дуги ej,0,вершина не инцидентна дуге.b_{ij} = \begin{cases} +1, & v_i \text{ - начало дуги } e_j, \\ -1, & v_i \text{ - конец дуги } e_j, \\ 0, & \text{вершина не инцидентна дуге}. \end{cases}

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

Суммы строк в ориентированном случае читаются по-другому. Строка вершины viv_i содержит столько плюс единиц, сколько дуг из неё выходит, и столько минус единиц, сколько в неё входит, поэтому сумма строки равна deg⁡+vi−deg⁡−vi\deg^{+} v_i - \deg^{-} v_i. У нас v1v_1 даёт 2−0=22 - 0 = 2, v4v_4 даёт 1−1=01 - 1 = 0, v5v_5 даёт 0−2=−20 - 2 = -2, а сумма всех этих чисел равна нулю: каждая дуга учтена один раз со знаком плюс и один раз со знаком минус.

Связь с матрицей смежности и степенями вершин

Матрица инцидентности и матрица смежности связаны одним произведением, и это самая полезная формула темы. Если A\mathbf{A} - матрица смежности простого графа, а D\mathbf{D} - диагональная матрица степеней вершин, то для неориентированной матрицы инцидентности выполняется

BBT=A+D.\mathbf{B}\mathbf{B}^{\mathsf{T}} = \mathbf{A} + \mathbf{D}.

Проверим на нашем примере хотя бы одну клетку. Строка v1v_1 равна (1,1,0,0,0,0)(1,1,0,0,0,0), строка v2v_2 равна (1,0,1,1,0,0)(1,0,1,1,0,0); их скалярное произведение равно единице - столько общих рёбер у вершин v1v_1 и v2v_2, и ровно это стоит в матрице смежности. На главной диагонали получается скалярный квадрат строки, то есть число единиц в ней, то есть степень вершины.

Для ориентированной матрицы знаки переворачивают результат, и произведение даёт матрицу Кирхгофа (лапласиан):

BорBорT=D−A.\mathbf{B}_{\text{ор}}\mathbf{B}_{\text{ор}}^{\mathsf{T}} = \mathbf{D} - \mathbf{A}.

На диагонали окажутся степени 2,3,3,2,22, 3, 3, 2, 2, а вне диагонали минус единицы на местах рёбер. Из-за этой формулы ориентированную матрицу любят в спектральной теории графов: лапласиан собирается из неё одним умножением.

Ранг матрицы инцидентности и что он показывает

Ранг ориентированной матрицы инцидентности равен n−kn - k, где kk - число компонент связности; для связного графа это n−1n - 1. Наш граф связен, значит ранг равен 5−1=45 - 1 = 4, что и показывает калькулятор. Причина проста: сумма всех строк равна нулевой строке, поэтому строки линейно зависимы и ранг не достигает пяти.

Польза от этого факта двойная. Во-первых, ранг даёт число компонент связности без обхода графа: посчитали ранг, например приведением матрицы к ступенчатому виду, и число компонент равно nn минус ранг. Во-вторых, линейно независимые наборы столбцов - это в точности наборы рёбер без циклов; максимальный такой набор из n−1n - 1 столбца задаёт остовное дерево, и на этом свойстве держатся жадные алгоритмы вроде алгоритма Прима.

С неориентированной матрицей осторожнее: над обычными числами её ранг равен nn, если в компоненте есть цикл нечётной длины, и n−1n - 1 для двудольной компоненты. В нашем графе есть треугольник v1v2v3v_1v_2v_3, поэтому ранг матрицы B\mathbf{B} равен пяти, а не четырём. Если в задаче про ранг не сказано, какая матрица имеется в виду, почти всегда подразумевается ориентированная.

Частые ошибки

  • Путают инцидентность и смежность. Матрица смежности квадратная, размера n×nn \times n, и описывает пары вершин; матрица инцидентности прямоугольная, размера n×mn \times m. Если у вас получилась квадратная таблица не случайно, а «по определению», вы построили не ту матрицу.
  • Ставят строки-рёбра, а столбцы-вершины. Стандарт: строки - вершины, столбцы - рёбра. Транспонированный вариант встречается, но о нём надо предупредить явно.
  • Теряют вторую единицу в столбце. Столбец заполняется целиком за один раз: отметили оба конца ребра и только потом переходите к следующему. Сумма каждого столбца ровно два - проверка занимает пять секунд.
  • В орграфе забывают знак. Матрица из одних единиц не отличает дугу v1→v2v_1 \to v_2 от дуги v2→v1v_2 \to v_1. Признак ошибки: сумма столбца равна двум вместо нуля.
  • Неверно обходятся с петлёй. Петля инцидентна одной вершине дважды, и в её столбце стоит 2 (или 1 при другом соглашении), но никак не две единицы в разных строках.
  • Меняют нумерацию посередине решения. Перестановка вершин переставляет строки, перестановка рёбер - столбцы. Матрица от этого остаётся верной, но не совпадёт с эталоном, поэтому порядок фиксируют один раз в начале.

FAQ

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

Как восстановить граф по матрице инцидентности? Идти по столбцам: в каждом ровно две единицы (или пара +1+1 и −1-1), и номера их строк дают концы ребра. Из матрицы со строками 1 1 0 0; 1 0 1 0; 0 1 1 1; 0 0 0 1 получаются рёбра v1v2v_1v_2, v1v3v_1v_3, v2v3v_2v_3, v3v4v_3v_4, то есть треугольник с подвешенной вершиной.

Можно ли по матрице инцидентности найти расстояния между вершинами? Напрямую нет: в ней хранится только отношение «вершина принадлежит ребру». Расстояния, радиус и диаметр графа считают обходом в ширину или по степеням матрицы смежности, а матрица инцидентности при этом служит лишь исходным описанием графа.

Сколько единиц в матрице инцидентности графа с m рёбрами? Ровно 2m2m ненулевых клеток, независимо от числа вершин: каждое ребро отмечается у обоих концов. Остальные nm−2mnm - 2m клеток нулевые, поэтому в программах такую матрицу обычно хранят списком рёбер.

Коротко

  1. Строки матрицы инцидентности - вершины, столбцы - рёбра; размер n×mn \times m, в клетке единица, если вершина является концом ребра.
  2. Заполняйте по столбцам: каждое ребро сразу даёт две единицы, сумма любого столбца равна двум, всего единиц 2m2m.
  3. Сумма строки равна степени вершины, поэтому строки матрицы - готовая проверка по лемме о рукопожатиях.
  4. В орграфе ставят +1+1 у начала дуги и −1-1 у конца; суммы столбцов становятся нулевыми, а суммы строк дают разность полустепеней.
  5. Для примера из условия матрица имеет размер 5×65 \times 6 со строками 1 1 0 0 0 0; 1 0 1 1 0 0; 0 1 1 0 1 0; 0 0 0 1 0 1; 0 0 0 0 1 1, степени вершин равны 2, 3, 3, 2, 2, а ранг ориентированной матрицы равен 4.
Задача в тетради или методичке? Сфотографируйте условие - сервис распознает его и решит по шагам с пояснениями.

Похожие задачи

Дискретная математика

Как найти степени вершин графа: пошаговое решение

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

Дискретная математика

Как составить СКНФ по таблице: пошаговое решение

СКНФ по таблице истинности: разбор задачи с числами. Строки с нулём дают макстермы, отрицание ставится на единицах, ответ проверяется подстановкой. Внутри калькулятор и сравнение с СДНФ.

Дискретная математика

Как найти двойственную функцию: решение по шагам

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

Дискретная математика

Как найти мощность множества: пошаговое решение

Как найти мощность множества: разбор задачи о 30 студентах по формуле включений исключений, мощность булеана 2 в степени n, счётные и континуальные множества, частые ошибки.

Дискретная математика

Как найти полином Жегалкина: решение по шагам

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

Дискретная математика

Как построить карту Карно: решение по шагам

Как построить карту Карно на четыре переменные: разметка осей кодом Грея, перенос единиц из таблицы истинности, склейка соседних клеток в группы и запись МДНФ с проверкой.