Перейти до основного вмісту

Теорема Кірхгофа. Знаходження кількості кістякових дерев

Задача: задано зв'язний неорієнтований граф (з можливими кратними ребрами), поданий матрицею суміжності. Знайдіть кількість різних кістякових дерев цього графа.

Наведену нижче формулу довів Кірхгоф у 1847 році.

Коли підходить цей підхід?
  • Потрібно порахувати кількість різних кістякових дерев графа, а не побудувати одне? (якщо потрібне мінімальне кістякове дерево → Крускал / Прим)
  • Кількість вершин невелика, щоб обчислити визначник матриці Лапласа за O(N3)O(N^3) методом Гаусса?
  • Граф неорієнтований (кратні ребра дозволені); для орієнтованих графів і варіацій потрібна відповідна версія теореми?

Матрична теорема Кірхгофа про дерева​

Нехай AA — матриця суміжності графа: Au,vA_{u,v} — це кількість ребер між uu та vv. Нехай DD — матриця степенів графа: діагональна матриця, у якій Du,uD_{u,u} дорівнює степеню вершини uu (з урахуванням кратних ребер і петель — ребер, що з'єднують вершину uu саму з собою).

Матриця Лапласа (лапласіан) графа визначається як L=D−AL = D - A. Згідно з теоремою Кірхгофа, усі алгебраїчні доповнення цієї матриці рівні між собою, і вони дорівнюють кількості кістякових дерев графа. Алгебраїчне доповнення (i,j)(i,j) матриці — це добуток (−1)i+j(-1)^{i + j} на визначник матриці, яку ми отримуємо після викреслювання ii-го рядка та jj-го стовпця. Отже, можна, наприклад, викреслити останній рядок і останній стовпець матриці LL, і абсолютне значення визначника отриманої матриці дасть нам кількість кістякових дерев.

Визначник матриці можна знайти за O(N3)O(N^3) за допомогою методу Гаусса.

Доведення цієї теореми досить складне і тут не наводиться; з нарисом доведення та варіаціями теореми для графів без кратних ребер і для орієнтованих графів можна ознайомитися у Вікіпедії.

Зв'язок із законами Кірхгофа для електричних кіл​

Матрична теорема Кірхгофа про дерева та закони Кірхгофа для електричних кіл пов'язані напрочуд красивим чином. Можна показати (за допомогою закону Ома та першого закону Кірхгофа), що опір RijR_{ij} між двома точками кола ii та jj дорівнює

Rij=∣L(i,j)∣∣Lj∣.R_{ij} = \frac{ \left| L^{(i,j)} \right| }{ | L^j | }.

Тут матриця LL отримується з матриці обернених опорів AA (Ai,jA_{i,j} — це величина, обернена до опору провідника між точками ii та jj) за процедурою, описаною в матричній теоремі Кірхгофа про дерева. TjT^j — це матриця з викресленими рядком і стовпцем jj, а T(i,j)T^{(i,j)} — це матриця з викресленими двома рядками та двома стовпцями ii і jj.

Теорема Кірхгофа надає цій формулі геометричного змісту.

Задачі для практики​

Відеоматеріали​