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,
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
Programmes de qualité pour vos Computer