Ongelma Statement: -
Etsi minimaalinen virittävä puu käyttäen dijkstar algoritmia.
Theory: -
puu on piiri vähemmän kytketty kuvaaja. Olkoon G = (V, E) on liitetty kaavio.
aligraafi T = (V1, E1) G on virittävä puu G joss,
dijkstar'salgorithm on ahne tapa hankkia lyhin välimatka jokaisesta huippupiste peräisin alkuperäisestä kärki ja minimaalinen virittävä puu. Se kerääntyy puu reunan reuna.
Kriteerit valita reuna, joka johtaa vähintään kasvuun summa kustannusten reunojen toistaiseksi mukana.
Algoritmi: -
algoritmi annetaan pituus matriisin kaavio, joka sisältää tiedot kaikista kuvaajat sivun pituus. Algoritmi alkaa alkuperäisen vertex v 0 keskenään v Kolme määriä liittyy. Statusdenoted tilan mukaan [V], joka on joko "!" eli lyhin tie tilavuus: tilavuus 0 on löydettävä, '?' Tarkoittaa, että se ei ole. Distancedenoted esittäjä acc [v] edustaa pituutta lyhimmän polun tilavuus: tilavuus 0 löytynyt. Toistaiseksi nextvertex merkitään seuraava v on nopea kärki matkalla v 0 lyhintä polkua löytyy niin kaukana VTO v 0. /* alustus * / tila [V 0] = '!' dist [V 0] = 0 Seuraava [V 0] = '*' kaikki V ≠ v 0 tila [V] = '?' dist [V] = L (v, v 0) Seuraava [V] = v 0 päättyy /* JALOSTUS * / on olemassa jäljellä? kärkipisteet V * =? vertex joille dist on pienin tila [v *] = '!' jokaisesta jäljellä? kärki v jos dist [V]> dist [v *] + L (V *, v) dist [V]> dist [v *] + L (V *, v ) Seuraava [V] = v * loppuun jos päättyy päättyy Ohjelma Koodi: - # include # include void main () { int [17] [17], i, j , n, dist [12], min, R, S = 0; char asema [12], seuraava [12], v0, v [12], V1; clrscr ( ); printf ("\\ n \\ t \\ t \\ tDIJKSTAR algoritmi"); printf ("\\ n \\ t \\ t \\ t ---------- ---------- \\ n \\ n "); printf (" \\ nAnna solmujen lukumäärä: "); scanf ("% d ", & n ); printf ("\\ nAnna pituus matriisi kuviossa: \\ n"); (i = 0; i (j = 0; j scanf ("% d", & [i] [j]); /* alustus * / (i = 0; i V [i] = 65 + i; v0 = ''; tila [
Laatuohjelmat For Your Computer