CN111382315B - 子图同构匹配结果的合并方法、电子设备及存储介质 - Google Patents

子图同构匹配结果的合并方法、电子设备及存储介质 Download PDF

Info

Publication number
CN111382315B
CN111382315B CN201811639193.XA CN201811639193A CN111382315B CN 111382315 B CN111382315 B CN 111382315B CN 201811639193 A CN201811639193 A CN 201811639193A CN 111382315 B CN111382315 B CN 111382315B
Authority
CN
China
Prior art keywords
graph
node
sub
nodes
result
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
CN201811639193.XA
Other languages
English (en)
Other versions
CN111382315A (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 CN201811639193.XA priority Critical patent/CN111382315B/zh
Publication of CN111382315A publication Critical patent/CN111382315A/zh
Application granted granted Critical
Publication of CN111382315B publication Critical patent/CN111382315B/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/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了子图同构匹配结果的合并方法、设备以及计算机可读存储介质。该方法包括:获取结果子图,结果子图为从目标图中提取出的与模式图同构匹配的子图;从模式图中选择一个模式图节点作为模式图中心点,将每个结果子图中与模式图中心点匹配的子图节点作为该结果子图的结果子图中心点;根据结果子图中心点对结果子图进行合,得到合并图。

Description

子图同构匹配结果的合并方法、电子设备及存储介质
技术领域
本发明涉及图数据查询技术领域,更具体地,涉及一种子图同构匹配结果的合并方法、一种电子设备以及一种计算机可读存储介质。
背景技术
图数据作为一种复杂的非线性数据结构,具有强大的信息表达能力,能够清晰表现对象之间的复杂关系。因此,越来越多的领域采用图数据作为数据结构,例如社交网络、Web网络、规划问题、生物信息等领域。在建立图模型时,对象(如基因、人、企业等)被抽象为图中的节点,对象之间具有的某种特定关系被抽象为两个节点之间的连线(或者称为边)。
对图数据的处理方式之一是子图同构匹配。通过从大规模目标图中查找与选定的模式图互为同构图的子图,就能得到具有特定关系的若干对象。例如,在企业关系图中查找与虚开发票模式图互为同构图的子图,就能查找到可能虚开发票的企业。
在子图同构匹配中,会出现模式图中的某些节点地位相同、可以互换的现象,这些节点的排列组合会导致匹配结果中的子图数量大大增加。这种结果数量的增加一方面不方便查看,另一方面不利于反映对象间实质性的关系。尤其是在大规模子图同构匹配中,上述问题带来的影响更加严重。
因此,需要提出新的技术方案以解决现有技术中存在的问题。
发明内容
根据本公开的第一方面,提供了一种子图同构匹配结果的合并方法,包括:
获取结果子图,所述结果子图为从目标图中提取出的与模式图同构匹配的子图;
从模式图中选择一个模式图节点作为模式图中心点,将每个结果子图中与所述模式图中心点匹配的子图节点作为该结果子图的结果子图中心点;
根据结果子图中心点对结果子图进行合并,得到合并图。
可选地或者优选地,所述从模式图中选择一个模式图节点作为模式图中心点,包括:
在所述模式图中指定一个模式图节点作为模式图中心点;或者,
确定所述模式图中的每个模式图节点的度,从度最大的模式图节点中选择一个模式图节点作为模式图中心点。
可选地或者优选地,所述根据结果子图中心点对结果子图进行合并,得到合并图,包括:
由同一个结果子图中心点的结果子图构成一个结果子图集合;
对同一个结果子图集合内的结果子图进行合并,得到该结果子图集合对应的合并图。
可选地或者优选地,所述对同一个结果子图集合内的结果子图进行合并,得到该结果子图集合对应的合并图,包括:
对该结果子图集合内的结果子图的各个子图节点求并集,得到该结果子图集合对应的合并图的节点的集合;
对该结果子图集合内的结果子图的各个边求并集,得到该结果子图集合对应的合并图的边的集合。
可选地或者优选地,所述根据结果子图中心点对结果子图进行合并,得到合并图,包括:
确定与同一个结果子图中心点对应的合并图的节点的集合;
根据合并图的节点和模式图的模式图节点的匹配关系,确定合并图的边的集合。
可选地或者优选地,所述确定与同一个结果子图中心点对应的合并图的节点的集合,包括:
确定全部结果子图中的每个子图节点对应的结果子图中心点的集合;
根据每个子图节点对应的结果子图中心点的集合,确定与同一个结果子图中心点对应的合并图的节点的集合。
可选地或者优选地,所述确定全部结果子图中的每个子图节点对应的结果子图中心点的集合,包括:
步骤S1、对于每个子图节点,分别形成第一集合、第二集合、以及第三集合;其中,所述第一集合,为包括该子图节点并且结果子图中心点为该子图节点的结果子图的编号的集合;所述第二集合,为包括该子图节点并且结果子图中心点为其他子图节点的结果子图的编号的集合;所述子图节点的第三集合的初始状态为空集;
步骤S2、将第一集合不为空集的子图节点作为起始节点,将起始节点的第一集合作为起始节点的第三集合的以起始节点的节点标识命名的一个子集;
步骤S3、将起始节点设置为第一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合;
接收节点将发送节点的第三集合的子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集;
步骤S4、将第三集合有新增子集的接收节点设置为下一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合的新增子集,接收节点将发送节点的第三集合的新增子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集;循环执行步骤S4,直至全部子图节点的第三集合不再发生变化;
其中,接收节点增加的第三集合的子集的名称按照发送节点的对应的第三集合的子集的名称命名。
可选地或者优选地,在步骤S4中,发送节点向发送节点的邻接节点发送发送节点的第三集合的新增子集时,不向邻接节点中的与新增节点对应的上游节点发送该新增子集;所述与新增节点对应的上游节点,是指该新增子集是基于该上游节点的上一轮的发送而增加的。
可选地或者优选地,所述方法还包括:为每个子图节点分别配置一个发送进程和一个接收进程,所述发送进程用于在子图节点作为起始节点或者发送节点时执行发送动作,所述接收进程用于在子图节点作为接收节点时执行接收动作。
可选地或者优选地,所述目标图为蛋白质互作网络图、生化代谢网络图、信号传导网络图、生物神经网络图、交通网络图或者社交网络图中的任意一种。
可选地或者优选地,所述方法还包括:
响应于子图同构匹配的请求,从图数据存储服务器获取目标图;以及,
从目标图中提取与模式图同构匹配的子图。
可选地或者优选地,所述方法还包括:
响应于设置显示模式的操作,提供设置入口;
获取用户通过所述设置入口输入的显示模式,显示所述合并图或者显示所述结果子图。
根据本公开的第二方面,提供了一种电子设备,包括:
存储器,用于存储可执行命令;
处理器,用于在所述可执行命令的控制下,执行前述任一项所述的方法。
根据本公开的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现前述任一项所述的方法。
本发明实施例中的子图同构匹配结果的合并方法,基于中心点对匹配结果中的结果子图进行合并,减少了显示的图的数量,同时保留了结果子图中的关键信息,有利于对信息更深层次地呈现,相比于现有的匹配结果处理方法具有明显优势。
附图说明
被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。
图1示出了用于实现本发明的方法的子图匹配系统的结构示意图;
图2示出了本发明实施例提供的子图同构匹配结果的合并方法的流程图;
图3示出了本发明实施例中的目标图的示意图;
图4示出了本发明实施例中的模式图的示意图;
图5-1至5-8示出了本发明实施例中的结果子图的示意图;
图6-1至6-2示出了本发明实施例中的合并图的示意图;
图7示出了本发明实施例中的合并结果例子的模式图的示意图;
图8-1至图8-2示出了本发明实施例中的合并结果例子的结果子图的示意图;
图9示出了本发明实施例中的合并结果例子的合并图的示意图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人物已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
<总体构思>
子图同构匹配是指对于给定的模式图和目标图,在目标图中寻找与模式图互为同构图的子图。在考虑节点和边的标签的情况下,该子图和模式图中相互对应的节点和边的标签也相同。
子图同构匹配得到的匹配结果中通常会包括多个结果子图。这些结果子图是目标图的子图,并且与模式图是同构匹配的。由于模式图中某些节点地位相同、可以互换,这些节点的排列组合会导致匹配结果中的结果子图数量大大增加。
发明人注意到,匹配结果中的一些结果子图可以看成是若干节点以特定的点为中心进行排列组合得到,可以在模式图中指定一个中心点,并基于该中心点对将若干结果子图合并,以此优化匹配结果的呈现方式。
<子图匹配系统>
如图1所示,本公开实施例提供的子图匹配系统1000包括图数据存储服务器1100-1和子图匹配服务器1100-2。图数据存储服务器1100-1和子图匹配服务器1100-2例如都具有如图1中所示的服务器1100的结构。
针对上述的服务器1100,可以是整体式服务器,也可以是跨多计算机或计算机数据中心的分散式服务器。上述的服务器1100可以是刀片服务器或者机架式服务器等。服务器1100可以是专用的服务器处理器,也可以是满足性能要求的台式机处理器、移动版处理器等,在此不做限定。服务器可以是各种类型的,例如但不限于新闻服务器,邮件服务器,消息服务器,广告服务器,文件服务器,应用服务器,交互服务器,数据库服务器,或代理服务器。在一些实施例中,每个服务器可以包括硬件,软件,或用于执行服务器所支持或实现的合适功能的内嵌逻辑组件或两个或多个此类组件的组合。
在一个例子中,服务器1100可以是一台计算机。服务器1100可以如图1所示,包括处理器1110、存储器1120、接口装置1130、通信装置1140、显示装置1150和输入装置1160。尽管服务器1100也可以包括扬声器、麦克风等等,但是,这些部件与本发明无关,故在此省略。其中,处理器1110例如可以是中央处理器CPU、微处理器MCU等。存储器1120例如包括ROM(只读存储器)、RAM(随机存取存储器)、诸如硬盘的非易失性存储器等。接口装置1130例如包括串行总线接口、并行总线接口、USB接口等。通信装置1140例如能够进行有线或无线通信。显示装置1150例如是液晶显示屏。输入装置1160例如可以包括触摸屏、键盘等。
尽管在图1中示出了服务器1100的多个装置,但是,本发明实施例可以仅涉及其中的部分装置。
图数据存储服务器1100-1用于存储图数据,例如目标图的图数据,并且可以将图数据传输给子图匹配服务器1100-2。子图匹配服务器1100-2可以接收由图数据存储服务器1100-1发送的图数据,并且进行子图同构匹配处理。
在另一个实施例中,子图匹配系统1000包括的图数据存储服务器1100-1和子图匹配服务器1100-2也可以集成在一台整体的服务器中。
图1所示的子图匹配系统1000仅是解释性的,并且决不是为了要限制本发明、其应用或用途。
<子图同构匹配结果的合并方法>
本实施例公开了一种子图同构匹配结果的合并方法,可以由上述的子图匹配服务器1100-2实施。
如图2所示,本实施例中的子图同构匹配结果的合并方法包括以下步骤S210-S230:
步骤S210:获取结果子图,结果子图为从目标图中提取出的与模式图同构匹配的子图。
获取结果子图的过程,也就是进行子图同构匹配的过程。结果子图为目标图的子图,并且与模式图是同构匹配的。结果子图的数目通常为多个。
结果子图的获取可以同样由子图匹配服务器1100-2完成,其中目标图可以是大规模的并且可以存储在例如图1所示的图数据存储服务器1100-1中。
在一个实施例中,在步骤S210之前,所述方法还包括:响应于子图同构匹配的请求,从图数据存储服务器获取目标图,从目标图中提取与模式图同构匹配的子图。例如,用户向子图匹配服务器1100-2输入子图同构匹配的请求,子图匹配服务器1100-2对子图同构匹配的请求进行响应,具体的:子图匹配服务器1100-2根据子图同构匹配的请求从图数据存储服务器1100-1获取目标图,执行匹配计算,从目标图中提取与模式图同构匹配的子图。
步骤S220、从模式图中选择一个模式图节点作为模式图中心点,将每个结果子图中与模式图中心点匹配的子图节点作为该结果子图的结果子图中心点。
由于每个结果子图与模式图都是同构匹配的,可以在模式图中选择一个模式图节点作为模式图中心点,相应地,可以将每个结果子图中与模式图中心点匹配的节点作为该结果子图的结果子图中心点。
步骤S230、根据结果子图中心点对结果子图进行合并,得到合并图。
在一个例子中,根据结果子图中心点对结果子图进行合并,可以将中心点相同的结果子图合并到一张图中,得到合并图。需要说明的是,如果某个结果子图的中心点与其他结果子图的中心点均不相同,可以认为这个结果子图的合并图是它本身。
得到合并图后,可以将合并图显示给用户,从而避免显示全部结果子图。
具体地,可以通过图1所示的子图匹配服务器1100-2的显示装置1150将合并图显示给用户,便于用户查看子图匹配结果。
在另一个实施例中,还可以采用以下方式显示匹配结果:响应于设置显示模式的操作,提供设置入口;获取用户通过所述设置入口输入的显示模式,根据所述显示模式显示所述合并图或者显示所述结果子图。例如:用户向子图匹配服务器1100-2输入显示模式设置命令,子图匹配服务器1100-2在界面上弹出设置入口,用户可以在设置入口中将显示模式设置为“显示结果子图”或“显示合并图”,当显示模式被设置为“显示结果子图”,子图匹配服务器1100-2在界面上显示结果子图,当显示模式被设置为“显示合并图”时,子图匹配服务器1100-2在界面上显示合并图。
本实施例中的子图同构匹配结果的合并方法,基于中心点对匹配结果中的结果子图进行合并,减少了显示的图的数量,同时保留了结果子图中的关键信息,有利于对信息更深层次地呈现,相比于现有的匹配结果处理方法具有明显优势。
本实施例中的目标图可以是蛋白质互作网络图、生化代谢网络图、信号传导网络图、生物神经网络图、交通网络图或者社交网络图中的任意一种。也就是说,本实施例中的结果合并方法可以应用于不同领域,并且能够更清晰的呈现相应的匹配结果,有利于反映相应领域中的自然客观规律。
例如,在一种应用场景中,可以通过蛋白质互作网络图来寻找致病蛋白质。这种场景中的目标图为蛋白质互作网络图,模式图为疾病网络图。蛋白质互作网络图代表了已知的蛋白质之间的相互作用关系。疾病网络图代表了可能导致疾病的蛋白质互相作用的模式,其中疾病网络图中的具体的致病蛋白质是未知的。
蛋白质互作网络图和疾病网络图都是无向图,其中每一个节点代表一种蛋白质,每条边代表其端点的两种蛋白质之间的相互作用关系。
通过进行子图同构匹配,可以在蛋白质互作网络图中找到与疾病网络图具有同构匹配关系的结果子图,这里将该结果子图称为疾病子图。根据本实施例中的结果合并方法对疾病子图进行合并,一方面减少了显示的疾病子图数量,另一方面便于研究人员聚焦致病蛋白质,例如节点数量比较多的合并图中的节点为致病蛋白质的可能性较大,可以重点对这些合并图中的蛋白质进行进一步的研究。
在本实施例中,在步骤S220中,从模式图中选择一个模式图节点作为模式图中心点的方式包括:
在模式图中指定一个模式图节点作为模式图中心点;或者,
确定模式图中的每个模式图节点的度,从度最大的模式图节点中选择一个模式图节点作为模式图中心点。
一方面,在一些应用场景中,模式图中的某些节点具有其特定地位,是在实际问题研究中需要关注的。这时,通过指定一个特定的模式图节点作为模式图中心点,能够更方便地解决所要研究的问题。
在另一方面,模式图中通常存在度最大的节点。在图论中,节点的度是指和该节点相关联的边的条数,又称关联度。在无向图中,节点的度是节点邻接边的数目。在有向图中,可以将节点的度分为入度与出度,入度是指节点的入边(以节点自身为终点的边)的数目,出度是指节点的出边(以节点自身为起点的边)的数目。
在本实施例中,可以将有向图中节点的出度和入度的平均值作为该节点的度,也可以将例如节点的出度和入度的和值作为该节点的度。
度最大的节点往往具有较多的邻接边,以度最大的节点为中心会出现较多的节点排列组合的情形。通过确定模式图中的每个模式图节点的度,从度最大的模式图节点中选择一个模式图节点作为模式图中心点,能够进一步减少合并图的数量。
<获得合并图的第一种方法>
可选地或优选地,在步骤S230中,根据结果子图中心点对结果子图进行合并,得到合并图,包括:
步骤S301、由同一个结果子图中心点的结果子图构成一个结果子图集合。同一个结果子图中心点的结果子图,是指以该结果子图中心点为结果子图中心点的全部结果子图。
步骤S302、对同一个结果子图集合内的结果子图进行合并,得到该结果子图集合对应的合并图。在一个例子中,在步骤S302中,对该结果子图集合内的结果子图的各个子图节点求并集,得到该结果子图集合对应的合并图的节点的集合;对该结果子图集合内的结果子图的各个边求并集,得到该结果子图集合对应的合并图的边的集合;即可得到该结果子图集合对应的合并图。
作为获得合并图的第一种方法,这种处理方法是从结果子图入手,对同一个结果子图中心点的结果子图的结果直接进行合并。
<获得合并图的第二种方法>
可选地或优选地,在步骤S230中,根据结果子图中心点对结果子图进行合并,得到合并图,包括:
步骤S401、确定与同一个结果子图中心点对应的合并图的节点的集合。
步骤S402、根据合并图的节点和模式图的模式图节点的匹配关系,确定合并图的边的集合。
作为获得合并图的第二种方法,这种处理方法是从结果子图的节点入手得到合并图,便于计算机程序执行。
本实施例提供的结果子图合并方法是基于结果子图中心点进行合并的,同一个结果子图中心点会对应同一个合并图,也就对应于该合并图的节点的集合。进一步地,与同一个结果子图中心点对应的合并图的节点的集合,可以看成是由该结果子图中心点对应的全部结果子图的全部节点形成,因此可以根据该结果子图中心点对应的全部结果子图的全部节点的集合得到合并图的节点的集合,也就得到了合并图。
在一个实施例中,步骤S401包括步骤S501和S502。
S501、从每个子图节点入手,确定全部结果子图中的每个子图节点对应的结果子图中心点的集合。其中,某个结果子图中心点和某个节点为对应关系,是指该结果子图中心点为该节点所在的结果子图的中心点。
S502、根据每个子图节点对应的结果子图中心点的集合,确定与同一个结果子图中心点对应的合并图的节点的集合。
在一个实施例中,在步骤S402中,在确定了合并图的节点的集合后,可以根据合并图的节点与模式图的节点的匹配关系,确定合并图的边的集合。具体地,由于图中的每个边可以看成是由两个节点确定,假设合并图中的节点A和节点B分别对应于模式图中的节点A’和节点B’,如果边A’-B’是模式图中的边,那么边A-B就是合并图对应的结果子图中的边,也就是合并图中的边。
在确定合并图的边的集合时,具体可以通过例如以下方式进行:确定模式图中的边在合并图中对应的边,也就是确定该模式图中的边对应的模式图节点在合并图中对应的节点,然后将合并图中对应的节点连接为边。或者,确定合并图的任意两个节点的连线得到的边在模式图中是否有对应的边存在,如果存在就将该条边加入合并图的边的集合中。
在一个例子中,首先,确定全部结果子图中的每个子图节点对应的结果子图中心点的集合。然后,根据每个子图节点对应的结果子图中心点的集合,确定与同一个结果子图中心点对应的合并图的节点的集合。最后,根据合并图的节点和模式图的模式图节点的匹配关系,确定合并图的边的集合。
如果子图同构匹配时还考虑了节点和边的标签,合并图的节点和边的标签可以根据结果子图中相应的节点和边的标签确定。
下面以一个例子,对步骤S501、确定全部结果子图中的每个子图节点对应的结果子图中心点的集合,做进一步说明。步骤S501包括步骤S1-步骤S4。
步骤S1、对于每个子图节点,分别形成第一集合、第二集合、以及第三集合;其中,第一集合,为包括该子图节点并且结果子图中心点为该子图节点的结果子图的编号的集合;第二集合,为包括该子图节点并且结果子图中心点为其他子图节点的结果子图的编号的集合;子图节点的第三集合的初始状态为空集。
步骤S2、将第一集合不为空集的子图节点作为起始节点,将起始节点的第一集合作为起始节点的第三集合的以起始节点的节点标识命名的一个子集。
第一集合不为空集的子图节点也就是结果子图中心点。因此,该步骤中是以结果子图中心点作为起始节点。当结果子图中心点为多个时,起始节点也为多个。
步骤S3、将起始节点设置为第一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合。
接收节点将发送节点的第三集合的子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集。
步骤S4、将第三集合有新增子集的接收节点设置为下一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合的新增子集,接收节点将发送节点的第三集合的新增子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集。循环执行步骤S4,直至全部子图节点的第三集合不再发生变化。
其中,接收节点增加的第三集合的子集的名称按照发送节点的对应的第三集合的子集的名称命名。
其中,某个结果子图中心点和某个节点为对应关系,是指该结果子图中心点为该节点所在的结果子图的中心点。
经过上述步骤S1-S4,对于每个子图节点,根据该子图节点的第三集合的各子集的名称的集合,即可得到该子图节点对应的结果子图中心点的集合。
需要说明的是,在步骤S3中,是从起始节点出发,利用起始节点的数据去调整与其邻接的节点的数据,在计算机技术中,起始节点可视为发送节点,其邻接节点可视为接收节点,这里的“发送”是指提供发送节点的数据。在步骤S3中,在存在多个发送节点的情况下,是同时从这多个发送节点出发去调整其各自的接收节点的数据的,也就是采用了并行处理机制。
同样的,在步骤S4中,是从第三集合有新增子集的节点出发,利用第三集合有新增子集的节点的数据去调整与其邻接的节点的数据,在计算机技术中,第三集合有新增子集的节点可视为发送节点,其邻接节点可视为接收节点,这里的“发送”是指提供发送节点的数据。在步骤S4中,在存在多个发送节点的情况下,是同时从这多个发送节点出发去调整其各自的接收节点的数据的,也就是采用了并行处理机制。
在上述步骤中,可以预先为每个子图节点分别分配一个处理节点,每个处理节点包括一个处理单元和一个存储单元。与发送节点对应的处理节点从自己的存储单元中读取数据(也就是获取发送节点的数据),发送给与接收节点对应的处理节点。与接收节点对应的处理节点接收到数据后,其处理单元进行取交集处理,将交集写入到自己的存储单元中(也就是更新接收节点的数据)。在每一轮过程中,不同发送节点的处理节点发送数据的过程是同时进行的,同一个发送节点的处理节点向其对应的多个接收节点的处理节点发送数据的过程也是同时进行的,以实现并行处理过程,提升数据处理效率。
在上述步骤中,可以预先为每个子图节点分别设置一个发送进程和一个接收进程,所述发送进程用于在子图节点作为发送节点时执行发送动作,所述接收进程用于在子图节点作为接收节点时执行接收动作。进程是计算机程序中的相对独立的执行实体,是关于某数据集合上的一次独立运行活动,为系统进行资源分配和调度的基本单位,本实施例可以通过预先为每个子图节点分别设置发送进程和接收进程来实现上述并行处理机制。
在上述过程中,从不同结果子图中心点也就是起始节点处开始的数据传递过程彼此之间不会相互干扰,在基于计算机程序/指令执行上述合并方法时,步骤S3的第一轮的多个发送进程可以并行处理,步骤S4的每一轮的发送进程也可以并行处理,提升了数据处理速度。
可选地或优选地,在步骤S4中,发送节点向发送节点的邻接节点发送发送节点的第三集合的新增子集时,不向邻接节点中的与新增节点对应的上游节点发送该新增子集;所述与新增节点对应的上游节点,是指该新增子集是基于该上游节点的上一轮的发送而增加的。也就是说,对于以特定结果子图中心点为源头的数据,节点之间对该数据的传递是不逆向进行的,以减少数据传递量,提升处理速度。
通过这种方式,可以保证发送节点对第三集合的新增子集向邻接节点的发送是单向的,避免了不必要的处理步骤,进一步提升处理速度。
下面以具体的例子来进一步说明本实施例中的子图同构匹配结果的合并方法。
<例子>
在本实施例中,目标图的结构如图3所示。目标图中包括了节点a、b……k,以及节点之间形成的边例如边a-d、边i-k等。其中目标图中的边是具有方向的,例如边a-d的方向是从节点a指向节点d,也就是说目标图为有向图。
本实施例中的模式图如图4所示。模式图中包括了节点1、2……6,以及节点之间形成的边例如边1-4、边4-6等。模式图同样为有向图。
本实施例中,采用JSON(JavaScript Object Notation,JS对象简谱)格式来表示模式图,具体来说是通过JSON Object字符串来表示模式图。图4中模式图的表示形式如下:
{"directed”:true",
"center":"4",
"nodes":
[{"id":"1","labels":{}},
{"id":"2","labels":{}},
{"id":"3","labels":{}},
{"id":"4","labels":{},
{"id":"5","labels":{}},
{"id":"6","labels":{}}],
"edges":
[{"id1":"1","id2":"4","labels":[],"weight":1},
{"id1":"3","id2":"2","labels":[],"weight":1},
{"id1":"2","id2":"4","labels":[],"weight":1},
{"id1":"4","id2":"5","labels":[],"weight":1},
{"id1":"5","id2":"6","labels":[],"weight":1}]}
其中,directed(方向)字段用来记录模式图是否为有向图,当“directed”为true时为有向图,当“directed”为false时为无向图。nodes(节点)字段用来记录模式图的节点的信息。nodes字段中进一步了以下字段:id(标识)字段,用来记录节点标识;labels(标签)字段,用来记录节点的标签。edges(边)字段用来记录模式图的边的信息,edges字段中进一步包括了以下字段:id1(标识1)字段,用来记录边的起始节点的标识;id2(标识2)字段,用来记录边的终止节点的标识;labels(标签)字段,用来记录边的标签;weight(权重)字段,用来记录边的权重。模式图中各个边的权重均为1,也就是说,模式图中各个边的权重是一样的。center(中心点)字段用来标识模式图中心点,例如模式图中的相应字段为"center":"4"。
本实施例中的模式图的节点和边均不具有标签,因此对应的JSON Object字符串中节点的labels(标签)字段和边的labels(标签)字段均为空。
类似地,也可以采用JSON格式来表示目标图。
如图5-1至图5-8所示,根据步骤S210,经过子图同构匹配获取的结果子图总共为8个。图5-1至图5-8所示的结果子图依次对应于编号为Ⅰ-Ⅷ的结果子图。结果子图Ⅰ-Ⅷ也可以用例如JSON Object字符串的形式来表示。
根据步骤S220,为了对结果子图进行合并,从模式图中选择一个模式图节点作为模式图中心点。本实施例中,将模式图中度最大的点作为模式图中心点。本实施例中的模式图是有向图,用节点的出度与入度的平均值来作为节点的度。节点1-5的度分别是:0.5,1,0.5,2,0.5,0.5,其中节点4的度为2最大,因此模式图中心点为节点4。可以用center(中心点)字段来标识模式图中心点,例如模式图中的相应字段为"center":"4"。
在结果子图中,与模式图中心点匹配的子图节点为结果子图中心点。因此,结果子图Ⅰ-Ⅷ中的结果子图中心点分别为节点d、d、d、d、d、d、i、i。
如图6-1至图6-2所示,根据步骤S230,根据结果子图中心点对结果子图进行合并,得到了合并图。结果子图Ⅰ-Ⅵ中的结果子图中心点都是节点d,结果子图Ⅶ和Ⅷ中的结果子图中心点都是节点i。因此可以将结果子图Ⅰ-Ⅵ根据结果子图中心点d合并,得到如图6-2所示的合并图F2。可以将结果子图Ⅶ和Ⅷ根据结果子图中心点i合并,得到如图6-1所示的合并图F1。
最终可以将合并图F1和合并图F2进行显示。合并图F1中保留了结果子图Ⅶ和Ⅷ中的信息,合并图F2中保留了结果子图Ⅰ-Ⅵ中的信息。
由此可见,通过本实施例中的子图同构匹配结果的合并方法,减少了匹配结果中需要显示的图的数量,同时保留了合并前的结果子图的信息。
下面具体说明获取合并图可以采用的方法,也就是步骤S230的具体实现方式。
根据前述的获得合并图的第一种方法,首先确定由同一个结果子图中心点的结果子图构成的结果子图集合。对于结果子图中心点d,结果子图中心点d的结果子图包括结果子图Ⅰ-Ⅵ,构成结果子图集合{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}。对于结果子图中心点i,结果子图中心点i的结果子图包括结果子图Ⅶ和Ⅷ,构成结果子图集合{Ⅶ,Ⅷ}。
接下来,对同一个结果子图集合内的结果子图进行合并,得到该结果子图集合对应的合并图。也就是说,分别对结果子图集合{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}和结果子图集合{Ⅶ,Ⅷ}进行合并。
具体来说,对结果子图集合{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}的各个子图节点求并集,例如对图Ⅰ至图Ⅵ的结果子图各自的结果子图节点集合{a,b,c,d,f,g}……{a,b,c,d,h,f}求并集,得到合并图F2的节点的集合{a,b,c,d,f,g,h}。类似地,对结果子图集合{Ⅶ,Ⅷ}的各个子图节点求并集,得到合并图F1的节点的集合{e,d,f,i,j,k}。
同样,对结果子图集合{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}的各个边求并集,得到合并图F2的边的集合{a-d,c-b,b-d,d-f,d-g,d-h}。类似地,对结果子图集合{Ⅶ,Ⅷ}的各个边求并集,可以得到合并图F1的边的集合{e-i,d-f,f-i,i-j,i-k}。
通过求合并图的节点集合和边集合,最终得到了合并图F1和F2。
根据前述的获得合并图的第二种方法,通过以下方式获得合并图:确定与同一个结果子图中心点对应的合并图的节点的集合,根据合并图的节点和模式图的模式图节点的匹配关系,确定合并图的边的集合。
在本例中,可以确定结果子图中心点d对应的结果子图节点的集合为{a,b,c,d,f,g,h},这些结果子图节点会在同一个合并图中呈现,因此结果子图中心点d对应的合并图F2的节点的集合也是{a,b,c,d,f,g,h}。类似的,可以确定结果子图中心点i对应的结果子图节点的集合为{e,d,f,i,j,k},这些结果子图节点会在同一个合并图中呈现,因此结果子图中心点i对应的合并图F1的节点的集合也是{e,d,f,i,j,k}。
其中,某个结果子图中心点和某个节点为对应关系,是指该结果子图中心点为该节点所在的结果子图的中心点。
根据合并图的节点和模式图的模式图节点的匹配关系,确定合并图的边的集合,以结果子图中心点d对应的合并图F2为例,合并图F2的节点集合为{a,b,c,d,f,g,h},节点b与模式图中的节点2匹配,节点c与模式图中的节点3匹配,在模式图中的由节点2和节点3确定了边3-2,因此边3-2对应的边c-b是合并图F2中的边。通过这种方式,可以得到合并图F2的边的集合。
确定与同一个结果子图中心点对应的合并图的节点的集合,可以包括:确定全部结果子图中的每个子图节点对应的结果子图中心点的集合,根据每个子图节点对应的结果子图中心点的集合,可以很轻易地确定与同一个结果子图中心点对应的合并图的节点的集合。
在本例中,每个子图节点对应的结果子图中心点的集合可以表示为:“子图节点:{对应的结果子图中心点的集合}”,具体的,分别表示为:
a:{d},b:{d},c:{d},d:{d,i},e:{i},f:{d,i},g:{d},h:{d},i:{i},j:{i},k:{i}。
以a:{d},f:{d,i}和d:{d,i}为例分别做说明:
子图节点a对应的结果子图中心点的集合为{d},即,在具有子图节点a的全部结果子图中,中心点均为d。
子图节点f对应的结果子图中心点的集合为{d,i},即,在具有子图节点f的多个结果子图中,一部分具有子图节点f的结果子图的中心点为d,另一部分具有子图节点f的结果子图的中心点为i。
子图节点d对应的结果子图中心点的集合为{d,i},即,在具有子图节点d的多个结果子图中,一部分具有子图节点d的结果子图的中心点为d,另一部分具有子图节点d的结果子图的中心点为i。
根据每个子图节点对应的结果子图中心点的集合,确定与同一个结果子图中心点对应的合并图的节点的集合。在本例中,根据a:{d},b:{d},c:{d},d:{d,i},e:{i},f:{d,i},g:{d},h:{d},i:{i},j:{i},k:{i},可以确定结果子图中心点d对应的结果子图节点的集合为{a,b,c,d,f,g,h},子图中心点i对应的结果子图节点的集合为{e,d,f,i,j,k}。
确定全部结果子图中的每个子图节点对应的结果子图中心点的集合,包括:
步骤S1、对于每个子图节点,分别形成第一集合、第二集合、以及第三集合;其中,第一集合,为包括该子图节点并且结果子图中心点为该子图节点的结果子图的编号的集合;第二集合,为包括该子图节点并且结果子图中心点为其他子图节点的结果子图的编号的集合;对于每个子图节点,其第三集合的初始状态为空集。
在本实施例中,第一集合记录在结果子图节点的centers(中心点)字段中的true(是)字段中,第二集合记录在节点centers字段中的false(非)字段中,第三集合记录在节点的centers_ids(节点标识)字段中。
可以通过以下形式表示步骤S1得到的结果:
a:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{}};
b:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{}};
c:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{}};
d:{centers:{true:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ],false:[Ⅶ,Ⅷ]},centers_ids:{}};
e:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{}};
f:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅳ,Ⅵ,Ⅶ,Ⅷ]},centers_ids:{}};
g:{centers:{true:[],false:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]},centers_ids:{}};
h:{centers:{true:[],false:[Ⅱ,Ⅲ,Ⅴ,Ⅵ]},centers_ids:{}};
i:{centers:{true:[Ⅶ,Ⅷ],false:[]},centers_ids:{}};
j:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{}};
k:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{}};
步骤S2、将第一集合不为空集的子图节点作为起始节点,将起始节点的第一集合作为起始节点的第三集合的以起始节点的节点标识命名的一个子集。
本实施例中,第一集合不为空的子图节点包括节点d和节点i,因此,节点d和节点i为起始节点。
以节点d为例,将节点d的第一集合{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}作为节点d的第三集合的一个子集,并且以节点d的节点标识命名,该子集记为d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}。
在节点i处进行与上述过程类似的处理,将节点i的第一集合[Ⅶ,Ⅷ]作为节点i的第三集合的一个子集,并且以节点i的节点标识命名,该子集记为i:{Ⅶ,Ⅷ}。
可以通过以下方式标识步骤S2得到的结果:
a:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{}};
b:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{}};
c:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{}};
d:{centers:{true:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ],false:[Ⅶ,Ⅷ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}};
e:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{}};
f:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅳ,Ⅵ,Ⅶ,Ⅷ]},centers_ids:{}};
g:{centers:{true:[],false:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]},centers_ids:{}};
h:{centers:{true:[],false:[Ⅱ,Ⅲ,Ⅴ,Ⅵ]},centers_ids:{}};
i:{centers:{true:[Ⅶ,Ⅷ],false:[]},centers_ids:{i:[Ⅶ,Ⅷ]}};
j:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{}};
k:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{}};
步骤S3、将起始节点设置为第一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合。接收节点将发送节点的第三集合的子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集。
在本实施例中,如果两个节点在结果子图中为直接连接的关系,则其中一个节点为另一个节点的邻接节点。
以起始节点d为例,它的邻接节点包括节点a、b、f、g、h。将节点d作为第一轮的发送节点,同时向节点a、b、f、g、h发送节点d的第三集合,也就是centers_ids字段中带有d的节点标识的集合d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}。接收节点例如为节点g,节点g将节点d的第三集合的以节点d命名的子集d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}与自身的第二集合也就是{Ⅰ,Ⅲ,Ⅳ,Ⅴ}求交集,得到的交集为{Ⅰ,Ⅲ,Ⅳ,Ⅴ}。再把交集{Ⅰ,Ⅲ,Ⅳ,Ⅴ}增加为节点g的第三集合的一个子集,同样以d的节点标识命名,记为d:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]。
以起始节点i为例,它的邻接节点包括节点e、f、j、k。将节点i作为第一轮的发送节点,同时向节点e、f、j、k发送节点i的第三集合,也就是centers_ids字段中带有i的节点标识的集合i:{Ⅶ,Ⅷ}。接收节点例如节点e,节点e将节点i的第三集合的以节点i命名的子集i:{Ⅶ,Ⅷ}与自身的第二集合也就是{Ⅶ,Ⅷ}求交集,得到的交集为{Ⅶ,Ⅷ}。再把交集{Ⅶ,Ⅷ}增加为节点e的第三集合的一个子集,同样以i的节点标识命名,记为i:[Ⅶ,Ⅷ]。
可以看出,节点c不是起始节点d和起始节点i的邻接节点,因此,在第一轮发送后,节点c的第三集合仍然为空集。
可以看出,节点f同时是起始节点d和起始节点i的邻接节点,因此,在第一轮发送后,节点f的第三集合包括具有不同名称的2个子集,分别是d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ]和i:[Ⅶ,Ⅷ]。
可以通过以下方式标识步骤S3得到的结果:
a:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}};
b:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}};
c:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{}};
d:[centers:{true:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ],false:[Ⅶ,Ⅷ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}};
e:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{i:[Ⅶ,Ⅷ]}};
f:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅳ,Ⅵ,Ⅶ,Ⅷ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ],i:[Ⅶ,Ⅷ]}};
g:{centers:{true:[],false:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]},centers_ids:{d:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]}};
h:{centers:{true:[],false:[Ⅱ,Ⅲ,Ⅴ,Ⅵ]},centers_ids:{d:[Ⅱ,Ⅲ,Ⅴ,Ⅵ]}};
i:[centers:{true:[Ⅶ,Ⅷ],false:[]},centers_ids:{i:[Ⅶ,Ⅷ]}};
j:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{i:[Ⅶ,Ⅷ]}};
k:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{i:[Ⅶ,Ⅷ]}};
步骤S4、将第三集合有新增子集的接收节点设置为下一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合的新增子集,接收节点将发送节点的第三集合的新增子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集;循环执行步骤S4,直至全部子图节点的第三集合不再发生变化。
在本实施例中,第一轮的发送结束后,节点a、b、e、f、g、h、j、k的第三集合都发生了变化,含有新增子集,因此,可以将节点a、b、e、f、g、h、j、k设置为第二轮的发送节点。
在第二轮的发送过程中,以节点b为例,节点b的邻接节点包括了节点d和节点c。节点b的第三集合包括新增子集d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}。
其中,节点d是第一轮发送的发送节点,节点b的新增子集d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}是基于节点d在第一轮的发送而增加的,因此节点d是与节点b的新增子集d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}对应的上游节点,基于不逆向发送原则,节点b不向节点d发送节点b的新增子集d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}。
因此,在第二轮的发送过程中,节点b只向节点c发送节点b的新增子集d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}。节点c接收到集合d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}后与自身的第二集合{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}求交集,结果为d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ}。
在第二轮的发送过程中,以节点f为例,节点f的邻接节点包括了节点d和节点i。节点f的第三集合包括新增子集d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ]和新增子集i:[Ⅶ,Ⅷ]。
其中,节点d是第一轮发送的发送节点,节点f的新增子集d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ]是基于节点d在第一轮的发送而增加的,因此节点d是与节点f的新增子集d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ]对应的上游节点,基于不逆向发送原则,节点f不向节点d发送节点f的新增子集d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ],节点f向节点d只发送节点f的新增子集i:[Ⅶ,Ⅷ]。节点d接收到集合i:[Ⅶ,Ⅷ]后与自身的第二集合{Ⅶ,Ⅷ}求交集,结果为i:[Ⅶ,Ⅷ]。
其中,节点i是第一轮发送的发送节点,节点f的新增子集i:[Ⅶ,Ⅷ]是基于节点i在第一轮的发送而增加的,因此节点i是与节点f的新增子集i:[Ⅶ,Ⅷ]对应的上游节点,基于不逆向发送原则,节点f不向节点i发送节点f的新增子集i:[Ⅶ,Ⅷ],节点f向节点i只发送节点f的新增子集d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ]。节点i接收到集合d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ]后与自身的第二集合{Ⅶ,Ⅷ}求交集,结果为空集。
在第二轮的发送过程中,基于不逆向发送原则,只包括节点b向节点c发送节点b的新增子集d:{Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ},节点f向节点d发送节点f的新增子集i:[Ⅶ,Ⅷ],节点f向节点i发送节点f的新增子集d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ]三个发送进程;第二轮发送结束后,对于节点c,第三集合的新增子集为d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]};对于节点d,第三集合的新增子集为i:[Ⅶ,Ⅷ]}。
在第二轮发送结束后,只有节点d和节点c的第三集合中具有新增子集,基于不逆向发送原则,节点c不进行第三轮发送,节点d在第三轮发送中需要向节点a,b,g,h分别发送新增子集i:[Ⅶ,Ⅷ]。
在第三轮发送过程中,节点d在第三轮发送中向节点a,b,g,h分别发送新增子集i:[Ⅶ,Ⅷ],结果均为空集。
在第三轮发送结束后,没有任何节点的第三集合发生变化,即全部子图节点的第三集合不再发生变化,发送过程结束。最终得到的结果为:
a:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}};其中,centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}含义为:子图节点a在结果子图Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ中,对应的结果子图中心点为d。
b:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}};其中,centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}含义为:子图节点b在结果子图Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ中,对应的结果子图中心点为d。
c:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}};其中,centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}含义为:子图节点c在结果子图Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ中,对应的结果子图中心点为d。
d:{centers:{true:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ],false:[Ⅶ,Ⅷ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ],i:[Ⅶ,Ⅷ]}};其中,centers_ids:{d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]}含义为:子图节点d在结果子图Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ中,对应的结果子图中心点为d;子图节点d在结果子图Ⅶ,Ⅷ中,对应的结果子图中心点为i。
e:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{i:[Ⅶ,Ⅷ]}};其中,centers_ids:{i:[Ⅶ,Ⅷ]}含义为:子图节点e在结果子图Ⅶ,Ⅷ中,对应的结果子图中心点为i。
f:{centers:{true:[],false:[Ⅰ,Ⅱ,Ⅳ,Ⅵ,Ⅶ,Ⅷ]},centers_ids:{d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ],i:[Ⅶ,Ⅷ]}};其中,centers_ids:{d:[Ⅰ,Ⅱ,Ⅳ,Ⅵ],i:[Ⅶ,Ⅷ]}含义为:子图节点f在结果子图Ⅰ,Ⅱ,Ⅳ,Ⅵ中,对应的结果子图中心点为d;子图节点d在结果子图Ⅶ,Ⅷ中,对应的结果子图中心点为i。
g:{centers:{true:[],false:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]},centers_ids:{d:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]}};其中,centers_ids:{d:[Ⅰ,Ⅲ,Ⅳ,Ⅴ]}含义为:子图节点g在结果子图Ⅰ,Ⅲ,Ⅳ,Ⅴ中,对应的结果子图中心点为d。
h:{centers:{true:[],false:[Ⅱ,Ⅲ,Ⅴ,Ⅵ]},centers_ids:{d:[Ⅱ,Ⅲ,Ⅴ,Ⅵ]}};其中,centers_ids:{d:[Ⅱ,Ⅲ,Ⅴ,Ⅵ]}含义为:子图节点h在结果子图Ⅱ,Ⅲ,Ⅴ,Ⅵ中,对应的结果子图中心点为d。
i:[centers:{true:[Ⅶ,Ⅷ],false:[]},centers_ids:{i:[Ⅶ,Ⅷ]}};其中,centers_ids:{i:[Ⅶ,Ⅷ]}含义为:子图节点i在结果子图Ⅶ,Ⅷ中,对应的结果子图中心点为i。
j:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{i:[Ⅶ,Ⅷ]}};其中,centers_ids:{i:[Ⅶ,Ⅷ]}含义为:子图节点j在结果子图Ⅶ,Ⅷ中,对应的结果子图中心点为i。
k:{centers:{true:[],false:[Ⅶ,Ⅷ]},centers_ids:{i:[Ⅶ,Ⅷ]}};其中,centers_ids:{i:[Ⅶ,Ⅷ]}含义为:子图节点k在结果子图Ⅶ,Ⅷ中,对应的结果子图中心点为i。
经过上述步骤S1-S4,对于每个子图节点,根据该子图节点的第三集合的各子集的名称的集合,即可得到该子图节点对应的结果子图中心点的集合。例如,对于节点a,第三集合包括子集d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ],则节点a对应的结果子图中心点的集合为{d}。对于节点d,第三集合包括子集d:[Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ]和i:[Ⅶ,Ⅷ]],则节点d对应的结果子图中心点的集合为{d,i}。
通过上述步骤,得到全部结果子图中的每个子图节点对应的结果子图中心点的集合。子图节点对应的结果子图中心点的集合表示为:“子图节点:{对应的结果子图中心点的集合}”,具体的,分别表示为:
a:{d},b:{d},c:{d},d:{d,i},e:{i},f:{d,i},g:{d},h:{d},i:{i},j:{i},k:{i}。
根据每个子图节点对应的结果子图中心点的集合,可以很轻易地确定与同一个结果子图中心点对应的合并图的节点的集合。在本例中,根据a:{d},b:{d},c:{d},d:{d,i},e:{i},f:{d,i},g:{d},h:{d},i:{i},j:{i},k:{i},可以确定与结果子图中心点d对应的合并图的节点为{a,b,c,d,f,g,h},与子图中心点i对应的合并图的节点的集合为{e,d,f,i,j,k}。
确定与同一个结果子图中心点对应的合并图的节点的集合后,根据合并图的节点和模式图的模式图节点的匹配关系,确定合并图的边的集合。最终得到合并图F1和F2。
根据前述内容可知,本实施例在同一轮发送中,多个发送节点并不是依次执行发送动作的,而是“同时”执行发送动作的,也就是节点和节点之间采用并行处理机制,能够充分利用计算机资源,加快处理速度,提升处理效率,尤其适用于大规模子图同构匹配的场景。
在上述步骤中,可以预先为每个子图节点分别设置一个发送进程和一个接收进程,所述发送进程用于在子图节点作为发送节点时执行发送动作,所述接收进程用于在子图节点作为接收节点时执行接收动作。进程是计算机程序中的相对独立的执行实体,是关于某数据集合上的一次独立运行活动,为系统进行资源分配和调度的基本单位,本实施例可以通过预先为每个子图节点分别设置发送进程和接收进程来实现上述并行处理机制。
<合并结果例子>
以税务风险防控领域为例,给定的模式图如图7所示。图7中,边的标签标识企业之间开具发票中的产品类型。“淄博1111公司”的上游企业开具的发票类型为农产品类,其给下游企业开具的发票类型为钢类,“淄博1111公司”的存在异常纳税行为的可能。因此在模式图中,可以将“淄博1111公司”作为中心点。
经过子图同构匹配,得到了多个结果子图。其中对边的标签的匹配中,目标图中的边的标签标识的产品类型包括模式图中对应标签标识的产品类型中的至少一种即为符合匹配。其中,节点“嘉兴1234公司”为多个结果子图的中心点,图8-1和图8-2示出了两个以“嘉兴1234公司”为中心点的结果子图,其他同样以“嘉兴1234”公司为中心点的结果子图在此省略。
通过本实施例中的子图同构匹配结果的合并方法,得到如图9所示的合并图。可知图9所示的合并图对应的结果子图为144种。这些结果子图可以由图9中的节点以“嘉兴1234公司”为中心点经排列组合得到,并且这些结果子图都反映了“嘉兴1234公司”可能存在异常纳税行为。
可以看出,本实施例中的子图同构匹配结果的合并方法大大减少了用于表示结果的图的数量,同时又保留了结果子图都反映的嘉兴1234公司可能存在异常纳税行为这一信息,相比于现有的结果呈现方式具有显著优势。
<电子设备>
本发明实施例提供了一种电子设备,包括:
存储器,用于存储可执行命令;
处理器,用于在所述可执行命令的控制下,执行前述任一项子图同构匹配结果的合并方法。
在一个具体的例子中,电子设备例如是图1所示的子图匹配服务器1100-2。
<计算机可读存储介质>
本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现前述任一项子图同构匹配结果的合并方法。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人物来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人物来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人物能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

Claims (13)

1.一种子图同构匹配结果的合并方法,包括:
获取结果子图,所述结果子图为从目标图中提取出的与模式图同构匹配的子图,其中,所述目标图为蛋白质互作网络图、生化代谢网络图、信号传导网络图、生物神经网络图、交通网络图或者社交网络图中的任意一种;
从模式图中选择一个模式图节点作为模式图中心点,将每个结果子图中与所述模式图中心点匹配的子图节点作为该结果子图的结果子图中心点;
根据结果子图中心点对结果子图进行合并,得到合并图。
2.根据权利要求1所述的方法,其中,所述从模式图中选择一个模式图节点作为模式图中心点,包括:
在所述模式图中指定一个模式图节点作为模式图中心点;或者,
确定所述模式图中的每个模式图节点的度,从度最大的模式图节点中选择一个模式图节点作为模式图中心点。
3.根据权利要求1所述的方法,其中,所述根据结果子图中心点对结果子图进行合并,得到合并图,包括:
由同一个结果子图中心点的结果子图构成一个结果子图集合;
对同一个结果子图集合内的结果子图进行合并,得到该结果子图集合对应的合并图。
4.根据权利要求3所述的方法,其中,所述对同一个结果子图集合内的结果子图进行合并,得到该结果子图集合对应的合并图,包括:
对该结果子图集合内的结果子图的各个子图节点求并集,得到该结果子图集合对应的合并图的节点的集合;
对该结果子图集合内的结果子图的各个边求并集,得到该结果子图集合对应的合并图的边的集合。
5.根据权利要求1所述的方法,其中,所述根据结果子图中心点对结果子图进行合并,得到合并图,包括:
确定与同一个结果子图中心点对应的合并图的节点的集合;
根据合并图的节点和模式图的模式图节点的匹配关系,确定合并图的边的集合。
6.根据权利要求5所述的方法,其中,所述确定与同一个结果子图中心点对应的合并图的节点的集合,包括:
确定全部结果子图中的每个子图节点对应的结果子图中心点的集合;
根据每个子图节点对应的结果子图中心点的集合,确定与同一个结果子图中心点对应的合并图的节点的集合。
7.根据权利要求6所述的方法,其中,所述确定全部结果子图中的每个子图节点对应的结果子图中心点的集合,包括:
步骤S1、对于每个子图节点,分别形成第一集合、第二集合、以及第三集合;其中,所述第一集合,为包括该子图节点并且结果子图中心点为该子图节点的结果子图的编号的集合;所述第二集合,为包括该子图节点并且结果子图中心点为其他子图节点的结果子图的编号的集合;所述子图节点的第三集合的初始状态为空集;
步骤S2、将第一集合不为空集的子图节点作为起始节点,将起始节点的第一集合作为起始节点的第三集合的以起始节点的节点标识命名的一个子集;
步骤S3、将起始节点设置为第一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合,接收节点将发送节点的第三集合的子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集;
步骤S4、将第三集合有新增子集的接收节点设置为下一轮的发送节点,同时向发送节点的邻接节点发送发送节点的第三集合的新增子集,接收节点将发送节点的第三集合的新增子集分别与接收节点的第二集合取交集,并将每个交集增加为接收节点的第三集合的一个子集;循环执行步骤S4,直至全部子图节点的第三集合不再发生变化;
其中,接收节点增加的第三集合的子集的名称按照发送节点的对应的第三集合的子集的名称命名。
8.根据权利要求7所述的方法,其中,在步骤S4中,发送节点向发送节点的邻接节点发送发送节点的第三集合的新增子集时,不向邻接节点中的与新增节点对应的上游节点发送该新增子集;所述与新增节点对应的上游节点,是指该新增子集是基于该上游节点的上一轮的发送而增加的。
9.根据权利要求7所述的方法,其中,还包括:为每个子图节点分别配置一个发送进程和一个接收进程,所述发送进程用于在子图节点作为起始节点或者发送节点时执行发送动作,所述接收进程用于在子图节点作为接收节点时执行接收动作。
10.根据权利要求1所述的方法,其中,所述方法还包括:
响应于子图同构匹配的请求,从图数据存储服务器获取目标图;以及,从目标图中提取与模式图同构匹配的子图。
11.根据权利要求1所述的方法,其中,所述方法还包括:
响应于设置显示模式的操作,提供设置入口;
获取用户通过所述设置入口输入的显示模式,根据所述显示模式显示所述合并图或者显示所述结果子图。
12.一种电子设备,包括:
存储器,用于存储可执行命令;
处理器,用于在所述可执行命令的控制下,执行如权利要求1-11任一项所述的方法。
13.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序在被处理器执行时实现如权利要求1-11任一项所述的方法。
CN201811639193.XA 2018-12-29 2018-12-29 子图同构匹配结果的合并方法、电子设备及存储介质 Active CN111382315B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811639193.XA CN111382315B (zh) 2018-12-29 2018-12-29 子图同构匹配结果的合并方法、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811639193.XA CN111382315B (zh) 2018-12-29 2018-12-29 子图同构匹配结果的合并方法、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111382315A CN111382315A (zh) 2020-07-07
CN111382315B true CN111382315B (zh) 2024-04-05

