KR20230099120A - Method and apparatus for continuous subgraph matching using dynamic candidate space - Google Patents
Method and apparatus for continuous subgraph matching using dynamic candidate space Download PDFInfo
- Publication number
- KR20230099120A KR20230099120A KR1020210188220A KR20210188220A KR20230099120A KR 20230099120 A KR20230099120 A KR 20230099120A KR 1020210188220 A KR1020210188220 A KR 1020210188220A KR 20210188220 A KR20210188220 A KR 20210188220A KR 20230099120 A KR20230099120 A KR 20230099120A
- Authority
- KR
- South Korea
- Prior art keywords
- graph
- dag
- vertex
- data graph
- embedding
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 68
- 230000036961 partial effect Effects 0.000 claims abstract description 33
- 238000003780 insertion Methods 0.000 claims description 42
- 230000037431 insertion Effects 0.000 claims description 42
- 238000012217 deletion Methods 0.000 claims description 20
- 230000037430 deletion Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 20
- 238000012545 processing Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000002441 reversible effect Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000009795 derivation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001151 other effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- 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/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
본 발명은 연속적 부분 그래프 매칭 방법 및 장치에 관한 것으로, 동적 후보 공간을 이용한 연속적 부분 그래프 매칭 방법 및 장치에 관한 것이다.The present invention relates to a continuous subgraph matching method and apparatus, and more particularly, to a continuous subgraph matching method and apparatus using a dynamic candidate space.
이하에서 기술되는 내용은 본 발명의 실시예와 관련되는 배경 정보를 제공할 목적으로 기재된 것일 뿐이고, 기술되는 내용들이 당연하게 종래기술을 구성하는 것은 아니다.The contents described below are only described for the purpose of providing background information related to an embodiment of the present invention, and the contents described do not naturally constitute prior art.
연속적 부분 그래프 매칭 문제는 간선 삽입 및 삭제가 일어남에 따라 그래프가 변화할 때 새로 생기거나 삭제되는 치명적인 패턴 혹은 이벤트를 탐지하는 문제로, 그래프 분석에서 가장 핵심적인 문제 중 하나이다.The contiguous subgraph matching problem is a problem of detecting fatal patterns or events that are newly created or deleted when the graph changes due to insertion and deletion of edges, and is one of the most important problems in graph analysis.
연속적 부분 그래프 매칭 문제를 풀기 위한 선행 연구가 활발히 진행되어 왔다. TurboFlux는 데이터 그래프의 간선과 질의 그래프로 만든 신장 트리(spanning tree)의 간선으로 이루어진 모든 쌍에 대해 두 간선이 대응될 수 있는지에 정보를 저장하고 이 정보를 토대로 탐색 공간을 줄여 임베딩을 탐색한다.Prior research has been actively conducted to solve the continuous subgraph matching problem. TurboFlux stores information on whether two edges can be matched for all pairs consisting of the edges of the data graph and the edges of the spanning tree made of the query graph, and searches for embeddings by reducing the search space based on this information.
하지만, TurboFlux는 질의 그래프의 신장 트리를 이용하기 때문에 질의 그래프의 모든 간선을 고려하지 못한다. 또한, TurboFlux는 데이터 그래프에서 간선이 삭제되었을 때 자료 구조를 갱신하는 방법이 데이터 그래프에 간선이 삽입되었을 때 갱신하는 방법에 비해서 한참 느리다.However, since TurboFlux uses the spanning tree of the query graph, it cannot consider all edges of the query graph. Also, in TurboFlux, the method of updating the data structure when an edge is deleted from the data graph is much slower than the method of updating when an edge is inserted into the data graph.
연속적 부분 그래프 매칭 문제는 금융 거래에서의 사기 탐지, 컴퓨터 통신 네트워크에서의 사이버 보안, 소셜 네트워크에서의 추천 시스템 등 다양한 분야에서 응용할 수 있다. 이와 같은 응용 시스템이 효과적으로 작동하기 위하여, 연속적 부분 그래프 매칭 문제를 보다 빠르게 해결할 수 있는 기술이 필요하다.The continuous subgraph matching problem can be applied to various fields such as fraud detection in financial transactions, cyber security in computer communication networks, and recommendation systems in social networks. In order for such an application system to operate effectively, a technique capable of solving the continuous subgraph matching problem more quickly is required.
한편, 전술한 선행기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.On the other hand, the above-mentioned prior art is technical information that the inventor possessed for derivation of the present invention or acquired during the derivation process of the present invention, and cannot necessarily be said to be known art disclosed to the general public prior to the filing of the present invention. .
본 발명의 일 과제는 동적 후보 공간을 활용한 연속적 부분 그래프 매칭 방법 및 장치를 제공하는 것이다.An object of the present invention is to provide a continuous subgraph matching method and apparatus using a dynamic candidate space.
본 발명의 일 과제는 연속적 부분 그래프 매칭을 효율적으로 수행하기 위한 자료 구조인 동적 후보 공간과 동적 후보 공간의 갱신 알고리즘을 제안하는 것이다.An object of the present invention is to propose a dynamic candidate space, which is a data structure for efficiently performing contiguous subgraph matching, and an update algorithm for the dynamic candidate space.
본 발명의 목적은 이상에서 언급한 과제에 한정되지 않으며, 언급되지 않은 본 발명의 다른 목적 및 장점들은 하기의 설명에 의해서 이해될 수 있고, 본 발명의 실시 예에 의해 보다 분명하게 이해될 것이다. 또한, 본 발명의 목적 및 장점들은 청구범위에 나타낸 수단 및 그 조합에 의해 실현될 수 있음을 알 수 있을 것이다.The object of the present invention is not limited to the above-mentioned tasks, and other objects and advantages of the present invention not mentioned above can be understood by the following description and will be more clearly understood by the embodiments of the present invention. It will also be seen that the objects and advantages of the present invention may be realized by means of the instrumentalities and combinations indicated in the claims.
본 발명의 일 실시예에 따른 질의 그래프 및 데이터 그래프 간의 연속적 부분 그래프 매칭 방법은, 질의 그래프로부터 루트가 있는 DAG(Directed Acyclic Graph)를 획득하는 단계, 데이터 그래프 및 상기 DAG에 기반하여 상기 질의 그래프와 상기 데이터 그래프 간의 연속적 부분 그래프 매칭을 위한 동적 후보 공간(Dynamic Candidate Space; DCS)을 획득하는 단계 및 상기 데이터 그래프의 갱신 작업에 따라 상기 동적 후보 공간을 이용하여 상기 연속적 부분 그래프 매칭을 탐색하는 단계를 포함할 수 있고, 상기 동적 후보 공간은, 상기 질의 그래프의 정점에 대한 상기 데이터 그래프의 후보 정점의 집합, 상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 역방향 부분 DAG의 임베딩과 연계된 제 1 임베딩 정보 및 상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 부분 DAG의 임베딩과 연계된 제 2 임베딩 정보를 포함할 수 있다.A continuous subgraph matching method between a query graph and a data graph according to an embodiment of the present invention includes obtaining a Directed Acyclic Graph (DAG) having a root from a query graph, the query graph and the query graph based on the data graph and the DAG. Acquiring a dynamic candidate space (DCS) for continuous subgraph matching between the data graphs and searching for the continuous subgraph matching using the dynamic candidate space according to an update operation of the data graph The dynamic candidate space may include a set of candidate vertices of the data graph for a vertex of the query graph, and a backward part having a vertex of the DAG corresponding to a vertex of the query graph as a root in the candidate vertex. First embedding information associated with the embedding of the DAG and second embedding information associated with the embedding of a partial DAG having a vertex of the DAG corresponding to a vertex of the query graph as a root in the candidate vertices.
본 발명의 일 실시예에 따른 질의 그래프 및 데이터 그래프 간의 연속적 부분 그래프 매칭 장치는, 적어도 하나의 명령어를 저장하는 메모리; 및 프로세서를 포함하고, 상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 질의 그래프로부터 루트가 있는 DAG(Directed Acyclic Graph)를 획득하고, 데이터 그래프 및 상기 DAG에 기반하여 상기 질의 그래프와 상기 데이터 그래프 간의 연속적 부분 그래프 매칭을 위한 동적 후보 공간(Dynamic Candidate Space; DCS)을 획득하고, 상기 데이터 그래프의 갱신 작업에 따라 상기 동적 후보 공간을 이용하여 상기 연속적 부분 그래프 매칭을 탐색하도록 구성되고, 상기 동적 후보 공간은, 상기 질의 그래프의 정점에 대한 상기 데이터 그래프의 후보 정점의 집합. 상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 역방향 부분 DAG의 임베딩과 연계된 제 1 임베딩 정보 및 상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 부분 DAG의 임베딩과 연계된 제 2 임베딩 정보를 포함할 수 있다.An apparatus for matching a continuous partial graph between a query graph and a data graph according to an embodiment of the present invention includes a memory for storing at least one command; and a processor, wherein the at least one instruction, when executed by the processor, causes the processor to obtain a Directed Acyclic Graph (DAG) with a root from a query graph, and to obtain the query graph based on a data graph and the DAG. Acquiring a Dynamic Candidate Space (DCS) for continuous subgraph matching between the data graph and searching for the continuous subgraph matching using the dynamic candidate space according to an update operation of the data graph; , the dynamic candidate space is a set of candidate vertices of the data graph for vertices of the query graph. In the candidate vertices, first embedding information associated with embedding of a reverse partial DAG having a vertex of the DAG corresponding to a vertex of the query graph as a root, and in the candidate vertices, information of the DAG corresponding to a vertex of the query graph. Second embedding information associated with embedding of a partial DAG having a vertex as a root may be included.
전술한 것 외의 다른 측면, 특징 및 이점이 이하의 도면, 청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.Other aspects, features and advantages other than those described above will become apparent from the following drawings, claims and detailed description of the invention.
실시예에 의하면, 동적 후보 공간(dynamic candidate space, DCS)을 활용한 효율적으로 연속적 부분 그래프 매칭을 수행할 수 있다.According to the embodiment, it is possible to perform contiguous subgraph matching efficiently using a dynamic candidate space (DCS).
실시예에 의하면, 데이터 그래프 갱신에 따라 DCS를 처음부터 다시 계산하지 않고 바뀌는 부분에 대해서만 효율적으로 갱신할 수 있다.According to the embodiment, the DCS can be efficiently updated only for the changed part without recalculating the DCS from the beginning according to the update of the data graph.
실시예에 의하면, DCS는 질의 그래프의 모든 간선을 고려한 정보를 저장하므로, 탐색 공간을 줄여 임베딩 탐색을 효율적으로 할 수 있다.According to the embodiment, since the DCS stores information considering all edges of the query graph, embedding search can be efficiently performed by reducing the search space.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.The effects of the present invention are not limited to those mentioned above, and other effects not mentioned will be clearly understood by those skilled in the art from the description below.
도 1은 실시예에 따른 연속적 부분 그래프 매칭을 개략적으로 설명하기 위한 도면이다.
도 2a 및 도 2b는 연속적 부분 그래프 매칭 문제를 예시적으로 설명하기 위한 도면이다.
도 3a는 예시적인 질의 그래프의 신장 트리, 도 3b는 예시적인 질의 그래프의 방향성 비순환 그래프(DAG), 도 3c는 예시적인 질의 그래프의 경로 트리(path tree)를 각각 도시한다.
도 4는 실시예에 따른 연속적 부분 그래프 매칭 장치의 블록도이다.
도 5는 실시예에 따른 연속적 부분 그래프 매칭 방법의 개략적인 흐름도이다.
도 6은 실시예에 따른 동적 후보 공간을 활용한 연속적 부분 그래프 매칭 방법의 흐름도이다.
도 7a는 내지 도 7c는 실시예에 따른 동적 후보 공간의 갱신 과정을 예시적으로 설명하기 위한 도면이다.
도 8은 갱신 작업이 간선 삽입일 경우 실시예에 따른 동적 후보 공간을 갱신하는 방법의 흐름도이다.
도 9는 갱신 작업이 간선 삽입일 경우 실시예에 따른 동적 후보 공간을 갱신하는 방법의 세부 흐름도이다.
도 10은 갱신 작업이 간선 삽입일 경우 실시예에 따른 동적 후보 공간을 갱신하는 방법의 세부 흐름도이다.1 is a diagram schematically illustrating continuous partial graph matching according to an embodiment.
2A and 2B are diagrams for explaining a contiguous subgraph matching problem by way of example.
3A shows a spanning tree of the exemplary query graph, FIG. 3B shows a directed acyclic graph (DAG) of the exemplary query graph, and FIG. 3C shows a path tree of the exemplary query graph, respectively.
4 is a block diagram of a continuous partial graph matching device according to an embodiment.
5 is a schematic flowchart of a continuous partial graph matching method according to an embodiment.
6 is a flowchart of a continuous subgraph matching method using a dynamic candidate space according to an embodiment.
7A to 7C are diagrams for illustratively explaining a process of updating a dynamic candidate space according to an embodiment.
8 is a flowchart of a method for updating a dynamic candidate space according to an embodiment when an update operation is trunk insertion.
9 is a detailed flowchart of a method for updating a dynamic candidate space according to an embodiment when an update operation is trunk insertion.
10 is a detailed flowchart of a method for updating a dynamic candidate space according to an embodiment when an update operation is trunk insertion.
이하에서는 도면을 참조하여 본 발명을 보다 상세하게 설명한다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시 예들에 한정되지 않는다. 이하 실시 예에서는 본 발명을 명확하게 설명하기 위해서 설명과 직접적인 관계가 없는 부분을 생략하지만, 본 발명의 사상이 적용된 장치 또는 시스템을 구현함에 있어서, 이와 같이 생략된 구성이 불필요함을 의미하는 것은 아니다. 아울러, 명세서 전체를 통하여 동일 또는 유사한 구성요소에 대해서는 동일한 참조번호를 사용한다.Hereinafter, the present invention will be described in more detail with reference to the drawings. The invention may be embodied in many different forms and is not limited to the embodiments set forth herein. In the following embodiments, parts not directly related to the description are omitted in order to clearly describe the present invention, but this does not mean that the omitted configuration is unnecessary in implementing a device or system to which the spirit of the present invention is applied. . In addition, the same reference numbers are used for the same or similar elements throughout the specification.
이하의 설명에서 제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 되며, 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 또한, 이하의 설명에서 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.In the following description, terms such as first and second may be used to describe various components, but the components should not be limited by the terms, and the terms refer to one component from another. Used only for distinguishing purposes. Also, in the following description, singular expressions include plural expressions unless the context clearly indicates otherwise.
이하의 설명에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In the following description, terms such as "comprise" or "having" are intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other It should be understood that it does not preclude the possibility of addition or existence of features, numbers, steps, operations, components, parts, or combinations thereof.
본 발명은 빅데이터 그래프 분석 알고리즘에 관한 것으로, 상세하게는 데이터 그래프가 갱신될 때 질의 그래프의 매칭 정보를 담고 있는 동적 후보 공간의 정보를 빠르게 갱신하고, 갱신된 정보를 활용하여 효율적으로 부분 그래프 매칭을 수행하는 방법에 관한 것이다.The present invention relates to a big data graph analysis algorithm, and more particularly, when a data graph is updated, information of a dynamic candidate space containing matching information of a query graph is quickly updated, and subgraph matching is efficiently performed using the updated information. It's about how to do it.
이는 연속적 부분 그래프 매칭 문제로 그래프 분석에서 가장 핵심적인 문제 중 하나이다. 연속적 부분 그래프 매칭 문제는 금융 거래에서의 사기 탐지, 컴퓨터 통신 네트워크에서의 사이버 보안, 소셜 네트워크에서의 추천 시스템 등 다양한 분야에서 응용할 수 있다.This is a continuous subgraph matching problem, which is one of the most important problems in graph analysis. The continuous subgraph matching problem can be applied to various fields such as fraud detection in financial transactions, cyber security in computer communication networks, and recommendation systems in social networks.
본 발명은 질의 그래프의 신장 트리 대신 질의 그래프의 방향성 비순환 그래프(DAG)를 이용한 동적 후보 공간(dynamic candidate space, DCS)을 도입하였다. DAG는 질의 그래프의 모든 간선을 포함하기 때문에 신장 트리를 이용한 TurboFlux보다 본 발명이 탐색 공간을 더 줄일 수 있고 이에 따라 연속적 부분 그래프 매칭 문제를 빠르게 해결할 수 있다.The present invention introduces a dynamic candidate space (DCS) using a directed acyclic graph (DAG) of a query graph instead of a spanning tree of a query graph. Since the DAG includes all edges of the query graph, the present invention can further reduce the search space than TurboFlux using spanning trees, and accordingly, it can quickly solve the continuous subgraph matching problem.
또한, 본 발명은 간선 삽입일 때와 간선 삭제일 때 유사하게 동작하는 DCS 갱신 방법을 도입하여 갱신 시간을 개선하였다. 기존 연구에서 자주 사용된 실제 그래프 데이터와 생성된 그래프 데이터를 통해 TurboFlux와의 성능 비교를 통해서 본 발명이 최대 수천 배 빠르다는 것을 확인하였다.In addition, the present invention improves the update time by introducing a DCS update method that operates similarly in the case of trunk insertion and trunk deletion. It was confirmed that the present invention is up to thousands of times faster through performance comparison with TurboFlux through actual graph data and generated graph data frequently used in previous studies.
이하 도면을 참조하여 본 발명을 상세히 설명하기로 한다.The present invention will be described in detail with reference to the drawings below.
도 1은 실시예에 따른 연속적 부분 그래프 매칭을 개략적으로 설명하기 위한 도면이다.1 is a diagram schematically illustrating continuous partial graph matching according to an embodiment.
동적 그래프(dynamic graph)는 간선 삽입(edge insertion) 및 삭제(edge deletion)를 포함하는 그래프 갱신 스트림(graph update stream)에 따라 시간이 지남에 따라 변경되는 그래프이다. 소셜 미디어 스트림, 컴퓨터 네트워크 트래픽, 금융 거래 네트워크는 동적 그래프의 예이다.A dynamic graph is a graph that changes over time according to a graph update stream including edge insertion and edge deletion. Social media streams, computer network traffic, and financial transaction networks are examples of dynamic graphs.
동적 그래프가 많아짐에 따라서 효율적인 동적 그래프 분석에 관한 많은 연구가 진행되고 있다. 그 중, 동적 그래프에서 치명적인 패턴 혹은 이벤트를 탐지하는 것은 연속적 부분 그래프 매칭 문제로 가장 핵심적인 문제 중 하나이다.As the number of dynamic graphs increases, many studies on efficient dynamic graph analysis are being conducted. Among them, detecting fatal patterns or events in dynamic graphs is one of the most critical problems as a continuous subgraph matching problem.
연속적 부분 그래프 매칭 문제(continuous subgraph matching problem)는 주어진 질의 그래프(q), 초기 데이터 그래프(g0) 및 데이터 그래프 갱신 스트림(Δg)에 대해, 데이터 그래프 갱신 스트림(Δg)의 작업에 따라 데이터 그래프(g)가 갱신될 때마다 데이터 그래프(g)에서 새로 생기거나 삭제되는 질의 그래프(q)의 모든 임베딩(embedding)을 찾는 문제이다. 여기서 임베딩은 다음의 정의 1과 같이 정의한다.A continuous subgraph matching problem is a data graph, given a query graph (q), an initial data graph (g 0 ), and a data graph update stream (Δg), according to the task of the data graph update stream (Δg). The problem is to find all embeddings of the query graph (q) that are newly created or deleted in the data graph (g) whenever (g) is updated. Here, embedding is defined as in
[정의 1][Definition 1]
질의 그래프 q와 데이터 그래프 g가 주어졌을 때, g에서 q의 임베딩 M은 다음 조건을 만족하는 단사 함수이다.Given a query graph q and a data graph g, the embedding M of q in g is an injective function that satisfies the following condition.
1) 질의 그래프 q의 정점 u와 정점 u에 대응되는 데이터 그래프 g의 정점 M(u)의 레이블(label)은 같다.1) Vertex u of query graph q and vertex M(u) of data graph g corresponding to vertex u have the same label.
2) 질의 그래프 q의 간선 (u, u')에 대응되는 간선 (M(u), M(u'))이 데이터 그래프 g에 존재한다.2) The edge (M(u), M(u')) corresponding to the edge (u, u') of the query graph q exists in the data graph g.
실시예에 따른 연속적 부분 그래프 매칭 장치(100)는 동적 데이터 그래프(g)에서 주어진 질의 그래프(q)의 임베딩(M)을 찾는다. 즉, 데이터 그래프 갱신 스트림(Δg)에 따른 간선 삽입 또는 간선 삭제와 같은 데이터 그래프 갱신 이벤트(Δo0, Δo1, Δo2; Δoi)대하여, 데이터 그래프(g0,g1,g2; gi)에서 새로 생기거나 삭제되는 질의 그래프(q)의 임베딩(M0,M1, M2; Mi)을 찾는다.The continuous partial
도 2a 및 도 2b는 연속적 부분 그래프 매칭 문제를 예시적으로 설명하기 위한 도면이다.2A and 2B are diagrams for explaining a contiguous subgraph matching problem by way of example.
도 2a는 예시적인 질의 그래프(q)로서, 질의 그래프(q)는 데이터 그래프(g)에서 찾고자 하는 패턴에 대응한다. 부분 그래프 매칭은 데이터 그래프(g)에서 질의 그래프(q)의 임베딩을 찾는 것을 의미한다. 연속적인 부분 그래프 매칭은 일련의 간선 삽입 또는 간선 삭제를 포함하는 데이터 그래프 갱신 스트림(Δg)에 따라 갱신된 데이터 그래프(g)에서 새로 생기거나 삭제되는 질의 그래프(q)의 임베딩을 찾는 것을 의미한다.2A is an exemplary query graph q, which corresponds to a pattern to be found in data graph g. Subgraph matching means finding the embedding of the query graph (q) in the data graph (g). Successive subgraph matching means finding embeddings of a query graph (q) that are newly created or deleted in a data graph (g) updated according to a data graph update stream (Δg) that includes a series of edge insertions or edge deletions. .
도 2b는 예시적인 데이터 그래프(g)로서, 초기 데이터 그래프(g0)와 두 개의 간선 삽입을 포함한 동적 그래프를 나타낸다.2B is an exemplary data graph (g), showing an initial data graph (g 0 ) and a dynamic graph including two edge insertions.
데이터 그래프(g)는 초기 데이터 그래프(g0)와 제 1 간선 삽입(o1) 및 제 2 간선 삽입(o2)을 포함하고 있다. 여기서 제 1 간선 삽입(Δo1) 및 제 2 간선 삽입(Δo2)은 데이터 그래프 갱신 스트림(g)으로부터 얻어진다.The data graph (g) is the initial data graph (g 0 ) and the first edge insertion (o 1 ) and a second trunk insertion (o 2 ). where the first edge insertion (Δo 1 ) and a second edge insertion Δo 2 is obtained from the data graph update stream g.
제 2 간선 삽입(Δo2)에 의해 데이터 그래프(g)에 간선 (v3, v6)이 삽입될 때, 연속적 부분 그래프 매칭은 데이터 그래프(g)에 새로 생기는 질의 그래프(q)의 임베딩 200개를 찾아야 한다.When the edge (v 3 , v 6 ) is inserted into the data graph (g) by the second edge insertion (Δo 2 ), continuous subgraph matching is the embedding of the newly created query graph (q) in the data graph (g) 200 I need to find a dog.
연속적 부분 그래프 매칭 문제는 부분 그래프 매칭 문제(subgraph matching)를 풀어 임베딩을 찾아야 하므로 연속적 부분 그래프 매칭 문제를 풀기 위해서 부분 그래프 매칭 문제를 푸는 알고리즘이나 아이디어를 많이 사용한다. 최근 좋은 성능을 보이는 부분 그래프 매칭 연구들은 Ullmann의 백트래킹 알고리즘에 기반한다. 백트래킹 알고리즘은 질의 그래프와 데이터 그래프가 주어졌을 때 질의 그래프의 정점을 하나하나를 데이터 그래프의 정점에 대응시켜가며 임베딩을 찾는 알고리즘이다. 백트래킹 기반의 알고리즘으로는 TurboIso, CFL-Match, DAF와 같은 많은 연구가 진행됐다.Since the continuous subgraph matching problem needs to find an embedding by solving the subgraph matching problem, many algorithms or ideas for solving the subgraph matching problem are used to solve the continuous subgraph matching problem. Recent subgraph matching studies showing good performance are based on Ullmann's backtracking algorithm. The backtracking algorithm is an algorithm that finds an embedding by matching vertices of the query graph to vertices of the data graph, given a query graph and a data graph. As for backtracking-based algorithms, many studies such as TurboIso, CFL-Match, and DAF have been conducted.
TurboIso(Wook-Shin Han, Jinsoo Lee, and Jeong-Hoon Lee. 2013. TurboISO: Towards UltraFast and Robust Subgraph Isomorphism Search in Large Graph Databases. In Proceedings of the 2013 ACM SIGMOD International Conference on Management of Data. 337-348. 참조)는 질의 그래프의 임베딩을 찾기 전에 데이터 그래프에서 질의 그래프로 만든 신장 트리(spanning tree)의 임베딩을 우선 찾는다. 이 결과를 바탕으로 질의 그래프의 임베딩이 있을 수도 있는 데이터 그래프의 후보 공간을 추출하고 각 후보 공간에 대해 효율적인 매칭 순서(matching order)를 정하고 백트래킹을 진행해서 임베딩을 찾는다.TurboIso (Wook-Shin Han, Jinsoo Lee, and Jeong-Hoon Lee. 2013. TurboISO: Towards UltraFast and Robust Subgraph Isomorphism Search in Large Graph Databases. In Proceedings of the 2013 ACM SIGMOD International Conference on Management of Data. 337-348. Reference) first finds the embedding of the spanning tree made from the query graph in the data graph before finding the embedding of the query graph. Based on this result, candidate spaces of the data graph that may have embeddings in the query graph are extracted, an efficient matching order is determined for each candidate space, and embeddings are found by performing backtracking.
DAF(Myoungji Han, Hyunjoon Kim, Geonmo Gu, Kunsoo Park, and Wook-Shin Han. 2019. Efficient Subgraph Matching: Harmonizing Dynamic Programming, Adpative Matching Order, and Failing Set Together. In Proceedings of SIGMOD. 1429-1446. 참조)는 질의 그래프의 신장 트리 대신 질의 그래프로 만든 루트가 있는 방향성 비순환 그래프(DAG)을 사용하여 부분 그래프 매칭 문제를 푸는 방법을 제안하였다.DAF (refer to Myoungji Han, Hyunjoon Kim, Geonmo Gu, Kunsoo Park, and Wook-Shin Han. 2019. Efficient Subgraph Matching: Harmonizing Dynamic Programming, Adpative Matching Order, and Failing Set Together. In Proceedings of SIGMOD. 1429-1446.) proposed a method to solve the subgraph matching problem using a directed acyclic graph (DAG) with a root made of the query graph instead of the spanning tree of the query graph.
DAF는 임베딩의 필수 조건인 데이터 그래프와 질의 그래프로 만든 DAG 사이의 약한 임베딩(weak embedding)을 정의하였다.DAF defined a weak embedding between a data graph and a DAG made of a query graph, which is an essential condition for embedding.
DAG 의 약한 임베딩은 DAG 의 경로 트리(path tree)를 통해 정의된다. 루트를 가지는 DAG 로 만든 경로 트리의 루트에서부터 각 리프 노드까지의 경로는 의 루트에서부터 리프 노드까지의 서로 다른 경로에 대응된다. 이때, 경로 트리는 루트에서부터 리프까지 경로의 공통 접두사를 공유한다. 의 루트를 u라고 할 때, 그래프 g의 정점 v에서 의 약한 임베딩은 u가 v에 대응되는 g에서 로 만들어지는 경로 트리의 준동형(homomorphism)으로 정의된다. 준동형은 임베딩에서 단사 조건을 뺀 함수이다.DAG The weak embedding of DAG It is defined through the path tree of DAG with root The path from the root of the path tree created with to each leaf node is Corresponds to different paths from the root of the to the leaf node. In this case, the path tree shares a common prefix of the path from the root to the leaf. Let u be the root of at the vertex v of graph g. The weak embedding of is at g where u corresponds to v. It is defined as a homomorphism of the path tree made by . Homologous is the function of embedding minus the injective condition.
도 3a는 예시적인 질의 그래프의 신장 트리, 도 3b는 예시적인 질의 그래프의 방향성 비순환 그래프(DAG), 도 3c는 예시적인 질의 DAG의 경로 트리(path tree)를 각각 도시한다.3A shows a spanning tree of an exemplary query graph, FIG. 3B shows a directed acyclic graph (DAG) of an exemplary query graph, and FIG. 3C shows a path tree of an exemplary query DAG.
도 3a는 도 2a의 질의 그래프(q)의 신장 트리의 예시이고, 도 3b의 DAG()는 도 2a의 질의 그래프(q)로부터 만들어지는 DAG의 한 예시이다. 역방향 DAG()는 DAG()에서 간선의 방향을 뒤집어서 만들어지는 DAG를 의미한다. 도 3c는 도 3b의 DAG로부터 만들어지는 경로 트리에 대한 예시이다.3A is an example of the spanning tree of the query graph (q) of FIG. 2A, and the DAG of FIG. 3B ( ) is an example of a DAG created from the query graph (q) of FIG. 2a. reverse DAG( ) is DAG( ) means a DAG created by reversing the direction of the edges. 3c is an example of a route tree created from the DAG of FIG. 3b.
예를 들면, {(u3, v4), (u4', v6), (u5', v7), (u5", v-8)}은 초기 데이터 그래프(도 2b의 g0)의 v4에서 (도 3b)의 약한 임베딩이다. 여기서 은 u3을 루트로 하고 u3, u4, u5를 포함하는 의 부분 DAG이다. 만약 Δo1 간선이 삽입되면, {(u3, v4), (u4', v6), (u5', v7), (u5", v-7)}은 v4에서 의 약한 임베딩이면서 또한 q의 임베딩이다.For example, {(u 3 , v 4 ), (u 4 ', v 6 ), (u 5 ', v 7 ), (u 5 ", v- 8 )} is the initial data graph (g in FIG. 2b) 0 ) in v 4 (Fig. 3b) is the weak embedding. here is rooted at u 3 and includes u 3 , u 4 , u 5 is a part of DAG. If the Δo 1 edge is inserted, {(u 3 , v 4 ), (u 4 ', v 6 ), (u 5 ', v 7 ), (u 5 ", v- 7 )} is at v 4 is a weak embedding of , and also an embedding of q.
한편, 데이터 그래프(g)에서 질의 그래프(q)의 모든 임베딩(M)은 질의 그래프(q)로 만든 DAG의 약한 임베딩이지만 역은 성립하지 않는다. 따라서 약한 임베딩은 임베딩(M)의 필수 조건으로 필터링하는 데 이용할 수 있다.Meanwhile, in the data graph (g), all embeddings (M) of the query graph (q) are weak embeddings of the DAG made of the query graph (q), but the reverse is not true. Therefore, weak embeddings can be used for filtering as a necessary condition for embeddings (M).
예를 들어, 초기 데이터 그래프(g0. 예를 들어 도 2b)에서 질의 그래프(q, 예를 들어 도 2a)의 임베딩을 찾는다면, TurboIso의 경우 질의 그래프 q로 만든 신장 트리 qT(예를 들어 도 3a)를 사용한다고 했을 때 g0에 qT의 임베딩이 있으므로 백트래킹을 거쳐야지 임베딩이 없다는 사실을 알 수 있다.For example, if we find an embedding of a query graph (q, for example, Fig. 2a) in an initial data graph (g 0. For example, Fig. 2b), in the case of TurboIso, a spanning tree q T built from the query graph q (eg, Fig. 2b) For example, when using Fig. 3a), since there is an embedding of q T in g 0 , it can be seen that there is no embedding only after going through back tracking.
반면, q로 만든 DAG ( , 예를 들어 도 3b)를 사용하는 DAF의 경우 g0에 의 약한 임베딩이 존재하지 않기 때문에 백트래킹 과정 없이 임베딩이 없다는 사실을 즉시 알 수 있다.On the other hand, the DAG created by q ( , for example in the case of DAF using Fig. 3b) at g 0 Since there is no weak embedding of , it is immediately apparent that there is no embedding without a backtracking process.
TurboFlux(Kyoungmin Kim, In Seo, Wook-Shin Han, Jeong-Hoon Lee, Sungpack Hong, Hassan Chafi, Hyungyu Shin, and Geonhwa Jeong. 2018. TurboFlux: A Fast Continuous Subgraph Matching System for Streaming Graph Data. In Proceedings of the 2018 International Conference on Management of Data. 411-426.)는 부분 그래프 매칭 문제를 푸는 알고리즘 TurboIso의 아이디어를 수정해서 연속적 부분 그래프 매칭 문제를 풀어낸다.TurboFlux (Kyoungmin Kim, In Seo, Wook-Shin Han, Jeong-Hoon Lee, Sungpack Hong, Hassan Chafi, Hyungyu Shin, and Geonhwa Jeong. 2018. TurboFlux: A Fast Continuous Subgraph Matching System for Streaming Graph Data. In Proceedings of the 2018 International Conference on Management of Data. 411-426.) solves the continuous subgraph matching problem by modifying the idea of the algorithm TurboIso to solve the subgraph matching problem.
TurboFlux는 data-centric graph(DCG)라는 보조 자료 구조를 이용한다. 이 보조 자료 구조는 데이터 그래프의 간선과 질의 그래프로 만든 신장 트리의 간선으로 이루어진 모든 쌍에 대해 두 간선이 대응될 수 있는지에 대한 정보를 저장한다. 각 그래프 갱신 작업에 대해서 DCG에 있는 데이터 그래프 간선과 질의 그래프 간선 쌍에 대해서 질의 그래프의 임베딩을 구성할 수 있는지에 대한 정보를 갱신하고 이 정보를 토대로 새로 생기거나 삭제되는 임베딩을 찾는다. TurboFlux는 이전 알고리즘보다 연속적 부분 그래프 매칭 문제를 수백 배 빠르게 푼다.TurboFlux uses an auxiliary data structure called a data-centric graph (DCG). This auxiliary data structure stores information about whether two edges can be matched for every pair of edges in the data graph and edges in the spanning tree made in the query graph. For each graph update task, information on whether the query graph embedding can be configured for the pair of data graph edges and query graph edges in the DCG is updated, and based on this information, new or deleted embeddings are found. TurboFlux solves continuous subgraph matching problems hundreds of times faster than previous algorithms.
그러나 TurboFlux는 질의 그래프로 만든 신장 트리를 사용하기 때문에 질의 그래프의 모든 간선을 고려하지 못하는 단점이 있다. 또한, 실험 결과에 따르면 TurboFlux는 DCG의 비대칭적 갱신 과정으로 인해 간선 삭제 처리 속도가 간선 삽입 처리 속도보다 훨씬 느린 한계가 있다.However, since TurboFlux uses a spanning tree made from a query graph, it has a disadvantage of not considering all edges of the query graph. In addition, according to the experimental results, TurboFlux has a limitation in that the processing speed of edge deletion is much slower than the processing speed of edge insertion due to the asymmetric update process of DCG.
도 4는 실시예에 따른 연속적 부분 그래프 매칭 장치의 블록도이다. 4 is a block diagram of a continuous partial graph matching device according to an embodiment.
실시예에 따른 연속적 부분 그래프 매칭 장치(100)는 적어도 하나의 명령어를 저장하는 메모리(120) 및 프로세서(110)를 포함한다.The continuous partial
프로세서(110)는 일종의 중앙처리장치로서, 메모리(120)에 저장된 하나 이상의 명령어를 실행하여 실시예에 따른 연속적 부분 그래프 매칭 방법을 실행할 수 있다. 프로세서(110)는 명령어를 실행하여 데이터에 대한 연산을 처리할 수 있는 모든 종류의 장치를 포함할 수 있다.The
프로세서(110)는 예를 들어 프로그램 내에 포함된 코드 또는 명령으로 표현된 기능을 수행하기 위해 물리적으로 구조화된 회로를 갖는, 하드웨어에 내장된 데이터 처리 장치를 의미할 수 있다. 이와 같이 하드웨어에 내장된 데이터 처리 장치의 일 예로서, 마이크로프로세서(microprocessor), 중앙처리장치(central processing unit; CPU), 프로세서 코어(processor core), 멀티프로세서(multiprocessor), ASIC(application-specific integrated circuit), FPGA(field programmable gate array) 및 그래픽 처리 유닛(Graphics Processing Unit; GPU) 등의 처리 장치를 망라할 수 있으나, 이에 한정되는 것은 아니다.The
프로세서(110)는 하나 이상의 프로세서를 포함할 수 있다. 예를 들어 프로세서(110)는 CPU 및 GPU를 포함할 수 있다. 예를 들어 프로세서(110)는 복수 개의 GPU를 포함할 수 있다. 프로세서(110)는 적어도 하나의 코어를 포함할 수 있다.
메모리(120)는 실시예에 따른 연속적 부분 그래프 매칭 방법을 실행하기 위한 명령 및 동적 후보 공간 등의 중간 데이터들을 저장할 수 있다. 메모리(120)는 실시예에 따른 연속적 부분 그래프 매칭 방법을 구현한 하나 이상의 명령을 생성 및 실행하는 실행가능한(executable) 프로그램을 저장할 수 있다.The
프로세서(110)는 메모리(120)에 저장된 프로그램 및 명령어들에 기반하여 실시예에 따른 연속적 부분 그래프 매칭 방법을 실행할 수 있다.The
메모리(120)는 내장 메모리 및/또는 외장 메모리를 포함할 수 있으며, DRAM, SRAM, 또는 SDRAM 등과 같은 휘발성 메모리, OTPROM(one time programmable ROM), PROM, EPROM, EEPROM, mask ROM, flash ROM, NAND 플래시 메모리, 또는 NOR 플래시 메모리 등과 같은 비휘발성 메모리, SSD, CF(compact flash) 카드, SD 카드, Micro-SD 카드, Mini-SD 카드, Xd 카드, 또는 메모리 스틱(memory stick) 등과 같은 플래시 드라이브, 또는 HDD와 같은 저장 장치를 포함할 수 있다. 메모리(120)는 자기 저장 매체(magnetic storage media) 또는 플래시 저장 매체(flash storage media)를 포함할 수 있으나, 이에 한정되는 것은 아니다.The
연속적 부분 그래프 매칭 장치(100)는 실시예에 따른 연속적 부분 그래프 매칭 방법을 단계적으로 실행할 수 있다.The continuous
연속적 부분 그래프 매칭 장치(100)는, 적어도 하나의 명령어를 저장하는 메모리(120) 및 프로세서(110)를 포함하고, 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, 질의 그래프(q)로부터 루트가 있는 DAG(Directed Acyclic Graph)를 획득하고, 데이터 그래프(g) 및 DAG에 기반하여 질의 그래프(q)와 데이터 그래프(g) 간의 연속적 부분 그래프 매칭을 위한 동적 후보 공간(Dynamic Candidate Space; DCS)을 획득하고, 데이터 그래프(g)의 갱신 작업에 따라 동적 후보 공간을 이용하여 새로 생기거나 삭제되는 질의 그래프(q)의 임베딩을 탐색하도록 구성될 수 있다.The continuous partial
여기서 동적 후보 공간은, 질의 그래프(q)의 정점에 대한 데이터 그래프(g)의 후보 정점의 집합, 후보 정점에서, 질의 그래프(q)의 정점에 대응하는 DAG의 정점을 루트로 하는 역방향 부분 DAG의 임베딩과 연계된 제 1 임베딩 정보 및 후보 정점에서, 질의 그래프(q)의 정점에 대응하는 DAG의 정점을 루트로 하는 부분 DAG의 임베딩과 연계된 제 2 임베딩 정보를 포함할 수 있다.Here, the dynamic candidate space is a set of candidate vertices of the data graph (g) for vertices of the query graph (q), in the candidate vertices, a reverse sub-DAG whose root is a vertex of the DAG corresponding to the vertex of the query graph (q). First embedding information associated with the embedding of and second embedding information associated with the embedding of a partial DAG whose root is the vertex of the DAG corresponding to the vertex of the query graph q in the candidate vertices.
메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, DAG를 획득하기 위하여, 너비 우선 탐색(Breadth First Search; BFS)으로 질의 그래프(q)를 탐색하면서 먼저 방문한 정점에서 다음 방문한 정점으로 간선의 방향을 설정하고, 가장 높은 높이의 DAG를 만드는 정점을 DAG의 루트로 결정하도록 구성될 수 있다.At least one instruction stored in the
메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, 갱신 작업이 간선 삽입인 경우, 연속적 부분 그래프 매칭을 탐색하기 위하여, 간선 삽입에 따라 데이터 그래프(g)를 갱신하고, 갱신된 데이터 그래프(g)에 기반하여 동적 후보 공간을 갱신하고, 데이터 그래프(g)에 새로 생기는 질의 그래프(q)의 임베딩을 탐색하도록 구성될 수 있다.At least one instruction stored in the
메모리(120)에 저장된 적어도 하나의 명령어는 프로세서(110)에 의해 실행될 때 프로세서(110)로 하여금, 갱신 작업이 간선 삭제인 경우, 연속적 부분 그래프 매칭 관계를 탐색하기 위하여, 데이터 그래프(g)에서 삭제되는 질의 그래프(q)의 임베딩을 탐색하고, 간선 삭제에 따라 데이터 그래프를 갱신하고, 갱신된 데이터 그래프에 기반하여 동적 후보 공간을 갱신하도록 구성될 수 있다.At least one instruction stored in the
일 예에서 후보 정점의 집합은 질의 그래프(q)의 정점의 레이블(label)과 동일한 레이블을 갖는 데이터 그래프(g)의 정점의 집합이다.In one example, the set of candidate vertices is a set of vertices of the data graph g having the same label as the label of the vertex of the query graph q.
도 5는 실시예에 따른 연속적 부분 그래프 매칭 방법의 개략적인 흐름도이다.5 is a schematic flowchart of a continuous partial graph matching method according to an embodiment.
실시예에 질의 그래프(q) 및 데이터 그래프(g) 간의 따른 연속적 부분 그래프 매칭 방법은, 프로세서(110)에 의해, 질의 그래프(q)로부터 루트가 있는 DAG(Directed Acyclic Graph)를 획득하는 단계(S1), 데이터 그래프(g) 및 DAG에 기반하여 질의 그래프(q)와 데이터 그래프(g) 간의 연속적 부분 그래프 매칭을 위한 동적 후보 공간(Dynamic Candidate Space; DCS)을 획득하는 단계(S2) 및 데이터 그래프(g)의 갱신 작업에 따라 동적 후보 공간을 이용하여 새로 생기거나 삭제되는 질의 그래프(q)의 임베딩을 탐색하는 단계(S3)를 포함할 수 있다.In the embodiment, the continuous subgraph matching method between the query graph q and the data graph g includes the steps of obtaining, by the
단계(S1)에서 프로세서(110)는 질의 그래프(q)로부터 루트가 있는 DAG(Directed Acyclic Graph)를 획득할 수 있다.In step S1, the
이를 위하여, 일 예에서, 단계(S1)은 프로세서(110)에 의해 너비 우선 탐색으로 질의 그래프(q)를 탐색하면서 먼저 방문한 정점에서 다음 방문한 정점으로 간선의 방향을 설정하는 단계 및 가장 높은 높이의 DAG를 만드는 정점을 DAG의 루트로 결정하는 단계를 포함할 수 있다.To this end, in one example, step S1 is a step of setting the direction of an edge from the first visited vertex to the next visited vertex while searching the query graph q by breadth first search by the
단계(S2)에서 프로세서(110)는 데이터 그래프(g) 및 DAG에 기반하여 질의 그래프(q)와 데이터 그래프(g) 간의 연속적 부분 그래프 매칭을 위한 동적 후보 공간을 획득할 수 있다.In step S2, the
여기서 동적 후보 공간은, 질의 그래프(q)의 정점에 대한 데이터 그래프(g)의 후보 정점의 집합, 후보 정점에서, 질의 그래프의 정점에 대응하는 DAG의 정점을 루트로 하는 역방향 부분 DAG의 임베딩과 연계된 제 1 임베딩 정보 및 후보 정점에서, 질의 그래프(q)의 정점에 대응하는 DAG의 정점을 루트로 하는 부분 DAG의 임베딩과 연계된 제 2 임베딩 정보를 포함할 수 있다.Here, the dynamic candidate space is a set of candidate vertices of the data graph g for the vertices of the query graph q, and embeddings of reverse sub-DAGs with the vertices of the DAG corresponding to the vertices of the query graph as the root in the candidate vertices. In the associated first embedding information and candidate vertices, second embedding information associated with an embedding of a partial DAG having a vertex of the DAG corresponding to a vertex of the query graph q as a root may be included.
일 예에서 후보 정점의 집합은 질의 그래프(q)의 정점의 레이블과 동일한 레이블을 갖는 데이터 그래프(g)의 정점의 집합이다.In one example, the set of candidate vertices is a set of vertices of the data graph g having the same labels as the labels of the vertices of the query graph q.
단계(S3)에서 프로세서(110)는 데이터 그래프(g)의 갱신 작업에 따라 동적 후보 공간을 이용하여 연속적 부분 그래프 매칭을 탐색할 수 있다.In step S3, the
단계(S3)은, 프로세서(110)에 의해, 갱신 작업이 간선 삽입인 경우, 간선 삽입에 따라 데이터 그래프(g)를 갱신하는 단계, 갱신된 데이터 그래프(g)에 기반하여 동적 후보 공간을 갱신하는 단계 및 데이터 그래프에 새로 생기는 질의 그래프(q)의 임베딩을 탐색하는 단계를 포함할 수 있다.Step S3 is, by the
단계(S3)은, 프로세서(110)에 의해, 갱신 작업이 간선 삭제인 경우, 데이터 그래프(g)에서 삭제되는 질의 그래프(q)의 임베딩을 탐색하는 단계, 간선 삭제에 따라 데이터 그래프(g)를 갱신하는 단계 및 갱신된 데이터 그래프(g)에 기반하여 동적 후보 공간을 갱신하는 단계를 포함할 수 있다.Step S3 is, by the
이하에서 실시예에 따른 연속적 부분 그래프 매칭 방법을 보다 상세히 살펴본다.Hereinafter, a continuous subgraph matching method according to an embodiment will be described in detail.
연속적 부분 그래프 매칭 문제를 해결하는 데 있어서 보조 자료 구조에 중간 결과로 어떤 정보를 저장하는지가 중요하다. 보조 자료 구조는 질의 그래프 탐색을 빨리하는 데 도움을 주는 정보를 포함하면서도 데이터 그래프 갱신에 따라 보조 자료 구조의 갱신이 너무 오래 걸리지 않도록 설계되어야 한다.In solving the continuous subgraph matching problem, it is important what information is stored as an intermediate result in an auxiliary data structure. Auxiliary data structures should be designed so that updating auxiliary data structures does not take too long as data graphs are updated, while containing information that helps speed up query graph search.
실시예에 의하면, 새로운 개념인 동적 후보 공간(dynamic candidate space, DCS)을 활용하여 빠르게 보조 자료 구조를 갱신하면서도 효율적으로 연속적 부분 그래프 매칭 문제를 해결하는 방법을 제안한다.According to the embodiment, a method for efficiently solving the contiguous subgraph matching problem while quickly updating an auxiliary data structure by utilizing a new concept of dynamic candidate space (DCS) is proposed.
DCS는 질의 그래프의 신장 트리 대신 방향성 비순환 그래프(DAG)를 사용하기에 질의 그래프의 모든 간선을 고려할 수 있고, 이는 필터링 효과를 높여 결과적으로 탐색 속도를 빠르게 한다. 또한, 간선 삽입과 간선 삭제 두 경우에 비슷하게 적용할 수 있는 갱신 방법을 이용하여 TurboFlux의 문제점인 비대칭적 갱신 과정을 해결하였다.Since the DCS uses a directed acyclic graph (DAG) instead of a spanning tree of the query graph, it can consider all edges of the query graph, which increases the filtering effect and consequently speeds up the search speed. In addition, the asymmetric update process, which is a problem of TurboFlux, is solved by using an update method that can be similarly applied to both cases of edge insertion and edge deletion.
실시예에 의하면, DCS를 활용하여 결과를 포함하지 않는 부분을 최대한 걸러내고, 결과를 포함하는 부분에서 동적으로 매칭 순서를 결정해나가며 임베딩을 효율적으로 검색할 수 있다.According to the embodiment, it is possible to efficiently search for embeddings by maximally filtering out a part not including a result by using DCS and dynamically determining a matching order in a part including a result.
도 6은 실시예에 따른 동적 후보 공간을 활용한 연속적 부분 그래프 매칭 방법의 흐름도이다.6 is a flowchart of a continuous subgraph matching method using a dynamic candidate space according to an embodiment.
실시예에 따른 연속적 부분 그래프 매칭 방법은 질의 그래프(q)로부터 루트가 있는 DAG()를 획득하는 단계(S601), 획득된 DAG()와 초기 데이터 그래프(g-0)로부터 초기 DCS를 획득하는 단계(S602), 데이터 그래프(g) 갱신 스트림(Δg)에 갱신 작업이 남아있는지 확인하는 단계(S603), 데이터 그래프(g) 갱신 작업이 간선 삽입인지 또는 간선 삭제인지 확인하는 단계(S604)를 포함할 수 있다.The continuous subgraph matching method according to the embodiment is a DAG with a root from the query graph (q) ( ) Obtaining step (S601), the obtained DAG ( ) and the initial data graph (g- 0 ) (S602), checking whether an update task remains in the data graph (g) update stream (Δg) (S603), updating the data graph (g) It may include a step of determining whether the task is to insert a trunk line or delete a trunk line (S604).
갱신 작업이 간선 삽입인 경우, 데이터 그래프(g)에 간선을 삽입하여 갱신하는 단계(S605), 데이터 그래프 갱신 작업이 간선 삽입일 때 DCS를 갱신하는 단계(S606), 데이터 그래프(g)에서 새로 생기는 질의 그래프(q)의 임베딩을 탐색하는 단계(S607)를 포함할 수 있다.If the update task is inserting an edge, updating by inserting an edge in the data graph (g) (S605), updating the DCS when the data graph update task is inserting an edge (S606), and updating the data graph (g) A step of searching for an embedding of the generated query graph q (S607) may be included.
갱신 작업이 간선 삭제인 경우, 데이터 그래프(g)에서 삭제되는 질의 그래프(q)의 임베딩을 탐색하는 단계(S608), 데이터 그래프(g)에서 간선을 삭제하여 갱신하는 단계(S609), 데이터 그래프 갱신 작업이 간선 삭제일 때 DCS를 갱신하는 단계(S610)를 포함할 수 있다.If the update operation is edge deletion, searching for an embedding of the query graph (q) to be deleted from the data graph (g) (S608), updating by deleting the edge from the data graph (g) (S609), data graph It may include updating the DCS when the update task is trunk line deletion (S610).
단계(S601) 및 단계(S602)는 도 4를 참조하여 단계(S1) 및 단계(S2)에 각각 대응한다. 도 4를 참조하여 단계(S3)은 단계(S603) 내지 단계(S610)을 포함할 수 있다.Steps S601 and S602 correspond to steps S1 and S2, respectively, with reference to FIG. Referring to FIG. 4 , step S3 may include steps S603 to S610.
질의 그래프(q)로부터 루트가 있는 DAG()를 획득하는 단계(S601)는 루트를 선택하는 단계와 선택된 루트로부터 너비 우선 탐색(BFS)을 통해 DAG를 생성하는 단계를 포함한다.A DAG with a root from the query graph (q) ( ) is obtained (S601) includes selecting a route and generating a DAG from the selected route through Breadth First Search (BFS).
획득된 DAG()와 초기 데이터 그래프(g0)로부터 획득되는 초기 DCS는 초기 데이터 그래프(g0)에서 DAG()의 약한 임베딩에 대한 정보와 이후 약한 임베딩에 대한 정보를 빠르게 갱신하기 위한 추가 정보들을 담고 있다. 일 예에서, DCS에 포함된 정보들은 양방향 동적 프로그래밍(하향식 동적 프로그래밍 및 상향식 동적 프로그래밍)을 통해 획득 가능하다.Acquired DAG ( ) and the initial DCS obtained from the initial data graph (g 0 ) is the DAG ( ) and additional information for quickly updating the weak embedding information. In one example, the information contained in the DCS is obtainable through bi-directional dynamic programming (top-down dynamic programming and bottom-up dynamic programming).
초기 DCS를 획득한 이후에는 데이터 그래프 갱신 스트림(Δg)에 있는 갱신 작업에 대한 처리를 진행한다. 갱신 작업이 간선 삽입일 때와 간선 삭제일 때를 따로 처리하기 위해 예를 들어 갱신 작업이 간선 삽입 작업인지 확인한다.After acquiring the initial DCS, processing of the update task in the data graph update stream (Δg) is performed. In order to process separately when the update operation is an edge insertion operation and an edge deletion operation, for example, it is checked whether the update operation is an edge insertion operation.
갱신 작업이 데이터 그래프(g)에 간선을 삽입하는 것이면, 우선 해당 간선을 데이터 그래프(g)에 삽입하여 데이터 그래프(g)를 갱신한다. 이후, 데이터 그래프(g)에 삽입된 간선으로 인해 DCS가 달라질 수 있으므로 이를 갱신한다.If the updating task is to insert an edge into the data graph (g), the corresponding edge is first inserted into the data graph (g) to update the data graph (g). Afterwards, since the DCS may change due to the edge inserted in the data graph (g), it is updated.
이때, DCS 갱신은 데이터 그래프(g)에서 새로 생기는 DAG의 약한 임베딩 정보를 반영해야 한다. 또한, 약한 임베딩 정보를 빠르게 계산하기 위한 추가 배열들을 갱신해야 한다. DCS 갱신 후에는 갱신된 DCS를 참조하여 데이터 그래프(g)에서 새로 생기는 질의 그래프(q)의 임베딩을 탐색한다. 새로 생기는 질의 그래프(q)의 임베딩은 갱신된 DCS에 새로 생긴 DAG의 약한 임베딩을 필요로 하므로 DCS의 정보를 이용해 탐색 공간을 줄일 수 있다.At this time, the DCS update should reflect the weak embedding information of the newly created DAG in the data graph (g). In addition, additional arrays for quickly calculating weak embedding information must be updated. After updating the DCS, the newly created query graph (q) is searched for in the data graph (g) with reference to the updated DCS. Since the embedding of the newly created query graph (q) requires weak embedding of the newly created DAG in the updated DCS, the search space can be reduced using the information of the DCS.
이와 유사하게, 갱신 작업이 데이터 그래프(g)에서 간선을 삭제하는 작업일 때 처리할 수 있다. 우선, 데이터 그래프(g)와 DCS에서 간선에 대한 정보가 삭제되기 전에 데이터 그래프(g)에서 삭제되는 질의 그래프(q)의 임베딩을 먼저 탐색한다. 임베딩 탐색 이후 데이터 그래프에서 해당 간선을 삭제하고 데이터 그래프(g)에서 삭제되는 DAG의 약한 임베딩 정보를 DCS에 반영하여 갱신한다.Similarly, when the update task is to delete an edge in the data graph (g), it can be processed. First, the embedding of the query graph (q) to be deleted from the data graph (g) is first searched before the edge information is deleted from the data graph (g) and the DCS. After the embedding search, the corresponding edge is deleted from the data graph, and the weak embedding information of the DAG deleted from the data graph (g) is reflected in the DCS and updated.
단계(S601)은 질의 그래프(q)로부터 루트를 가지는 DAG()를 생성한다. 질의 그래프(q)에서 DAG를 만들 때는 너비 우선 탐색(breadth first search, BFS)으로 그래프를 탐색하면서 먼저 방문한 정점에서 이후에 방문한 정점으로 간선의 방향을 설정한다. DAG의 루트는 위의 방법대로 생성할 때 가장 높은 높이의 DAG를 만드는 정점으로 결정한다. 여기서 루트를 가지는 DAG의 높이는 루트와 다른 정점 사이의 최단 경로의 길이 중 최댓값으로 결정된다.Step S601 is a DAG having a root from the query graph q ( ) to create When creating a DAG from the query graph (q), the direction of the edge is set from the vertex visited first to the vertex visited later while searching the graph with breadth first search (BFS). The root of DAG is determined as the vertex that creates the highest height DAG when created in the above method. Here, the height of a DAG having a root is determined by the maximum value of the lengths of the shortest paths between the root and other vertices.
단계(S602)은 단계(S601)에서 생성된 DAG()와 초기 데이터 그래프 (g0)로부터 양방향 동적 프로그래밍을 통해 초기 DCS를 획득한다. DCS는 DAG의 약한 임베딩(weak embedding)을 중간 결과로 저장하고 있다. 약한 임베딩은 임베딩의 필수 조건이기 때문에 DCS에 저장된 정보는 백트래킹의 탐색 공간을 줄이는 데 도움을 준다. DCS는 다음의 정의 2와 같이 정의한다.Step S602 is the DAG generated in step S601 ( ) and the initial data graph (g 0 ) through interactive dynamic programming to obtain the initial DCS. The DCS stores the weak embedding of the DAG as an intermediate result. Since weak embedding is a necessary condition for embedding, the information stored in the DCS helps to reduce the search space for backtracking. DCS is defined as in Definition 2 below.
[정의 2][Definition 2]
질의 그래프(q)와 이로부터 생성된 DAG() 및 데이터 그래프(g)가 주어졌을 때, DCS는 다음 요소를 포함하는 자료 구조이다.The query graph (q) and the DAG created from it ( ) and a data graph (g), DCS is a data structure containing the following elements.
1) 질의 그래프(q)의 정점 u에 대해서 후보 집합(candidate set) C(u)는 u와 레이블이 같은 데이터 그래프(g)의 정점들의 집합이다. C(u)집합 안의 v를 <u,v>와 같이 표기한다.1) For vertex u of the query graph q, the candidate set C(u) is the set of vertices of the data graph g that have the same label as u. The v in the set C(u) is written as <u,v>.
2) 만약 질의 그래프(q)에 간선 (u, u')이 존재하고 데이터 그래프(g)에 간선 (v, v')이 존재하면, <u, v>와 <u',v'>사이의 간선 (<u, v>, <u', v'>)이 존재한다. 이때, u가 u'의 부모 (혹은 자손)이면 <u, v>를 <u', v'>의 부모 (혹은 자손)이라고 정의한다.2) If there is an edge (u, u') in the query graph (q) and an edge (v, v') in the data graph (g), between <u, v> and <u', v'> There is an edge (<u, v>, <u', v'>) of At this time, if u is a parent (or descendant) of u', <u, v> is defined as a parent (or descendant) of <u', v'>.
3) 질의 그래프(q)의 정점 u와 데이터 그래프(g)의 정점 v에 대해서, 만약 v에서 부분 DAG 의 약한 임베딩이 존재하면 제 1 임베딩 정보 D1[u, v]은 1이고 존재하지 않으면 0이다.3) For vertex u of the query graph (q) and vertex v of the data graph (g), if v is a partial DAG The first embedding information D 1 [u, v] is 1 if there is a weak embedding of , and 0 if it does not exist.
4) 질의 그래프(q)의 정점 u와 데이터 그래프(g)의 정점 v에 대해서, 만약 약한 임베딩의 모든 사상(mapping) (u', v')에 대해서 D1[u', v'] =1인 v에서 부분 DAG 의 약한 임베딩이 존재하면 제 2 임베딩 정보 D2[u,v]은 1이고 그렇지 않으면 0이다.4) For vertex u of the query graph (q) and vertex v of the data graph (g), if D 1 [u', v'] = Partial DAG in single v The second embedding information D 2 [u,v] is 1 if there is a weak embedding of , and 0 otherwise.
DCS가 저장하는 중간 결과인 제 1 임베딩 정보(D1)와 제 2 임베딩 정보(D2)는 부분 DAG들의 약한 임베딩의 정보들이다. 이 정보를 토대로 이후에 임베딩을 탐색할 때 후보들을 걸러낼 수 있다. 질의 그래프(q)의 부분 DAG의 약한 임베딩은 질의 그래프(q)의 임베딩의 필수 조건이기 때문에, 데이터 그래프(g)에서 질의 그래프(q)의 임베딩(M)의 모든 사상 (u, v)는 D2[u, v]=1을 만족한다. 이에 따라 데이터 그래프(g)에서 질의 그래프(q)의 임베딩을 찾을 때 제 2 임베딩 정보(D2)가 D2[u, v]=1를 만족하는 (u, v)쌍들만 고려하면 된다.First embedding information (D 1 ) and second embedding information (D 2 ), which are intermediate results stored by the DCS, are weak embedding information of partial DAGs. Based on this information, candidates can be filtered out later when searching for embeddings. Since the weak embedding of the partial DAG of the query graph q is a necessary condition for the embedding of the query graph q, all mappings (u, v) of the embeddings M of the query graph q in the data graph g are D 2 Satisfies [u, v]=1. Accordingly, when finding the embedding of the query graph q in the data graph g, only (u, v) pairs for which the second embedding information D 2 satisfies D 2 [u, v]=1 need only be considered.
DCS가 저장하는 데이터 그래프(g)에서 질의 그래프(q)의 약한 임베딩 정보인 제 1 임베딩 정보(D1)와 제 2 임베딩 정보(D2)는 다음의 재귀를 통해 계산할 수 있다.The first embedding information (D 1 ) and the second embedding information (D 2 ), which are weak embedding information of the query graph (q) in the data graph (g) stored by the DCS, can be calculated through the following recursion.
DCS가 저장하는 데이터 그래프에서 질의 그래프의 약한 임베딩 정보 과 는 다음의 재귀를 통해 계산할 수 있다. Weak embedding information of the query graph in the data graph stored by the DCS class can be calculated through the following recursion.
u의 모든 부모 up에 대해서 을 만족하는 v에 이웃한 vp가 C(up)에 존재한다. For all parents u p of u A v p adjacent to v that satisfies exists in C(u p ).
이면서 u의 모든 자식 uc에 대해서 을 만족하는 v에 이웃한 vc가 C(uc)에 존재한다. and for all children u c of u A v c adjacent to v that satisfies exists in C(u c ).
위의 재귀를 토대로 제 1 임베딩 정보(D1)와 제 2 임베딩 정보(D2)를 각각 하향식 동적 프로그래밍과 상향식 동적 프로그래밍을 통해 계산할 수 있다.Based on the above recursion, the first embedding information (D 1 ) and the second embedding information (D 2 ) may be calculated through top-down dynamic programming and bottom-up dynamic programming, respectively.
간선이 삽입될 경우 자료 구조 갱신Updating the data structure when an edge is inserted
데이터 그래프 갱신 스트림에 있는 갱신 작업 하나하나에 대해서 작업을 진행한다. 우선, 데이터 그래프 갱신 스트림에 갱신 작업이 남아있는지 확인하고, 만약 모든 갱신 작업을 처리하였다면 종료한다(단계 S603). 만약 처리해야 할 갱신 작업이 남았다면 해당 갱신 작업이 데이터 그래프에 간선을 삽입하는 작업인지 아니면 존재하던 간선을 삭제하는 작업인지 구별하여 이후 작업을 진행한다(단계 S604).Works on each update in the data graph update stream. First, it is checked whether there are any update tasks remaining in the data graph update stream, and if all update tasks have been processed, the process is terminated (step S603). If there is an update task to be processed, whether the update task is a task of inserting an edge in the data graph or a task of deleting an existing edge is determined, and the subsequent task is performed (step S604).
다음으로, 데이터 그래프 갱신 작업이 삽입 작업일 경우 데이터 그래프에 해당 간선을 삽입한다(단계 S605). 데이터 그래프에 삽입되는 간선이 (v, v')일 EO, 정점 v의 인접 목록(adjacency list)에 v'을 삽입하고 정점 v'의 인접 목록에 v을 삽입하여 처리할 수 있다.Next, if the data graph updating task is an insertion task, the corresponding edge is inserted into the data graph (step S605). EO whose edge to be inserted into the data graph is (v, v'), can be processed by inserting v' into the adjacency list of vertex v and inserting v into the adjacency list of vertex v'.
다음으로, 데이터 그래프에 간선이 삽입됨에 따라 DCS를 갱신한다(단계 S606). 갱신된 데이터 그래프로 단계 S602를 다시 실행하면 DCS를 처음부터 새로 계산하여 갱신된 DCS를 얻을 수는 있다. 하지만 이 방법은 굳이 갱신하지 않아도 되는 부분을 다시 계산하기 때문에 비효율적이다. 따라서 본 발명은 DCS에 새로 생기는 간선들을 구하고 D1과 D2의 값이 바뀔 수도 있는 부분에 대해서만 계산하는 방법을 이용하였다.Next, the DCS is updated as the edge is inserted into the data graph (step S606). If step S602 is executed again with the updated data graph, the updated DCS can be obtained by calculating the DCS from scratch. However, this method is inefficient because it recalculates the parts that do not need to be updated. Therefore, the present invention uses a method of obtaining newly created edges in the DCS and calculating only the part where the values of D 1 and D 2 may change.
우선, 데이터 그래프에 삽입되는 간선으로 인해 DCS에 새로 생기는 간선들의 집합(EDCS)를 획득해야 한다. 데이터 그래프에서 갱신되는 간선을 (v,v')이라고 하면, 질의 그래프를 순회하면서 u가 v와 레이블이 같고 u'이 v'과 레이블이 같은 (u, u')간선들을 찾아 (<u,v>, <u',v'>)간선을 EDCS집합에 넣으면 된다. 이때, 다음에 오는 작업의 편의성을 위해서 <u,v>가 <u', v'>의 부모가 되도록 잡아준다. 예를 들어, 도 2b에서 Δo2가 삽입되었을 때 DCS에서 새로 생기는 간선들의 집합 EDCS는 (<u2, v3>,<u4,v6>)와 (<u2, v6>, <u4,v3>)를 포함한다. First of all, it is necessary to obtain a set of new edges (E DCS ) that are newly created in the DCS due to edges inserted into the data graph. If the updated edge in the data graph is (v,v'), while traversing the query graph, find (u, u') edges where u has the same label as v and u' has the same label as v'(<u, The v>, <u',v'>) edge can be put into the E DCS set. At this time, for the convenience of the next task, make <u,v> the parent of <u',v'>. For example, in FIG. 2B , when Δo 2 is inserted, the set of newly created edges E DCS in DCS is (<u 2 , v 3 >,<u 4 ,v 6 >) and (<u 2 , v 6 >, <u 4 , v 3 >).
데이터 그래프 간선 삽입으로 인해 DCS의 D1과 D2의 값이 바뀔 수도 있는 경우는 다음과 같다. <u,v>의 부모 <up,vp>가 D1[u,v]의 값에 영향을 줄 수 있는 경우는 (1) D1[u,v]의 값이 이미 1이고 <up,vp>와 <u,v>사이에 간선이 삽입될 때, (2) <up,vp>와 <u,v>사이에 간선이 이미 존재하고 D1[u,v]의 값이 0에서 1로 바뀌었을 때다. 두 경우에 속하는 <up,vp>를 <u,v>의 갱신된 부모(updated parent)라고 정의한다. 갱신된 부모가 있는 <u,v>의 D1만을 계산하는 것으로 DCS의 D1전체를 다시 계산하지 않을 수 있다.The cases in which D 1 and D 2 values of the DCS may change due to data graph edge insertion are as follows. If the parent <u p ,v p > of <u,v> can affect the value of D 1 [u,v], then (1) the value of D 1 [u,v] is already 1 and <u When an edge is inserted between p ,v p > and <u,v>, (2) an edge already exists between <u p ,v p > and <u,v> and D 1 [u,v] when the value changes from 0 to 1. We define <u p ,v p > belonging to both cases as the updated parent of <u,v>. By calculating only D 1 of <u,v> having an updated parent, the entire D 1 of the DCS may not be recalculated.
비슷하게, D2는 <u,v>의 자식 <uc, vc>에 대해서 (1) D2[u,v]의 값이 이미 1이고 <uc, vc>와 <u,v> 사이에 간선이 삽입될 때, (2) <uc, vc>와 <u,v> 사이에 간선이 이미 존재하고 D2[u,v]의 값이 0에서 1로 바뀌었을 때만 계산하면 된다. 이런 경우에 대해서 <uc, vc>를 <u,v>의 갱신된 자식(updated children)이라고 정의한다.Similarly, D 2 assumes that for <u c , v c > children of < u ,v>, (1) D 2 [u,v] already has a value of 1, and <u c , v c > and <u,v> When an edge is inserted between (2) <u c , v c > and <u,v>, the edge already exists and the value of D 2 [u,v] changes from 0 to 1. do. For this case, <u c , v c > is defined as the updated children of <u,v>.
본 발명은 DCS를 더 효율적으로 갱신하기 위해서 배열 , , , 를 도입하였다. 배열 와 는 D1을 갱신하는 데 이용하고 과 는 D2를 갱신하는 데 이용한다. 가 와 다르게 자식만이 아닌 모든 이웃에 대해서 정의되는 이유는 이후 백트래킹 과정에서 사용하기 때문이다.The present invention is arranged to update the DCS more efficiently , , , was introduced. Arrangement and is used to update D 1 and class is used to update D 2 . go Unlike , the reason why it is defined for all neighbors, not just children, is that it is used in the later backtracking process.
는 D1[up,vp]=1이고 간선 (<up,vp>,<u,v>)이 존재하는 u의 부모인 up가 가지는 후보 vp의 개수를 저장한다. 예를 들어서, 도 7b에서 C(u1)에 있는 v1과 v2가 위의 조건을 만족하기 때문에 가 된다. D1[u p , v p ]=1 and stores the number of candidates v p of u p , which is the parent of u in which the edge (<u p ,v p >,<u, v >) exists. For example, since v 1 and v 2 in C(u 1 ) in FIG. 7B satisfy the above condition, becomes
는 을 만족하는 u의 부모 up의 개수를 저장한다. 이때, 가 성립하는 것을 알 수 있다 ( 는 u의 부모의 개수). Is stores the number of parent u p of u that satisfies . At this time, It can be seen that is the number of parents of u).
는 이고 간선 이 존재하는 u의 이웃인 u'가 가지는 후보 v'의 개수를 저장한다. Is and the trunk line stores the number of candidates v' possessed by u', a neighbor of u that exists.
는 을 만족하는 u의 자식 uc의 개수를 저장한다. 비슷하게, 가 성립한다 ( 는 u의 자식의 개수). Is stores the number of children uc of u that satisfy . similarly, is established ( is the number of children of u).
위의 배열들을 이용하여 DCS에 EDCS집합의 간선들이 새로 추가되었을 때 DCS를 갱신하는 방법은 도 8부터 도 10을 참조하여 더 상세하게 설명한다. 도 8은 간선 삽입 작업일 때 DCS를 갱신하는 방법을 나타내는 순서도이고, 도 9와 도 10은 각각 갱신된 부모와 갱신된 자식에 대해서 처리하는 도 8이 호출하는 서브루틴(subroutine)을 나타내는 순서도이다.A method of updating the DCS when the trunks of the E DCS set are newly added to the DCS using the above arrangements will be described in more detail with reference to FIGS. 8 to 10 . 8 is a flowchart illustrating a method of updating a DCS when a trunk line insertion operation is performed, and FIGS. 9 and 10 are flowcharts illustrating a subroutine called by FIG. 8 that processes an updated parent and an updated child, respectively. .
간선이 삽입될 경우 임베딩 탐색Embedding search when edges are inserted
다음으로, DCS의 정보를 활용하여 데이터 그래프에서 새로 생기는 질의 그래프의 임베딩을 탐색한다(단계 S607). 임베딩의 탐색은 부분 임베딩(partial embedding)을 확장해나가는 백트래킹 방법을 기반으로 한다. 데이터 그래프에 새로 생기는 질의 그래프의 임베딩은 반드시 EDCS에 있는 간선 중 하나를 포함해야 하므로, EDCS에 있는 간선 하나를 부분 임베딩의 시작으로 한다. 또한, 임베딩에 포함된 (u,v)쌍은 D2[u,v]=1을 만족해야 하므로 EDCS에 있는 간선을 이라고 할 때 D2[u,v]=1이고 D2[u',v']=1인 간선에 대해서만 부분 임베딩을 구성하여 백트래킹을 진행하면 된다. Next, an embedding of a query graph newly created in the data graph is searched for using the information of the DCS (step S607). Embedding search is based on a backtracking method that extends partial embedding. Since the embedding of a newly created query graph in the data graph must include one of the edges in E DCS , one of the edges in E DCS is used as the start of partial embedding. In addition, since the (u,v) pair included in the embedding must satisfy D 2 [u,v]=1, the edge in E DCS , it is sufficient to configure partial embedding only for the edges with D 2 [u,v]=1 and D 2 [u',v']=1 and perform backtracking.
EDCS에 있는 간선으로 부분 임베딩을 구성한 이후에는 임베딩을 찾을 때까지 다음의 과정을 반복한다. 먼저, 질의 그래프의 확장 가능한 정점(extendable vertex) 중에서 매칭 순서(matching order)에 따라 하나의 정점을 선택한다. 여기서 확장 가능한 정점이란 아직 임베딩에 포함되지 않았고 자신의 이웃 중 최소 하나가 대응되어있는 정점을 의미한다. 확장 가능한 정점 의 확장 가능한 후보의 예상 크기(estimated size of extendable candidates) E(u)는 u의 이미 대응되어있는 이웃 정점 u'들에 대해서 의 최소값으로 정의된다. 이 값은 확장 가능한 후보 집합의 실제 크기의 상한값으로 확장 가능한 후보 대신에 사용된다. 매칭 순서에 의해 선택되는 정점 u는 확장 가능한 정점 중에서 E(u)값이 가장 작은 u가 된다. 확장 가능한 정점 중 하나를 선택하였다면 해당 질의 그래프의 정점이 대응될 수 있는 확장 가능한 후보들(extendable candidates)을 계산한다. 데이터 그래프의 정점 v가 질의 그래프의 정점 u의 확장 가능한 후보이려면 을 만족하고 u의 대응된 이웃들 u'에 대해서 간선 가 데이터 그래프에 존재해야 한다. u의 확장 가능한 후보들의 집합은 CM(u)로 표기한다. CM(u)를 계산하였으면 u를 CM(u)에 있는 후보 중 하나에 대응시켜 부분 임베딩을 확장하고 위의 과정을 반복하여 임베딩을 찾는다.After constructing the partial embedding with the edges in the E DCS , repeat the following process until the embedding is found. First, one vertex is selected according to a matching order among extendable vertices of the query graph. Here, an expandable vertex means a vertex that has not yet been included in the embedding and has at least one of its neighbors mapped. scalable vertices The estimated size of extendable candidates E(u) for u's already mapped neighboring vertices u' is defined as the minimum value of This value is the upper limit of the actual size of the scalable candidate set, and is used instead of the scalable candidate. The vertex u selected by the matching sequence becomes u with the smallest E(u) value among vertices that can be extended. If one of the extendable vertices is selected, extendable candidates to which the vertex of the query graph can correspond are calculated. For vertex v of the data graph to be a scalable candidate for vertex u of the query graph and for u's corresponding neighbors u' the edge must exist in the data graph. The set of extensible candidates for u is denoted by C M (u). After calculating C M (u), u is matched to one of the candidates in C M (u) to extend the partial embedding and repeat the above process to find the embedding.
간선이 삭제될 경우 임베딩 탐색Embedding navigation if edges are deleted
갱신 작업이 간선 삽입이 아니라 간선 삭제일 때도 간선 삽입과 비슷하게 할 수 있다(단계 S608~S610). 간선 삭제 작업일 때는 데이터 그래프와 DCS를 갱신하기 이전에 데이터 그래프에서 삭제되는 질의 그래프의 임베딩을 먼저 탐색한다(단계 S608). 자료 구조를 갱신하기 전에 임베딩을 먼저 탐색하는 이유는 자료 구조를 먼저 갱신할 경우 삭제되는 간선의 정보들이 제거되어 찾고자 하는 임베딩을 찾을 수 없기 때문이다. 임베딩의 탐색 방법은 단계 S607과 동일하다.Even when the update operation is not to insert but to delete a trunk, it can be similar to the insertion of a trunk (steps S608 to S610). In the case of an edge deletion task, the embedding of the query graph to be deleted in the data graph is first searched before updating the data graph and the DCS (step S608). The reason why the embedding is searched first before updating the data structure is that if the data structure is updated first, the information on the deleted edge is removed and the desired embedding cannot be found. The embedding search method is the same as that of step S607.
간선이 삭제될 경우 자료 구조 갱신Update data structure when edge is deleted
다음으로, 데이터 그래프에서 삭제되는 간선을 찾아 해당 간선을 삭제한다(단계 S609). 삭제되는 간선이 (v,v')일 때, 정점 v의 인접 목록(adjacency list)에서 v'을 찾아 삭제하고 정점 v'의 인접 목록에서 v을 찾아 삭제한다.Next, an edge to be deleted is found in the data graph and the corresponding edge is deleted (step S609). When the edge to be deleted is (v,v'), find v' in the adjacency list of vertex v and delete it, and find v in the adjacency list of vertex v' and delete it.
다음으로, DCS에서 삭제되는 간선 집합 EDCS를 고려하여 DCS를 갱신한다(단계 S610). 간선 삭제일 때 DCS 갱신 작업(단계 S610)은 간선 삽입일 때 DCS 갱신 작업(단계 S606)을 약간 수정하면 된다. 단계 S606과 마찬가지로, DCS에서 삭제되는 간선들을 반영해주고 갱신된 부모와 갱신된 자식이라는 개념을 통하여 D1과 D2값이 바뀔 수 있는 부분들만 계산한다. 달라지는 점은 단계 S610에서는 <u,v>의 부모 <up,vp>가 <u,v>의 갱신된 부모이려면 (1) D1[up,vp]의 값이 1이고 <up,vp>와 <u,v>사이의 간선이 삭제되는 경우 또는, (2) <up,vp>와 <u,v>사이의 간선이 존재하고 D1[up,vp]의 값이 1에서 0으로 변경되는 경우이다. 비슷하게, <u,v>의 자식 <uc,vc>가 <u,v>의 갱신된 자식이려면 (1) D2[uc,vc]의 값이 1이고 <uc,vc>와 <u,v>사이의 간선이 삭제되는 경우 또는, (2) <uc,vc>와 <u,v>사이의 간선이 존재하고 D2[uc,vc]의 값이 1에서 0으로 변경되는 경우이다. 또 하나 달라지는 부분은 만약 D2[u,v]의 값이 1이고 갱신 과정 중에 D1[u,v]의 값이 1에서 0으로 변경되었다면 정의에 따라 D2[u,v]의 값 또한 0으로 변경되어야 한다. 위의 점들을 고려하여 도 8, 도 9, 도 10과 비슷한 순서도로 단계 S610을 처리할 수 있다.Next, the DCS is updated in consideration of the edge set E DCS deleted from the DCS (step S610). The DCS update operation (step S610) in case of trunk line deletion may be performed by slightly modifying the DCS update operation (step S606) in case of trunk line insertion. Similar to step S606, only parts where the values of D 1 and D 2 can be changed are calculated by reflecting the edges deleted from the DCS and through the concept of an updated parent and an updated child. The difference is that in step S610, if the parent <u p ,v p > of <u,v> is the updated parent of <u,v>, (1) the value of D 1 [u p ,v p ] is 1 and <u If the edge between p ,v p > and <u,v> is deleted, or (2) the edge between <u p ,v p > and <u,v> exists and D 1 [u p ,v p ] is changed from 1 to 0. Similarly, if a child <u c ,v c > of <u,v> is an updated child of <u,v>, then (1) the value of D 2 [u c ,v c ] is 1 and <u c ,v If the edge between c > and <u,v> is deleted, or (2) the edge between <u c ,v c > and <u,v> exists and the value of D 2 [u c ,v c ] is changed from 1 to 0. Another difference is that if the value of D 2 [u,v] is 1 and the value of D 1 [u,v] is changed from 1 to 0 during the update process, the value of D 2 [u,v] is also changed according to the definition. should be changed to 0. Step S610 may be processed in a flowchart similar to that of FIGS. 8, 9, and 10 in consideration of the above points.
도 7a 내지 도 7c는 실시예에 따른 동적 후보 공간의 갱신 과정을 예시적으로 설명하기 위한 도면이다.7A to 7C are diagrams for illustratively explaining a process of updating a dynamic candidate space according to an embodiment.
도 7a, 도 7b 및 도 7c는 도 2b의 동적 그래프(g)와 도 3b의 DAG로 만들어지는 동적 후보 공간(DCS)를 예시적으로 보여준다. 도 7a는 도 2b의 초기 데이터 그래프 g-0와 도 3b의 DAG ()로 만들어지는 예시적인 초기 DCS이다. 도 7b와 도 7c는 각각 제 1 간선 삽입(Δo1) 및 제 2 간선 삽입(Δo2) 후에 갱신된 동적 후보 공간(DCS)을 도시한다.7a, 7b, and 7c exemplarily show a dynamic candidate space (DCS) created by the dynamic graph (g) of FIG. 2b and the DAG of FIG. 3b. 7a shows the initial data graph g -0 of FIG. 2b and the DAG of FIG. 3b ( ) is an exemplary initial DCS made of 7b and 7c show first trunk insertion (Δo 1 ), respectively. and the updated dynamic candidate space (DCS) after the second edge insertion (Δo 2 ).
도 7b에 표시된 점선은 제 1 간선 삽입(Δo1)으로 인해 DCS에 새로 생기는 간선을 표시한 것이다. 이와 같이, 데이터 그래프에 하나의 간선이 삽입되었을 때 DCS에는 여러 간선이 삽입될 수 있다.The dotted line shown in FIG. 7B indicates a newly created trunk line in the DCS due to the first trunk insertion (Δo 1 ). In this way, when one edge is inserted in the data graph, several edges may be inserted in the DCS.
도 7a의 초기 DCS를 보면, 질의 그래프의 정점 u2와 동일한 레이블을 가지는 데이터 그래프의 정점은 v3, v5, v6 이므로 C(u2)={v3,v5,v6}이 된다. 또한, v3에 의 약한 임베딩 M'={(u2, v3),(u1, v1}}이 존재하므로 제 1 임베딩 정보 D1[u2, v3]은 1이 되고, v3에 의 약한 임베딩이 존재하지 않기 때문에 제 2 임베딩 정보 D2[u2, v3]은 0이 된다.Referring to the initial DCS of FIG. 7A, since the vertices of the data graph having the same label as the vertex u 2 of the query graph are v 3 , v 5 , and v 6 , C(u 2 )={v 3 ,v 5 ,v 6 } do. Also, in v 3 Since there is a weak embedding M′={(u 2 , v 3 ),(u 1 , v 1 }} of , the first embedding information D 1 [u 2 , v 3 ] becomes 1, and v 3 Since the weak embedding of does not exist, the second embedding information D 2 [u 2 , v 3 ] becomes 0.
도 7b에서 D2[u, v]=1인 (u,v)쌍이 없으므로 실시예에 의하면 제 1 간선 삽입(Δo1)에 의해 새로 생기는 임베딩이 없다는 사실을 별도의 백트래킹 과정 없이 바로 알 수 있다.In FIG. 7B, since there is no (u,v) pair with D 2 [u, v]=1, according to the embodiment, it can be immediately known that there is no embedding newly generated by the first trunk insertion (Δo 1 ) without a separate backtracking process. there is.
하지만, 도 3a의 신장 트리를 사용하는 TurboFlux의 경우 데이터 그래프에 제 1 간선(도 7a 내지 도 7c는 실시예에 따른 동적 후보 공간의 갱신 과정을 예시적으로 설명하기 위한 도면이다.However, in the case of TurboFlux using the spanning tree of FIG. 3A, the first trunk line in the data graph (FIGS. 7A to 7C are diagrams for exemplarily explaining the process of updating the dynamic candidate space according to the embodiment.
도 7a, 도 7b 및 도 7c는 도 2b의 동적 그래프(g)와 도 3b의 DAG로 만들어지는 동적 후보 공간(DCS)를 예시적으로 보여준다. 도 7a는 도 2b의 초기 데이터 그래프 g-0와 도 3b의 DAG ()로 만들어지는 예시적인 초기 DCS이다. 도 7b와 도 7c는 각각 제 1 간선 삽입(Δo1) 및 제 2 간선 삽입(Δo2) 후에 갱신된 동적 후보 공간(DCS)을 도시한다.7a, 7b, and 7c exemplarily show a dynamic candidate space (DCS) created by the dynamic graph (g) of FIG. 2b and the DAG of FIG. 3b. 7a shows the initial data graph g -0 of FIG. 2b and the DAG of FIG. 3b ( ) is an exemplary initial DCS made of 7b and 7c show first trunk insertion (Δo 1 ), respectively. and the updated dynamic candidate space (DCS) after the second edge insertion (Δo 2 ).
도 7b에 표시된 점선은 제 1 간선 삽입(Δo1)으로 인해 DCS에 새로 생기는 간선을 표시한 것이다. 이와 같이, 데이터 그래프에 하나의 간선이 삽입되었을 때 DCS에는 여러 간선이 삽입될 수 있다.The dotted line shown in FIG. 7B indicates a newly created trunk line in the DCS due to the first trunk insertion (Δo 1 ). In this way, when one edge is inserted in the data graph, several edges may be inserted in the DCS.
도 7a의 초기 DCS를 보면, 질의 그래프의 정점 u2와 동일한 레이블을 가지는 데이터 그래프의 정점은 v3, v5, v6 이므로 C(u2)={v3,v5,v6}이 된다. 또한, v3에 의 약한 임베딩 M'={(u2, v3),(u1, v1}}이 존재하므로 제 1 임베딩 정보 D1[u2, v3]은 1이 되고, v3에 의 약한 임베딩이 존재하지 않기 때문에 제 2 임베딩 정보 D2[u2, v3]은 0이 된다.Referring to the initial DCS of FIG. 7A, since the vertices of the data graph having the same label as the vertex u 2 of the query graph are v 3 , v 5 , and v 6 , C(u 2 )={v 3 ,v 5 ,v 6 } do. Also, in v 3 Since there is a weak embedding M′={(u 2 , v 3 ),(u 1 , v 1 }} of , the first embedding information D 1 [u 2 , v 3 ] becomes 1, and v 3 Since the weak embedding of does not exist, the second embedding information D 2 [u 2 , v 3 ] becomes 0.
도 7b에서 D2[u, v]=1인 (u,v)쌍이 없으므로 실시예에 의하면 제 1 간선 삽입(Δo1)에 의해 새로 생기는 임베딩이 없다는 사실을 별도의 백트래킹 과정 없이 바로 알 수 있다.In FIG. 7B, since there is no (u,v) pair with D 2 [u, v]=1, according to the embodiment, it can be immediately known that there is no embedding newly generated by the first trunk insertion (Δo 1 ) without a separate backtracking process. there is.
하지만, 도 3a의 신장 트리를 사용하는 TurboFlux의 경우 데이터 그래프에 제 1 간선(Δo1)을 포함하는 신장 트리의 임베딩 있으므로 새로 생기는 임베딩이 없다는 사실을 알기 위해서는 백트래킹 과정을 거쳐야 한다.However, in the case of TurboFlux using the spanning tree of FIG. 3A, since the data graph contains the embedding of the spanning tree including the first edge (Δo 1 ), a backtracking process is required to know that there is no new embedding.
도 8은 갱신 작업이 간선 삽입일 경우 실시예에 따른 동적 후보 공간을 갱신하는 방법의 흐름도이다.8 is a flowchart of a method for updating a dynamic candidate space according to an embodiment when an update operation is trunk insertion.
도 8를 참조하여 단계 S606은 우선 비어있는 두 개의 큐(queue) Q1과 Q2를 도입한다(단계 S801). Q1에는 DCS 갱신 과정 동안 D1[u,v]의 값이 0에서 1로 바뀐 <u,v>가 저장되고 이 쌍들은 자기 자식들의 갱신된 부모가 된다. 비슷하게 Q2에는 D2[u,v]의 값이 0에서 1로 바뀐 <u,v>가 저장되고 이 쌍들은 자기 부모들의 갱신된 자식이 된다.Referring to FIG. 8, step S606 first introduces two empty queues Q 1 and Q 2 (step S801). Q 1 stores <u,v>, where the value of D 1 [u,v] changed from 0 to 1 during the DCS update process, and these pairs become updated parents of their children. Similarly, Q 2 stores <u,v> where the value of D 2 [u,v] changes from 0 to 1, and these pairs become updated children of their parents.
EDCS 집합에 있는 DCS에 새로 생긴 간선 (<u1, v1>, <u2,v2>) 하나하나에 대해 단계 S803부터 단계 S812를 실행하고 모든 간선에 대한 처리가 끝났으면 단계 800은 종료된다(단계 S802). 이 때 전술한 EDCS-를 생성하는 방법에 따라 <u1, v1>가 <u2,v2>의 부모인 것은 보장된다.If steps S803 to S812 are executed for each of the newly created edges (<u 1 , v 1 >, <u 2 , v 2 >) in the DCS in the E DCS set, and processing of all edges is completed,
EDCS에 아직 처리되지 않은 간선이 있다면 가장 처음에는 <u1, v1>이 <u2,v2>의 갱신된 부모의 첫 번째 경우에 해당하는지 확인한다(단계 S803). EDCS-의 정의에 따라서 현재 <u1, v1>과 <u2,v2> 사이에 간선이 삽입된 상태이므로 D1[u1,v1]의 값이 1인지만 확인하면 된다. 만약 D1[u,v]의 값이 1이라서 <u1, v1>이 <u2,v2>의 갱신된 부모라면 도 9를 참조하여 단계 900을 호출한다(단계 S804).If there is an edge that has not yet been processed in the E DCS , it is first checked whether <u 1 , v 1 > corresponds to the first case of the updated parent of <u 2 , v 2 > (step S803). According to the definition of E DCS- , an edge is currently inserted between <u 1 , v 1 > and <u 2 ,v 2 >, so you only need to check if the value of D 1 [u 1 , v 1 ] is 1. If the value of D 1 [u, v] is 1 and <u 1 , v 1 > is an updated parent of <u 2 , v 2 >,
단계 S803에서 <u1, v1>이 <u2,v2> 의 갱신된 부모의 첫 번째 경우에 해당하는지 확인한 것처럼 반대로 <u2,v2>이 <u1, v1>의 갱신된 자식의 첫 번째 경우에 해당하는지 확인한다(단계 S805). D2[u2,v2]의 값이 1이면 조건을 만족하여 <u2,v2>가 <u1, v1>의 갱신된 자식이고 이를 처리하기 위해 도 10을 참조하여 단계 1000을 호출한다(단계 S806).Conversely, as confirmed in step S803 whether <u 1 , v 1 > corresponds to the first case of the updated parent of < u 2 , v 2 >, <u 2 , v 2 > is the updated parent of <u 1 , v 1 >. It is checked whether the child corresponds to the first case (step S805). If the value of D 2 [u 2 , v 2 ] is 1, the condition is satisfied and <u 2 , v 2 > is an updated child of <u 1 , v 1 >. Call (step S806).
도 9는 갱신 작업이 간선 삽입일 경우 실시예에 따른 동적 후보 공간을 갱신하는 방법의 세부 흐름도이다.9 is a detailed flowchart of a method for updating a dynamic candidate space according to an embodiment when an update operation is trunk insertion.
단계 900은 <u, v>와 <u, v>의 자식 <uc, vc>를 입력으로 받아 호출되며, 이때 <u, v>는 <uc, vc>의 갱신된 부모이다. 단계 900은 앞에서 정의한을 갱신하고 이 과정에서 D1[uc, vc]의 값이 1이 되면 Q1에 <uc, vc>을 삽입하여 <uc, vc>의 자식들 또한 갱신될 수 있도록 한다.Step 900 is called by receiving <u, v> and children <u c , v c > of <u, v> as inputs, where <u, v> is the updated parent of <u c , v c >. Step 900 is the previously defined is updated, and in this process, when the value of D 1 [u c , v c ] becomes 1, <u c , v c > is inserted into Q 1 so that the children of <u c , v c > can also be updated. .
도 9를 살펴보면, 제일 처음에는 의 값이 0인지 비교하고(단계 S902), 0이 아니라면 의 값을 1 증가시키고 종료된다(단계 S910).Looking at Figure 9, at first Compare whether the value of is 0 (step S902), and if not 0 The value of is increased by 1 and ends (step S910).
만약 의 값이 0이라면 의 값이 0에서 1로 바뀌면서 정의에 따라 의 값은 1 증가한다(단계 S903).if If the value of is 0 As the value of is changed from 0 to 1 by definition The value of is increased by 1 (step S903).
D1[uc, vc]를 갱신하기 위해서 증가한 의 값이 uc의 부모의 수와 같은지 비교하고(단계 S904), 값이 같다면 D1[uc, vc]의 값을 0에서 1로 갱신한 뒤(단계 S905), Q1에 <uc, vc>을 삽입한다(단계 S906).D 1 incremented to update [u c , v c ] Compare whether the value of is equal to the number of parents of u c (step S904), and if the values are equal, update the value of D 1 [u c , v c ] from 0 to 1 (step S905), and Q 1 < u c , v c > are inserted (step S906).
만약 의 값이 uc의 부모의 수와 다르다면 의 값을 1 증가시키고 종료된다(단계 S910). D1[uc, vc]의 값이 1로 갱신됨에 따라서 D2[uc, vc]의 값 또한 1로 갱신될 여지가 생기기 때문에 조건을 만족하는지 비교한다(단계 S907).if If the value of is different from the number of parents of u c The value of is increased by 1 and ends (step S910). As the value of D 1 [u c , v c ] is updated to 1, there is room for the value of D 2 [u c , v c ] to be updated to 1, so whether the condition is satisfied is compared (step S907).
조건을 만족하면 D2[uc, vc]의 값을 1로 갱신하고(단계 S908) Q2에 <uc, vc>을 삽입한다(단계 S909). 조건을 만족하지 않다면 의 값을 1 증가시키고 종료된다(단계 S910).If the condition is satisfied, the value of D 2 [u c , v c ] is updated to 1 (step S908) and <u c , v c > is inserted into Q 2 (step S909). if the condition is not met The value of is increased by 1 and ends (step S910).
도 10은 갱신 작업이 간선 삽입일 경우 실시예에 따른 동적 후보 공간을 갱신하는 방법의 세부 흐름도이다.10 is a detailed flowchart of a method for updating a dynamic candidate space according to an embodiment when an update operation is trunk insertion.
단계 1000은 도 10을 참조하여 단계 900과 비슷하다. 단계 1000은 <u, v>와 <u, v>의 부모 <up, vp>를 입력으로 받아 호출되며, 이때 <u, v>는 <up, vp>의 갱신된 자식이다.
단계 1000은 을 갱신하고 이 과정에서 D2[up, vp]의 값이 1로 갱신되면 Q2에 <up, vp>을 삽입하여 <up, vp>의 부모들 또한 갱신될 수 있도록 한다.
갱신된 부모와 갱신된 자식의 첫 번째 경우에 따른 DCS 갱신을 모두 다 완료하면, 두 번째 경우에 따른 DCS 갱신을 진행한다. 갱신된 부모의 두 번째 경우는 둘 사이에 이미 간선이 존재하고 부모의 D1 값이 0에서 1로 변경될 때다. Q1에는 D1의 값이 0에서 1로 변경된 <u, v>들이 들어있으므로 Q1에 들어있는 <u, v>는 자신의 자식들에 대해서 갱신된 부모의 두 번째 경우에 해당된다. 따라서 Q1에 들어있는 <u,v>의 자식들에 대해서 갱신 작업을 진행하면 된다.When the DCS update according to the first case of the updated parent and the updated child is completed, the DCS update according to the second case is performed. The second case of an updated parent is when an edge already exists between the two and the parent's D 1 value changes from 0 to 1. Since Q 1 contains <u, v> whose value of D 1 is changed from 0 to 1, <u, v> in Q 1 corresponds to the second case of the parent updated for its children. Therefore, you can proceed with updating the children of <u,v> in Q 1 .
Q1에 남아있는 <u, v>가 없을 때까지 도 9를 참조하여 단계 S808과 단계 S809를 수행한다(단계 S807). Q1의 가장 앞에 있는 <u, v>을 꺼내고(단계 S808) 꺼낸 <u, v>와 <u, v>의 자식들에 대해서 도 9를 참조하여 단계 900을 호출해 갱신한다(단계 S809). 단계 S809에서 호출하는 단계 900으로 인해 Q1에 새로운 <u, v>가 삽입될 수 있다.Steps S808 and S809 are performed with reference to FIG. 9 until <u, v> remains in Q 1 (step S807). <u, v> at the front of Q 1 is taken out (step S808), and the children of <u, v> and <u, v> are called and updated by calling
반복 과정을 통해 Q1에 있는 모든 원소에 대해 처리하였다면 비슷하게 Q2에 대해서 Q2가 빌 때까지(단계 S810) Q2의 가장 앞에 있는 <u, v>를 꺼내서(단계 S811) <u, v>와 <u, v>의 부모들에 대해서 단계 1000을 호출하여 처리한다(단계 S812).If all elements in Q 1 have been processed through an iterative process, similarly, for Q 2 , take out <u, v> at the front of Q 2 until Q 2 is empty (Step S810) (Step S811) and <u,
마지막으로 <u, v>의 자식 <uc, vc>에 대해서 의 값을 하나 증가시킨다 (단계 S813). 이는 의 정의가 모든 이웃에 대해서 정의되기 때문에 단계 1007에서 부모에 대해서만 갱신되기에 따로 처리해주는 것이다. Q2에 있는 모든 <u, v>를 처리하였다면 단계 S802로 돌아가 EDCS에 있는 다음 간선에 대해서 반복한다.Finally, for children <u c , v c > of <u, v> The value of is increased by one (step S813). this is Since the definition of is defined for all neighbors, it is processed separately because it is updated only for the parent in step 1007. If all <u, v> in Q 2 have been processed, return to step S802 and repeat for the next edge in E DCS .
연속적 부분 그래프 매칭 문제에서 다루는 동적 그래프의 예로는 소셜 네트워크, 컴퓨터 통신 네트워크, 금융 거래 등의 빅데이터 그래프가 있다. 동적 그래프에서 특정 패턴을 빠르게 탐지하는 것은 금융 거래에서의 사기 탐지, 컴퓨터 통신 네트워크에서의 사이버 보안, 소셜 네트워크에서의 추천 시스템 등 다양한 응용 분야에서 중요한 과제이다. 본 발명이 푸는 연속적 부분 그래프 매칭 문제는 동적 그래프에서 특정 패턴을 빠르게 탐지하는 데 이용될 수 있다.Examples of dynamic graphs dealt with in the continuous subgraph matching problem include big data graphs such as social networks, computer communication networks, and financial transactions. Rapid detection of specific patterns in dynamic graphs is an important challenge in a variety of applications, including fraud detection in financial transactions, cybersecurity in computer communication networks, and recommender systems in social networks. The continuous subgraph matching problem solved by the present invention can be used to quickly detect a specific pattern in a dynamic graph.
본 기술로 개발한 소프트웨어는 최신 연구 TurboFlux에 비해서 최대 수천 배 빠를 정도로 기술적 완성도가 높다. 이미 개발된 소프트웨어를 사용하여 금융 거래에서의 사기 탐지, 컴퓨터 통신 네트워크에서의 사이버 보안, 소셜 네트워크에서의 추천 시스템 등을 수행하는 소프트웨어를 용이하게 개발할 수 있다.The software developed with this technology has a high level of technological perfection, up to thousands of times faster than the latest researched TurboFlux. Software that performs fraud detection in financial transactions, cyber security in computer communication networks, and recommendation systems in social networks can be easily developed using already developed software.
전술한 본 발명의 일 실시예에 따른 방법은 컴퓨터 프로그램이 기록된 비일시적 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 비일시적 기록 매체는, 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 비일시적 기록 매체의 예로는, HDD(Hard Disk Drive), SSD(Solid State Disk), SDD(Silicon Disk Drive), ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다.The above-described method according to an embodiment of the present invention can be implemented as computer readable code in a non-transitory storage medium in which a computer program is recorded. A computer-readable non-transitory recording medium includes all types of recording devices in which data readable by a computer system is stored. Examples of computer-readable non-transitory recording media include Hard Disk Drive (HDD), Solid State Disk (SSD), Silicon Disk Drive (SDD), ROM, RAM, CD-ROM, magnetic tape, floppy disk, and optical data. storage devices, etc.
이상 설명된 본 발명의 실시예에 대한 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The description of the embodiments of the present invention described above is for illustrative purposes, and those skilled in the art can easily modify them into other specific forms without changing the technical spirit or essential features of the present invention. you will understand that Therefore, the embodiments described above should be understood as illustrative in all respects and not limiting. For example, each component described as a single type may be implemented in a distributed manner, and similarly, components described as distributed may be implemented in a combined form.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 청구범위에 의하여 나타내어지며, 청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is indicated by the following claims rather than the above detailed description, and all changes or modifications derived from the meaning and scope of the claims and equivalent concepts thereof should be construed as being included in the scope of the present invention.
100:
연속적 부분 그래프 매칭 장치
110:
프로세서
120:
메모리100: continuous subgraph matching device
110: processor
120: memory
Claims (11)
질의 그래프로부터 루트가 있는 DAG(Directed Acyclic Graph)를 획득하는 단계;
데이터 그래프 및 상기 DAG에 기반하여 상기 질의 그래프와 상기 데이터 그래프 간의 연속적 부분 그래프 매칭을 위한 동적 후보 공간(Dynamic Candidate Space; DCS)을 획득하는 단계; 및
상기 데이터 그래프의 갱신 작업에 따라 상기 동적 후보 공간을 이용하여 상기 연속적 부분 그래프 매칭을 탐색하는 단계를 포함하고,
상기 동적 후보 공간은,
상기 질의 그래프의 정점에 대한 상기 데이터 그래프의 후보 정점의 집합;
상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 역방향 부분 DAG의 임베딩과 연계된 제 1 임베딩 정보; 및
상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 부분 DAG의 임베딩과 연계된 제 2 임베딩 정보를 포함하는,
연속적 부분 그래프 매칭 방법.
A continuous subgraph matching method between a query graph and a data graph,
obtaining a Directed Acyclic Graph (DAG) with a root from the query graph;
obtaining a dynamic candidate space (DCS) for continuous subgraph matching between the query graph and the data graph based on the data graph and the DAG; and
Searching for the continuous subgraph matching using the dynamic candidate space according to the update operation of the data graph;
The dynamic candidate space,
a set of candidate vertices of the data graph for vertices of the query graph;
in the candidate vertex, first embedding information associated with embedding of an inverse part DAG taking as a root a vertex of the DAG corresponding to a vertex of the query graph; and
In the candidate vertex, second embedding information associated with an embedding of a partial DAG having a vertex of the DAG corresponding to a vertex of the query graph as a root,
Continuous subgraph matching method.
상기 DAG를 획득하는 단계는,
너비 우선 탐색으로 상기 질의 그래프를 탐색하면서 먼저 방문한 정점에서 다음 방문한 정점으로 간선의 방향을 설정하는 단계; 및
가장 높은 높이의 DAG를 만드는 정점을 상기 DAG의 루트로 결정하는 단계를 포함하는,
연속적 부분 그래프 매칭 방법.
According to claim 1,
The step of obtaining the DAG,
setting a direction of an edge from a first visited vertex to a next visited vertex while searching the query graph using a breadth first search; and
Determining a vertex that creates a DAG with the highest height as the root of the DAG,
Continuous subgraph matching method.
상기 갱신 작업이 간선 삽입인 경우, 상기 연속적 부분 그래프 매칭을 탐색하는 단계는,
상기 간선 삽입에 따라 상기 데이터 그래프를 갱신하는 단계;
갱신된 상기 데이터 그래프에 기반하여 상기 동적 후보 공간을 갱신하는 단계; 및
상기 데이터 그래프에 새로 생기는 상기 질의 그래프의 임베딩을 탐색하는 단계를 포함하는,
연속적 부분 그래프 매칭 방법.
According to claim 1,
When the update operation is edge insertion, the step of searching for contiguous subgraph matching,
updating the data graph according to the insertion of the trunk line;
updating the dynamic candidate space based on the updated data graph; and
Searching for an embedding of the query graph newly created in the data graph,
Continuous subgraph matching method.
상기 갱신 작업이 간선 삭제인 경우, 상기 연속적 부분 그래프 매칭 관계를 탐색하는 단계는,
상기 데이터 그래프에서 삭제되는 상기 질의 그래프의 임베딩을 탐색하는 단계;
상기 간선 삭제에 따라 상기 데이터 그래프를 갱신하는 단계; 및
갱신된 상기 데이터 그래프에 기반하여 상기 동적 후보 공간을 갱신하는 단계를 포함하는,
연속적 부분 그래프 매칭 방법.
According to claim 1,
When the update operation is an edge deletion, the step of searching for a contiguous subgraph matching relation,
searching for an embedding of the query graph to be deleted from the data graph;
updating the data graph according to the deletion of the trunk line; and
Updating the dynamic candidate space based on the updated data graph,
Continuous subgraph matching method.
상기 후보 정점의 집합은 상기 질의 그래프의 정점의 레이블과 동일한 레이블을 갖는 상기 데이터 그래프의 정점의 집합인,
연속적 부분 그래프 매칭 방법.
According to claim 1,
The set of candidate vertices is a set of vertices of the data graph having the same label as the label of the vertex of the query graph.
Continuous subgraph matching method.
적어도 하나의 명령어를 저장하는 메모리; 및
프로세서를 포함하고, 상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금,
질의 그래프로부터 루트가 있는 DAG(Directed Acyclic Graph)를 획득하고,
데이터 그래프 및 상기 DAG에 기반하여 상기 질의 그래프와 상기 데이터 그래프 간의 연속적 부분 그래프 매칭을 위한 동적 후보 공간(Dynamic Candidate Space; DCS)을 획득하고,
상기 데이터 그래프의 갱신 작업에 따라 상기 동적 후보 공간을 이용하여 상기 연속적 부분 그래프 매칭을 탐색하도록 구성되고,
상기 동적 후보 공간은,
상기 질의 그래프의 정점에 대한 상기 데이터 그래프의 후보 정점의 집합;
상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 역방향 부분 DAG의 임베딩과 연계된 제 1 임베딩 정보; 및
상기 후보 정점에서, 상기 질의 그래프의 정점에 대응하는 상기 DAG의 정점을 루트로 하는 부분 DAG의 임베딩과 연계된 제 2 임베딩 정보를 포함하는,
연속적 부분 그래프 매칭 장치.
An apparatus for matching continuous subgraphs between a query graph and a data graph,
a memory storing at least one instruction; and
a processor, wherein the at least one instruction, when executed by the processor, causes the processor to:
Obtain a Directed Acyclic Graph (DAG) with a root from the query graph,
Acquiring a dynamic candidate space (DCS) for continuous subgraph matching between the query graph and the data graph based on the data graph and the DAG;
configured to search for the contiguous subgraph matching using the dynamic candidate space according to an update operation of the data graph;
The dynamic candidate space,
a set of candidate vertices of the data graph for vertices of the query graph;
in the candidate vertex, first embedding information associated with embedding of an inverse part DAG taking as a root a vertex of the DAG corresponding to a vertex of the query graph; and
In the candidate vertex, second embedding information associated with an embedding of a partial DAG having a vertex of the DAG corresponding to a vertex of the query graph as a root,
Continuous subgraph matching device.
상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 DAG를 획득하기 위하여,
너비 우선 탐색으로 상기 질의 그래프를 탐색하면서 먼저 방문한 정점에서 다음 방문한 정점으로 간선의 방향을 설정하고,
가장 높은 높이의 DAG를 만드는 정점을 상기 DAG의 루트로 결정하도록 구성되는,
연속적 부분 그래프 매칭 장치.
According to claim 6,
The at least one instruction, when executed by the processor, causes the processor to: obtain the DAG;
While traversing the query graph with a breadth-first search, setting the direction of an edge from the first visited vertex to the next visited vertex;
Is configured to determine the vertex making the DAG of the highest height as the root of the DAG,
Continuous subgraph matching device.
상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 갱신 작업이 간선 삽입인 경우, 상기 연속적 부분 그래프 매칭을 탐색하기 위하여,
상기 간선 삽입에 따라 상기 데이터 그래프를 갱신하고,
갱신된 상기 데이터 그래프에 기반하여 상기 동적 후보 공간을 갱신하고,
상기 데이터 그래프에 새로 생기는 상기 질의 그래프의 임베딩을 탐색하도록 구성되는,
연속적 부분 그래프 매칭 장치.
According to claim 6,
The at least one instruction, when executed by the processor, causes the processor to search for the contiguous subgraph matching when the update operation is an edge insertion,
Updating the data graph according to the insertion of the edge;
Updating the dynamic candidate space based on the updated data graph;
And configured to explore embeddings of the query graph newly created in the data graph.
Continuous subgraph matching device.
상기 적어도 하나의 명령어는 상기 프로세서에 의해 실행될 때 상기 프로세서로 하여금, 상기 갱신 작업이 간선 삭제인 경우, 상기 연속적 부분 그래프 매칭 관계를 탐색하기 위하여,
상기 데이터 그래프에서 삭제되는 상기 질의 그래프의 임베딩을 탐색하고,
상기 간선 삭제에 따라 상기 데이터 그래프를 갱신하고,
갱신된 상기 데이터 그래프에 기반하여 상기 동적 후보 공간을 갱신하도록 구성되는,
연속적 부분 그래프 매칭 장치.
According to claim 6,
The at least one command, when executed by the processor, causes the processor to search for the contiguous subgraph matching relationship when the update operation is an edge deletion,
Search for an embedding of the query graph to be deleted from the data graph;
Updating the data graph according to the deletion of the edge;
configured to update the dynamic candidate space based on the updated data graph;
Continuous subgraph matching device.
상기 후보 정점의 집합은 상기 질의 그래프의 정점의 레이블과 동일한 레이블을 갖는 상기 데이터 그래프의 정점의 집합인,
연속적 부분 그래프 매칭 장치.
According to claim 6,
The set of candidate vertices is a set of vertices of the data graph having the same label as the label of the vertex of the query graph.
Continuous subgraph matching device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210188220A KR20230099120A (en) | 2021-12-27 | 2021-12-27 | Method and apparatus for continuous subgraph matching using dynamic candidate space |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210188220A KR20230099120A (en) | 2021-12-27 | 2021-12-27 | Method and apparatus for continuous subgraph matching using dynamic candidate space |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230099120A true KR20230099120A (en) | 2023-07-04 |
Family
ID=87156295
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210188220A KR20230099120A (en) | 2021-12-27 | 2021-12-27 | Method and apparatus for continuous subgraph matching using dynamic candidate space |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230099120A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118113756A (en) * | 2024-01-16 | 2024-05-31 | 广州大学 | Continuous subgraph matching method and device based on time sequence constraint and storage medium |
-
2021
- 2021-12-27 KR KR1020210188220A patent/KR20230099120A/en not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118113756A (en) * | 2024-01-16 | 2024-05-31 | 广州大学 | Continuous subgraph matching method and device based on time sequence constraint and storage medium |
CN118113756B (en) * | 2024-01-16 | 2024-09-17 | 广州大学 | Continuous subgraph matching method and device based on time sequence constraint and storage medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6875557B2 (en) | Methods and devices for writing service data to the blockchain system | |
US8824337B1 (en) | Alternate directions in hierarchical road networks | |
Behnezhad et al. | Near-optimal massively parallel graph connectivity | |
JP6106231B2 (en) | Information processing apparatus, information processing method, and program | |
CN111249736B (en) | Code processing method and device | |
JPH0782544B2 (en) | DP matching method and apparatus using multi-template | |
KR102047953B1 (en) | Method and System for Recognizing Faces | |
Díaz et al. | Complexity of metric dimension on planar graphs | |
CN112052413B (en) | URL fuzzy matching method, device and system | |
CN114283099A (en) | Method, system and device for processing graph | |
Murakami et al. | Reconstructing tree-child networks from reticulate-edge-deleted subnetworks | |
KR20230099120A (en) | Method and apparatus for continuous subgraph matching using dynamic candidate space | |
US11875199B2 (en) | Real-time multi-pattern detection over event streams | |
Chen et al. | A Space-Efficient Algorithm for Segment Intersection. | |
CN116204532A (en) | Graph index migration method and device based on DCG | |
Aksu et al. | Multi-resolution social network community identification and maintenance on big data platform | |
JP4128439B2 (en) | Array compression method | |
Nesson et al. | Optimal k-arization of synchronous tree-adjoining grammar | |
FI117655B (en) | A method for processing a computer-aided polygon model, a device and a computer program | |
Modanese et al. | Shrinking and expanding cellular automata | |
JP7140107B2 (en) | Information management device, information management method, and information management program | |
US8538185B1 (en) | Optimizing bounds checking in neighborhood processes | |
KR102462649B1 (en) | Graph reformulation for effective community detection | |
CN111124144B (en) | Input data processing method and device | |
Lee et al. | Fast Run-Based Connected Components Labeling for Bitonal Images |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal |