CN113553477B - 一种图的拆分方法和装置 - Google Patents

一种图的拆分方法和装置 Download PDF

Info

Publication number
CN113553477B
CN113553477B CN202010327543.XA CN202010327543A CN113553477B CN 113553477 B CN113553477 B CN 113553477B CN 202010327543 A CN202010327543 A CN 202010327543A CN 113553477 B CN113553477 B CN 113553477B
Authority
CN
China
Prior art keywords
node
data
graph
nodes
query
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.)
Active
Application number
CN202010327543.XA
Other languages
English (en)
Other versions
CN113553477A (zh
Inventor
李圣
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010327543.XA priority Critical patent/CN113553477B/zh
Publication of CN113553477A publication Critical patent/CN113553477A/zh
Application granted granted Critical
Publication of CN113553477B publication Critical patent/CN113553477B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/903Querying
    • G06F16/90335Query processing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (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

一种图的拆分方法和装置
技术领域
本申请涉及图的拆分技术领域,特别是涉及一种图的拆分方法和一种图的拆分装置。
背景技术
图可以是一种数据的表示方法,其可以用于表示数据之间的关系。在进行数据挖掘时,可以根据数据挖掘的需要,采用特定的查询图,在海量数据形成的数据图中,查找与查询图具有子图同构关系的数据子图,以实现海量数据中挖掘特定的数据。然而,在海量数据中查找与查询图具有子图同构关系的数据子图,属于NP完全问题,需要消耗大量的计算资源进行处理。
发明内容
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种图的拆分方法和相应的一种图的拆分装置。
为了解决上述问题,本申请实施例公开了一种图的拆分方法,包括:
获取查询图;所述查询图包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据;
采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值;
采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图。
可选地,所述采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值的步骤,包括:
在所述边中,确定所述节点中每一所述实例数据对应的邻接边;
采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述节点的数据膨胀值。
可选地,所述采用所述边,确定所述节点中每一所述实例数据对应的邻接边的步骤,包括:
在所述节点中,查找非叶子节点;
在所述边中,确定所述非叶子节点中每一所述实例数据对应的邻接边。
可选地,所述采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图的步骤,包括:
采用所述数据膨胀值,确定中心节点;
在所述查询图中,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图。
本申请实施例还公开一种图的拆分装置,包括:
获取模块,用于获取查询图;所述查询图包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据;
确定模块,用于采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值;
拆分模块,用于采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图。
可选地,所述确定模块包括:
邻接边确定子模块,用于在所述边中,确定所述节点中每一所述实例数据对应的邻接边;
膨胀确定子模块,用于采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述节点的数据膨胀值。
可选地,所述邻接边确定子模块包括:
查找单元,用于在所述节点中,查找非叶子节点;
邻接边确定单元,用于在所述边中,确定所述非叶子节点中每一所述实例数据对应的邻接边。
可选地,所述拆分模块包括:
中心节点确定子模块,用于采用所述数据膨胀值,确定中心节点;
拆分子模块,用于在所述查询图中,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图。
本申请实施例还公开一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如本申请实施例所述的一个或多个的方法。
本申请实施例还公开一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如本申请实施例所述的一个或多个的方法。
本申请实施例包括以下优点:
通过本申请实施例的图的拆分方法,采用所述边以及所述实例数据,确定所述节点的数据膨胀值,对所述节点在拼装过程中生成的数据量进行预估。并采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图,从而在数据子图的拼装过程中,可以将数据膨胀值较大的节点放置在较后的顺序进行拼装。减少处理每一所述查询子图的查询任务需要消耗的计算资源,提高采用查询图查询数据图的查询效率。
附图说明
图1是本申请实施例的一种图的拆分方法实施例的步骤流程图;
图2是本申请实施例的另一种图的拆分方法实施例的步骤流程图;
图3是本申请实施例的一种查询图的示意图;
图4是本申请实施例的一种查询子图的示意图;
图5是本申请实施例的一种图的拆分装置实施例的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
在本申请实施例中,可以以数据图形式的数据结构存储海量数据。在需要从海量数据中提取目标数据的情况下,可以采用查询图,通过子图匹配、模式匹配、基于关系网络的规则匹配等方式,在海量数据中提取得到目标数据。
例如,在银行客户担保关系分析,非法集资,洗钱行为等异常行为分析等特定对象社会关系分析、特定对象行为分析的情况下,可以通过查询图,在海量数据中提取得到具有特定社会关系或者具有特定行为的对象。又例如,在知识图谱中搜索内容的情况下,可以基于提出的问题生成查询图,在知识图谱中查询得到问题对应的答案。又例如,在商品推荐的情况下,可以通过查询图,在海量数据中提取得到具有相似特征的对象群体,并基于具有相似特征的对象群体的兴趣偏好推荐相应的商品。
在本申请实施例中,所述海量数据可以根据实际需要,存储于本地服务器,或者分布式部署的云服务器中。所述海量数据可以根据实际需要,从商业数据、互联网数据、传感器数据等来源获取得到。
所述海量数据可以采用数据图形式的数据结构存储。在以数据图形式存储海量数据的情况下,所述海量数据可以具有节点、以及连接所述节点的边。所述节点可以包括一种分类的数据记录。所述边可以用于表示所述节点的实例数据之间的关联关系。
在需要在海量数据中查询目标数据的情况下,可以基于检索输入的查询语句,生成具有特定数据结构的查询图,并采用所述查询图,遍历所述海量数据,查询得到与所述查询图具有子图同构关系的目标数据。
由于在查询图规模较大的情况下,直接在海量数据中查询与所述查询图具有子图同构关系的目标数据难度较大,为了提高查询效率,可以将查询所述海量数据使用的查询图,拆分为若干个查询子图,将所述查询子图与数据图形式的海量数据进行匹配,在海量数据中提取得到若干与所述查询子图形成子图同构关系的数据子图,将所述数据子图进行合并(join)操作,将若干数据子图中的数据相互连接,得到与所述查询图形成子图同构关系的查询结果图,从而在海量数据中查询得到目标数据。
然而,在将查询所述海量数据使用的查询图,拆分为若干个查询子图,若拆分不合适,容易导致在拼装过程中出现过大的数据膨胀。例如,一查询子图包括节点A~D,节点A与节点B关联,节点A与节点D关联,节点C与节点B关联,节点C与节点D关联。在拼装过程中,需要将查询子图中的节点A、节点B、节点C、以及节点D中的数据进行交叉关联,导致数据呈指数增长。例如,节点A、节点B、节点C、以及节点D中皆各自具有2个数据,那么在交叉关联的过程中,可以出现2×2×2×2共16个数据,相比原本节点的数据量大大增加。在处理海量数据的情况下,每一节点中包含的数据量较大,需要关联的节点更多,可以导致更加严重的数据膨胀。为了降低海量数据查询的所需要的计算量,需要对查询图进行合适的拆分,使查询子图对应的节点在拼装过程中,可以减少计算量,从而减少查询过程整体的计算量。
参照图1,示出了本申请的一种图的拆分方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取查询图;所述查询图包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据;
在本申请实施例中,可以采用数据图形式的数据结构存储海量数据。所述查询图可以用于检索所述数据图中特定的数据。所述数据图以及所述数据图皆可以包括若干个节点,以及若干连接所述节点的边。
在本申请实施例中,所述节点可以为一种分类的数据记录。所述节点可以对应具有多个实例数据。所述实例数据可以为所述节点中存储的一种分类下的具体数据。一节点可以存储多个实例数据。例如,所述节点可以存储有用户ID分类的数据记录,所述用户ID分类下具体包括用户A的ID、用户B的ID、以及用户C的ID等多个实例数据。
在本申请实施例中,所述边可以用于表示所述节点的实例数据之间的关联关系。所述节点中的每一所述实例数据可以对应具有与其他节点中的实例数据的关联关系。同一节点中的不同实例数据可以分别具有不同的关联关系,即不同的边。例如,节点A存储了用户ID类别,节点B存储了火车班次编号类别,所述边可以表示用户ID与火车班次编号之间的关联关系。用户A乘坐了火车班次B,则所述节点A中用户A的ID实例数据可以与节点B中的火车班次B实例数据之间存在关联,即所述节点A中的用户A的ID实例数据与节点B中的火车班次B实例数据之间存在边将两者连接。
在本申请实施例中,若一节点中的实例数据与一其他节点中的实例数据之间存在边将两个实例数据相互关联,从而将两个节点相互关联,则可以称所述其他节点为所述节点的邻接节点。由于针对不同的实例数据,所述节点之间的关联关系不同,由此,针对不同的实例数据,所述节点对应的邻接节点可以不同。
在本申请实施例中,可以获取所述查询图,所述查询图可以包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据。从而可以采用所述查询图,在海量数据的数据图中查找特定的数据。
步骤102,采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值;
在本申请实施例中,所述数据膨胀值可以用于表示所述节点与邻接节点关联生成的关联结果的数量。所述数据膨胀值越大,所述节点在拼装过程中可能生成的关联结果的数量越大。
在本申请实施例中,所述数据膨胀值可以基于所述节点的边以及所述节点的实例数据确定。具体地,所述节点的边越多,所述节点在拼装过程中需要与更多的邻接节点的数据合并,则生成的数据量可以越大,所述数据膨胀值越大。所述节点在拼装过程中,需要针对每一所述实例数据,采用所述实例数据对应的边与邻接节点的数据进行关联。所述实例数据越多,则所述节点在拼装过程中,需要处理更多实例数据对应的数据关联操作,生成的数据量也越大,相应地,所述数据膨胀值也越大。
步骤103,采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图。
在本申请实施例中,所述拼装过程可以具有顺序。例如,所述节点A与节点B存在关联,所述节点A还与节点C存在关联,则在拼装过程中,可以先将节点A与节点B的数据进行关联操作,合并为新的数据<A,B>,再将合并后数据<A,B>与节点C的数据进行关联操作,得到新的数据<A,B,C>。也可以先将节点A与节点C的数据进行关联操作,合并为新的数据<A,C>,再将合并后数据<A,C>与节点B的数据进行关联操作,得到新的数据<A,B,C>。
在本申请实施例中,所述节点的数据膨胀值越大,可以认为其他节点与所述节点进行合并时,可以生成更多的数据量。由此,为了减少拼装过程的数据量,可以将数据膨胀值大的节点放在较后的顺序进行拼装,避免在节点拼装的初始阶段,即产生大量的数据量,从而增加拼装过程需要的计算资源。
由此,可以采用所述节点的数据膨胀值,将所述查询图拆分为至少一个查询子图,使对于每一所述查询子图,在数据图中查找到与所述查询子图形成子图同构关系的数据之后,在数据子图的拼装过程中,所述数据膨胀值越大的节点,可以放在较后的顺序进行拼装,从而减少处理每一所述查询子图的查询任务需要消耗的计算资源。
通过本申请实施例的图的拆分方法,采用所述边以及所述实例数据,确定所述节点的数据膨胀值,对所述节点在拼装过程中生成的数据量进行预估。并采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图,从而在数据子图的拼装过程中,可以将数据膨胀值较大的节点放置在较后的顺序进行拼装。减少处理每一所述查询子图的查询任务需要消耗的计算资源,提高采用查询图查询数据图的查询效率。
参照图2,示出了本申请的一种图的拆分方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,获取查询图;所述查询图包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据;
在本申请实施例中,可以采用数据图形式的数据结构存储海量数据。所述查询图可以用于检索所述数据图中特定的数据。所述数据图以及所述数据图皆可以包括若干个节点,以及若干连接所述节点的边。
在本申请实施例中,所述节点可以为一种分类的数据记录。所述节点可以对应具有多个实例数据。所述实例数据可以为所述节点中存储的一种分类下的具体数据。一节点可以存储多个实例数据。例如,所述节点可以存储有用户ID分类的数据记录,所述用户ID分类下具体包括用户A的ID、用户B的ID、以及用户C的ID等多个实例数据。
在本申请实施例中,所述边可以用于表示所述节点的实例数据之间的关联关系。所述节点中的每一所述实例数据可以对应具有与其他节点中的实例数据的关联关系。同一节点中的不同实例数据可以分别具有不同的关联关系,即不同的边。
在本申请实施例中,由于所述节点中可以包括多个实例数据,由此,所述边可以为所述节点中一种实例数据之间的关系。由此,针对不同的实例数据,所述节点之间可以具有不同的关联关系,即针对不同的实例数据,所述节点之间具有的边可以不同。
在本申请实施例中,可以获取所述查询图,所述查询图可以包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据。从而可以采用所述查询图,在海量数据的数据图中查找特定的数据。
步骤202,在所述边中,确定所述节点中每一所述实例数据对应的邻接边;
在本申请实施例中,若一节点中的实例数据与一其他节点中的实例数据之间存在边将两个实例数据相互关联,从而将两个节点相互关联,则可以称所述其他节点为所述节点的邻接节点,将两个实例数据相互关联的边为邻接边。由于针对不同的实例数据,所述节点之间的关联关系不同,由此,针对不同的实例数据,所述节点对应的邻接节点可以不同,所述邻接边也可以不同。
在本申请实施例中,可以针对所述节点中的每一所述实例数据,在所述边中,确定所述节点中每一所述实例数据对应的邻接边。具体地,针对所述节点中的每一所述实例数据,若其他节点中存在其他实例数据与所述实例数据相互关联,则所述边可以为所述实例数据对应的邻接边。
在本申请实施例中,所述节点中的一实例数据可以与一其他节点中的多个其他实例数据存在关联,并且,所述节点中可以存在多个实例数据与其他节点中的一个其他实例数据存在关联,从而在所述节点与所述其他节点之间,可以存在多个邻接边。
作为本申请的一种示例,节点A用于存储用户ID,具体地,包括实例数据“ID:A”、“ID:B”。节点B用于存储火车班次编号,包括实例数据“HC001”、“HC002”、“HC003”、“HC004”。节点C用于存储酒店编号,包括实例数据“JD001”、“JD002”、“JD003”、“JD004”。其中,针对节点A中的实例数据“ID:A”,节点B中的实例数据“HC001”、“HC002”、以及“HC003”与实例数据“ID:A”存在关联关系,则针对实例数据“ID:A”,在节点B中存在三条邻接边。节点C中的实例数据“JD001”、“JD002”、以及“JD003”与实例数据“ID:A”存在关联关系,则针对实例数据“ID:A”,在节点C中存在三条邻接边。针对节点A中的实例数据“ID:B”,节点B中存在实例数据“HC001”以及“HC004”与实例数据“ID:B”存在关联关系,则针对实例数据“ID:B”,在节点B中存在两条邻接边。节点C中的实例数据“JD001”、“JD002”、“JD003”、以及“JD004”与例数据“ID:B”存在关联关系,则针对实例数据“ID:B”,在节点C中存在四条邻接边。
步骤203,采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述节点的数据膨胀值。
在本申请实施例中,所述节点与邻接节点交叉关联,则所述节点中的每一实例数据可以分别与所述邻接节点中存在邻接边的其他实例数据相互交叉关联,从而可以生成多个关联结果。
作为本申请的一种示例,上述示例中,节点A与节点B相互关联,节点A还与节点C相互关联。则针对节点A中的实例数据“ID:A”,其可以与节点B中与其存在邻接边的实例数据“HC001”、“HC002”、以及“HC003”相关关联,还可以与节点C中的实例数据“JD001”、“JD002”、以及“JD003”相互关联,将实例数据之间相互交叉关联,可以得到3×3=9个关联结果。则针对节点A中的实例数据“ID:B”,其可以与节点B中与其存在邻接边的实例数据“HC001”以及“HC004”相关关联,还可以与节点C中的实例数据“JD001”、“JD002”、“JD003”、以及“JD004”相互关联,将实例数据之间相互交叉关联,可以得到2×4=8个关联结果。
由此,在所述节点存在的实例数据越多,且每一实例数据对应的邻接边越多的情况下,所述节点与邻接节点交叉关联产生的数据量越大。可以采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述节点的数据膨胀值。
在本申请实施例中,所述数据膨胀值可以用于表示所述节点与邻接节点关联生成的关联结果的数量。所述数据膨胀值越大,所述节点在拼装过程中可能生成的关联结果的数量越大。
在具体实现中,所述节点的数据膨胀值可以为节点中每一实例数据的邻接边乘积之和;其中,所述邻接边乘积为针对一实例数据,其每一邻接节点对应的邻接边数量之间的乘积。具体地,可以采用如下公式,计算节点vi的数据膨胀值C(vi):
C(vi)=ΣjΠkvijek(i∈N,j∈P,k∈Q)
其中,vij为节点vi的实例数据,vijek为实例数据vij对应的邻接节点k的邻接边数量;N为查询图中所有节点的集合;P为节点vi的实例数据集合;Q为节点vi的邻接节点集合。
作为本申请的一种示例,如上示例,所述节点A包括实例数据“ID:A”以及“ID:B”。针对实例数据“ID:A”,存在节点B与节点C为邻接节点,其中节点B的邻接边数量为3,节点C的邻接边数量为3,则邻接边乘积为3×3=9。针对实例数据“ID:B”,存在节点B与节点C为邻接节点,其中节点B的邻接边数量为2,节点C的邻接边数量为4,则邻接边乘积为2×4=8。节点A的数据膨胀值为实例数据“ID:A”的邻接边乘积与实例数据“ID:B”的邻接边乘积之和,即9+8=17。
在本申请的一种实施例中,所述采用所述边,确定所述节点中每一所述实例数据对应的邻接节点的步骤,包括:
S11,在所述节点中,查找非叶子节点;
在本申请实施例中,所述叶子节点可以为只与一其他节点相互关联的节点,所述非叶子节点可以为与至少两个节点相互关联的节点。
在本申请实施例中,由于所述数据膨胀值与所述节点的边以及所述节点的实例数据相关。若所述节点为叶子节点,则所述节点可以只存在与一其他节点连接的边。在此情况下,所述叶子节点较难因数据之间的交叉关联,导致数据量较难出现明显膨胀。进一步地,在拆分所述查询图时,也较少基于只与一个其他节点关联的叶子节点进行拆分。由此,确定所述数据膨胀值时,可以不计算所述叶子节点的数据膨胀值,而计算所述非叶子节点的数据膨胀值,以进一步减少查询过程需要的计算资源。
在本申请实施例中,可以在所述节点中,查找非叶子节点。具体地,可以基于所述边,确定所述节点与其他节点的关联关系,从而查找所述非叶子节点。
S12,在所述边中,确定所述非叶子节点中每一所述实例数据对应的邻接边。
在本申请实施例中,可以在所述边中,确定所述非叶子节点中每一所述实例数据对应的邻接边。从而可以采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述非叶子节点的数据膨胀值。
步骤204,采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图。
在本申请实施例中,所述拼装过程可以具有顺序。例如,所述节点A与节点B存在关联,所述节点A还与节点C存在关联,则在拼装过程中,可以先将节点A与节点B的数据进行关联操作,合并为新的数据<A,B>,再将合并后数据<A,B>与节点C的数据进行关联操作,得到新的数据<A,B,C>。也可以先将节点A与节点C的数据进行关联操作,合并为新的数据<A,C>,再将合并后数据<A,C>与节点B的数据进行关联操作,得到新的数据<A,B,C>。
在本申请实施例中,所述节点的数据膨胀值越大,可以认为其他节点与所述节点进行合并时,可以生成更多的数据量。由此,为了减少拼装过程的数据量,可以将数据膨胀值大的节点放在较后的顺序进行拼装,避免在节点拼装的初始阶段,即产生大量的数据量,从而增加拼装过程需要的计算资源。
由此,可以采用所述节点的数据膨胀值,将所述查询图拆分为至少一个查询子图,使对于每一所述查询子图,在数据图中查找到与所述查询子图形成子图同构关系的数据之后,在数据子图的拼装过程中,所述数据膨胀值越大的节点,可以放在较后的顺序进行拼装,从而减少处理每一所述查询子图的查询任务需要消耗的计算资源。
在本申请的一种实施例中,所述采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图的步骤,包括:
S21,采用所述数据膨胀值,确定中心节点;
在本申请实施例中,所述中心节点可以为在所述查询子图中与其他节点都关联的节点。所述中心节点可以采用所述数据膨胀值确定。具体地,当所述数据膨胀值越小,则节点与所述邻接节点关联时,可以具有较小的数据量。由此,可以在所述查询图中,采用所述数据膨胀值从小至大的顺序,确定所述中心节点。从而可以优先将数据膨胀值更小的节点,作为中心节点。
S22,在所述查询图中,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图。
在本申请实施例中,在确定所述中心节点之后,可以进一步确定所述查询图中,与所述中心节点相关联的邻接节点。其后,在所述查询图中,基于所述边,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图。
在本申请实施例中,所述查询子图中可以包括所述中心节点以及所述中心节点的邻接节点,从而在拼装过程中,针对与所述查询子图形成子图同构关系的数据子图,可以只对所述中心节点与所述邻接节点进行拼装操作,计算量较少。进一步地,由于所述中心节点的数据膨胀值较小,在拼装过程中,不容易出现数据量急剧膨胀的情况,减少了拼装过程搜需要的计算量。此外,在拼装过程中,还可以基于所述邻接节点的数据膨胀值,从小至大依次与所述中心节点进行关联,从而可以将容易导致数据明显膨胀的节点放在较后的顺序进行处理,进一步减少了拼装过程所需要的计算量。
在本申请实施例中,在所述查询图中,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图之后,可以在剩余部分的查询图中,继续基于数据膨胀值,查找中心节点,并将所述中心节点以及所述中心节点的邻接节点拆分为查询子图,直至所述查询图被全部拆分为至少一个包含中心节点以及中心节点的邻接节点的查询子图。
作为本申请的一种示例,图3为本申请的一种查询图的示意图,其中,节点A的数据膨胀值为60,节点B的数据膨胀值为200,节点C的数据膨胀值为80,节点D的数据膨胀值为60,节点E的数据膨胀值为100,节点F的数据膨胀值为50,节点G的数据膨胀值为100,节点I与节点H为叶子节点,不计算数据膨胀值。
在所述查询图中,可以确定数据膨胀值最低的节点为节点F,节点F的邻接节点为节点I、节点H、节点E、节点G,则可以在所述查询图中,基于所述边,将所述节点F、节点I、节点H、节点E、节点G拆分为查询子图,结果如图4(1)所示。其后,可以在剩余部分的查询图中,继续查找数据膨胀值最低的中心节点,此时中心节点为数据膨胀值为60的节点A以及节点D,节点A的邻接节点为节点B以及节点E,节点D的邻接节点为节点E、节点C、以及节点G,则可以在所述查询图中,基于所述边,将所述节点A、节点B以及节点E拆分为查询子图,结果如图4(2)所示。基于所述边,将所述节点D、节点E、节点C、以及节点G拆分为查询子图,结果如图4(3)所示。此时,所述查询图中剩余节点B、节点C、以及节点E,其中节点C的数据膨胀值最低,所述节点B以及节点E为所述节点C的邻接节点,则所述节点B、节点C、以及节点E作为查询子图,结果如图4(4)所示。从而将所述查询图拆分为若干查询子图。
通过本申请实施例的图的拆分方法,采用所述边,确定所述节点中每一所述实例数据对应的邻接节点,采用所述邻接节点,确定查询图中所述节点的数据膨胀值,从而对所述节点在拼装过程中生成的数据量进行预估。并采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图,从而在数据子图的拼装过程中,可以将数据膨胀值较大的节点放置在较后的顺序进行拼装。减少处理每一所述查询子图的查询任务需要消耗的计算资源,提高采用查询图查询数据图的查询效率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图5,示出了本申请的一种图的拆分装置实施例的结构框图,具体可以包括如下模块:
获取模块501,用于获取查询图;所述查询图包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据;
确定模块502,用于采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值;
拆分模块503,用于采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图。
在本申请一种可选的实施例中,所述确定模块包括:
邻接边确定子模块,用于在所述边中,确定所述节点中每一所述实例数据对应的邻接边;
膨胀确定子模块,用于采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述节点的数据膨胀值。
在本申请一种可选的实施例中,所述邻接边确定子模块包括:
查找单元,用于在所述节点中,查找非叶子节点;
邻接边确定单元,用于在所述边中,确定所述非叶子节点中每一所述实例数据对应的邻接边。
在本申请一种可选的实施例中,所述拆分模块包括:
中心节点确定子模块,用于采用所述数据膨胀值,确定中心节点;
拆分子模块,用于在所述查询图中,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请实施例还提供了一种装置,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行本申请实施例所述的方法。
本申请实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本申请实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种图的拆分方法和一种图的拆分装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (8)

1.一种图的拆分方法,其特征在于,包括:
获取查询图;所述查询图包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据;
采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值;其中,所述数据膨胀值用于表示所述节点与邻接节点关联生成的关联结果的数量;
采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图;
其中,所述采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图的步骤,包括:
采用所述数据膨胀值,确定中心节点;
在所述查询图中,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图。
2.根据权利要求1所述的方法,其特征在于,所述采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值的步骤,包括:
在所述边中,确定所述节点中每一所述实例数据对应的邻接边;
采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述节点的数据膨胀值。
3.根据权利要求2所述的方法,其特征在于,所述采用所述边,确定所述节点中每一所述实例数据对应的邻接边的步骤,包括:
在所述节点中,查找非叶子节点;
在所述边中,确定所述非叶子节点中每一所述实例数据对应的邻接边。
4.一种图的拆分装置,其特征在于,包括:
获取模块,用于获取查询图;所述查询图包括若干个节点以及若干连接所述节点的边,所述节点具有至少一个实例数据;
确定模块,用于采用所述边以及所述实例数据,确定查询图中所述节点的数据膨胀值;其中,所述数据膨胀值用于表示所述节点与邻接节点关联生成的关联结果的数量;
拆分模块,用于采用所述数据膨胀值,将所述查询图拆分为至少一个查询子图;
其中,所述拆分模块包括:
中心节点确定子模块,用于采用所述数据膨胀值,确定中心节点;
拆分子模块,用于在所述查询图中,将所述中心节点以及所述中心节点的邻接节点拆分为查询子图。
5.根据权利要求4所述的装置,其特征在于,所述确定模块,包括:
邻接边确定子模块,用于在所述边中,确定所述节点中每一所述实例数据对应的邻接边;
膨胀确定子模块,用于采用所述实例数据以及所述实例数据对应的邻接边,确定查询图中所述节点的数据膨胀值。
6.根据权利要求5所述的装置,其特征在于,所述邻接边确定子模块包括:
查找单元,用于在所述节点中,查找非叶子节点;
邻接边确定单元,用于在所述边中,确定所述非叶子节点中每一所述实例数据对应的邻接边。
7.一种装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1-3所述的一个或多个的方法。
8.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-3所述的一个或多个的方法。
CN202010327543.XA 2020-04-23 2020-04-23 一种图的拆分方法和装置 Active CN113553477B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010327543.XA CN113553477B (zh) 2020-04-23 2020-04-23 一种图的拆分方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010327543.XA CN113553477B (zh) 2020-04-23 2020-04-23 一种图的拆分方法和装置

Publications (2)

Publication Number Publication Date
CN113553477A CN113553477A (zh) 2021-10-26
CN113553477B true CN113553477B (zh) 2024-06-25

Family

ID=78129348

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010327543.XA Active CN113553477B (zh) 2020-04-23 2020-04-23 一种图的拆分方法和装置

Country Status (1)

Country Link
CN (1) CN113553477B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114564571B (zh) * 2022-04-21 2022-07-29 支付宝(杭州)信息技术有限公司 一种图数据查询方法和***

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104392010A (zh) * 2014-12-23 2015-03-04 北京理工大学 一种子图匹配的查询方法
CN108090179A (zh) * 2017-12-15 2018-05-29 北京海致星图科技有限公司 一种Spark并发子图查询的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9928287B2 (en) * 2013-02-24 2018-03-27 Technion Research & Development Foundation Limited Processing query to graph database
US9928310B2 (en) * 2014-08-15 2018-03-27 Oracle International Corporation In-memory graph pattern matching
US10810210B2 (en) * 2017-05-12 2020-10-20 Battelle Memorial Institute Performance and usability enhancements for continuous subgraph matching queries on graph-structured data
CN109241309A (zh) * 2018-07-12 2019-01-18 北京邮电大学 一种查询图分解方法、装置、电子设备及存储介质
CN112753029A (zh) * 2018-09-20 2021-05-04 华为技术有限公司 用于基于图的查询分析的***和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104392010A (zh) * 2014-12-23 2015-03-04 北京理工大学 一种子图匹配的查询方法
CN108090179A (zh) * 2017-12-15 2018-05-29 北京海致星图科技有限公司 一种Spark并发子图查询的方法

Also Published As

Publication number Publication date
CN113553477A (zh) 2021-10-26

Similar Documents

Publication Publication Date Title
US11977541B2 (en) Systems and methods for rapid data analysis
CN109492111B (zh) 最短路径查询方法、***、计算机设备和存储介质
JP5919825B2 (ja) データ処理方法、分散処理システムおよびプログラム
US9208223B1 (en) Method and apparatus for indexing and querying knowledge models
CN102855309B (zh) 一种基于用户行为关联分析的信息推荐方法及装置
CN104794242B (zh) 一种搜索方法
CN109359188B (zh) 一种组件编排方法和***
WO2008106668A1 (en) User query mining for advertising matching
JP2013504118A (ja) クエリのセマンティックパターンに基づく情報検索
CN112258301B (zh) 商品推荐方法、装置、***、可读存储介质及电子设备
JP2014517435A (ja) 検索方法および装置
CN102298650A (zh) 一种海量数字信息的分布式推荐方法
CN111159563A (zh) 用户兴趣点信息的确定方法、装置、设备及存储介质
CN110716950A (zh) 一种口径***建立方法、装置、设备及计算机存储介质
Liu et al. Cleaning framework for big data-object identification and linkage
CN115328883B (zh) 一种数据仓库建模方法和***
CN113553477B (zh) 一种图的拆分方法和装置
JPWO2013111287A1 (ja) Sparqlクエリ最適化方法
CN110765100B (zh) 标签的生成方法、装置、计算机可读存储介质及服务器
US8468163B2 (en) Ontology system providing enhanced search capability with ranking of results
CN109189810B (zh) 查询方法、装置、电子设备及计算机可读存储介质
JP6634938B2 (ja) 分析支援方法、分析支援プログラムおよび分析支援装置
CN110245208B (zh) 一种基于大数据存储的检索分析方法、装置及介质
Silva et al. Otarios: Optimizing author ranking with insiders/outsiders subnetworks
CN113625967A (zh) 数据存储方法、数据查询方法及服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40062647

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant