Problem Statement: -
Finn minimalt spenntre hjelp dijkstar algoritme
Teori: -.
Et tre er en krets mindre koblet grafen. La G = (V, E) være en tilkoblet graf.
En sub-graf T = (V1, E1) i G er et spenntre av G IFF, etter
dijkstar'salgorithm er en grådig metode for å få den korteste veien mellom hver node fra en første toppunktet og minimal spenntre. Det bygger opp treet kanten av kanten.
Kriteriene for å velge en kant som resulterer i en minimal økning i summen av kostnadene ved kantene hittil omfattet
Algoritme: -.
Algoritmen er gitt lengden grunnmasse graf som inneholder informasjon om alle de grafene kantlengde. Algoritmen starter med et første toppunktet v 0 med hver v tre mengder assosiert. En statusdenoted etter status [v] som vil være enten '!' betyr den korteste veien v til v 0 har for å bli funnet, "?" Som betyr at det ikke har. En distancedenoted av dist [v] representerer lengden av den korteste veien fra v til v 0 funnet. Så langt en nextvertex merket med neste v vil være rask toppunktet på vei til v 0 langs den korteste veien funnet så langt fra VTO v 0. /* IGANGSETTING * / status [v 0] = '!' dist [v 0] = 0 neste [v 0] = '*' for all v ≠ v 0 status [v] = '?' dist [v] = l (v, v 0) neste [v] = v 0 slutten for /* BEHANDLING * / for det er igjen? ekser v * =? toppunktet som dist er minste status [v *] = '!' for hver gjenværende? toppunktet v hvis dist [v]> dist [v *] + l (v *, v) dist [v]> dist [v *] + l (v *, v ) neste [v] = v * slutten hvis slutten for slutten for Program Kode: - # Include # Include void main () { int et [17] [17], i, j , n, dist [12], min, r, s = 0; char status [12], ved [12], v0, v [12], v1; clrscr ( ); printf ("\\ n \\ t \\ t \\ tDIJKSTAR algoritme"); printf ("\\ n \\ t \\ t \\ t ---------- ---------- \\ n \\ n "); printf (" \\ nAngi antall hjørner: "); scanf ("% d ", & n ); printf ("\\ nAngi lengden matrise av grafen: \\ n"); for (i = 0; i for (j = 0; j scanf ("% d", og en [i] [j]); /* IGAN
Kvalitetsprogrammer for din Computer