ES2370541A1 - Procedimiento para representar y manipular multigrafos basados en el uso de mapas bits. - Google Patents
Procedimiento para representar y manipular multigrafos basados en el uso de mapas bits. Download PDFInfo
- Publication number
- ES2370541A1 ES2370541A1 ES200802251A ES200802251A ES2370541A1 ES 2370541 A1 ES2370541 A1 ES 2370541A1 ES 200802251 A ES200802251 A ES 200802251A ES 200802251 A ES200802251 A ES 200802251A ES 2370541 A1 ES2370541 A1 ES 2370541A1
- Authority
- ES
- Spain
- Prior art keywords
- multigraph
- identifier
- arcs
- attribute
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Abstract
La presente invención establece un procedimiento para, dada una representación lógica de datos en forma de red o multígrafo, crear un conjunto de estructuras que la permitan su almacenamiento eficiente en un sistema digital y su consiguiente manipulación. El multígrafo se representa usando mapas de bits con contadores de elementos y mapeos entre valores y mapas de bits organizados con el fin de facilitar la manipulación de dichos multígrafos. Los bits en los mapas de bits representan dos aspectos fundamentales del multígrafo: 1) Indexación de todos los objetos del multígrafo en función de sus identificadores y 2) conectividad entre objetos del multígrafo, ya sean nodos o arcos. Los mapeos permiten, dado un valor, acceder a los objetos del multígrafo que lo contienen. Las operaciones de multígrafo se resuelven accediendo a los mapeos y aplicando operaciones lógicas sobre los mapas de bits. Esta manera de representar un grafo permite realizar operaciones sobre grafos eficientemente como: insertar un nodo o un arco, insertar un atributo, obtener los arcos de entrada y salida de un atributo, etc.
Description
Procedimiento para manipular y consultar
mediante un sistema computacional multigrafos dirigidos, etiquetados
y con atributos.
La presente invención se refiere de forma
genérica a un método para manipular y consultar redes o multigrafos
en sistemas computacionales que permita la resolución eficiente de
distintas operaciones genéricas sobre estos.
El análisis y la manipulación de multigrafos de
forma eficiente se está convirtiendo en una necesidad ante el
creciente volumen de datos estructurados en forma de red o
multigrafo.
Son conocidos los métodos para la gestión de
datos en forma de multigrafo, aunque presentan limitaciones en lo
que se refiere a la capacidad de almacenaje y manipulación eficiente
de este tipo de datos. Concretamente, estos métodos no permiten
gestionar eficientemente datos en forma de multigrafo cuando el
tamaño de estos crece significativamente. Esto se produce porque las
estructuras de datos utilizadas no favorecen la ejecución eficiente
de algunas de las operaciones de multigrafos más comunes y,
específicamente, porque: 1) las estructuras de datos no permiten
acceder rápidamente a la información tal y como requieren dichas
operaciones y 2) las estructuras de datos no están optimizadas para
tener en cuenta que la capacidad de memoria es limitada. Ejemplos de
dichas operaciones son: buscar patrones en un multigrafo, explorar
el multigrafo a través de la relación de un nodo con sus vecinos,
encontrar el diámetro del multigrafo, etc.
El uso de sistemas basados en modelos de datos
tradicionales como el relacional para la gestión de multigrafos no
cumple con los requerimientos necesarios para construir un sistema
eficiente que permita consultar y manipular dichos multigrafos
cuando estos son muy grandes. En el modelo relacional se considera
que los datos se almacenan en registros que se organizan en
relaciones. Mientras esta organización favorece consultas donde lo
más importante es la información almacenada en cada registro, no
favorece algunas consultas típicas de multigrafos, relativas al
análisis de la relación entre entidades.
El uso de sistemas de representación específicos
para multigrafos como las matrices de incidencia permiten manipular
multigrafos eficientemente, pero requieren que el multigrafo entero
se pueda manipular en memoria, y presentan restricciones severas
cuando los elementos del multigrafo contienen atributos asociados, o
cuando se debe guardar más información aparte de la propia
estructura del multigrafo.
En consecuencia, se necesita un sistema para
gestionar con medios computacionales multigrafos genéricos con
atributos que permita la transformación y consulta de dichos
multigrafos de forma eficiente y sin requerir que la totalidad del
multigrafo tenga cabida en la memoria disponible en el sistema.
Un grafo es una estructura matemática que
representa una red formada por nodos y arcos. Los objetos de un
grafo son el conjunto de sus nodos y arcos.
D1/ Un nodo es cada uno de los puntos de
conexión o entidades de un grafo o red.
D2/ Un arco es una relación entre dos nodos de
un grafo o red. En general, un arco se representa como una línea
entre dos nodos.
D3/ Un arco dirigido es una relación entre un
nodo origen o saliente, y un nodo destino o entrante. En general, un
arco dirigido se representa como una flecha con origen en el nodo
saliente, y destino en el nodo entrante.
D4/ En un grafo etiquetado todos los nodos y
arcos tienen una etiqueta. Todos los objetos con la misma etiqueta
se dice que pertenecen al mismo tipo de objeto.
D5/ En un grafo con atributos cada objeto puede
tener, opcionalmente, uno o mas atributos con un valor asociado para
cada uno de ellos. Cada atributo de un objeto se identifica con un
nombre de atributo diferente.
D6/ En un multigrafo dos nodos cualesquiera
pueden estar relacionados por más de un arco de cualquier tipo de
arco, dirigido o no.
D7/ Un multigrafo etiquetado y dirigido con
atributos es un grafo que se define a partir de las definiciones D3,
D4, D5 y D6 anteriores.
D8/ Un mapeo es una aplicación matemática no
inyectiva y sobreyectiva entre dos conjuntos, el origen de claves
únicas, y el de imagen de valores asociados. En una aplicación no
inyectiva, los elementos del conjunto imagen pueden tener dos o más
orígenes. En una aplicación sobreyectiva, todos los elementos del
conjunto imagen tienen al menos un origen.
D9/ Un mapa de bits, o vector de bits, es una
estructura de datos que almacena de forma compacta secuencias de
valores lógicos cierto y falso, donde cierto o
presencia se representa con el valor 1, y falso o ausencia
con el valor 0. Un mapa de bits de n bits representa un subconjunto
de {1, 2, ..., n}, donde el valor i pertenece al subconjunto si el
bit en la posición i del mapa de bits está marcado a 1. En
consecuencia, la cardinalidad de dicho subconjunto es igual al
número de bits marcados a 1 en el mapa de bits.
La presente invención se refiere a un método
para transformar y consultar datos estructurados en forma de red o
multigrafo genérico, gracias al cual se consiguen notables mejoras
en la eficiencia de acceso y manipulación de estos datos en relación
a otras transformaciones de este tipo de datos conocidas hasta
ahora.
La presente invención determina unas estructuras
y métodos de acceso y transformación de datos para manipular un
multigrafo que representa una red de interés. El multigrafo incluye
dos tipos de objetos: nodos que representan entidades o puntos en la
red de interés y arcos dirigidos que enlazan pares de nodos. Ambos,
nodos y arcos, tienen identificadores únicos dentro del multigrafo y
pueden contener atributos para guardar características de los
mismos. Opcionalmente, los objetos de un multigrafo pueden estar
organizados en distintos tipos. Opcionalmente, los arcos pueden ser
no dirigidos. El multigrafo se transforma usando mapas de bits con
contadores de elementos y mapeos entre valores y mapas de bits
organizados con el fin de facilitar la manipulación de dichos
multigrafos. Los bits en los mapas de bits representan dos aspectos
fundamentales del multigrafo: 1) indexación de todos los objetos del
multigrafo en función de sus identificadores y 2) conectividad entre
objetos del multigrafo, ya sean nodos o arcos. Los mapeos permiten,
dado un valor, acceder a los objetos del multigrafo que lo
contienen. Las operaciones de multigrafo se resuelven accediendo a
los mapeos y aplicando operaciones lógicas sobre los mapas de bits.
Podemos ver un conjunto de ejemplos sobre multigrafos:
Ejemplo 1. Obtener el número de objetos de un
cierto tipo. Resolver esta operación implica acceder al mapa de bits
correspondiente y retornar el valor almacenado en el contador del
mapa de bits.
Ejemplo 2. Obtener los objetos de un cierto tipo
cuyos atributos cumplen una serie de restricciones en función de
unos valores dados. Resolver esta operación implica acceder, en base
a los valores provistos en las restricciones, a través de los
mapeos, a los mapas de bits asociados a ese atributo. El resultado
se obtiene aplicando iterativamente operaciones lógicas bit a bit
sobre estos mapas de bits.
Ejemplo 3. Obtener el grado de entrada de un
nodo en un multigrafo dirigido, es decir, el número de arcos que van
de cualquier nodo a este nodo. Resolver esta operación implica
acceder al mapa de bits del nodo en particular que contiene
información sobre los arcos entrantes utilizando un mapeo directo
entre el identificador del nodo y el mapa de bits. El resultado se
calcula obteniendo el contador de dicho mapa de bits.
Ejemplo 4. Obtener los nodos conectados a través
de al menos un arco a un nodo concreto. Resolver esta operación
implica acceder a los mapas de bits del nodo en particular que
contiene información sobre los arcos entrantes y salientes
respectivamente y, a partir de los arcos, obtener información sobre
los nodos conectados al nodo origen a través de estos arcos. El
resultado se calcula obteniendo los dos mapas de bits
correspondientes a partir del identificador del nodo y un mapeo
valor-mapa de bits. Y, a partir de los
identificadores de arco obtenidos y operaciones lógicas, encontrar
los nodos asociados.
Ejemplo 5. Obtener una segmentación de los nodos
de un multigrafo agrupados por su valor en un cierto atributo.
Resolver esta operación implica iterar sobre los valores distintos
de dicho atributo y obtener el mapa de bits asociado a cada valor a
través del mapeo, obteniendo los identificadores de los nodos ya
clasificados por su valor en dicho atributo.
En general, aún aumentando la complejidad de la
operación, cualquier operación puede realizarse a base de aplicar
operaciones más sencillas que acaban traduciéndose en la
manipulación eficiente de las estructuras presentadas en la presente
invención.
La presente invención puede ser utilizada para
el análisis de distintas redes de interés, como por ejemplo redes
sociales, redes de actividad transaccional, redes de comunicaciones
y/o transportes, redes hospitalarias, redes con información
bibliográfica, etc.
La presente invención puede ser usada en varias
formas incluyendo procesos industriales, métodos implementados por
computador, programas de ordenador, sistemas y redes informáticas,
interfaces de usuario, interfaces de programación de aplicaciones y
parecidos.
Para la mejor comprensión de cuanto queda
descrito en la presente memoria, se acompañan las Figuras en las que
se describen las distintas estructuras utilizadas en la
invención.
Figura 1. Multigrafo dirigido y etiquetado
formado por nodos y arcos de diferentes tipos, donde cada tipo tiene
asociado un conjunto propio de atributos.
Figura 2. Mapas de bits.
Figura 3. Operaciones lógicas bit a bit sobre
mapas de bits. Unión e intersección.
Figura 4. (a) Mapeo de un conjunto de
identificadores de objeto a sus correspondientes valores. (b) Mapeo
de un conjunto de valores a los mapas de bits que contienen los
identificadores de objeto asociados a dichos valores.
Figura 5. Representación de un atributo de un
tipo de objeto a partir de mapas de bits y mapeos.
Figura 6. Representación de un multigrafo
dirigido a partir de mapas de bits y mapeos.
Figura 7. Multigrafo de entrada y multigrafo de
salida con sus respectivas estructuras para una operación de
inserción de nodo.
Figura 8. Multigrafo de entrada y multigrafo de
salida con sus respectivas estructuras para una operación de
inserción de un arco dirigido.
Figura 9. Multigrafo de entrada y multigrafo de
salida con sus respectivas estructuras para una operación de
inserción de un valor para un atributo de un nodo.
Figura 10. Multigrafo de entrada con sus
respectivas estructuras, y estructuras de salida para una operación
de obtención del conjunto de arcos entrantes y salientes de un
nodo.
Figura 11. Multigrafo de entrada con sus
respectivas estructuras, y estructuras de salida para una operación
de obtención de los nodos de entrada y salida de un arco.
Figura 12. Multigrafo de entrada con sus
respectivas estructuras, y estructuras de salida para una operación
de obtención de los nodos de un tipo dado.
Figura 13. Multigrafo de entrada con sus
respectivas estructuras, y estructuras de salida para una operación
de obtención de los nodos de un tipo que tienen el mismo valor para
un atributo dado.
Figura 14. Multigrafo de entrada con sus
respectivas estructuras, y estructuras de salida para una operación
de obtención del valor para un atributo de un nodo dado.
La presente invención se aplica sobre un
multigrafo dirigido y etiquetado (ver definición D7) formado por
nodos y arcos de diferentes tipos, donde cada tipo tiene asociado un
conjunto propio de atributos como el representado en la Figura 1. El
caso en que el multigrafo no sea dirigido es un caso simplificado
del presentado en este documento y, en cualquier caso, los
principios de la presente invención pueden también aplicarse
directamente a multigrafos no dirigidos. Lo mismo ocurre para el
caso donde los nodos o arcos no tengan tipo (o lo que sería lo
mismo, que tuvieran un tipo único), o el caso en que nodos o arcos
no contengan atributos.
Cada elemento o entidad del multigrafo es un
nodo (ver D1). En la Figura 1, los nodos se representan en cajas
rectangulares.
Cada relación o enlace entre dos nodos del
multigrafo es un arco (ver D2). Un arco dirigido (ver D3) parte de
un nodo origen o saliente, y finaliza en un nodo destino o entrante.
En la Figura 1, los arcos son flechas que van del nodo saliente al
nodo entrante, señalado por la punta de la flecha.
Todo objeto en un multigrafo, es decir nodo o
arco, pertenece a un único tipo de objeto (ver D4). En la Figura 1,
el tipo de objeto se señala en la cabecera del objeto. En dicho
ejemplo hay dos tipos de nodos y dos tipos de arcos.
Todo objeto en un multigrafo puede tener un
conjunto de atributos asociados (ver D5). Un atributo se compone de
una etiqueta de atributo, también denominada nombre del atributo, y
un valor asociado, también denominado valor del atributo. En la
Figura 1, los atributos de cada objeto, nodo o arco, se representan
por el nombre del atributo, el signo igual, y el valor del
atributo.
Un mapa de bits (ver D9) es una estructura de
datos en forma de vector para almacenar colecciones de variables
lógicas en forma de bit de manera compacta como los representados en
la Figura 2.
En la presente invención los mapas de bits se
utilizan para manipular y consultar nodos o arcos de un multigrafo y
las relaciones entre ellos. Además, en la representación propuesta
se considera que un mapa de bits incluye un contador de presencia
que contabiliza el número de bits de la estructura que valen 1. La
longitud de un mapa de bits depende de la posición del último bit
que vale 1. En la Figura 1 se representan mapas de bits de
diferentes contenidos y longitudes, incluyendo el mapa de bits
vacío.
Existen operaciones o procesos básicos para
manipular un mapa de bits, como marcar un bit (poner a 1, cierto o
presente), desmarcar un bit (poner a 0, falso o ausente), y
preguntar si un bit está a 1 (cierto o presente) o no.
Existen operaciones de teoría de conjuntos que
se pueden realizar a partir de combinaciones bit a bit de mapas de
bits. Por ejemplo, dados dos mapas de bits, se pueden calcular
directamente las operaciones bit a bit unión (u operación lógica O),
donde el mapa de bits resultado tiene marcados a 1 todos los bits
que están marcados a 1 en alguno de los mapas de bits operados, y la
intersección (u operación lógica Y), cuyo mapa de bits resultado
tiene marcados a 1 todos los bits que están marcados a 1 en todos
los mapas de bits operados. La Figura 3 contiene un ejemplo de la
unión de dos mapas de bits, y de su posterior intersección con otro
mapa de bits.
Todo objeto en un multigrafo, se identifica a
partir de un número único natural mayor que 0, referido como
identificador de objeto. Un objeto con identificador i > 0
pertenece a una colección de objetos representada por un mapa de
bits únicamente si la posición i del mapa de bits está
marcada con un 1. En caso contrario, el objeto no pertenece a la
colección.
Un mapeo (ver D8) es una estructura de datos que
relaciona elementos en un conjunto origen de claves únicas y un
conjunto imagen de datos. La presente invención utiliza mapeos entre
identificadores de objeto y valores (Figura 4a), y entre valores y
mapas de bits (Figura 4b). En la figura, las claves únicas se
representan a la izquierda, y sus valores o datos asociados
(mapeados) a su derecha.
El conjunto de valores para cada uno de los
objetos, nodos o arcos, de un mismo atributo de un tipo de objeto se
representa con dos mapeos, uno entre el identificador de objeto y su
valor asociado, y otro entre cada valor diferente y un mapa de bits
que especifica los identificadores de objeto de todos los objetos de
ese tipo que contienen dicho valor en ese
atributo.
atributo.
La Figura 5 muestra los dos mapeos para un
atributo concreto, dónde el mapeo mostrado a la izquierda es entre
el identificador de objeto y su valor asociado, y el mapeo de la
derecha es entre cada valor diferente y un mapa de bits. Se puede
verificar que todo identificador de objeto del mapeo izquierdo se
encuentra presente en el mapa de bits asociado a su valor en el
mapeo derecho. De igual forma, se puede verificar que todos los
valores del mapeo izquierdo se encuentran como claves del mapeo
derecho. También se puede verificar que la suma de las
cardinalidades de los mapas de bits del mapeo derecho equivale al
total de asociaciones del mapeo izquierdo. Finalmente, se puede
verificar que para cada valor del mapeo derecho y para cada posición
presente (marcada a 1) en su mapa de bits asociado, existe una
asociación entre dicha posición y el valor en el mapeo
izquierdo.
La Figura 6 muestra la representación de un
grafo con mapas de bits y mapeos. Así, se puede ver que para cada
tipo de objeto en un multigrafo dirigido existe un mapa de bits que
indica que identificadores de objeto se corresponden a objetos del
tipo concreto. Los contadores en la parte izquierda de dichos mapas
de bits permiten conocer de manera inmediata cuántos objetos de cada
tipo existen en el multigrafo.
En la Figura 6, cada atributo de nodo o arco
está representado por sus dos mapeos en una caja cuyo título
contiene el nombre del atributo.
Para cada nodo que posee arcos salientes, existe
un mapa de bits en el mapeo de arcos salientes que especifica los
identificadores de objeto de todos los arcos salientes desde ese
nodo, como se puede ver en la Figura 6, dentro del mapeo derecho de
la caja arcos salientes.
Para cada nodo que posee arcos entrantes, existe
un mapa de bits en el mapeo de arcos entrantes que especifica los
identificadores de objeto de todos los arcos entrantes desde ese
nodo, como se puede ver en la Figura 6, dentro del mapeo derecho de
la caja arcos entrantes.
Existe un mapeo que relaciona cada identificador
de arco con el identificador de su nodo saliente, y otro mapeo que
relaciona cada identificador de arco con su identificador de nodo
entrante, como se puede verificar en la Figura 6, en los mapeos
izquierdos de las cajas arcos salientes y arcos
entrantes.
El procedimiento para añadir un nuevo nodo al
multigrafo es: en el mapa de bits de nodos de su tipo de nodo se
marca la posición correspondiente al identificador único de nodo y
se actualiza el contador de bits marcados, el cual equivale al
número total de nodos de dicho tipo (Figura 7, acción A).
El procedimiento para eliminar un nodo del
multigrafo se realiza deshaciendo los pasos anteriores en el mismo
orden.
El procedimiento para añadir un nuevo arco al
multigrafo es: en primer lugar se marca la posición correspondiente
al identificador único de arco en el mapa de bits de arcos de su
tipo de nodo, y se actualiza el contador de bits marcados, el cual
equivale al número total de arcos de dicho tipo (Figura 8, acción
A). A continuación, se actualiza en el mapeo de arcos salientes la
asociación entre el arco y el nodo saliente (Figura 8, acción B), se
marca la posición correspondiente al identificador único de arco en
el mapa de bits de arcos salientes del nodo saliente, y se actualiza
el contador de bits marcados, el cual equivale al número de arcos
salientes a dicho nodo (Figura 8, acción C). De igual forma, se
actualiza en el mapeo de arcos entrantes la asociación entre el arco
y el nodo entrante (Figura 8, acción D), se marca la posición
correspondiente al identificador único de arco en el mapa de bits de
arcos entrantes del nodo entrante, y se actualiza el contador de
bits marcados, el cual equivale al número de arcos entrantes a dicho
nodo (Figura 8, acción E).
El procedimiento para eliminar un nodo del
multigrafo se realiza deshaciendo los pasos anteriores en el mismo
orden.
El procedimiento para añadir un nuevo atributo a
un nodo del multigrafo es: primero se actualiza la asociación entre
el identificador único de nodo y el valor del atributo en el mapeo
de identificadores de objeto y valores del atributo correspondiente
(Figura 9, acción A). A continuación, se marca la posición
correspondiente al identificador único de nodo en el mapa de bits de
nodos asociado al valor del atributo, y se actualiza el contador de
bits marcados, el cual equivale al número de nodos que tienen dicho
valor para dicho atributo (Figura 9, acción B).
El procedimiento para añadir un nuevo atributo a
un arco del multigrafo se realiza repitiendo los pasos anteriores
para el atributo del tipo de arco correspondiente.
El procedimiento para eliminar un atributo de un
nodo o arco del multigrafo se realiza deshaciendo los pasos
anteriores en el mismo orden.
El procedimiento para obtener el conjunto de
arcos salientes de un nodo se basa en seleccionar el mapa de bits
asociado al identificador único de nodo en el mapeo entre nodos
salientes y mapas de bits de arcos salientes (Figura 10, acción
A).
El procedimiento para obtener el conjunto de
arcos entrantes de un nodo se basa en seleccionar el mapa de bits
asociado al identificador único de nodo en el mapeo entre nodos
entrantes y mapas de bits de arcos entrantes (Figura 10, acción
B).
El procedimiento para obtener el conjunto
completo de arcos salientes y entrantes de un nodo es: primero se
obtienen el mapa de bits de identificadores de arcos salientes,
posteriormente el mapa de bits de identificadores de arcos entrantes
como, y finalmente, se obtiene el mapa de bits con los arcos
entrantes y salientes del nodo como resultado de la operación de
unión bit a bit de los dos mapas de bits seleccionados anteriormente
(Figura 10, acción C).
El procedimiento para obtener los nodos entrante
y saliente de un arco es: en primer lugar se obtiene el valor
asociado al identificador único de arco en el mapeo entre arcos
salientes y nodos salientes (Figura 11, acción A). A continuación,
se obtiene el valor asociado al identificador único de arco en el
mapeo entre arcos entrantes y nodos entrantes (Figura 11, acción
B).
El procedimiento para obtener los nodos de un
cierto tipo de nodo se basa en seleccionar el mapa de bits de nodos
de dicho tipo de nodo (Figura 12, acción A).
El procedimiento para obtener los arcos de un
cierto tipo de arco se basa en seleccionar el mapa de bits de arcos
de dicho tipo de arco.
El procedimiento para obtener los nodos de un
cierto tipo de nodo que tienen un valor en particular para un
atributo se basa en seleccionar el mapa de bits de identificadores
de nodos asociado a dicho valor en el mapeo entre valores e
identificadores únicos de nodo de dicho atributo del tipo de nodo
correspondiente (Figura 13, acción A).
El procedimiento para obtener los arcos de un
cierto tipo de arco que tienen un valor en particular para un
atributo, repite el procedimiento del párrafo anterior para el tipo
de arco correspondiente.
El procedimiento para obtener el valor de un
atributo de un nodo dado se basa en devolver el valor asociado al
identificador de nodo en el mapeo de identificador a valor del
atributo del tipo de objeto del nodo (Figura 14, acción A).
El procedimiento para obtener el valor de un
atributo de un arco dado, repite el procedimiento del párrafo
anterior para el tipo de arco correspondiente.
La presente invención es aplicable de forma
genérica a la manipulación de cualquier conjunto de datos
organizados en forma de red.
Aunque la aplicación sobre multigrafos como el
de la Figura 1 se materializa preferiblemente en forma de programa
informático, también se puede presentar alternativamente como un
circuito digital que siga la misma lógica, un diseño industrial o
cualquier combinación de las tres anteriores.
Aunque se presente un diseño modular concreto a
modo de ejemplo, la misma invención se puede presentar en un diseño
distinto con un número diferente de nodos mayor o menor y/o nombres
distintos para cada módulo.
Aunque en la descripción de la aplicación
preferente descrita en este documento se utilizan mapas de bits, la
presente invención preserva su aplicabilidad para otras estructuras
de datos alternativas que permitan guardar información sobre la
presencia de objetos, como por ejemplo, mapas de bits comprimidos,
mapas de bits cambiando la interpretación de ceros por unos y unos
por ceros, cualquier representación de conjuntos de valores cierto o
falso, etc.
Aunque en la descripción de la aplicación
preferente descrita en este documento se utilizan mapeos, la
presente invención preserva su aplicabilidad para otras estructuras
de datos alternativas que permitan establecer una asociación unívoca
entre una clave y su valor, como por ejemplo, tablas de hash,
árboles binarios, árboles binarios balanceados, matrices
asociativas, etc.
Aunque en la descripción de la aplicación
preferente descrita en este documento se utilizan multigrafos
dirigidos etiquetados con atributos, la presente invención preserva
su aplicabilidad aunque el multigrafo se reduzca a un grafo, el
multigrafo no sea dirigido, el multigrafo no sea etiquetado, no
existan atributos o cualquier combinación de las anteriores.
Claims (8)
1. Procedimiento para manipular y consultar
mediante un sistema computacional multigrafos dirigidos etiquetados
y con atributos mediante estructuras de datos en forma de mapas de
bits y mapeos, en donde dichas estructuras de datos comprenden:
- a.
- nodos y arcos del multigrafo que se denominan objetos del multigrafo, que están asociados a un tipo concreto de objeto y contienen valores asociados denominados atributos.
- b.
- objetos del multigrafo identificados mediante un identificador numérico único.
- c.
- para cada tipo de objeto, el identificador numérico único de los objetos del multigrafo, según el apartado b, almacenado mediante el uso de un mapa de bits, marcando el bit en la posición correspondiente al identificador de cada objeto e incrementando un contador de objetos en el mismo.
- d.
- para cada atributo asociado a un objeto del multigrafo de un tipo concreto se usa un mapeo en el cual, para cada valor en susodicho atributo se asigna un mapa de bits que contiene el número de objetos de ese tipo que contienen dicho valor en dicho atributo y en el cual se marca el bit en la posición correspondiente al identificador de cada uno de estos objetos.
- e.
- para a cada atributo asociado a un objeto del multigrafo de un tipo concreto se usa un mapeo en el cual, para cada identificador de cada uno de estos objetos, se asigna el valor en dicho atributo.
- f.
- para cada nodo con uno o más arcos de salida el identificador numérico único de estos arcos, según el apartado b, se almacena mediante el uso de un mapa de bits, marcando el bit en la posición correspondiente al identificador de cada arco saliente y incrementando un contador de objetos en el mismo.
- g.
- para cada nodo con uno o más arcos de entrada el identificador numérico único de estos arcos, según el apartado b, se almacena mediante el uso de un mapa de bits, marcando el bit en la posición correspondiente al identificador de cada arco entrante e incrementando un contador de objetos en el mismo.
- h.
- un mapeo que relaciona el identificador único de los nodos con uno o más arcos de salida y los mapas de bits asociados, según el apartado d.
- i.
- un mapeo que relaciona el identificador único de los arcos con el identificador único de su nodo origen.
- j.
- un mapeo que relaciona el identificador único de los nodos con uno o más arcos de entrada y los mapas de bits asociados, según el apartado g.
- k.
- un mapeo que relaciona el identificador único de los arcos con el identificador único de su nodo destino,
caracterizado porque dicho procedimiento
de manipulación comprende transformar un multigrafo de manera que
insertar un nuevo nodo implica modificar el valor de un mapa de bits
correspondiente al objeto, marcando el bit en la posición
correspondiente al identificador de dicho objeto y poniendo un bit a
uno, según el apartado c.
2. Procedimiento según la reivindicación 1, en
el cual insertar un nuevo arco implica modificar el valor de un mapa
de bits, poniendo un bit a uno, según el apartado c, asociar los
valores correspondientes al identificador del nuevo nodo y los
identificadores de los nodos unidos por el nuevo arco en los mapeos,
según los apartados h, i, j y k.
3. Procedimiento según la reivindicación 1, en
el cual insertar un nuevo valor a un atributo en un objeto se
realiza asociando valores al identificador del objeto, para ese
atributo, a través de mapeos, según los apartados d y e de la
reivindicación 1.
4. Procedimiento según la reivindicación 1, en
el cual la consulta de un multigrafo, comprende obtener los arcos de
entrada y salida de un nodo implica acceder a dos mapas de bits a
través de dos mapeos entre el identificador de objeto de dicho nodo
y dichos mapas de bits, según los apartados h y j de la
reivindicación 1, y la posterior operación lógica bit a bit de unión
de los dos mapas de bits obtenidos.
5. Procedimiento, según la reivindicación 4, en
el cual para dicha consulta obtener los nodos origen y destino de un
arco se realiza accediendo directamente a los identificadores de
objeto de dicho nodos a través de dos mapeos entre el identificador
de objeto de dicho arco y los identificadores de los nodos extremos,
según los apartados i y k de la reivindicación 1.
6. Procedimiento según la reivindicación 4, en
el cual para dicha consulta obtener los nodos de un tipo dado se
realiza retornando un mapa de bits existente, según el apartado c de
la reivindicación 1.
7. Procedimiento según la reivindicación 4, en
el cual para dicha consulta obtener los nodos de un tipo que tienen
un cierto valor en un atributo dado implica retornar un mapa de bits
existente que se obtiene a través de un mapeo que relaciona el valor
con el mapa de bits, según el apartado d de la reivindicación 1.
8. Procedimiento según la reivindicación 4, en
el cual en dicha consulta obtener el valor de un atributo para un
objeto dado implica devolver el valor asociado al identificador de
objeto en el mapeo de identificadores de objeto a valor del atributo
correspondiente, según el apartado e de la reivindicación 1.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES200802251A ES2370541B1 (es) | 2008-07-22 | 2008-07-22 | Procedimiento para manipular y consultar mediante un sistema computacional multigrafos dirigidos, etiquetados y con atributos |
CA2731799A CA2731799C (en) | 2008-07-22 | 2009-07-17 | Process for representing and handling multigraphs based on the use of bitmaps |
PCT/IB2009/006271 WO2010010436A2 (en) | 2008-07-22 | 2009-07-17 | Process for representing and handling multigraphs based on the use of bitmaps |
EP09786021A EP2313836A2 (en) | 2008-07-22 | 2009-07-17 | Process for representing and handling multigraphs based on the use of bitmaps |
US13/012,230 US8312052B2 (en) | 2008-07-22 | 2011-01-24 | Process for transforming and consulting directed and attributed multigraphs based on the use of maps and bitmaps |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
ES200802251A ES2370541B1 (es) | 2008-07-22 | 2008-07-22 | Procedimiento para manipular y consultar mediante un sistema computacional multigrafos dirigidos, etiquetados y con atributos |
Publications (2)
Publication Number | Publication Date |
---|---|
ES2370541A1 true ES2370541A1 (es) | 2011-12-19 |
ES2370541B1 ES2370541B1 (es) | 2012-10-26 |
Family
ID=41570661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES200802251A Active ES2370541B1 (es) | 2008-07-22 | 2008-07-22 | Procedimiento para manipular y consultar mediante un sistema computacional multigrafos dirigidos, etiquetados y con atributos |
Country Status (5)
Country | Link |
---|---|
US (1) | US8312052B2 (es) |
EP (1) | EP2313836A2 (es) |
CA (1) | CA2731799C (es) |
ES (1) | ES2370541B1 (es) |
WO (1) | WO2010010436A2 (es) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4839424B2 (ja) * | 2008-12-15 | 2011-12-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの解析を支援するための方法、並びにそのコンピュータ・プログラム及びコンピュータ・システム |
US8724516B2 (en) * | 2011-10-06 | 2014-05-13 | Rockwell Collins, Inc. | Unifying connected dominating set using localized two hop information with a flexible dominating factor |
US9934327B2 (en) * | 2015-06-01 | 2018-04-03 | International Business Machines Corporation | Mining relevant approximate subgraphs from multigraphs |
WO2019209977A1 (en) * | 2018-04-26 | 2019-10-31 | Becton, Dickinson And Company | Biexponential transformation for particle sorters |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6781599B2 (en) * | 2001-01-04 | 2004-08-24 | At&T | System and method for visualizing massive multi-digraphs |
US7457286B2 (en) * | 2003-03-31 | 2008-11-25 | Applied Micro Circuits Corporation | Accelerating the shortest path problem |
US7640536B1 (en) * | 2005-09-27 | 2009-12-29 | Rockwell Collins, Inc. | Variable graph minimization for improved model-checking performance |
US8166466B2 (en) * | 2007-06-22 | 2012-04-24 | Microsoft Corporation | Function matching in binaries |
US8087022B2 (en) * | 2007-11-27 | 2011-12-27 | International Business Machines Corporation | Prevention of deadlock in a distributed computing environment |
-
2008
- 2008-07-22 ES ES200802251A patent/ES2370541B1/es active Active
-
2009
- 2009-07-17 CA CA2731799A patent/CA2731799C/en active Active
- 2009-07-17 EP EP09786021A patent/EP2313836A2/en not_active Withdrawn
- 2009-07-17 WO PCT/IB2009/006271 patent/WO2010010436A2/en active Application Filing
-
2011
- 2011-01-24 US US13/012,230 patent/US8312052B2/en active Active
Non-Patent Citations (1)
Title |
---|
N. Martínez-Bazán et al: "DEX: High-performance exploration on large graphs for information retrieval", Proceedings of ACM Sixteenth Conference on Information and Knowledge Management (CIKM 2007), 6-9 Nov. 2007, Lisboa, Portugal, Noviembre 2007, páginas 573-582. ISBN: 978-1-59593-803-9 * |
Also Published As
Publication number | Publication date |
---|---|
WO2010010436A2 (en) | 2010-01-28 |
CA2731799A1 (en) | 2010-01-28 |
ES2370541B1 (es) | 2012-10-26 |
EP2313836A2 (en) | 2011-04-27 |
US8312052B2 (en) | 2012-11-13 |
CA2731799C (en) | 2017-05-02 |
WO2010010436A3 (en) | 2011-04-21 |
WO2010010436A8 (en) | 2010-03-25 |
US20110191359A1 (en) | 2011-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220043832A1 (en) | Method and/or system for tree transformation | |
US10896223B2 (en) | Efficient method for subgraph pattern matching | |
US6560610B1 (en) | Data structure using a tree bitmap and method for rapid classification of data in a database | |
US20240070164A1 (en) | Method and/or system for transforming between trees and strings | |
Ehrenfeucht et al. | Theory Of 2-structures, The: A Framework For Decomposition And Transformation Of Graphs | |
US9177003B2 (en) | Manipulating sets of heirarchical data | |
CN106557568B (zh) | 模式匹配的xml文件格式与关系数据库转换的处理方法 | |
RU2005105582A (ru) | База данных и система управления знаниями | |
ES2370541A1 (es) | Procedimiento para representar y manipular multigrafos basados en el uso de mapas bits. | |
CN102254012A (zh) | 一种基于外存的图数据存储方法及子图查询方法 | |
CN111190904A (zh) | 一种图-关系数据库混合存储的方法和装置 | |
CN104778258A (zh) | 一种面向协议数据流的数据抽取方法 | |
Marx | Parameterized coloring problems on chordal graphs | |
Grigorchuk et al. | Just-infinite $ C^* $-algebras | |
CN103927325B (zh) | 一种对url进行分类的方法及装置 | |
Hung et al. | Finding a minimum path cover of a distance-hereditary graph in polynomial time | |
Berthomé et al. | An unified FPT algorithm for width of partition functions | |
CN110825846B (zh) | 数据处理方法及装置 | |
Tamassia | On-line planar graph embedding | |
CN110083603A (zh) | 一种基于邻接表实现节点路径的查询方法及系统 | |
US20110208782A1 (en) | Method and computer program product for creating ordered data structure | |
Witkowski | Random lifts of graphs are highly connected | |
Johnson et al. | Rank one and loosely Bernoulli actions in | |
CN1588368A (zh) | 基于模式的xml存储方法及应用 | |
Zheng et al. | Genome rearrangements with partially ordered chromosomes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FG2A | Definitive protection |
Ref document number: 2370541 Country of ref document: ES Kind code of ref document: B1 Effective date: 20121026 |