Академический Документы
Профессиональный Документы
Культура Документы
c
n
La cantidad de elementos es n
debido a que necesitaremos esa
cantidad de conjuntos para el
algoritmo de componentes conexas.
Anlisis del Problema
Que se tiene?: Primero que todo tenemos las n cantidades de estaciones y m cantidades de
tramos de comunicacin 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
informacin 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 configuracin de la red ferroviaria, se pide determinar el grafo
expandido que se forma del grafo de las vas ferroviarias debido al evento natural que causa
la incapacitacin de algunos tramos (o arcos).
2. Luego a partir de esa nueva configuracin de las vas 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 estacin a otra.
Cmo se resuelve?:
1. El primer requerimiento se puede resolver teniendo como entrada los tramos de
comunicacin que quedaron sin funcionamiento y que deja desconectadas a varias
estaciones ferroviarias. A continuacin introducimos esos datos en la matriz de
adyacencia para determinar cmo quedar la nueva red ferroviaria que no es ms 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 cuntas componentes conexas existen y cuales vrtices yacen en cada una de
ellas, seguido de esto recibimos como entrada el par de vrtices o estaciones a las cuales
determinaremos si son alcanzables. Teniendo los vrtices en cada componente conexa
distinta entre s, para determinar si existe camino entre un vrtice i y un vrtice y basta
con verificar si se encuentran en las mismas componentes conexas.
Algoritmo en Alto Nivel
Nivel de Abstraccin 1:
Inicio
I. Obtener el nmero de estaciones y el nmero de tramos de comunicacin, el nombre de cada
una de las estaciones y la especificacin de los tramos que unen cada estacin.
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
configuracin de la red ferroviaria.
IV. Ejecutamos el algoritmo de componentes conexas para determinar cules son las componentes
del grafo expandido y los vrtices que se encuentran en cada una, esa informacin 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 estn 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 comunicacin 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 estn 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 nmero de vrtices 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 vrtice es una Componente Conexa
Inicializa el nmero 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: <v , c>
Buscar la Componente Conexa a la que pertenece el vrtice v y se almacena en la
variable i
Buscar la Componente Conexa a la que pertenece el vrtice w y se almacena en la
variable j
si (i j) entonces // vrtices v y w del arco estn en componentes distintas
Se aplica la unin del conjunto donde fue ubicado el vrtice v con el conjunto donde fue
ubicado el vrtice j
Al conjunto donde se ubico el vrtice 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 estn buscando y se avisa que se encontr
1 estacion(si ya se haba encontrado 1 entonces se eleva a 2)
finde la revisin de la componente conexa actual
findel mientras
si se encontraron las 2 estaciones en una misma componente entonces
escribir(si hay comunicacin entre una estacin a otra)
en caso contrario
escribir(no existe comunicacin entre ambas estaciones)
Fin procedimiento