Guía de la aplicación

Comenzaremos realizando una explicación del tipo de estructura que vamos a utilizar en nuestra aplicación.

Para ello vamos a necesitar cuatro diferentes listas de datos, ya que lo que pretenderemos es ir de un nodo origen a un nodo destino pasando por nodos intermediarios, a mínimo coste.

Debemos aportar a nuestra aplicación la información, de cuáles son nuestro nodo de origen y nodo de destino. Teniendo en cuenta que el origen y destino no pueden coincidir, ya que si no el estudio del camino mínimo no tendría sentido.

Por tanto necesitamos saber información de nuestros nodos intermediarios, y los costes entre estos, para poder realizar nuestro problema.

Entonces, crearemos los siguientes tipos de listas de datos:

Nombre: Tipo carácter, nos indica el nombre del lugar intermediario. Lista de aquellos nodos que tenemos nombrados. Cada uno de los nombres se corresponde con un número natural, correspondiente a su origen en función de su posición en la lista creada. 

Origen: Tipo numérico, colocaremos una lista con el número correspondiente al nodo del que partimos, de la arista (fila) que estamos considerando.

Destino: Tipo numérico, colocaremos una lista con el número  correspondiente al nodo de llegada, de la arista (fila) que estamos considerando.

Coste: Tipo numérico, crearemos una lista que nos indica el coste (distancia, tiempo, dinero...) de la arista (fila) dirigida entre ambos nodos considerados.

Comenzaremos explicando, cómo debemos introducir los datos.

 Para ello disponemos básicamente de dos formas:

  • Estructura de datos a partir de un Software: Podemos usar cualquier software que nos permita abrir un archivo  tipo ".csv" . Donde ".csv" es un formato que se caracteriza con las columnas  separadas mediante comas y las filas se diferencian con un salto de línea. Para ello creamos un archivo, la cual lo guardaremos de la siguiente forma "datos.csv".  Supongamos que queremos introducir \(n\) nodos, de los cuales podremos saber su  nombre además de \(m\) aristas de las que podremos conocer su origen, destino y coste. De tal forma que nuestra primera casilla de nuestra tabla, la reservaremos para escribir: "Nombre,Origen,Destino,Coste". Seguidamente introducimos sus correspondientes listas, donde cada elemento de la lista está en una fila diferente.  Por tanto hemos creado una tabla con un \(\max\{n,m\}\)  filas y 1 columnas, (ya que, como hemos explicado anteriormente, nuestras columnas irán diferenciadas mediante comas). Guardamos el archivo. Y ejecutamos nuestra aplicación mediante "Acción: Cargar datos".
         
  • Estructura de datos a partir de la propia aplicación: Desde aquí, encontramos diversas posibilidades de ejecución de nuestros datos. 
  1. Abrir un archivo desde la aplicación: Supongamos que tenemos ya un archivo .csv creado. Desde nuestra aplicación podemos abrirlo, sin necesidad de volver a escribir otra vez nuestros datos. Para ello ejecutamos nuestra aplicación y realizamos lo siguiente: "Acción: Cargar datos. Fichero: datos.csv". e indicamos el tipo de separador y punto decimal.
  2. Crear los datos desde la aplicación: "Acción: Añadir fila". (Repetimos esta acción tantas veces como necesitemos). "Acción: Añadir columna". (Podemos añadir algún dato adicional aunque este no se tendrá en cuenta a la hora de resolver nuestro problema). De esta forma tendríamos creada nuestra tabla vacía, a la que le añadiremos los datos que queremos introducir. Este último proceso lo realizaremos de la siguiente forma: "Acción: Editar casilla". Seleccionamos la columna y fila que queremos añadir, la cual nos indica de que tipo debe ser el dato (carácter, numérico o factor). De esta forma cambiaríamos todas las casillas, obteniendo así todos nuestros datos a utilizar. Si al realizar alguna de las acciones anteriores cometemos algún error podemos realizar "Acción: Eliminar fila""Acción: Eliminar columna" para corregirlo.

En ambos casos, podemos escribir la posición que ocupa nuestro origen y destino a los cuales queremos ir. Para ello, nuestra propia aplicación posee una correspondiente casilla para introducir esto valores. Que encontraremos una casilla de nombre Origen para introducir la posición que ocupa en nuestra lista de nombres, el origen, y de forma similar, existe una casilla con nombre Destino la cual nos permite introducir la posición que ocupa en nuestra lista de nombres, el destino. 

Debemos tener en cuenta que:

  • Origen y destino no pueden coincidir.
  • La posición que introducimos del origen/destino tiene que pertenecer a la lista de datos introducida.


