*   >> Læs Uddannelse artikler >> science >> programming

Dijkstra & amp; rsquo; s Algorithm

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,

  1. V1 = V

  2. E1 er en delmængde af E

  3. T er et træ

    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

    Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Læs Uddannelse artikler,https://uddannelse.nmjjxx.com All rights reserved.