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 PDF

Info

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
Application number
ES200802251A
Other languages
English (en)
Other versions
ES2370541B1 (es
Inventor
Josep Lluis LARRIBA PEY
Norbert Martínez Bazán
Víctor Muntes Mulero
Sergio Gómez Villamor
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Universitat Politecnica de Catalunya UPC
Original Assignee
Universitat Politecnica de Catalunya UPC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Universitat Politecnica de Catalunya UPC filed Critical Universitat Politecnica de Catalunya UPC
Priority to ES200802251A priority Critical patent/ES2370541B1/es
Priority to CA2731799A priority patent/CA2731799C/en
Priority to PCT/IB2009/006271 priority patent/WO2010010436A2/en
Priority to EP09786021A priority patent/EP2313836A2/en
Priority to US13/012,230 priority patent/US8312052B2/en
Publication of ES2370541A1 publication Critical patent/ES2370541A1/es
Application granted granted Critical
Publication of ES2370541B1 publication Critical patent/ES2370541B1/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; 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.
Antecedentes de la invención
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.
Definiciones
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.
Descripción resumida de la invención
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.
Breve descripción de las figuras
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.
Descripción detallada de la invención
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.
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.
ES200802251A 2008-07-22 2008-07-22 Procedimiento para manipular y consultar mediante un sistema computacional multigrafos dirigidos, etiquetados y con atributos Active ES2370541B1 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
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