[ Foro de C# ]

Cómo crear estas rutas

16-Aug-2013 13:44
Miguel Areales Font
1 Respuestas

Hola a todos,
Estoy realizando una aplicación de consola en C#, y necesito crear una serie de rutas entre determinados puntos de la siguiente manera:
Las rutas que pretendo encontrar son todas las que existan obtenidas aplicando la heurística del vecino más próximo. Quiero guardar todos los casos para luego trabajar  con ellos, las rutas no deben repetir puntos.
Por ejemplo si tengo 4 puntos más el inicial que llamo 0:

Las de solo un punto, que siempre las tendré: 0-1-0, 0-2-0, 0-3-0, 0-4-0.
Las de dos puntos, que también las deberé coger todas: 0-1-2-0, 0-1-3-0, 0-1-4-0, 0-2-3-0, 0-2-4-0, 0-3-4-0.
Y a partir de aquí sí que el orden es importante. En las rutas con tres puntos, necesito en cada caso la más corta:
Para mí no es lo mismo en 1,2,3: 0-1-2-3-0, que 0-3-1-2-0 o 0-2-3-1-0. Y de estas solo necesito la más corta según distancias. Lo mismo con los conjuntos 1,2,4; 1,3,4; 2,3,4.
Luego en este ejemplo de 4 puntos, me quedaría hacer la ruta de menos distancia  con 1,2,3,4.
Tengo los datos de los puntos y la distancia entre ellos en una estructura y una matriz respectivamente:
La matriz de distancias es simétrica:


static double[,] Mdist;


Los puntos me los guardo en una struct:


        struct tipoPunto
        {
            public int Y;
            public int Z;
            public float peso;
        }


Y para guardar estas estructuras que deseo crear, había pensado en una estructura donde en el List guardo el orden y  la ruta  en sí, en l la longitud del recorrido y en t, la del tiempo que lo obtendré a partir de la distancia.


        struct InfoRuta
        {
            public List<int> p;
            public float l;
            public float t;
           
        }


Muchas gracias por leer mi pregunta.


16-Aug-2013 23:23
Nacho Cabanes (+83)

Este hilo está (casi) repetido.

¿Quieres separar en dos hilos, uno (éste) para la lógica de la creación de las rutas y otro (el "antiguo") para las estructuras de datos o alguna otra cosa? ¿O fundo los dos hilos en uno?






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)