*   >> Lecture Éducation Articles >> science >> la programmation

Dijkstra & amp; rsquo; Algorithm

Problème Déclaration: -

Trouver l'arbre couvrant minimal en utilisant l'algorithme de dijkstar

Théorie: -

Un arbre est un circuit. graphe moins connectés. Soit G = (V, E) un graphe connexe.

Un sous-graphe T = (V1, E1) de G est un arbre couvrant de G si et seulement si,

  1. V1 = V

  2. E1 est un sous-ensemble de E

  3. T est un arbre

    dijkstar'salgorithm est une méthode gourmande à obtenir le plus court chemin entre chaque sommet d'un sommet initial et arbre de recouvrement minimal.

    Il construit le bord de l'arbre par le bord. Les critères pour choisir un bord qui se traduit par une augmentation minimale de la somme des coûts des bords jusqu'à présent inclus

    Algorithme: -.

    L'algorithme est donnée de la matrice de la longueur de la graphique qui contient l'information sur toute la longueur de bord de graphiques. L'algorithme commence avec un sommet v initial 0 avec v trois quantités associés chacun.

    Un statusdenoted par statut [v] qui sera soit '!'

    qui signifie que le plus court chemin v pour v 0 doit être trouvé, '?' Ce qui signifie qu'il n'a pas. Un distancedenoted par dist [v] représente la longueur du plus court chemin de v pour v 0 trouvées. Jusqu'à présent, un nextvertex notée v prochaine sera le sommet rapide sur le chemin de v 0 le long de la trajectoire la plus courte retrouve si loin des vto v 0.


    /* INITIALISATION * /

    statut [v 0] = '!'

    dist [v 0] = 0

    suivante [v 0] = '*'

    pour tout v ≠ v 0

    statut [v] = '?'

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

    suivante [v] = v 0

    fin de

    /* TRAITEMENT * /

    Car il y restant? sommets

    v * =? sommet pour lequel dist est la plus petite

    statut [v *] = '!'

    pour chaque restants? sommet v

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

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

    suivante [v] = v *

    fin si

    fin de

    fin de

    Code de programme: -

    #include

    #include

    void main ()

    {

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

    statut de char [12], à côté [12], v0, v [12], v1;

    clrscr ( );

    printf ("\\ n \\ t \\ t \\ tDIJKSTAR'S Algorithm");

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

    printf (" \\ nEntrez le nombre

    Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Lecture Éducation Articles,https://lecture.nmjjxx.com All rights reserved.