Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda para arreglar el codigo dijkstra

Estas en el tema de ayuda para arreglar el codigo dijkstra en el foro de C/C++ en Foros del Web. implemento dijkstra la estructuda de entrada es la siguiente ______________ 4 5 0 1 0.2 0 2 0.4 1 2 0.1 1 3 0.5 2 ...
  #1 (permalink)  
Antiguo 02/06/2010, 14:24
Avatar de extremoo  
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 0
ayuda para arreglar el codigo dijkstra

implemento dijkstra la estructuda de entrada 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
5 representa la cantidad de caminos
0 1 0.2 representan que de 0 a 1 la probabilidad de taco es 0.2
asi sucesivamente con las cantidad de caminos
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.

** al final debería imprimir en pantalla el camino mas corto asi 0 1 2 3 **

Encontre un pseudocodigo y e estado tratando de modificarlo pero aun no entiendo varias cosas de la sintaxis alguien me puede ayudar el codigo SEMI modificado es el siguiente :

Código C++:
Ver original
  1. #include <iostream>
  2.  
  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.  
  24.  
  25. //void Dijkstra()
  26. //{
  27.   int N;
  28.   bool enArbol  [N];
  29.   int distancia [N];
  30.   int padre     [N];
  31.  
  32.   for( int i=0; i < N ; i++)
  33.   {
  34.     enArbol   [n] = false;
  35.     distancia [n] = infinito;
  36.     padre     [n] = -1;
  37.   }
  38.   distancia [i] = 0;
  39.   int v = i;
  40.   while (enArbol[v]=false)
  41.   {
  42.     enArbol[v] = true;
  43.     //for( cada vecino u de v && !enArbol[u])
  44.     {
  45.       int peso = M [v][u];
  46.       if(distancia[u] > distancia[v] + peso)
  47.       {
  48.         distancia[u] = distancia [v] + peso;
  49.         padre [u] = v;
  50.       }
  51.     }
  52.     v=0
  53.     int dist = infinito;
  54.     //for(cada vertice u en V)
  55.     {
  56.       if(enArbol [u]=false) && (dis > distancia[u])
  57.       {
  58.         dist = distancia[u];
  59.         v=u
  60.       }
  61.      }
  62.   }
  63. //}
  64.  
  65.   cout << "n:"<< n <<"  m:"   << m << endl;
  66.  
  67. return 0;
  68. }


ojala me puedan ayudar me complica el tema de los grafos saludos

Etiquetas: arreglar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:57.