Problem Statement: -
Find den minimale udspændende træ ved hjælp dijkstar algoritme
Teori: -
Et træ er et kredsløb. mindre tilsluttede graf. Lad G = (V, E) være en tilsluttet graf.
En delgraf T = (V1, E1) i G er en udspændende træ af G IFF,
dijkstar'salgorithm er en grådig metode til at opnå den korteste vej mellem hver knude fra en første vinkelspids og minimal spanning tree. Den bygger op i træet kant ved kant.
Kriterierne for at vælge en kant, der resulterer i en minimal stigning i summen af omkostningerne ved kanterne hidtil inkluderet
Algoritme: -.
Algoritmen er givet længden matrix graf, som indeholder oplysninger om alle de grafer kantlængde. Algoritmen starter med en indledende knude v 0 med hvert V tre mængder er forbundet. En statusdenoted efter status [v] som vil være enten "!" betyder den korteste vej v til v 0 har at blive fundet, "?" Betyder, at det ikke har. En distancedenoted af dist [v] repræsenterer længden af den korteste vej fra V til V 0 fundet. Indtil videre en nextvertex betegnet ved næste v vil være den hurtige toppunkt på vej til v 0 den korteste vej fundet så langt fra VTO v 0. /* INITIALISERING * / status [v 0] = '! « dist [v 0] = 0 næste [v 0] =' * ' for alle v ≠ v 0 status [v] = '?' dist [v] = l (v, v 0) næste [v] = v 0 ende for /* BEHANDLING * / for der er tilbage? knuder v * =? toppunkt for hvilken dist er mindst status [v *] = '! " for hver resterende? vertex v Hvis dist [v]> dist [v *] + l (v * v) dist [v]> dist [v *] + l (v *, v ) næste [v] = v * ende, hvis ende for ende for Program Code: - #include #include void main () { int en [17] [17], i, j , n, dist [12], min, r, s = 0; char status [12], næste [12], v0, v [12], v1; clrscr ( ) printf ("\\ n \\ t \\ t \\ tDIJKSTAR algoritme") printf ("\\ n \\ t \\ t \\ t ---------- ---------- \\ n \\ n ") printf (" \\ nIndtast antallet af knuder: ") scanf ("% d ", & n ) printf ("\\ nIndtast længde matrix af grafen: \\ n") for (i = 0; i til (j = 0; j
Kvalitetsprogrammer til din computer