*   >> Lese Utdanning Artikler >> science >> programming

Dijkstra & amp; rsquo; s algoritme

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

  1. V1 = V

  2. E1 er en undergruppe av E

  3. T er et tre

    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

    Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lese Utdanning Artikler,https://utdanning.nmjjxx.com All rights reserved.