• Lunes 18 de Noviembre de 2024, 00:28

Autor Tema:  Crear estas rutas?  (Leído 1682 veces)

principiantecsharp

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Crear estas rutas?
« en: Viernes 16 de Agosto de 2013, 13:34 »
0
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;
            public float d;
            public float tp;
            public float c;

        }

Muchas gracias por leer mi pregunta.