*   >> Leitura Educação Artigos >> science >> programação

Dijkstra & amp; rsquo; s Algorithm

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,

  1. V1 = V

  2. E1 é um subconjunto de E

  3. T é uma árvore

    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

    Page   <<       [1] [2] [3] [4] >>
Copyright © 2008 - 2016 Leitura Educação Artigos,https://artigos.nmjjxx.com All rights reserved.