Graph-reduction Algorithm for Finding Shortest Path in Geographic Information Systems

Texto completo

(1)

1Abstract— Geographic Information Systems are computer systems that are used to store and manipulate information closely related to its geographical position. This technology has developed so rapidly in the past two decades that is already accepted as an essential tool for effective use of such information. An application of Geographic Information System is the shortest path search between two locations. The problem solved in this paper is to present a road network of a map (all objects) through a graph for subsequente network analysis, specifically for finding the shortest path and respond quickly to the users. We propose an algorithm for reducing a graph and an algorithm for searching shortest path in the reduced graph by the proposed algorithm. These results can be subsequently applied to Geographic Information Systems.

Keywords— Geographic Information Systems, Shortest path

problem, Network theory (graphs), Graph grammars, Graph reduction.

I. INTRODUCCIÓN

A MAYOR utilidad de un Sistema de Información Geográfica (SIG) está estrechamente relacionada con la capacidad que posee éste de construir modelos o representaciones del mundo real a partir de las bases de datos digitales, esto se logra aplicando una serie de procedimientos específicos que generan más información para el análisis.

Una de las aplicaciones de un SIG es la búsqueda de rutas en mapas, o sea, un SIG puede responder a la pregunta: ¿cómo llego desde el lugar X al lugar Y, de la forma más rápida posible?, esta pregunta es respondida en forma de imagen, o sea, se muestra en una imagen la ruta para llegar desde el lugar X al Y en un mapa.

En muchas empresas se necesitan los SIG para planificar el transporte de sus productos, por ejemplo, una empresa comercializadora, necesita conocer una ruta que le facilite la distribución de sus productos hasta un determinado punto de venta utilizando la menor cantidad de recursos posible, esta situación se puede resolver haciendo uso de un SIG que calcule y le muestre el camino mínimo sobre un mapa, lo cual puede disminuir los gastos de la empresa por concepto de distribución.

Para realizar análisis de redes en un SIG es conveniente hacerlo a través de un grafo que represente la red de transporte modelada a partir de la cartografía, en el cual los vértices pueden representar intersecciones de calles de la red de viales, objetos geográficos existentes en el mapa (casas, hoteles,hospitales, etc.) y las aristas las relaciones entre estos.

Varios de los sistemas desarrollados, en el caso de la

1 R. R. Puente, Universidad de las Ciencias Informáticas, Cuba, rafaelrp@uci.cu

M. S. L. Cortés, Universidad de las Ciencias Informáticas, Cuba, manuelslc@uci.cu

búsqueda de rutas, siguen distintas estrategias para disminuir el tiempo de respuesta cuando la red de transporte es grande, en el caso de la compañía líder a nivel mundial de SIG, lo hace mediante la definición de una jerarquía de red estableciendo de tres a cinco niveles en la jerarquía, por ejemplo, una jerarquía de tres niveles puede quedar de la siguiente forma [1]:

• Vías primarias (autopistas)

• Vías secundarias (carreteras principales) • Vías locales (calles locales)

Esta jerarquía permite disminuir el tiempo de respuesta al usuario pero generalmente el camino obtenido tiene un mayor costo que si se realizara el cálculo de la ruta sin considerar los niveles, ya que bajo este esquema, se prioriza viajar por las vías de nivel superior en la jerarquía. Es importante aclarar que hay conductores que prefieren viajar por las vías primarias, sin importar el coste adicional del viaje, pero no es así en todos los casos.

Para realizar búsqueda de camino mínimo existen varios algoritmos, uno de los más utilizados y discutidos en la literatura de grafos es el algoritmo de Dijkstra, enunciado por primera vez por Edger Dijkstra en el año 1959 [2]. Sin embargo, este algoritmo no es eficiente para realizar búsquedas de camino mínimo en grafos grandes, el análisis se muestra en [3] y además se propone un nuevo algoritmo, basado en el algoritmo de Dijkstra que resuelve el problema de forma más eficiente, el mismo se basa en la eliminación de los valores ‘0’ y ‘∞’ para reducir la matriz de adyacencia, pudiéndose mejorar si se reduce además el número de vértices y de aristas del grafo.

En la bibliografía se pueden encontrar varios algoritmos de reducción de grafos, estos algoritmos de forma general, se basan en eliminar aristas y/o vértices que no son necesarios para dar solución a determinados problemas [4-11], otros trabajos se refieren a reducir grafos que cumplen determinadas propiedades, para lo cual realizan la reducción encontrando determinadas subestructuras geométricas [12]. Estos algoritmos obtienen un grafo reducido con información suficiente para dar solución a un problema específico pero limitada para la búsqueda de caminos mínimos de forma general, por ejemplo, cuando se tiene un grafo que representa una red de viales y no se conoce ninguna propiedad del mismo; además, cuando se realiza una búsqueda de camino mínimo no se deben eliminar aristas del gafo sobre el que se realiza el análisis, debido a que un origen o destino, especificados generalmente como coordenadas (latitud, longitud) en el ámbito de los SIG, puede estar sobre una arista y no ser precisamente un vértice del grafo que representa la red de transporte, en este caso se necesitaría obtener el grafo

Graph-reduction Algorithm for Finding Shortest

Path in Geographic Information Systems

R. R. Puente and M. L. Cortés

(2)

original (o al menos uno que tenga la arista que contiene la coordenada especificada) a partir del grafo reducido, por lo que no es factible utilizar estos algoritmos para el cálculo de caminos mínimos en SIG.

El problema que se trata de solucionar en el presente artículo es el de representar un mapa (todos los objetos) a través de un grafo para posteriormente realizar análisis de redes sobre el mismo, particularmente, la búsqueda de rutas mínimas y dar una respuesta rápida al usuario. Para esto se presenta una propuesta de algoritmo para reducir un grafo y a su vez, un algoritmo para hacer búsquedas de caminos mínimos en el grafo reducido con el algoritmo propuesto; lo cual fue aplicado al Sistemas de Información Geográfica Quantum GIS.

Con esto se puede lograr una mayor calidad en los servicios que brinda un SIG, ya que no sólo se puede utilizar en la búsqueda de caminos mínimos, sino en cualquier operación que traiga consigo un procesamiento del mapa a nivel de todos los objetos que lo componen.

II. CONCEPTOS PREVIOS

Para la realización de la propuesta que se presenta se hace uso de la teoría de conjuntos y de grafos. En esta sección se presentan las definiciones y notaciones necesarias para la comprensión del presente trabajo y que se utilizan en los algoritmos que se proponen.

Definición: Se denomina partición del conjunto A, a una clase P de subconjuntos de A que satisface las siguientes condiciones:

φ

P

.

• Dados dos conjuntos Ai y Aj de P, con

i

j

, se

cumple que

A

i

A

j

=

φ

.

• La unión de todos los conjuntos de P es igual a A, es decir, si A1, A2, ..., An son los subconjuntos en P

entonces A=A1A2∪...∪An.

Definición: Sean los conjuntos A y B no necesariamente distintos, se dice que R es una relación binaria de A en B si R es un subconjunto de pares ordenados de

AxB

, es decir, si

AxB

R

.

Si A = B, entonces se dice que R es una relación binaria en A. Definición: Una relación binaria R es una relación de equivalencia si y sólo si R es reflexiva, simétrica y transitiva en A.

Definición: La familia de las clases de equivalencia por R de A se denomina el cociente de A por R y se denota por:

}

|

]

{[

/

R

a

a

R

A

=

.

Definición: Un Grafo es un par

G

=

(

V

,

E

)

, donde: •

V

representa el conjunto de vértices del grafo G. •

E

representa el conjunto de aristas del grafo G. •

E

VxV

Definición: Se denomina grafo dirigido o digrafo a un grafo en el que las aristas son pares ordenados.

Definición: Sean

G

=

(

V

,

E

)

y

G

'

=

(

V

,'

E

'

)

dos grafos, si

E

E

V

V

'

,

'

G

'

es un subgrafo de

G

(y

G

es un supergrafo de

G

'

).

Definición: La matriz de adyacencia A=(aij)nxn del grafo G,

donde n = |V|, se define de la siguiente forma:

=

contrario

caso

en

E

v

v

si

a

ij i j

0

)

,

(

1

Definición: En un digrafo, podemos decir que el vértice

v

2 es adyacente (o vecino) al vértice

v

1 si

(

v

1

,

v

2

)

E

. Además, se dice que la arista

(

v

1

,

v

2

)

incide en el vértice

v

2.

Definición: Se define un grafo ponderado como una estructura

)

,

,

(

V

E

f

G

=

, donde:

V

representa el conjunto de vértices del grafo. •

E

representa el conjunto de aristas del grafo.

• La función

f :

E

+ le hace corresponder a cada arista

( , )

v v

i j

E

un valor real positivo denominado costo, cuya interpretación es el costo de ir desde el vértice

v

i al vértice

v

j.

Definición: La matriz de costo C=(cij)nxn de un grafo

ponderado

G

=

(

V

,

E

,

f

)

, donde n = |V|, se define como:



=

>

=

k

si

v

v

en

E

otro

k

caso

f

v

v

k

c

ij i j i j

0

0

),

,

(

,

)

,

(

Definición: Se denomina camino desde el vértice

v

i al vértice j

v

en un grafo

G

=

(

V

,

E

)

a la secuencia de vértices: k

v

v

v

CA

=

1

,

2

,...,

, tal que k j i k k

v

E

v

v

v

v

v

v

v

v

v

,

),

(

,

),...,

(

,

)

,

=

,

=

(

1 2 2 3 1 1 .

Definición: Se denomina longitud de un camino a la suma de los costos de todas las aristas presentes en el mismo y se representa de la siguiente forma:

1 , 1 1

|

CA

|

kh

c

h h+ =

=

En el caso de grafos no ponderados, la longitud del camino se puede calcular como la cantidad de aristas presentes en el mismo, o sea

|

CA

|

= k

1

.

Definición: El problema de la búsqueda de camino mínimo entre dos vértices

v

i y

v

j de un grafo consiste en encontrar un camino desde

v

i hasta

v

j tal que la longitud del mismo sea mínima respecto a un determinado criterio.

En varios problemas que son resueltos a través del uso de la teoría de grafos, es común encontrar la necesidad de transformar un grafo [5, 13], esto se puede hacer de varias formas, por ejemplo, modificando los nodos o las aristas, eliminando un subgrafo o adicionando un grafo a otro. También se puede utilizar un formalismo matemático denominado gramática de grafo.

(3)

16], HR [17], NR [17], etc., la especificación utilizada para definir cómo se debe transformar un grafo se denomina mecanismo de empotrado.

Debido al mecanismo de empotrado que utilizan los tipos de gramáticas antes mencionadas, se selecciona para utilizar en este trabajo las gramáticas NCE.

Para profundizar sobre las diferencias entre los distintos mecanismos de empotrado, el lector puede remitirse a [18]. Definición: Una gramática de grafo NCE es un sistema

(

)

= Σ, Δ,P,S

ζ

donde:

Σ

es un conjunto finito y no vacío de símbolos denominado alfabeto.

Δ

es un subconjunto de

Σ

denominado alfabeto de los símbolos terminales.

• P es un conjunto finito de producciones o reglas de reescritura de la forma

(

α,

β,

ψ

)

, donde

α

es un

grafo conexo,

β

es un grafo y

{ }

0,1

:

V

xV

x

ψ

α β ,

ψ

se denomina función de empotrado y está determinada por el mecanismo de empotrado que se utilice.

• S es el símbolo distinguido o axioma.

La aplicación de una producción o regla de reescritura consiste en eliminar el subgrafo

α

del grafo al que se le va aplicar la regla, adicionar el grafo

β

a dicho grafo, y conectarlo según se especifique en

ψ

.

La formalización de gramática NCE [14] utiliza como base la definición de grafos no dirigidos y etiquetados, sin embargo, cuando el grafo es dirigido, se debe tener en cuenta consideraciones adicionales. Para esto, se puede seguir el mismo enfoque que en [16] para dar soporte a grafos dirigidos, sustituyendo la función

ψ

por dos funciones:

ψ

in y

ψ

out para las aristas que entran y salen de un nodo respectivamente. En correspondencia con las definiciones y enfoques analizados, se da la siguiente definición de regla de reescritura:

Definición: Una regla de reescritura de grafos sobre un grafo

E)

(V,

=

G

es una tupla de la forma

(

G

i

,

G

j

,

ψ

in

,

ψ

out

)

, donde: •

G

i

=

(

{

v

i

}

,

{}

)

es un grafo donde

v

i

V

. •

G

j

=

(V

j

,

E

j

)

es un grafo. • : ℜ+ ℜ+ { −{ }}→{0,1} i j out in,ψ V x x xV v ψ .

Las aristas que unen el vértice

v

i y los vértices del grafo i

G G

se denominan aristas preempotradas. Después de aplicar una regla de reescritura, las aristas que unen los vértices del grafo

G

j con los vértices del grafo

G G

j se denominan aristas postempotradas.

La función

ψ

in transforma el conjunto de aristas preempotradas que inciden en el vértice

v

i en aristas postempotradas que inciden en uno o más vértices

v

j

V

j,

de forma similar

ψ

out es una función que transforma las aristas preempotradas que salen de

v

i en aristas postempotradas que salen de uno o más vértices

v

j

V

j. Las reglas de reescritura definidas anteriormente siempre estarán referidas a un sólo nodo, por lo que no es necesario que el mismo aparezca en la especificación de empotrado. Además, la imagen de las funciones

ψ

in y

ψ

out es el conjunto {0,1}, por lo que, desde un punto de vista práctico, se puede asumir que se especificarán explícitamente sólo los valores para los cuales la imagen de las funciones toma valor 1 y para los que toma valor 0 no se representan en la regla de reescritura. Teniendo esto en cuenta, las funciones antes mencionadas se pueden definir como cuádruplos de la forma

})

{

,

,

,

(

V

j

+

+

V

v

i . Un ejemplo de regla de reescritura se muestra en la Fig. 1.

Figura 1. Ejemplo de regla de reescritura. En la parte izquierda se muestra el grafo Gi=({vi},{}), en la parte derecha se muestra el grafo Gj y en la parte inferior se muestra la información de empotrado ψin y ψout.

Definición: Todo vértice

v

ique tenga asociada una regla de reescritura de grafos, se denomina vértice reducido.

Definición: Un grafo reducido es una tupla

G

r

=

(

V

r

,

E

r

,

R

)

, donde:

V

res un conjunto de vértices. •

E

r es un conjunto de aristas.

R

es un conjunto de reglas de reescritura sobre

)

,

(

V

r

E

r .

Sean

G

y

G

r dos grafos,

R

=

(

r

1

,

r

2

,...,

r

n

)

un conjunto de reglas de reescritura de grafos, podemos afirmar que

G

r es un grafo reducido a partir de

G

si al aplicar las reglas de reescritura especificadas en

R

al grafo

G

r se obtiene el grafo

G

.

(4)

Figura 2. Ejemplo de grafo Figura 3. Grafo reducido III. ALGORITMO DE REDUCCIÓN DE GRAFOS

A continuación se describe un algoritmo para reducir un grafo a partir de una relación de equivalencia, el mismo dará como salida un grafo reducido, con una diferencia en la cantidad de nodos y aristas, y con una serie de especificaciones que permitirán, en cualquier momento, obtener el grafo original si es necesario.

Posteriormente, se enuncia un algoritmo que permite hacer búsquedas de camino mínimo en grafos reducidos con el algoritmo de reducción enunciado en este trabajo.

Finalmente, se dan dos variantes que permiten reducir el tiempo de respuesta del algoritmo de búsqueda de camino mínimo, la selección de una u otra, está en dependencia de las necesidades específicas y del hardware del que se disponga para ejecutar los algoritmos.

Algoritmo para reducir un grafo

Entrada del algoritmo:

• Un grafo ponderado reducido

G

=

(

V

,

E

,

f

,

R

)

que representa un mapa, donde R es un conjunto de reglas de reescritura, posiblemente vacío.

• Una partición P en V o una relación de equivalencia RE que permite crear una partición P en V.

Salida:

• Un grafo ponderado reducido

)

,

,

,

(

r r r r r

V

E

f

R

G

=

que representa al mapa.

El algoritmo está compuesto por los siguientes pasos: 1. Si la entrada es una relación de equivalencia

o Obtener la partición

}

,...,

,

{

/

RE

A

1

A

2

A

s

V

P

=

=

, donde

s

i

V

a

a

A

i

=

[

i

],

i

,

=

1

..

.

2. Construir el conjunto de vértices

V

r del grafo reducido

G

r a partir de las clases de equivalencia de la partición P de la siguiente forma:

o Por cada clase de equivalencia

A

i, tal que

1

|

|

A

i

>

, se adiciona el vértice

v

ri a

V

r, en los casos en que

|

A

i

|

=

1

y

A

i

=

{ }

v

k , se adiciona a

r

V

el vértice

v

k. De esta forma

V

r está compuesto por s elementos que son los vértices del grafo reducido.

3. Construir el conjunto de aristas

E

r, donde

( , )

v v

m n

E

r si y sólo si

v

m

A

i

,

v

n

A

j

,

i

j

.

4. Crear el conjunto de reglas de reescritura

R

r, por cada i

A

, escribir una regla de reescritura, de la forma

(

G

i

,

G

j

,

ψ

in

,

ψ

out

)

donde: •

G

i

=

(

{

v

i

}

,

{}

)

,

A

i

=

[

v

i

]

. •

G

j

=

(

A

j

,

E

j

)

es un subgrafo de

G

=

(

V

,

E

,

R

)

, donde

(

u

,

v

)

E

j si y sólo si

( , )

u v

E y u v

,

A

j. •

ψ

in

=

(

v

m

,

c

1

,

c

2

,

v

n

),

c

1

,

c

2

,

}

{

,

n j j m

A

v

V

A

v

,

,

)

,

(

,

,

n

v

v

E

m

n m

f

(

v

n

,

v

m

)

=

c

1, hacer 2

( , )

.

r n i

f v v

=

c

ψ

out

=

(

v

m

,

c

1

,

c

2

,

v

n

),

c

1

,

c

2

,

}

{

,

n j j m

A

v

V

A

v

,

,

)

,

(

,

,

n

v

v

E

m

m n

.

)

,

(

,

)

,

(

2 1

fr

v

v

c

c

v

v

f

m n

=

i n

=

5.

i

, j

,

tal que

|

A

i

|

=

1

|,

A

j

|

=

1

,

v

m

A

i

,

v

n

A

j, hacer

f

r

(

v

m

,

v

n

)

=

f

(

v

m

,

v

n

)

.

6. Se crea el grafo reducido

G

r

=

(

V

r

,

E

r

,

f

r

,

R

r

)

. 7. Si se quiere seguir reduciendo el grafo, se hace

r

G

G

=

, se define una nueva relación de equivalencia (o una nueva partición) y se vuelve el paso 1.

Este algoritmo tiene particular importancia en el trabajo con mapas debido a que los mismos siempre se muestran al usuario a una determinada escala; contar con un grafo reducido con el algoritmo anterior permitiría realizar análisis de redes en función de una determinada escala.

Por ejemplo, se puede relacionar cada iteración del algoritmo con una escala del mapa, en otras palabras, si se reduce por la propiedad provincia, el grafo reducido resultante representa el mapa a escala de provincia como se muestra en la Fig. 4; esto trae como consecuencia simplicidad en el análisis que se realice, ya que a una escala determinada, pudieran perder importancia algunos objetos geográficos, debido a que a esa escala, los mismos no son visibles o no son de interés para el análisis que se realiza.

a) Mapa de Cuba b) Grafo reducido de las redes de viales de Cuba

