nosotrosprogramamos
  Grafos -Dijktra
 

CODIFICACION DE LAGORITMO DE DIJKTRA


#include <stdio.h>
#include <conio.h>
#define N 5
#define INF 1000

void dijkstra(int M[][N], int S[], int D[]); 
int buscaMenor (int D[], int S[]);
int min(int, int); 
main(){      
       int i;
       int M[N][N]={{0,4,11,INF,INF}, 
                   {INF,0,INF,6,2},
                   {INF,3,0,6,INF},
                   {INF,INF,0,INF,INF},
                   {INF,INF,5,3,0},};
       int S[N]={-1,-1,-1,-1,-1};
       int D[N]={0,0,0,0,0}; 
       dijkstra(M, S, D);
       printf("Distancia minima, entre cada verticenn");
       for (i=0;i<N;i++)
           printf("%c ",i+65);
       puts("");
          
       for (i=0;i<N;i++)
           printf("%d ",D[i]);
      
       printf("nnRecorridon");      
       for (i=0;i<N;i++)
           printf("%c -> ",S[i]+65);
      
       getch();
       return 0;
       }
void dijkstra(int M[][N], int S[N], int D[N]){
    
     int v,w, i, j, menor;    
     for (i=0;i<N;i++)
           printf("%c ",i+65);
     puts("");
    
     for(i=0;i<5;i++)
     printf("%d ",i);     
    
     puts("");
     v=0;
     printf("nDigite nodo de partidann");
     scanf("%d",&v);
     w=v;
     S[0]=v;    
     
     for (i=0;i<N;i++) 
         D[i]=M[v][i];
    
     for(v=1;v<N;v++)
     {
                     menor=buscaMenor(D,S);
                     S[v]=menor;
                     for(w=v;w<N;w++)
                           D[w]=min(D[w],D[menor]+M[menor][w]);
   
            } 
     }

int buscaMenor(int D[N], int S[N])
{
    int i,j, menor=INF+1, ok=-1, indice=-1;  
          
    for(i=0;i<N;i++)
    {                  
                  if(D[i] < menor)  {                         
                          for(j=0;j<N;j++) 
                                          if(S[j] ==i){
                                                  ok=1;
                                                  menor=INF+1;
                                                  }                                                 
                                                 
                          if(ok==0){                                                           
                                   indice = i;       
                                   menor =  D[i];   
                                   }                              
                          }
                          ok=0; 
                    }   
   
    return indice; 
    }

int min(int w, int vIntercepto){
    int menor =w;
    if (vIntercepto < w)
       menor = vIntercepto;
      
    return menor;   
    }


 
  Hoy habia 23625 visitantes¡Aqui en esta página!  
 
Se prohibe la venta de cualquier codigo que se encuentre en esa pagaina, esta pagina es de uso gratuito en un 100%, DESDE LOS CODIGOS INCLUYENDO EL DOMINIO. En caso de querer optar a clases personalizadas ponte en contacto atravez de facebook en nuestra FanPage NosotrosProgramamos Tambien puedes pegar nuestra url en facebook: http://www.facebook.com/pages/NosotrosProgramamos/148584758550145 Este sitio web fue creado de forma gratuita con PaginaWebGratis.es. ¿Quieres también tu sitio web propio?
Registrarse gratis