elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Camino minimo en floyd!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Camino minimo en floyd!  (Leído 3,454 veces)
Dashiel

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Camino minimo en floyd!
« en: 8 Julio 2013, 09:57 am »

Estoy intentando hacer el metodo de camino minimo en floyd, pero realmente me he trabado.
Si alguien pudiera ayudarme con algun código más menos entendible se los agradecería!


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #1 en: 8 Julio 2013, 10:01 am »

Te has trabado... donde exactamente??

Si quieres ayuda es un buen paso poner el código que tienes, comentar qué problemas tienes, cosas así...


En línea

Dashiel

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #2 en: 8 Julio 2013, 10:17 am »

Bueno ahora mismo estoy intentando terminar el codigo, guiandome por un seudocodigo.
En cuanto tenga algo coherente y logico lo subo ,
Es decir dentro de unos minutos
jee
gracias!
En línea

Dashiel

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #3 en: 8 Julio 2013, 10:49 am »

Código
  1. Bueno esto fue lo que hice, soy de cuba y aqui son las 4 y media am ... ya no genero nada bueno ... asi que no se si funcione a o no!
  2. template<class T>
  3. CaminoMinimoFloyd( T * V1, T * V2 )  // T se refiere a clase template.
  4. {
  5.   ListaSE<T>* lista = new ListaSE<Tipo>;  //ListaSE es lista simplemente enlazada!  
  6.   ListaSE<T>* aux1;
  7.   ListaSE<T>* aux2;
  8.   T * VertComun; // seria el vertice B en AB + BC ;
  9.   int pos1 = Buscar (V1);
  10.   int pos2 = Buscar (V2);
  11.   if ( matrizP [pos1] [pos2] == null) // [color=red]mi matriz de predecesores va a tener dentro los vertices. y no la posicion del vertice.[/color]
  12.            {
  13.               lista -> Adicionar (V1);
  14.               lista -> Adicionar (V2);
  15.            }
  16.          else
  17.            {
  18.             VertComun = matrizP[pos1][pos2];
  19.             aux1 = CaminoMinimoFloyd (V1, VertComun);
  20.             aux2 = CaminoMinimoFloyd (VertComun, V2) ;
  21.             for(int i = 0; i < aux1->Longitud()-1; i++)
  22.                 lista ->Adicionar (aux1->Obtener(i)); // [color=red]agregó los elemento a la lista a retornar. Le doy longitud menos 1 para que en el for siguiente no agregue de nuevo el mismo elemento. sino quedaria ej: ABBC.[/color]
  23.  
  24.             for(int j = 0; j < aux2->Longitud(); j++)
  25.                  lista ->Adicionar (aux2->Obtener(j))
  26.  
  27.             }
  28. return lista;
  29.  
  30. }
« Última modificación: 9 Julio 2013, 03:20 am por Dashiel » En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #4 en: 8 Julio 2013, 11:19 am »

Para que el texto sea legible, edita tu mensaje, selecciona todo el código y en el combobox donde pone GeSHi selecciona c++.

Y tampoco estaría mal que indicases qué tipo de clase es ListaSE... es un alias de vector, de set o de list... es una clase tuya propia que te has currado de cero... no sabes que hace eso ahi ( XDDD ) ???

Luego, entiendo que la función esa es un template, no?? si es template, para evitar dudas estaría bien que pusieses la declaración del template... en caso contrario ( espero que no ) tienes una clase llamada T... cambia el nombre de esa clase porque es usada para templates y puede dar lugar a confusiones.

Más cositas... CaminoMinimoFloyd es una función, por lo que para llamarla hay que encerrar los parámetros entre paréntesis y tu estás usando corchetes... esto directamente no compila, deberías corregir esos errores antes de reportar código... queda feo.

Y bueno, corrige esas tonterías y luego seguimos.
En línea

Dashiel

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #5 en: 8 Julio 2013, 11:40 am »

Para que el texto sea legible, edita tu mensaje, selecciona todo el código y en el combobox donde pone GeSHi selecciona c++.

Y tampoco estaría mal que indicases qué tipo de clase es ListaSE... es un alias de vector, de set o de list... es una clase tuya propia que te has currado de cero... no sabes que hace eso ahi ( XDDD ) ???