Family

ID=71218141

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811639193.XA Active CN111382315B (zh) 2018-12-29 2018-12-29 子图同构匹配结果的合并方法、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111382315B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112633094B (zh) * 2020-12-10 2022-08-23 北京华大九天科技股份有限公司 同构图识别方法、装置、设备和介质
CN113487109B (zh) * 2021-07-27 2023-11-24 中国平安财产保险股份有限公司 群体识别方法、装置、电子设备及存储介质
CN115018280B (zh) * 2022-05-24 2024-06-18 支付宝(杭州)信息技术有限公司 风险图模式的挖掘方法、风险识别方法及对应装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521332A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 基于强模拟的图模式匹配方法、装置及系统
CN104392010A (zh) * 2014-12-23 2015-03-04 北京理工大学 一种子图匹配的查询方法
CN105488289A (zh) * 2015-12-09 2016-04-13 四川长虹电器股份有限公司 分布式环境下动态图结构匹配的方法
CN108197186A (zh) * 2017-12-26 2018-06-22 北京航空航天大学 一种应用于社交网络中的动态图匹配查询方法
CN109063089A (zh) * 2018-07-26 2018-12-21 清华大学 一种基于社区结构的子图匹配方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409828B2 (en) * 2016-07-29 2019-09-10 International Business Machines Corporation Methods and apparatus for incremental frequent subgraph mining on dynamic graphs
US10810210B2 (en) * 2017-05-12 2020-10-20 Battelle Memorial Institute Performance and usability enhancements for continuous subgraph matching queries on graph-structured data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521332A (zh) * 2011-12-06 2012-06-27 北京航空航天大学 基于强模拟的图模式匹配方法、装置及系统
CN104392010A (zh) * 2014-12-23 2015-03-04 北京理工大学 一种子图匹配的查询方法
CN105488289A (zh) * 2015-12-09 2016-04-13 四川长虹电器股份有限公司 分布式环境下动态图结构匹配的方法
CN108197186A (zh) * 2017-12-26 2018-06-22 北京航空航天大学 一种应用于社交网络中的动态图匹配查询方法
CN109063089A (zh) * 2018-07-26 2018-12-21 清华大学 一种基于社区结构的子图匹配方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A genetic and iterative local search algorithm for solving subgraph isomorphism problem;Mina M. F.等;2015 International Conference on Industrial Engineering and Operations Management (IEOM);20150427;全文 *
基于GPU的RDF类型同构并行算法;冯佳颖;张小旺;冯志勇;;计算机研究与发展;20180315(第03期);全文 *

