Problema Declaração: -
Encontre a árvore geradora mínima usando o algoritmo de dijkstar
Teoria: -
Uma árvore é um circuito. gráfico menos conectados. Seja G = (V, E) um grafo conexo.
Um subgrafo T = (V1, E1) de G é uma árvore geradora de G sse,
dijkstar'salgorithm é um método guloso para obter o caminho mais curto entre cada vértice de um vértice inicial e mínima abrangendo árvore. Acumula-se a borda árvore por borda.
Os critérios para seleccionar um bordo que resulta em um aumento mínimo na soma dos custos das arestas medida incluídos
Algoritmo: -.
O algoritmo é dado o comprimento da matriz gráfico que contém as informações sobre todo o comprimento da aresta de gráficos. O algoritmo começa com um vértice v inicial 0 com cada v três quantidades associadas. A statusdenoted pelo status [v] que vai ser '!' ou seja, o caminho mais curto v para v 0 tem de ser encontrada, "?" O que significa que ele não tem. Um distancedenoted por dist [V] representa o comprimento do caminho mais curto de v para v 0 encontrada. Até agora, um nextvertex denotado por v próximo será o vértice rápido no caminho para v 0 ao longo do caminho mais curto encontrado tão longe de vto v 0. /* INICIALIZAÇÃO * / Estado [v 0] = '!' dist [v 0] = 0 próxima [v 0] = '*' para todo v ≠ v 0 Estado [v] = '?' dist [v] = l (v, v 0) próxima [v] = v 0 end para /* * PROCESSAMENTO /Tablet pois não restam? vértices v * =? vértice para o qual dist é menor Estado [v *] = '!' para cada um dos outros? vértice v se dist [v]> dist [v *] + l (v *, v) dist [v]> dist [v *] + l (v *, v ) próxima [v] = v * final, se end para end para Código do Programa: - #include #include void main () { int a [17] [17], i, j , n, dist [12], min, r, s = 0; estado char [12], ao lado [12], v0, v [12], v1; clrscr ( ); printf ("\\ n \\ t \\ t \\ algoritmo tDIJKSTAR"); printf ("\\ n \\ t \\ t \\ t ---------- ---------- \\ n \\ n "); printf (" \\ nDigite o número de vértices: "); scanf ("% d ", & n ); printf ("\\ nDigite a matriz de
Programas de qualidade para o seu Computer