Luego, entiendo que la función esa es un template, no?? si es template, para evitar dudas estaría bien que pusieses la declaración del template... en caso contrario ( espero que no ) tienes una clase llamada T... cambia el nombre de esa clase porque es usada para templates y puede dar lugar a confusiones.

Más cositas... CaminoMinimoFloyd es una función, por lo que para llamarla hay que encerrar los parámetros entre paréntesis y tu estás usando corchetes... esto directamente no compila, deberías corregir esos errores antes de reportar código... queda feo.

Y bueno, corrige esas tonterías y luego seguimos.



Ya , y disculpa se me fueron todos esos errorcitos bobos, hechemosle la culpa al sueño.
XDDDD
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #6 en: 8 Julio 2013, 11:43 am »

Ya , y disculpa se me fueron todos esos errorcitos bobos, hechemosle la culpa al sueño.
XDDDD

Te lo digo sin maldad, son detalles a pulir.

Tu piensa que cuanto mejor sea tu presentación y más facilites la vida a los que te van a ayudar, más productivo será para todos, en especial para ti.
En línea

Dashiel

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #7 en: 8 Julio 2013, 20:00 pm »

Te lo digo sin maldad, son detalles a pulir.

Tu piensa que cuanto mejor sea tu presentación y más facilites la vida a los que te van a ayudar, más productivo será para todos, en especial para ti.



Si, anoche me fui a dormir , no daba más. Es que soy nuevo por este foro y aun ando aprendiendo estas cosas de edición. Bueno alguien ha podido verificar si el código sirve o trazearlo?
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #8 en: 9 Julio 2013, 08:45 am »

Es complicado que alguien pruebe tu código porque usas la clase ListaSE que es particular tuya...si fuese un contenedor de la stl la cosa cambiaría... pero el comportamiento de ListaSE no se puede predecir viendo tu código.

Cualquier detalle tontos puede hacer que la ejecución del programa sea radicalmente distinta.

Tu piensa siempre que hacer un programa es como montar un reloj... todos los engranajes tienen que funcionar en perfecta armonía porque en caso contrario el invento no funciona.

Y tocando ahora tu código... me he mirado un poco la especificación de lo que tiene que hacer tu algoritmo y... yo creo que vas mal encaminado.

Para empezar, se supone que tiene que haber una función CaminoMinimo(i,j,k) o, en su defecto, tres bucles para iterar sobre el grafo... y tu estás usando únicamente 2 variables... lo mismo se me pasa algo, ya te digo, no puedo probarlo, pero lo veo raro.

También te digo que el diseño del algoritmo se puede resumir en una decena de líneas ( al menos las implementaciones que he visto )
En línea

Dashiel

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Camino minimo en floyd!
« Respuesta #9 en: 9 Julio 2013, 18:30 pm »

Hola amigo!
Mira ListaSE es lista simplemente enlazada, Es una lista que se crea basada con nodo simplemente enlazados para poder hacer las operaciones en listas mas faciles y rapidas. Al menos aqui en mi universidad se usa mucho junto con lista doblemente enlazada.( esta ultima aun es mas rapida pues permite a los nodos en los que se basa la lista regresar al anterior.

Mi profe de programación ya me analizó el código, el codigo esta perfecto. A no ser que se me haya ido algun ; algo jejej... es decir la logica del codigo es asi. Pues lo que hice fue un algoritmo recursivo para ir llenando las listas. Si tienes un chance y mira algo del funcionamiento de floyd, que lo que hace es actualizar una matriz de predecesores y en esa matriz buscar  el camino se hace recursivamente a medida que las vas mirando ( es decir sin ningun tipo de código)
Amigo muchísimas gracias de veras y espero poder seguir ayudandonos. Ahh se me olvidaba soy estudiante cubano de ingenieria en informatica... Ahora es que empiezo por este mundo enorme de la programación
Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Inicializar matrices en Floyd
Programación General
Archivel 6 7,499 Último mensaje 11 Julio 2013, 00:55 am
por Dashiel
Minimo(c++) « 1 2 »
Programación C/C++
komiki007 10 5,920 Último mensaje 19 Agosto 2011, 19:44 pm
por Eternal Idol
ayuda con floyd
Programación C/C++
nolasco281 2 1,850 Último mensaje 16 Junio 2014, 11:04 am
por nolasco281
Algoritmo de Floyd Warshall
Programación C/C++
Luisyoxd 1 3,123 Último mensaje 6 Marzo 2020, 12:42 pm
por 98Fran
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines