Кістякове деревоКістякове дерево (англ. Spanning tree) зв'язаного неорієнтованого графа — ациклічний (тобто, без циклів) зв'язний підграф цього графа, який містить усі його вершини[1]. Неформально кажучи, кістякове дерево складається з деякої підмножини ребер графа, таких, що рухаючись цими ребрами можна з будь-якої вершини графа потрапити до будь-якої іншої. ВластивостіБудь-яке кістякове дерево у графі з n вершинами містить рівно n — 1 ребер. Кількість кістякових дерев у повному графі з n вершинами подається відомою формулою Келі: У загальному випадку, кількість кістякових дерев у довільному графі можна обчислити за допомогою так званої матричної теореми про дерева[джерело?]. Кістякове дерево може бути побудовано майже будь-яким алгоритмом обходу графа, наприклад пошуком у глибину або у ширину. Воно складається з усіх пар ребер (u, v), таких, що алгоритм, переглядаючи вершину u, виявляє в її списку суміжності нову, невиявлену раніше вершину v. Кістякове дерево, побудоване обходом графа починаючи з вершини s за алгоритмом Дейкстри, має властивість, що найкоротший шлях у графі з вершини s до будь-якої іншої вершини — це шлях з s до цієї вершини в побудованому дереві. Існує кілька паралельних і розподілених алгоритмів пошуку кістякового дерева. Як практичний приклад розподіленого алгоритму можна навести протокол STP. Якщо кожному ребру графа присвоєно вагу (зважений граф), то пошук кістякового дерева, яке мінімізує суму ваги його ребер, здійснюють численні алгоритми пошуку мінімального кістякового дерева. Задача про пошук кістяка, в якому степінь кожної вершини не перевищує деякої наперед заданої константи k, є NP-повною[джерело?]. УзагальненняПоняття кістяковий ліс неоднозначне, під ним можуть розуміти один з таких підграфів:
Див. такожПримітки
|