Entrega algoritmo de Dijkstra

Entrega algoritmo de Dijkstra

de Juan Cardelino -
Número de respuestas: 11

Estimados,

              Hoy vence el plazo para la entrega del algoritmo de Dijkstra. Salvo Matías nadie me ha preguntado nada, no se si porque está todo claro o porque no hicieron nada. Espero vuestros comentarios, no podemos aplazar más esto.

Con respecto a los proyectos, hay que definir eso para que comiencen a trabajar. Yo voy a estar mañana en Facultad, si alguno quiere conversar sobre este último tema o preguntar dudas, estoy de 8 a 19:30, aunque tengo algunas reuniones. Me avisan y coordinamos un horario.

Saludos,

           Juan

En respuesta a Juan Cardelino

Re: Entrega algoritmo de Dijkstra

de Martin Rocamora -

Yo estuve y estoy trabajando, pero no es seguro de que llegue para hoy. Mañana tengo reuniones a las 08:00 y 09:30 hrs. Luego de eso, a partir de las 11:00 hrs, si estás en el IIE me interesaría hablar del proyecto. Saludos!

En respuesta a Martin Rocamora

Re: Entrega algoritmo de Dijkstra

de Juan Cardelino -

Muy bien, tal como le dije a Luis, si quieren tomarse unos días más no pasa nada. Prefiero un buen trabajo más tarde que algo a medias. Pero que no pase de esta semana, sino se nos va de las manos la planificación. Mañana de 8 a 14hs estoy libre.

Saludos,

           Juan

En respuesta a Juan Cardelino

Re: Entrega algoritmo de Dijkstra

de Alejandro Rivero Perez -

Buenas. Por mi parte tengo la versión si heap andando, pero tengo algun error en la versión con el heap que aun no doy con la tecla. Creo que es alguna metida de pata en la implementación del heap mismo, pero aun estoy trancado con eso.

Saludos

En respuesta a Juan Cardelino

Re: Entrega algoritmo de Dijkstra

de Alejandro Rivero Perez -

Tengo ambos algoritmos andando, pero por alguna razon no noto una diferencia en la eficiencia. Ambas técnicas me dan del mismo orden para la matriz de 1000 nodos.

Mas o menos seguí el pseoducódigo de wikipedia y creo que el problema lo tengo al analizar cada uno de los vecinos de cada nodo que ya se que pertenece al camino. Este análisis implica  una iteración de tamaño considerablemente grande. Quiero saber si esto es disparatado y capaz lo estoy pensando de la forma errada. De todas formas no quise armar el informe con conclusiones erradas.

A alguien le pasó algo similar?

Saludos

En respuesta a Alejandro Rivero Perez

Re: Entrega algoritmo de Dijkstra

de Martin Rocamora -

Hola Alejandro, yo estoy con un problema en la implementación que usa el heap y no he conseguido que funcione todavía. Así que no te puedo comentar diferencias entre las implementaciones. Si logro solucionarlo en breve te aviso.

El tema es la función updateItem para cambiar el valor de un elemento del heap, que para que sea útil en el caso de Dijkstra tiene que ser diferente a como la había implementado antes. Estoy confundido con esto. Ahora lo voy a dejar y lo retomaré mañana.

Saludos!

En respuesta a Martin Rocamora

Re: Entrega algoritmo de Dijkstra

de Alejandro Rivero Perez -

Al final con algunos cambios pude notar diferencia entre ambos algoritmos pero solamente para la mayoría de los casos. Lo que pude notar es que para los casos en los que el algoritmo con heap es mas rapido, le gana por mucho al otro. Por otro lado hay ciertos casos para los cuales no cambia tanto una implementación o la otra. No se si esto es por la forma en que resolví los algoritmos o si es lo esperable.

 

Saludos

 

En respuesta a Alejandro Rivero Perez

Re: Entrega algoritmo de Dijkstra

de Juan Cardelino -

La respuesta es que deberían notar diferencia, pero no mucha, porque el costo de buscar el mínimo es importante, pero hay otros costos en apariencia despreciables que lo terminan tapando. Es normal que te de eso.

En respuesta a Alejandro Rivero Perez

Re: Entrega algoritmo de Dijkstra

de Martin Rocamora -

Hola Alejandro, al final recién hoy conseguí que funcione con la ayuda de Juan. Respecto al desempeño, lo que te puedo decir es que las dos implementaciones funcionan casi igual en términos de cantidad de ciclos, pero la implementación con el heap está siempre un poco por debajo.

Y no encuentro diferencias al cambiar el nodo destino, siempre obtengo el mismo número de ciclos para ambas implementaciones (pero una por debajo de la otra, como decía). Lo que pasa es que siempre se recorren todos los nodos y para cada uno de ellos se recorren todos los vecinos, entonces básicamente es el mismo número de operaciones. En realidad es exactamente el mismo número de operaciones en las pruebas que hice (unas 20), porque reconstruír el camino mínimo me está llevando lo mismo ya que siempre puedo llegar en 3 saltos al origen.

No sé si al resto le dió lo mismo. Cualquier cosa avisen.

Saludos,

Martín

 

En respuesta a Martin Rocamora

Re: Entrega algoritmo de Dijkstra

de Juan Cardelino -

Si querés Martín lo podemos conversar hoy.

En respuesta a Juan Cardelino

Re: Entrega algoritmo de Dijkstra

de Martin Rocamora -

Hola Juan, gracias. Hoy no pude avanzar nada. Mañana lo retomo y me comunico contigo. Abrazo!

En respuesta a Martin Rocamora

Re: Entrega algoritmo de Dijkstra

de Luis Diego Di Martino Bolentini -

Buenas, me sumo a la discusión.

A mi también me dieron resultados similares, un poco más costosa la implementación con heap (pero una diferencia despreciable en la cantidad total de ciclo que lleva el dijkstra) cuando uso el grafo de 1000 nodos. Creo que va por ese lado: el recorrer, para cada nodo, todos sus vecinos y verificar si se puede llegar a estos de forma más "rápida" termina siendo muy costoso y oculta la diferencia en el costo de encontrar el nodo con distancia mínima en cada paso.

Lo que mencionas sobre llegar a cualquier nodo en pocos pasos, también me dió algo así, lo que pude observar es que el grafo en k1000.mat es muy denso, si te fijas no hay ninguna distancia en la matriz de adyacencia que tenga el valor de inf definido en la wiki (la cantidad de nodos me dio 1e3 y la cantidad de aristas 1e6). Entiendo que esto quiere decir que cada nodo esta conectado con todo el resto aunque sea con una distancia grande. Tal vez si no estuviesen todos los nodos conectados y no tuvieses que, en cada caso, revisar si es necesario actualizar la distancia asignada a cada nodo (porque no todos los nodos serian alcanzables desde el nodo que estas analizando) la diferencia de costo de ejecución entre las implementaciones sería más notorio.

Así lo pense yo, pero puedo estarle errando en algún concepto.

Saludos!