• Sábado 14 de Diciembre de 2024, 18:40

Autor Tema:  Problema Con Dijkstra  (Leído 1010 veces)

extremoo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Problema Con Dijkstra
« en: Jueves 3 de Junio de 2010, 01:09 »
0
hola a todos , estoy decifrando un pseudocodigo el algoritmo de Dijkstra, pero lo veo y lo veo y se me complica bastante parte de la sintaxis e arreglado parte del codigo para seguir con la estructura, mas abajo publico el codigo semiresuelto por ejemplo la estructura de datos a pasar es la siguiente:
______________
4
5
0 1 0.2
0 2 0.4
1 2 0.1
1 3 0.5
2 3 0.1
0 3
______________
el programa debe calcular cual es el camino mas corto mediante las probabilidades de encontrar un taco.

4 representa la cantidad de nodos n
5 representa la cantidad de caminos m
0 1 0.2 representan que de 0 a 1 la probabilidad (p) de taco es 0.2 asi sucesivamente con las cantidad <M
hasta la ultima linea en este caso 0 3 que indica desde donde parte hasta donde llega en este caso parte en 0 y termina en 3.

EL CODIGO SEMI TRADUCIDO A C++ HASTA EL MOMENTO ES
Código: C++
  1.  
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7.   int n, m;
  8.   int x, y;
  9.   float  p;
  10.   int desde, hasta;
  11.  
  12.   cin >> n;
  13.   cin >> m;
  14.  
  15.     for (int i = 0; i < m ; i++)
  16.     {
  17.       cin >> x;
  18.       cin >> y;
  19.       cin >> p;
  20.     }
  21.     cin >> desde;
  22.     cin >> hasta;
  23. //void Dijkstra()
  24. //{
  25.   int N;
  26.   bool enArbol  [N];
  27.   int distancia [N];
  28.   int padre     [N];
  29.  
  30.   for( int i=0; i < N ; i++)
  31.   {
  32.     enArbol   [n] = false;
  33.     distancia [n] = infinito;
  34.     padre     [n] = -1;
  35.   }
  36.   distancia [i] = 0;
  37.   int v = i;
  38.   while (enArbol[v]=false)
  39.   {
  40.     enArbol[v] = true;
  41.     //for( cada vecino u de v && !enArbol[u])
  42.     {
  43.       int peso = M [v][u];
  44.       if(distancia[u] > distancia[v] + peso)
  45.       {
  46.         distancia[u] = distancia [v] + peso;
  47.         padre [u] = v;
  48.       }
  49.     }
  50.     v=0
  51.     int dist = infinito;
  52.     //for(cada vertice u en V)
  53.     {
  54.       if(enArbol [u]=false) && (dis > distancia[u])
  55.       {
  56.         dist = distancia[u];
  57.         v=u
  58.       }
  59.      }
  60.   }
  61. //}
  62.   cout << "n:"<< n <<"  m:"   << m << endl;
  63. return 0;
  64. }
  65.  
  66.  


CUALQUIER AYUDA CON ESTE ENREDO SERÁ BIENVENIDA SALUDOS