(5)

del mapa (sin tener en cuenta la escala) aplicando todas las reglas de reescritura especificadas.

Algoritmo de búsqueda de camino mínimo en el grafo reducido

El primer paso para la búsqueda es definir una función de distancia

fd

=

(

v

i

,

v

j

,

v

r

)

, que calcule la distancia mínima desde el vértice

v

i hasta el

v

j pasando por

v

r en el grafo reducido

G

r

=

(

V

r

,

E

r

,

R

r

)

, siendo

v

r un vértice reducido. Para buscar un camino mínimo sobre un grafo, se pueden aplicar varios algoritmos, en este caso, se aplica el algoritmo Dijkstra [2], con una variación:

• Sea

G

=

(

V

,

E

)

un grafo dirigido y etiquetado. • Sean los vértices

v

i (origen) y

v

j (destino). • Sea D un vector, denominado vector de distancias,

con tantas coordenadas como elementos tiene V, y que almacena las distancias entre

v

i y cada uno de los vértices de V.

• Sea P un vector, denominado vector de precedencia, con la misma cantidad de coordenadas que D, y que contiene la información sobre qué vértice precede a cada uno de los vértices del grafo en cualquier camino mínimo que tenga como vértice de origen

v

i.

El algoritmo para determinar el camino de longitud mínima entre los vértices

v

i y

v

j es:

N

=

{A

}

• Para todos los nodos v Si

v

es adyacente a

v

i:

]

,

[

]

[

v

C

v

v

D

=

i i

v

v

P

[

]

=

En caso contrario:

=

]

[v

D

• Repetir

Buscar un nodo

w

N

tal que

D

[w

]

es mínimo

}

{w

N

N

=

Si

D

[

v

]

>

D

[

w

]

+

C

[

w

,

v

]

]

,

[

]

[

]

[

v

D

w

C

w

v

D

=

+

w

v

P

[

]

=

• Hasta que todos los nodos estén en

N

La variación propuesta consiste en que cada vez que calculamos distancia de un nodo

v

i a otro nodo

v

j adyacente a

v

i, donde

v

i no es vértice de origen y además es un vértice reducido, la distancia se calcula utilizando la función

)

,

,

