Deoarece graficul neorientat schelet nu este determinată în mod unic, apare problema de selecție optimă de bază într-un anumit sens. De exemplu, graficul reprezintă o rețea de drumuri. Acolo apare problema traseului cel mai scurt lungime care trece prin aceste așezări. Matematic, acest tip de problemă este după cum urmează. Având în vedere un marcaj grafic (ponderat), adică Count fiecare margine poartă greutatea. Trebuie să selectați scheletul cel greutate.
Înainte de a analiza algoritmi specifici, imaginați-vă sarcina de listare toate miezurile conectate grafic. Procedura poate fi reprezentat ca o acumulare secvențială sub coaste din lemn de construcție. Dacă sursa k selectat de muchii din care nu se poate face un ciclu, vom obține un subgraf care este pădure neorientat. Prin această pădure puteți adăuga o altă margine a celuilalt, asigurându-vă că noua margine nu creează cicluri cu ceilalți. Procedura continuă până când până când se formează o n - 1 coaste. Rezultatul este un grafic cu n - 1 margine și care nu au cicluri. Dacă ar fi o pădure, atunci numărul de muchii din ea ar fi egal cu numărul de noduri minus numărul de componente. Numărul n - 1 poate fi obținută numai în cazul în care subgraful și se întinde și are o singură componentă conectată, adică Este un copac.
La fiecare etapă de creștere a subtree există mai multe posibilități de a adăuga o altă nervură. Ca urmare, la fiecare pas al ramurilor noastre de decizie, și obținem ascensorul efectiv așa-numitul arbore de decizie. Frunzele acestui arbore, care este, noduri de grad 1 sunt soluții specifice. Totalitatea toate frunzele au o colecție de toate nuclee într-un grafic.
core Căutare greutate minimă poate fi considerată ca coborâre optimă din rădăcina miezurilor de arbori dintr-o foaie. La fiecare pas, trebuie să decidă care dintre marginea validă pentru a selecta. Particularitatea acestei probleme constă în faptul că alegerea optimă a coaste la fiecare pas asigură rezultatul final optim.
Această procedură este convenabil să se presupună că subgraful incrementală include inițial anvelope toate ver- și procedura în trepte este de lipire-subgrafic componentă lemn consistentă prin marginile graficului original. Apoi, începe numărătoarea este n vârfuri izolate. La fiecare pas, iar cantitatea de proces etapei inițiale de acumulare o coastă se adaugă este redus cu unul. In final (n - 1) etapa -lea, cantitatea de muchii adăugate va fi n - 1, iar numărul de componente să fie redus la unul.
Luați în considerare două subgrafurilor disjuncte T1 = (V1. E1) și T2 = (V2. E2) grafului G. introduce pentru caracterizarea lor
Teorema 6.3. Să subgrafic les T, T1 este format din componente. T2. Tk și sunt supuse unor anumite coloana vertebrală minimă în greutate. Din componenta T2. T3. Tk vom alege o componentă Tj. unde Δ (T1, Tj) este minimă, iar această valoare este realizată pe muchia γ *, conectarea unui componentele nodurilor T1 Tj la un component vertex. Apoi subgrafic „T plus y *“ sunt supuse anumitor coloana vertebrală minimă în greutate.
Luați în considerare ◀ spanning copac T „minimei greutate, care cuprinde un T. T“ este un lanț α, conectarea nervură se termină γ *. Dacă această margine în sine nu este inclusă în T“, apoi adăugând la ciclul numărului da γ + α. Lanțul α are o primă muchie γ, depășește componentele T1 (începând de la capătul lanțului, care se află în T1). Prin ipoteză, alegerea greutatea nervurii nu este mai mică decât nervurile gamma greutate y *. Scoaterea nervura γ format rupe ciclul T și conectivitatea de magazine. În consecință, înlocuirea gamma γ * conduce la o Spanning copac T „“, diferit de T „printr-o singură nervură. Deoarece c (γ *) c (γ), miezul T „w“ nu este mai mare decât greutatea miezului T „este cea mai mică, adică T „“ - scheletul cel mai mic ▶ greutate.
Teorema este o bază teoretică pentru alegerea mai multor algoritmi de greutate de bază minim. Rețineți că principiul de selecție formulate în Teorema are o anumită libertate: ca T1 component poate selecta oricare dintre cele disponibile. Arbitrar o astfel de alegere înseamnă că un algoritm specific pentru construirea de bază poate fi pusă în aplicare în moduri diferite. Luați în considerare două astfel de algoritm.
Algoritmul lui Kruskal. În acest algoritm, minimizarea se realizează atât peste T1 și componente T1. De fapt, nu este nevoie să-și rezolve toate perechile posibile de componente și de a determina pe un cuplu de valoarea Δ este minimă. Puteți merge doar prin toate marginile graficului, iar printre ei alege marginea greutate minimă, care, în primul rând, nu este inclusă în T, și în al doilea rând, nu formează o buclă cu T existentă în coaste. Apoi va fi o muchie de legătură oricare două componente ale graficului T.
Pe scurt algoritmul lui Kruskal poate fi descrisă după cum urmează.
1. Începeți cu un grafic T se întinde fără coaste.
2. Toate marginile graficului sunt ordonate ascendent in greutate.
3. Selectați marginea următoarea listă ordonată și verificați dacă acesta formează un ciclu cu pre-selectat. Dacă da, săriți peste ea și repetați pasul. Dacă nu, treceți la pasul următor.
4. Verificați dacă selectat n - 1 coaste, procesul se încheie. În caz contrar, du-te înapoi la elementul anterior.
Strategia a subliniat două blocaje: sortare coaste ascendentă și inspecție aspectul de cicluri prin adăugarea nervura următoare. Prima problemă este de a alege un algoritm de sortare eficient. Rețineți că sortarea completă a tuturor marginile nu au nevoie cu adevărat. Selectate pentru a fi n - 1 margine, în timp ce graficul plin conține mai multe margini: n (n - 1) / 2. Sortarea poate fi redusă la o alegere la fiecare pas de cel mai bun dintre marginile rămase. Această problemă indică faptul că algoritmul Kruskal este cel mai eficient pentru graficele cu un număr mic de margini (de aceeași ordine ca și numărul de noduri).
Procedura de testare a declarat cicluri poate fi mai eficientă în cazul în care vârfuri marcate includ nu numai rang, dar, de asemenea, informații suplimentare, care permite pentru partea de sus pentru a restabili întreaga subarbore.
Algoritmul lui Prim. În acest algoritm, T1 copac este fix, celelalte componente rămân până la sfârșitul vârfurilor unice. Punct de vedere tehnic, această strategie poate fi pusă în aplicare după cum urmează. Fiecare nod x la pasul curent corespunde unei etichete care conține vârfuri y al arborelui T1. cel mai apropiat de x, iar greutatea β muchie de conectare y la x. Dacă nodul x nu are margini, se leagă cu T1. că atribuit marca de construcții (0, ∞). La etapa k sa uitat prin toate nodurile care nu aparțin T1 și printre ele este selectat nod XK. pentru care greutatea βk puțin. Margine de legătură XK cu T1. este înscris în lista muchiilor selectate. Apoi, pentru toate nodurile x ∈ / T1 greutate β este comparată cu greutatea coastelor și dacă acesta din urmă este mai mică, semnul x vertexul este actualizat. Procedura este oprită atunci când sunt selectați n-1 n vârfuri sau muchii.