*   >> Lezen Onderwijs artikelen >> science >> programming

Dijkstra & amp; rsquo; s Algorithm

Probleemstelling: -

Vind de minimale spanning tree met algoritme dijkstar's

Theorie: -

Een boom is een circuit. minder samenhangende graaf. Laat G = (V, E) zijn een aangesloten grafiek.

Een subgraaf T = (V1, E1) van G is een spanning tree van G IFF,

  1. V1 = V

  2. E1 is een subset van E

  3. T is een boom

    dijkstar'salgorithm is een hebzuchtige methode om de kortste weg tussen elk hoekpunt krijgen van een eerste hoekpunt en minimale spanning tree. Het bouwt de boom rand aan de rand.

    De criteria om een ​​rand die resulteert in een minimale verhoging van de som van de kosten van de randen dusver inbegrepen kies

    Algoritme: -.

    De algoritme is gezien de lengte van de matrix grafiek die de informatie over alle grafieken randlengte bevat. Het algoritme begint met een eerste hoekpunt v 0 waarbij elke v drie grootheden verbonden. Een statusdenoted op status [v] die ofwel '!'

    betekent de kortste weg naar v v 0 moet worden gevonden, '?' Betekent dat het niet.

    Een distancedenoted van dist [v] staat voor de lengte van het kortste pad van v naar v 0 gevonden. Tot nu toe een nextvertex aangeduid door volgende v zal de snelle vertex op weg zijn om te v 0 via de kortste weg tot nu toe gevonden van VTO v 0.

    /* INITIALIZATION * /

    de status [v 0] = '!'

    dist [v 0] = 0

    volgende [v 0] = '*'

    voor alle V ≠ v 0

    status van [v] = '?'

    dist [v] = l (v, v 0)

    volgende [v] = v 0

    end voor

    /* PROCESSING * /

    want er zijn nog? hoekpunten

    v * =? vertex waarvoor dist het kleinst

    status van [v *] = '!'

    voor elke resterende? vertex v

    als dist [v]> dist [v *] + l (v *, v)

    dist [v]> dist [v *] + l (v *, v )

    volgende [v] = v *

    Eind als

    end voor

    end voor

    Programma Code: -

    #include

    #include

    void main ()

    {

    int a [17] [17], i, j , n, dist [12], min, r, s = 0;

    char-status [12], de volgende [12], v0, v [12], v1;

    clrscr ( );

    printf ("\\ n \\ t \\ t \\ tDIJKSTAR algoritme");

    printf ("\\ n \\ t \\ t \\ t ---------- ---------- \\ n \\ n ");

    printf (" \\ nGeef het aantal hoekpunten: ');

    scanf ("% d", & n );

    printf ("\\ nGeef de lengte matrix van de grafiek: \\ n");

    for (i = 0; i

    ​​voor (j = 0; j

    scanf ("% d", & a [i] [j]);

    /* INITIALIZATION * /

    for (i = 0; i

    v [i] = 65 + i;

    v0 = 'A';

    status van [0] = '';

    d

    Page   <<       [1] [2] [3] >>
Copyright © 2008 - 2016 Lezen Onderwijs artikelen,https://onderwijs.nmjjxx.com All rights reserved.