(

v

i

v

j

v

r

fd

=

definida anteriormente, el vértice que

precede a

v

i se puede encontrar en el conjunto

P

, accediendo al elemento

P

[

v

i

]

.

Al terminar este algoritmo, en

D v

[ ]

j se encuentra la distancia mínima entre

v

iy

v

j . Por otro lado, mediante el vector

P

se puede obtener el camino mínimo:

P

[

v

j

]

=

v

k,

k

v

es el vértice que precede a

v

jen el camino mínimo desde i

v

hasta

v

j,

P

[

v

k

]

=

v

m, éste último vértice es el que precede a

v

k , y así sucesivamente, hasta llegar al vértice

v

i. La búsqueda del camino mínimo se puede optimizar, teniendo en cuenta una de las siguientes propuestas:

• En cada iteración de reducción del grafo, se guardan las distancias desde un vértice

v

i hasta

v

j pasando por el vértice reducido

v

r, esto no es más que la creación de la función

fd

=

(

v

i

,

v

j

,

v

r

)

, con este cálculo aumenta la complejidad del algoritmo de reducción de grafos, pero no tiene impacto en el usuario final ya que la reducción se realiza una sola vez y no como parte de la interacción del usuario con el algoritmo de búsqueda de camino mínimo. Por otra parte, este cambio trae consigo un beneficio en la búsqueda de caminos mínimos, que sí se realizan muchas veces, ya que cada vez que se aplique el algoritmo de búsqueda de camino mínimo, y aparezca un vértice reducido, no se tiene que calcular el camino en el subgrafo correspondiente a dicho vértice, porque ya estaría calculado de antemano. De esta forma, la complejidad de evaluar la función

fd

en el algoritmo de camino mínimo es de orden 1, por lo que no afecta la complejidad del algoritmo de Dijkstra, manteniéndose de orden n2.

• Cada vez que se haga una búsqueda de camino mínimo almacenar, de forma persistente, los valores que va tomando la función

fd

, de forma tal que se haga el cálculo de la función una sola vez, esta variante tiene la ventaja que no aumenta la complejidad de la reducción del grafo y a medida que se ejecuta el algoritmo de búsqueda de camino mínimo, el tiempo de respuesta disminuye. Aunque la complejidad del algoritmo de búsqueda de camino mínimo presentado tiene igual complejidad que el algoritmo de Dijkstra, en la práctica, luego de varias corridas del algoritmo, se disminuirían en una gran medida los tiempos de respuestas del mismo.

Como resultado del análisis anterior, se propone que se utilice la primera variante de optimización, que aunque mantiene la misma complejidad del algoritmo de Dijkstra (O(n2)),

disminuye en gran medida la cantidad de iteraciones necesarias para retornar un camino mínimo. Por ejemplo, suponga que se cuenta con un grafo de 106 nodos, la cantidad

de iteraciones del algoritmo de Dijkstra estaría en el orden de 1012 (dado que la complejidad temporal es O(n2)); si este grafo

(6)

peor de los casos estaría en el orden de 104 teniendo en cuenta

que la complejidad temporal del algoritmo propuesto es también O(n2). Como se puede apreciar, el orden de la

cantidad de iteraciones disminuye considerablemente y por consiguiente, se obtiene un menor tiempo de respuesta.

Para determinar la capacidad en disco duro que se necesita para almacenar un grafo reducido se tiene en cuenta que para almacenar un valor real se necesitan 4 bytes, que un vértice no reducido tiene dos atributos reales (latitud y longitud) que además lo identifican unívocamente y lo nombraremos id, una arista tiene un atributo real (el costo) y un vértice reducido tiene los siguientes atributos:

• Un identificador formado por un par (latitud y longitud) de valores reales.

• Una regla de reescritura, formada por:

o Un cuádruplo de la forma (vm,c1,c2,vn) por cada arista que exista entre un vértice que pertenece al subgrafo Gj y uno que pertenece a GGj, ya sea de entrada o de salida, a esta cantidad de aristas se denota como c . El espacio en este caso estaría dado por esp_ψ =c*(2*id+8).

o Un valor real por cada par de vértices que se pueda formar con el conjunto de vértices adyacentes al vértice reducido. Note que para almacenar este valor real, es necesario almacenar además, el par de vértices adyacentes con el que se corresponde dicho valor. Esta cantidad estaría dada por

) 4 * 2 ( 2 ) 1 ) ( )( ( ) (v =Ca v Ca vid+ cf r r r , donde ) (vr

Ca es la cantidad de vértices adyacentes al vértice reducido v . r

o Un grafo G , que representa al propio vértice i reducido, por tanto no es necesario almacenarlo. o Un grafo G , que representa un subgrafo del grafo a j

partir del cual se obtuvo el grafo reducido.

De esta forma, el espacio que se necesita para almacenar un vértice reducido estaría dado por

j r

r id c id cf v Espacio G

v

Esp_ = + *(2* +8)+ ( )+ _ .

A partir de lo anterior, el espacio que se necesita, en bytes, para almacenar un grafo reducido en memoria externa se calcula en función de su cantidad de vértices y aristas y está dado por la siguiente fórmula

m v Esp Cv Cv Gr Espacio_ =8* nr+ r* _ r+4* . IV. RESULTADOS Y DISCUSIÓN

Los algoritmos descritos anteriormente fueron implementados en el lenguaje de programación Python, haciendo uso de la biblioteca para el trabajo con grafos NetworkX (Disponible en http://networkx.lanl.gov/). Esta biblioteca cuenta con implementaciones de los algoritmos Dijkstra y A*, lo que permitió comparar el tiempo de ejecución del algoritmo de búsqueda de caminos mínimos propuesto con el tiempo de

ejecución de los dos algoritmos mencionados anteriormente, haciendo uso de la misma tecnología.

Los algoritmos fueron ejecutados en una Computadora Personal (PC) con un procesador Intel(R) Pentium(R) 4 de 3.20GHz [512 Kb de cache] con 1.5Gb RAM, sobre el sistema operativo Kubuntu 11.10. Para ellos se partió de un grafo (G) obtenido a partir de la cartografía de la ciudad de San

Francisco (Disponible en http://www.cs.fsu.edu/~lifeifei/SpatialDataset.htm ). El grafo

fue reducido dos veces, obteniéndose un grafo reducido de 769 vértices (Gr1) y el otro de 2617 vértices (Gr2).

En la Tabla 1 se muestran los resultados obtenidos.

TABLA I.TIEMPO DE EJECUCIÓN DE LOS ALGORITMOS DIJKSTRA Y A*, ASÍ COMO DEL ALGORITMO PROPUESTO.

Grafo Algoritmo Cantidad de vértices Tiempo (segundos) G Dijkstra 149756 3.2248 A* (h=0) 2.0778 A* (h=dist. euclidiana) 1.3901 Gr1 Algoritmo propuesto 765 0.0193 Gr2 2617 0.0722

El algoritmo A* presenta una complejidad temporal de O(n) cuando se utiliza una heurística óptima, donde n es la cantidad de vértices del grafo. Por otra parte, la complejidad del algoritmo Dijkstra, al igual que la modificación propuesta en la presente investigación, tiene complejidad O(n2). Sin

embargo, la modificación propuesta al algoritmo de Dijkstra se ejecuta sobre el grafo reducido. A partir de esto, se puede realizar el siguiente análisis, sea n la cantidad de vértices del grafo original y n la cantidad de vértices del grafo reducido, 1 si en el proceso de reducción se garantiza que n1≤ n, entonces la complejidad del algoritmo propuesto sería similar, e incluso menor, a la del algoritmo A*.

En los resultados experimentales obtenidos, se pone de manifiesto que cuando no se utiliza la heurística óptima en el algoritmo A*, se pueden obtener tiempos inferiores a los obtenidos por dicho algoritmo, aún cuando la cantidad de vértices del grafo reducido es mayor que la raíz cuadrada de la cantidad de vértices del grafo original.

Desarrollo de un plugin para el SIG Quantum GIS

Los algoritmos propuestos en la presente investigación, fueron incluidos en el SIG Quantum GIS. Este sistema es uno de los más utilizados en el ámbito de software libre para el manejo y consulta de datos geográficos.

(7)

Figura 5 Ejemplo de búsqueda de camino mínimo con el algoritmo propuesto en el SIG Quantum GIS V. CONCLUSIONES

El algoritmo de reducción de grafos presentado, permite crear un modelo matemático para realizar análisis en Sistemas de Información Geográfica que realicen un procesamiento del mapa a nivel de todos los objetos que lo componen, así como el análisis a una determinada escala del mapa, donde son representativos sólo una parte de los objetos representados en el mismo.

La búsqueda de camino mínimo en un grafo reducido haciendo uso del algoritmo de Dijkstra con la modificación propuesta, aunque mantiene la misma complejidad temporal que en un grafo sin reducir (O(n2)) permite una reducción

considerable del tiempo de respuesta del algoritmo.

Con la implementación y posterior aplicación en un Sistema de Información Geográfica de los algoritmos presentados, se puede lograr una mayor calidad en los servicios que brinda este tipo de sistema.

VI. REFERENCIAS

[1] T. Chandrasekhar and J. Sandhu, "ArcGIS 9: ArcGIS Network Analyst Tutorial," Redlands, CA: ESRI, 2005.

[2] E. W. Dijkstra, "A Note on Two Problems in Connection with Graphs,"

Numerische Mathematik, vol. 1, pp. 269-271, 1959.

[3] Z. Fuhao and J. Liu, "An Algorithm of Shortest Path Based on Dijkstra for Huge Data," Fuzzy Systems and Knowledge Discovery, Fourth

International Conference on, vol. 4, pp. 244--247, 2009.

[4] T. Murata, "Petri Nets: Properties, Analysis and Applications," ACM

Trans. Software Engineering and Methodology, vol. 77, pp. 541-580,

1989.

[5] Y.-L. Li, J.-Y. Li, and W.-B. Chen, "An Efficient Tile-Based ECO Router Using Routing Graph Reduction and Enhanced Global Routing Flow,"

IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, vol. 26, pp. 345-358, febrero 2007.

[6] W. Bibel and K. Aspetsbeger, "A bibliography on parallel inference machines," Symbolic Computation, vol. 1, pp. 115-118, 1985.

[7] L. P. J. Simon, C. Chris, S. John, and H. Mark, "GRIP-- A high-performance architecture for parallel graph reduction," in Proc. of a

conference on Functional programming languages and computer architecture Portland, Oregon, United States: Springer-Verlag, 1987.

[8] P. Watson and I. Watson, "Evaluating functional programs on the FLAGSHIP machine," in Proc. of a conference on Functional

programming languages and computer architecture Portland, Oregon,

United States: Springer-Verlag, 1987.

[9] J. Barnat, L. Brim, and P. Rockai, "Parallel Partial Order Reduction with Topological Sort Proviso," 8th IEEE International Conference on

Software Engineering and Formal Methods (SEFM), pp. 222 -231,

2010.

[10] L. Qing-xiu., C. Bao-xiang., and Z. Yi-wei., "An improved verification method for workflow model based on Petri net reduction," The 2nd

IEEE International Conference on Information Management and Engineering (ICIME), pp. 252 -256, 2010.

[11] G. Parlangeli and G. Notarstefano, "Graph reduction based observability conditions for network systems running average consensus algorithms," 18th Mediterranean Conference on Control

Automation (MED), pp. 689 -694, 2010.

[12] M. Rinehart and M. A. Dahleh, "A graph reduction for bounding the value of side information in shortest path optimization," American

Control Conference (ACC), pp. 4078 -4083, 2010.

[13] W. Sadiq and M. Orlowska, "Analysing process models using graph reduction techniques," Informations systems, vol. 25, pp. 117-134, 2000.

[14] D. Janssens and G. Rozenberg, "Graph grammars with neighbourhood-controlled embedding," Theoretical Computer Science, vol. 21, pp. 55-74, 1982.

[15] D. Janssens and G. Rozenberg, "On the structure of node-label-controlled graph languages," Information Sciences, vol. 20, pp. 191-216, 1980.

[16] D. Janssens and G. Rozenberg, "Graph grammars with node-label controlled rewriting and embedding," in Proceedings of the 2nd

International Workshop on Graph-Grammars and Their Application to Computer Science: Springer-Verlag, 1983.

[17] G. Rozenberg and A. Salomaa, Handbook of Formal Languages vol. 3: Springer, 1997.

[18] D. Blostein, H. Fahmy, and A. Grbavec, "Issues in the Practical Use of Graph Rewriting," in Selected papers from the 5th International

(8)

Rafael Rodríguez Puente, nació en Santiago de Cuba,

Cuba, el 17 de Mayo de1980. Graduado de Licenciatura en Ciencias de la Computación en el 2004 y Máster en Informática Aplicada en el 2007, actualmente es Vicedecano de Investigación y Posgrado de la Facultad 3 de la Universidad de las Ciencias Informáticas (UCI). Ha impartido diversas asignaturas entre las que se encuentran Programación, Estructuras de Datos, Técnicas de Compilación, Patrones de diseño, Máquinas Computadoras, Bases de datos y Metodología de la Investigación. Sus áreas de interés son los Sistemas de Información Geográfica, bases de datos de grafos e hipergrafos. Es revisor de la Serie Científica interna de la UCI.

Manuel Lazo Cortés, Doctor en Ciencias Matemáticas por

Figure

Actualización...

Referencias

Actualización...

Related subjects :