Also Published As

Publication number Publication date
CN111382315A (zh) 2020-07-07

Similar Documents

Publication Publication Date Title
US8700540B1 (en) Social event recommendations
US10937060B2 (en) Intelligent location based notification
CN111382315B (zh) 子图同构匹配结果的合并方法、电子设备及存储介质
US11412349B2 (en) Suppressing notifications based on directed location activity
TWI793170B (zh) 使用深度神經語言模型於自動出價之系統、裝置與方法
US11468136B2 (en) Item inventory locating from search queries
CN105210063A (zh) 为数据可视化推荐基于上下文的动作
CN104077723B (zh) 一种社交网络推荐系统及方法
CN103631851A (zh) 推荐好友的方法及其服务器和终端
CN111814065B (zh) 信息传播路径分析方法、装置、计算机设备及存储介质
US9767417B1 (en) Category predictions for user behavior
US10375005B2 (en) Dynamic hashtag ordering based on projected interest
US11317258B2 (en) Methods, systems, and non-transitory computer readable record media for grasping nearby friend based on short-range wireless communication
US10623890B1 (en) Event-based location based services
CN109155041A (zh) 提供与社交图相关联的基于旅行或促销的推荐
US20170262878A1 (en) System and Method for Traffic Quality Based Pricing via Deep Neural Language Models
JP2019125359A (ja) 情報推薦方法及びコンピュータシステム
CN110399564B (zh) 帐号分类方法和装置、存储介质及电子装置
CN110059172B (zh) 基于自然语言理解的推荐答案的方法和装置
Srivastava et al. Scope of cloud computing in business: A compendious and methodical analysis of trends in publications and patents
KR20240054365A (ko) 다중 프로필을 제공하는 방법 및 시스템
CN111787042A (zh) 用于推送信息的方法和装置
US20230088667A1 (en) Method of recommending information, electronic device, and storage medium
KR101584225B1 (ko) 메신저의 대화 내용을 바탕으로 추천 검색어를 제공하는 방법과 시스템 및 기록 매체
US10387934B1 (en) Method medium and system for category prediction for a changed shopping mission

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
GR01 Patent grant
GR01 Patent grant