Network Rail
Short Description
Descripción: Trabajo de de problematica de redes ferroviarias presentada en forma de grafos, sencillo procedimiento de r...
Description
Universidad de Carabobo Facultad de Ciencias y Tecnología Valencia, Edo. Carabobo
Network-Rail Servicio de Mantenimiento (1era Entrega) Integrantes: Ricardo León CI: V-20786394 John Porras CI: V-21214759 Octubre 2014
Problemática Network Rail es la empresa más importante de Reino Unido y encargada de grandes infraestructuras ferroviarias como la línea de la costa occidental en Inglaterra. Esta linea es de gran importancia por la demanda de transporte que ocurre anualmente, contiene un único tramo entre dos estaciones o poblados cualesquiera, por lo que es de gran importancia un sistema de mantenimiento eficiente y bien diseñado de las vías férreas. Recientemente un evento desafortunado ocurrió, el sistema ferroviario fue afectado por un evento natural catastrófico, dejando algunas estaciones desconectadas temporalmente, debido al daño ocasionado en algunos de los tramos de comunicación. De acuerdo a las variantes planteadas, los requerimientos necesarios para el diseño del mantenimiento de dicha vía son los siguientes:
1. Representar fielmente el diseño del sistema ferroviario usando teoría de grafos. 2. Determinar ¿Cuál es la nueva configuración de la red ferroviaria luego de la afectación producida por el evento natural? (indicando los grupos de estaciones que han quedado conectadas). 3.
Dados distintos pares de estaciones, determinar si es posible que la locomotora se traslade entre éstas para cumplir con las labores de mantenimiento. En caso de que no sea posible, deberá reportarse al usuario.
Modelo de Grafo de Network Rail Definición por Extensión Sea F = (V, A) el grafo que modela el problema, donde: V = {ei / ei es una estación o poblado que está conectada en la red ferroviaria creada por Network Rail
iI}, con I = {1, 2, 3, …, n} A = { / ei, ej V entre ei y ej existe una tramo de comunicación Nerwork Rail que conecta directamente en ambos sentidos i, jI }
Diseño de las Estructuras de Datos
El grafo F = (V, A) será representado a través de una matriz de adyacencia, que llamaremos: Ferrovías.
c1 c2 … cj … c n c1 c2 Ferrovías =
Significa que existe un tramo de comunicación entre las estaciones c yc
… ci
i
1
j
…
1 = Existe tramo de comunicación
cn
0= No existe comunicación
Para hallar la alcanzabilidad de una estación a otra necesitaremos una estructura de datos de tipo conjunto llamada “Familia de conjunto” que tendrá la misma cantidad de elementos que números de estaciones. Familia de Conjuntos =
Conjunto1 Conjunto2
…
Conjunto i
…
Conjunto n
La cantidad de elementos es n debido a que necesitaremos esa cantidad de conjuntos para el algoritmo de componentes conexas.
Nota: Esta estructura de datos fue seleccionada gracias a la facilidad para identificar de manera simple y sencilla el grafo a tratar y permite responder de manera eficiente los requisitos y requerimientos de la Constructora Ferroviaria Network Rail.
Análisis del Problema ¿Que se tiene?: Primero que todo tenemos las n cantidades de estaciones y m cantidades de tramos de comunicación que van en ambos sentidos que en principio han sido construidos por Network-Rail, partiendo de esto tenemos la estructura de datos creada a partir de esa información la cual termina por convertirse en una matriz de adyacencia que representa el grafo de manera estructural. ¿Que se Pide?: 1. Partiendo de la nueva configuración de la red ferroviaria, se pide determinar el grafo expandido que se forma del grafo de las vías ferroviarias debido al evento natural que causa la incapacitación de algunos tramos (o arcos). 2. Luego a partir de esa nueva configuración de las vías ferroviarias,se debe determinar la alcanzabilidad entre un par de estaciones ferroviarias, es decir, si existe un camino en el que la locomotora de mantenimiento pueda ir de una estación a otra. ¿Cómo se resuelve?: 1. El primer requerimiento se puede resolver teniendo como entrada los tramos de comunicación que quedaron sin funcionamiento y que deja desconectadas a varias estaciones ferroviarias. A continuación introducimos esos datos en la matriz de adyacencia para determinar cómo quedará la nueva red ferroviaria que no es más que un grafo expandido que parte del grafo original o la red ferroviaria original. 2. El segundo requerimiento consiste partiendo delsubgrafo expandido y mediante este determinar cuántas componentes conexas existen y cuales vértices yacen en cada una de ellas, seguido de esto recibimos como entrada el par de vértices o estaciones a las cuales determinaremos si son alcanzables. Teniendo los vértices en cada componente conexa distinta entre sí, para determinar si existe camino entre un vértice i y un vértice y basta con verificar si se encuentran en las mismas componentes conexas.
Algoritmo en Alto Nivel Nivel de Abstracción 1: Inicio I. Obtener el número de estaciones y el número de tramos de comunicación, el nombre de cada una de las estaciones y la especificación de los tramos que unen cada estación. II. Se crea la matriz de adyacencia con los datos de entrada. III. Procedemos a leer los arcos que fueron afectados por el evento natural y a removerlos de la matriz de adyacencia para tener en ella el grafo expandido que representa la nueva configuración de la red ferroviaria. IV. Ejecutamos el algoritmo de componentes conexas para determinar cuáles son las componentes del grafo expandido y los vértices que se encuentran en cada una, esa información se guarda en el vector (Familia de conjuntos). V. Obtenemos el par de estaciones a las que se les verificará la alcanzabilidad y con el vector “familia de conjuntos” determinaremos si ambas estaciones están en la misma componente o no. VI. Escribir los resultados. Fin
AlgoritmoNetworkRail Inicio escribir(“Bienvenidos al sistema de mantenimiento ferroviario Network-Rail”) lectura de la cantidad de estaciones lecturadel conjunto de los nombres de estaciones lectura de los tramos de comunicación entre las estaciones (arcos del grafo) se inicializala matriz de adyacencia con 0 en cada celda se cargan los datos de los arcos en la matriz de adyacencia se leen los arcos que se van a quitar y se remueven de la matriz de adyacencia se ejecuta el algoritmo componentes conexas para tener el vector conjunto llamado “familia de conjuntos” lectura de las estaciones que se desean verificar su alcanzabilidad se verifican que esas estaciones estén en la misma componente conexa con el vector “familia de conjuntos” y dar la respuesta del resultado Fin
Procedimiento para cargar los datos de los arcos a la matriz de adyacencia Inicio Para cada columna de la matriz de adyacencia Para cada fila de la matriz de adyacencia se verifica si en esa celda existe un arco que una los 2 vertices en caso de que si exista, se coloca 1 para identificar que si existe un arco que los une finde cada fila de la matriz d adyacencia fin de cada columna de la matriz de adyacencia Fin procedimiento
Procedimiento para remover los arcos de la matriz de adyacencia Inicio Se leen los arcos que se van a quitar Para cada columna de la matriz de adyacencia Para cada fila de la matriz de adyacencia se verifica si esa celda es pertenece al arco que se debe remover en caso de que si sea, se coloca 0 para identificar que se desconectó el arco finde cada fila de la matriz d adyacencia fin de cada columna de la matriz de adyacencia Fin procedimiento
AlgoritmoComponentesConexas inicio Leer el número de vértices del grafo dados por la matriz de adyacencia Lee los arcos (adyacencia) Se inicializa el conjunto (familia de conjunto) de las componentes conexas, asumiendo que cada vértice es una Componente Conexa Inicializa el número de componentes conexas, y se asumen que existen n componentes conexas al inicio. Para cada uno de los arcos Se extrae un arco distinto del conjunto de los arcos: Buscar la Componente Conexa a la que pertenece el vértice v y se almacena en la variable i Buscar la Componente Conexa a la que pertenece el vértice w y se almacena en la variable j si (i ≠ j) entonces
// vértices v y w del arco están en componentes distintas
Se aplica la unión del conjunto donde fue ubicado el vértice v con el conjunto donde fue ubicado el vértice j Al conjunto donde se ubico el vértice j se descarta (se coloca en ) // elimina la componente conexa j. Se decrementa la cantidad de componentes conexas existentes. fsi Fin de cada uno de los arcos
Fin // fin ComponentesConexas //
Procedimiento para verificar si las estaciones se encuentran en el mismo vector de familia de conjuntos Inicio Mientrasno se revisen todas las componentes de familia de conjuntos o cuando se encuentren las 2 estaciones Se inicializa la cantidad de estaciones encontradas en 0 Paracada vertice que esté en la componente conexa actual se verifica si ese vertice es uno de los que se están buscando y se avisa que se encontró 1 estacion(si ya se había encontrado 1 entonces se eleva a 2) finde la revisión de la componente conexa actual findel mientras si se encontraron las 2 estaciones en una misma componente entonces escribir(“si hay comunicación entre una estación a otra”) en caso contrario escribir(“no existe comunicación entre ambas estaciones”) Fin procedimiento
View more...
Comments