No se está usando RouterSimulator.INFINITY en el código inicial dado

No se está usando RouterSimulator.INFINITY en el código inicial dado

de Agustin Gallego Leon -
Número de respuestas: 3

Hola!

Aparentemente no se está usando el valor infinito en el código:

    nodes = new RouterNode[NUM_NODES];
    for(int i=0; i<NUM_NODES; i++){
      HashMap<Integer,Integer> neighbors = new HashMap<Integer,Integer>();
      for (int j=0; j<NUM_NODES; j++ ) {
        if (connectcosts[i][j] != 0 && connectcosts[i][j] != INFINITY) {
          neighbors.put(j,connectcosts[i][j]);
        }
      }
      nodes[i] = new RouterNode(i, this, neighbors);
    }

Cuando se imprime la tabla inicial dentro de RouterNode, que se pasa vía 'neighbors' en el constructor, no hay ni ceros ni infinito. Se debe al código que crea las instancias mostrado acá arriba, parte de RouterSimulator.java.


Hay que cambiar el código para utilizar infinito? O se asume que cero e infinito son lo mismo, a estos efectos?

En respuesta a Agustin Gallego Leon

Re: No se está usando RouterSimulator.INFINITY en el código inicial dado

de Agustin Gallego Leon -

Ah, perdón, me parece que me autocontesto.

Será necesario que cada router conozca toda la topología de la red, por lo que deberá diseñar e implementar un mecanismo para esta tarea. Se sugiere que implemente un algoritmo de flooding controlado donde cada nodo difunde mensajes de aviso de estado de enlace (LSA).
Cada router solo conoce sus vecinos y a diferencia del algoritmo presentado en el libro no conoce la cantidad total de nodos de la red.


Igual me queda la duda de por qué en el código de RouterSimulator se usa INFINITY si después se ignora. No tiene mucho sentido la matriz inicial de costos.

En respuesta a Agustin Gallego Leon

Re: No se está usando RouterSimulator.INFINITY en el código inicial dado

de Matias Richart -

Hola Agustín.

No entiendo mucho tu duda, pero intento responder.

El valor INFINITY se usa para configurar el caso en que dos nodos no están conectados.

El valor 0 implica que el costo entre dos nodos es 0, es decir, no es lo mismo que infinito. El valor 0 se utiliza para indicar que el costo entre un nodo y si mismo es cero. Por ejemplo, si ves nunca se setean los valores de la diagonal de la matriz (connectcosts[i][i]), lo que implica que por defecto valen 0.

Por eso cuando se crea el vector de vecinos neighbours, se descartan el mismo nodo y los nodos que no se alcanzan (que tienen costo infinito), porque no son vecinos.

Espero haber aclarado tus dudas. Igualmente este código no debe ser modificado y no es necesario que lo entiendan, simplemente deben crear la matriz de costo siguiendo los lineamientos dados para probar distintas topologías.


Saludos

En respuesta a Matias Richart

Re: No se está usando RouterSimulator.INFINITY en el código inicial dado

de Agustin Gallego Leon -

Gracias!

No entendía bien por qué se estaba ignorando el infinito al crear la tabla de costos inicial (la que se le pasa a RouterNode), pero me parece que entiendo el por qué ahora.