Planteamiento del problema: -
Para el árbol de expansión mínima utilizando el algoritmo de dijkstar
Teoría: -
Un árbol es un circuito. Gráfico menos conectados. Sea G = (V, E) un grafo conectado.
Un subgrafo T = (V1, E1) de G es un árbol de expansión de G si y sólo si, España
dijkstar'salgorithm es un método codicioso para obtener la ruta más corta entre cada vértice de un vértice inicial y mínima árbol de expansión. Se acumula el borde del árbol a la orilla.
Los criterios para elegir un borde que se traduce en un aumento mínimo en la suma de los costos de los bordes hasta el momento incluidos
Algoritmo: -.
El algoritmo se le da la longitud de la matriz gráfico que contiene la información sobre toda la longitud gráficos borde. El algoritmo comienza con un vértice v inicial 0 con cada uno contra tres cantidades asociadas. Un statusdenoted por estado [v], que será o bien '!' es decir, el camino más corto para v v 0 tiene que ser encontrado, '?', Que significa que no tiene. A distancedenoted por dist [v] representa la longitud de la ruta más corta desde v a v 0 encontradas. Hasta ahora un nextvertex denotado por el próximo v será el vértice rápido en el camino a v 0 lo largo de la ruta más corta encontrado tan lejos de vto v 0. /* INITIALIZATION * / Estado [v 0] = '!' dist [v 0] = 0 siguiente [v 0] = '*' para todo v ≠ V 0 Estado [v] = '?' dist [v] = l (v, v 0) siguiente [v] = v 0 end para /* PROCESAMIENTO * / Porque hay restante? vértices v * =? vértice para los que dist es más pequeño Estado [v *] = '!' para cada restante? vértice v si dist [v]> dist [v *] + l (v *, v) dist [v]> dist [v *] + l (v *, v ) siguiente [v] = v * final si end para end para Código del programa: - #include #include void main () { int a [17] [17], i, j , n, dist [12], min, r, s = 0; Estado char [12], al lado [12], v0, v [12], v1; clrscr ( ); printf ("\\ n \\ t \\ t \\ tDIJKSTAR DEL ALGORITMO"); printf ("\\ n \\ t \\ t \\ t ---------- ---------- \\ n \\ n "); printf (" \\ nNo el número de vértices
Programas de calidad para su Computer