Kostra grafu je strom , podgraf daného grafu, se stejným počtem vrcholů jako původní graf. Neformálně řečeno, kostra se získá z původního grafu odstraněním maximálního počtu hran zahrnutých v cyklech, ale bez zničení konektivity grafu. Kostra zahrnuje všechny vrcholy původního grafu a obsahuje hranu.
Kostra je acyklický souvislý podgraf daného souvislého neorientovaného grafu , který zahrnuje všechny jeho vrcholy .
Pojem rozprostírající se les je nejednoznačný; může znamenat jeden z následujících podgrafů:
Kostra se také někdy nazývá kostra , kostra nebo kostra grafu . Přízvuk ve slově "ostovny" od různých autorů je uveden na první (od slova ostov) nebo na druhé slabice.
Spanning tree lze sestavit téměř jakýmkoliv algoritmem procházení grafu, jako je prohledávání do hloubky nebo prohledávání do šířky . Skládá se ze všech párů hran tak, že algoritmus při pohledu na vrchol najde nový, dříve neobjevený vrchol ve svém seznamu sousedství.
Kostry vytvořené při procházení grafu z vrcholu Dijkstrovým algoritmem mají tu vlastnost, že nejkratší cesta v grafu od kteréhokoli jiného vrcholu je (je to také jediná) cesta z tohoto vrcholu v sestrojeném kostru.
Existuje také několik paralelních a distribuovaných algoritmů spanning tree. Jako praktický příklad distribuovaného algoritmu lze uvést protokol STP .
Pokud je každé hraně grafu přiřazena váha (délka, cena atd.), pak se při hledání optimální kostry podílí četné algoritmy pro nalezení minimální kostry , což minimalizuje součet vah hran v něm obsažených. .
Problém nalezení kostry, ve které stupeň každého vrcholu nepřekročí nějakou předem určenou konstantu , je NP-úplný [3] .
Výběr kostry a počítání počtu vzdálených hran v grafech elektrických obvodů slouží k výpočtu počtu nezávislých obvodů při analýze elektrického obvodu metodou obvodových proudů [4] .