*   >> lukeminen koulutus Artikkelit >> science >> programming

Dijkstra & amp; rsquo; s Algorithm

Ongelma Statement: -

Etsi minimaalinen virittävä puu käyttäen dijkstar algoritmia.

Theory: -

puu on piiri vähemmän kytketty kuvaaja. Olkoon G = (V, E) on liitetty kaavio.

aligraafi T = (V1, E1) G on virittävä puu G joss,

  1. V1 = V

  2. E1 on osajoukko E

  3. T on puu

    dijkstar'salgorithm on ahne tapa hankkia lyhin välimatka jokaisesta huippupiste peräisin alkuperäisestä kärki ja minimaalinen virittävä puu. Se kerääntyy puu reunan reuna.

    Kriteerit valita reuna, joka johtaa vähintään kasvuun summa kustannusten reunojen toistaiseksi mukana.

    Algoritmi: -

    algoritmi annetaan pituus matriisin kaavio, joka sisältää tiedot kaikista kuvaajat sivun pituus. Algoritmi alkaa alkuperäisen vertex v 0 keskenään v Kolme määriä liittyy. Statusdenoted tilan mukaan [V], joka on joko "!"

    eli lyhin tie tilavuus: tilavuus 0 on löydettävä, '?' Tarkoittaa, että se ei ole. Distancedenoted esittäjä acc [v] edustaa pituutta lyhimmän polun tilavuus: tilavuus 0 löytynyt.

    Toistaiseksi nextvertex merkitään seuraava v on nopea kärki matkalla v 0 lyhintä polkua löytyy niin kaukana VTO v 0.

    /* alustus * /

    tila [V 0] = '!'

    dist [V 0] = 0

    Seuraava [V 0] = '*'

    kaikki V ≠ v 0

    tila [V] = '?'

    dist [V] = L (v, v 0)

    Seuraava [V] = v 0

    päättyy

    /* JALOSTUS * /

    on olemassa jäljellä? kärkipisteet

    V * =? vertex joille dist on pienin

    tila [v *] = '!'

    jokaisesta jäljellä? kärki v

    jos dist [V]> dist [v *] + L (V *, v)

    dist [V]> dist [v *] + L (V *, v )

    Seuraava [V] = v *

    loppuun jos

    päättyy

    päättyy

    Ohjelma Koodi: -

    # include

    # include

    void main ()

    {

    int [17] [17], i, j , n, dist [12], min, R, S = 0;

    char asema [12], seuraava [12], v0, v [12], V1;

    clrscr ( );

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

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

    printf (" \\ nAnna solmujen lukumäärä: ");

    scanf ("% d ", & n );

    printf ("\\ nAnna pituus matriisi kuviossa: \\ n");

    (i = 0; i

    (j = 0; j

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

    /* alustus * /

    (i = 0; i

    V [i] = 65 + i;

    v0 = '';

    tila [

    Page   <<       [1] [2] [3] >>
Copyright © 2008 - 2016 lukeminen koulutus Artikkelit,https://koulutus.nmjjxx.com All rights reserved.