Casos particulares (tanto para archivos desde software como para archivos creados en la aplicación):

  1. Supongamos que nos falta un nombre de uno o varios determinados lugares. No tendríamos problemas, ya que nuestra aplicación es capaz de realizar el camino mínimo sin esta información. Obteniendo así, sin ninguna dificultad, el resultado. El problema estaría a la hora de interpretarlo, ya que a la hora de representar y darnos la solución nuestra aplicación mostraría este nodo con un nombre genérico "Nodo_i" donde \(i)\ es la posición que ocupa este nodo en la lista de nombres. Lo que nos puede crear dificultades a la hora de interpretación, sobre todo si se trata de más de uno.
  2.  Supongamos que nos falta el dato de un coste o varios costes. Nos seguiría resolviendo el problema, pero trabajaría con coste cero en la correspondiente arista.
  3.  En caso de que el dato que nos falte sea un destino o un origen de un nodo intermedio. Al no tener nodo de origen o destino, no sabemos desde donde sale o va nuestra arista. Por tanto, la información que nos aporta esta arista es nula, luego no se considera.

Una vez ya puesta en funcionamiento nuestra aplicación, queremos eliminar uno o varios  datos o introducir un nuevo dato o nuevos datos:

  • A partir de un software: Abrimos nuestro archivo csv, y modificamos los datos que deseamos cambiar. Introduciéndoles de la misma forma, de la cual metimos los datos iniciales. 
  • A partir de la propia aplicación:
  1. Modificar nuestro origen/destino. Bastaría con seleccionar una nueva posición de nuestro origen/destino.
  2. Modificar datos: "Acción: Editar casilla". Seleccionamos la columna y fila que queremos añadir, la cual nos indica de que tipo debe ser el dato (carácter, numérico o factor). Esta opción la podremos usar tantas veces como nos haga falta.
  3. Eliminar datos: "Acción: Vaciar casilla". Seleccionamos la columna y fila en la que se encuentra nuestra casilla que queremos vaciar. "Acción: Eliminar fila" o "Acción: Eliminar columna" nos serán de ayuda para eliminar la fila o la columna de datos que queramos.
  4. Eliminar una fila entera: "Acción: Borrar fila". Seleccionando el número de fila que queremos eliminar completamente.
  5. Añadir una nueva fila: Supongamos que queremos añadir un nuevo lugar, origen, destino y coste. Para ello realizamos: "Acción: Añadir fila". Añadiremos los datos que queremos introducir en nuestra nueva fila de la forma: "Acción: Editar casilla". Seleccionamos la columna y fila que queremos añadir, la cual nos indica de que tipo debe ser el dato (carácter, numérico o factor).
  6. Añadir una nueva columna: Supongamos que queremos añadir una nueva columna. Para ello realizamos: "Acción: Añadir columna", y el tipo de columna que queremos añadir ya sea de tipo carácter, numérico o factor. Añadiremos los datos que queremos introducir en nuestra nueva columna de la forma: "Acción: Editar casilla". Seleccionamos la columna y fila que queremos añadir, introduciendo el dato del tipo correspondiente a la columna creada.

Nuestra aplicación seguidamente de manera automática, actualizaría nuestro nuevo problema.

Posibles soluciones e interpretación de nuestro problema:

Nuestra solución vendrá dada desde nuestra aplicación. 

En la pestaña "Resultados" obtendremos una breve explicación, del coste total de nuestro camino mínimo, así como el orden por el cual recorremos los lugares, indicando nuestro origen inicial y nuestro destino final.

En caso de que el origen y destino sea el mismo, o que la posición de destino/origen elegido no pertenezcan a la lista de nombres introducida, nuestra aplicación no podría ponerse en marcha, (debido a que esta información es fundamental para la resolución del problema). Esto vendrá indicando en la pestaña "Resultados".

Podría darse que el resultado fuese infactible. Esto ocurre si no existe solución al problema asociado a nuestros datos insertados. 

También obtendremos una solución de forma gráfica, a través de un grafo dirigido, que encontraremos en la pestaña "Gráfico"

Los nodos de forma cuadrada nos muestran los nodos origen y destino seleccionados y mediante un camino de flechas rojo, como debemos recorrerlo y los nodos intermedios por los que debemos pasar. Además nos  indica el sentido de nuestro camino.

Descargar los datos:

Tenemos una casilla "Descargar datos" que nos da la opción de descargar los datos de nuestro problema, (no incluye la solución obtenida).


Last modified: Friday, 22 June 2018, 8:52 PM