CN115878665A - 一种分布式极大独立集查找方法、装置和存储介质 - Google Patents
一种分布式极大独立集查找方法、装置和存储介质 Download PDFInfo
- Publication number
- CN115878665A CN115878665A CN202211597334.2A CN202211597334A CN115878665A CN 115878665 A CN115878665 A CN 115878665A CN 202211597334 A CN202211597334 A CN 202211597334A CN 115878665 A CN115878665 A CN 115878665A
- Authority
- CN
- China
- Prior art keywords
- node
- independent set
- condition
- neighbor
- degree
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种分布式极大独立集查找方法、装置和存储介质,方法包括以下步骤:S1、获取初始图;S2、对初始图进行静态查找,得到第一极大独立集;S3、对初始图执行变化操作,变化操作为增加边或删除边中的一种或多种,对执行变化操作后的初始图进行动态查找,更新第一极大独立集;S4、将最近时刻的第一极大独立集作为结果极大独立集输出。与现有技术相比,本发明具有适用于动态图、迭代简单等优点。
Description
技术领域
本发明涉及图计算技术领域,尤其是涉及一种分布式极大独立集查找方法。
背景技术
在现实世界的应用中,如社交网络、网页搜索、协作网络和生物学等,图被广泛用于表示实体之间的关系。极大独立集的查找问题是一个经典NP难问题,是图论中的一个难点,已引起了人们的广泛关注。独立集是满足集中的任意两点之间没有边的集。对于一个图,最大独立集是所有的独立集中包含最多点的独立集,也就是说该独立集不是任意一个独立集的真子集。
真实世界中的图规模都非常的大,因此大多采用分布式的方式对图进行存储;而且真实世界的图模型随时间不断变化,这些都给极大独立集的查找带来极大的挑战。
现有的极大独立集查找算法大多专注于解决单机的场景,不适用于分布式场景;对于分布式场景现有最优的算法MIS,强依赖节点顺序排序,因此很难扩展到动态图的场景下;另外MIS需要经过多轮的步骤循环效率较低;且MIS对相同输入,最终输出的极大独立集结果可能不一致。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供的一种适用于动态图、迭代简单的分布式极大独立集查找方法、装置和存储介质。
本发明的目的可以通过以下技术方案来实现:
一种分布式极大独立集查找方法,包括以下步骤:
S1、获取初始图;
S2、对初始图进行静态查找,得到第一极大独立集;
S3、对初始图执行变化操作,所述变化操作为增加边或删除边中的一种或多种,对执行变化操作后的初始图进行动态查找,更新第一极大独立集;
S4、将最近时刻的第一极大独立集作为结果极大独立集输出;
其中,S2的具体步骤包括:
S21、对初始图中的每一个节点设置标签标记和状态标记,初始化标签标记和状态标记;S22、基于邻居节点信息对初始图的每一个节点进行更新,基于更新后的标签标记得到第一极大独立集;
S3的具体步骤包括:
S31、对初始图执行变化操作,对于给定的时刻,确定执行变化操作后的受影响节点;S32、更新S31中所有受影响节点的状态标记;S33、采用S22中的方法,对所有受影响的节点进行更新,基于更新后的标签标记更新第一极大独立集。
进一步地,所述初始化标签标记和状态标记为:将初始图中的每一个节点的标签标记设置为真,初始图中的每一个节点的状态标记设置为激活。
进一步地,基于邻居节点信息对初始图的每一个节点进行更新具体为:
S221、根据节点ID大小遍历一遍初始图的中的每一个节点,将被遍历的每一个节点的状态标记都变为未激活;
S222、如果对于一个节点,满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将节点的标签标记更新为假后,若该节点的标签标记发生了变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
返回S221,重复上述步骤,直至所有的节点的状态标记都为未激活,得到第一极大独立集。
进一步地,所述第一极大独立集由图中标签标记为真的节点组成。
进一步地,所述受影响节点包括增加边或删除边时涉及的所有节点和涉及的所有节点的邻居节点。
进一步地,更新受影响节点的状态标记为:将S31中所有受影响节点的状态标记更新为激活。
进一步地,所述采用S22中的方法,对所有受影响的节点进行更新具体为:
S331、根据节点ID大小遍历一遍受影响节点中的每一个节点,将被遍历的每一个受影响节点的状态标记都变为未激活;
S332、受影响节点中,如果对于一个节点,若满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将该节点的标签标记更新为假后,若该节点的标签标记发生变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点的度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
返回S331,重复上述步骤,直至所有的受影响节点的状态标记都为未激活,更新第一极大独立集。
本发明还提供一种分布式极大独立集查找装置,装置包括数据输入模块、静态查找模块、动态更新模块和输出模块;
其中,数据输入模块1用于获取初始图;
静态查找模块2用于对初始图进行静态查找,得到第一极大独立集,具体为:对初始图中的每一个节点设置标签标记和状态标记,初始化标签标记和状态标记;基于邻居节点信息对初始图的每一个节点进行更新,基于更新后的标签标记得到第一极大独立集;
动态更新模块3用于执行变化操作后的初始图进行动态查找,更新第一极大独立集,具体为:对初始图执行变化操作,对于给定的时刻,确定执行变化操作后的受影响节点;更新所有受影响节点的状态标记;采用静态查找模块中基于邻居节点信息对初始图的每一个节点进行更新的方法,对所有受影响的节点进行更新,基于更新后的标签标记更新第一极大独立集;
输出模块4用于将最近时刻的第一极大独立集作为结果极大独立集输出。
进一步地,所述初始化标签标记和状态标记为:将初始图中的每一个节点的标签标记设置为真,初始图中的每一个节点的状态标记设置为激活。
进一步地,基于邻居节点信息对初始图的每一个节点进行更新具体为:
根据节点ID大小遍历一遍初始图的中的每一个节点,将被遍历的每一个节点的状态标记都变为未激活;
如果对于一个节点,满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将节点的标签标记更新为假后,若该节点的标签标记发生了变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
重复上述步骤,直至所有的节点的状态标记都为未激活,得到第一极大独立集。
进一步地,所述第一极大独立集由图中标签标记为真的节点组成。
进一步地,所述受影响节点包括增加边或删除边时涉及的所有节点和涉及的所有节点的邻居节点。
进一步地,更新受影响节点的状态标记为:将所有受影响节点的状态标记更新为激活。
进一步地,采用静态查找模块中基于邻居节点信息对初始图的每一个节点进行更新的方法,对所有受影响的节点进行更新具体为:
根据节点ID大小遍历一遍受影响节点中的每一个节点,将被遍历的每一个受影响节点的状态标记都变为未激活;
受影响节点中,如果对于一个节点,若满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将该节点的标签标记更新为假后,若该节点的标签标记发生变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点的度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
重复上述步骤,直至所有的受影响节点的状态标记都为未激活,更新第一极大独立集。
本发明还提供一种分布式极大独立集查找装置,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述的分布式极大独立集查找方法。
本发明还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述的分布式极大独立集查找方法。
与现有技术相比,本发明具有以下有益效果:
本发明给图中的每一个节点设置标签标记和状态标记,根据标签标记判断是否在得到的极大独立集中,更新它们的状态,直到收敛,提供搜索极大独立集的效率。当动态图更新时,只激活受影响的节点,更新极大独立集,比较现有的MIS算法,本发明节点设计了简单的迭代公式,简化运算流程且结果唯一,减弱了对排序的依赖性,使得算法更好的适用于动态图,且减少了激活节点数使得算法效率更高。
附图说明
图1为本发明的动态图的变化过程图;
图2为本发明的流程图;
图3为本发明的极大独立集静态查找流程图;
图4为本发明的极大独立集静态查找示意图;
图5为本发明的不同服务通信节点和副本的示意图;
图6为本发明的极大独立集动态更新流程图;
图7为本发明的极大独立集动态更新示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1:
本发明提供的分布式极大独立集查找方法可以用于动态图中,本发明能实现从动态图中找出更新的极大独立集,保证极大独立集中的节点的动态结果与静态结果一致,足够好。本发明中的动态图是边会随着时间变化的图。独立集表示集合中任意两个节点均互不相连,极大独立集则表示该独立集不是任意一个独立集的真子集。举例来说,如图1所示,动态图中包含5个节点,当5个节点处于初始状态时,也就是动态图未加边时,动态图的极大独立集为{1,3,4}或{1,3,5}。当动态图被执行加边操作,节点1和节点4之间有边,此时动态图的极大独立集从{1,3,4}或{1,3,5}更新为{1,3,5}。
现有的传统分布式极大独立集算法是多步骤迭代算法,每轮迭代包括选择阶段、删除阶段和激活阶段,节点之间的顺序性使该算法无法运用于动态图数据。对于图1中的动态图,当节点1和节点4之间增加边时,传统分布式极大独立集算法必须重新进行多步骤迭代,效率低且难以保证得到的极大独立集的结果唯一。本发明的提供的分布式极大独立集查找方法只需要单步骤迭代更新,可应用于动态数据集,其输出结果一致,且算法效率高。本发明通过为每个节点保留的真或假的标签标记,指示该节点是否在独立集中。
本发明提供一种分布式极大独立集查找方法。分布式极大独立集查找方法的流程图如图2所示。分布式极大独立集查找方法具体包括以下步骤:
S1、获取初始图。
S1的初始图可以记作G=(V,E)。其中,V表示初始图中所有的节点集。E表示初始图中所有的边集。
本发明的初始图为动态图,动态图中的边会随着时间变化。设动态图对于的随时间的变化操作Opt,变化操作Opt具体包括增加边和删除边。
S2、对初始图进行静态查找,得到第一极大独立集。
S2的流程如图3所示,S2的具体步骤包括:
S21、将初始图G=(V,E)中的每一个节点设置标签标记和状态标记,进行初始化。此时,所有节点的标签标记都为真,所有节点的状态标记都为激活。
初始状态下,根据初始图G=(V,E)中节点的真的标签标记得到极大独立集,由于所有的节点的标签标记都为真,因此极大独立集包括初始图G=(V,E)中所有的节点。
S22、基于邻居节点信息对初始图G=(V,E)的每一个节点进行更新,直至所有节点的状态标记都为未激活,得到第一极大独立集。
更新过程具体为:
S221、根据节点ID大小遍历一遍初始图G=(V,E)中的每一个节点,将被遍历的每一个节点的状态标记都变为未激活。
S222、如果对于节点u,若满足第一条件和第二条件,则将节点u的标签标记更新为假。其中第一条件为:存在一个节点u的邻居节点v,邻居节点v的度数小于节点u的度数,或邻居节点v的度数与节点u的度数相等且邻居节点v的ID小于节点u的ID;第二条件为:该邻居节点v的标签标记为真。将节点u的标签标记更新为假后,若该节点的标签标记发生了变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活。第三条件为:邻居节点v的度数大于节点u的度数,或邻居节点v的度数与节点u的度数相等且邻居节点v的ID大于节点u的ID,第四条件为:邻居节点v的标签标记与节点u相同。
返回S221,重复上述步骤,直至所有的节点的状态标记都为未激活,停止迭代更新。基于更新后的节点的标签标记得到第一极大独立集。邻居节点v是与节点u相邻,与节点u之间存在连线的节点。
以图4为例,图4中,开始时,节点1、节点2、节点3和节点4的标签标记均为真,且状态标记都为激活。因此极大独立集为{1,2,3,4}。基于每个节点的邻居节点信息对节点进行更新。对于节点1,节点1的邻居节点为节点2,节点1只与节点2之间有边,节点1的度数为1。节点1的邻居节点,即节点2与节点1、节点3和节点4连接,节点2的度数为3。因此,不满足存在一个节点u的邻居节点v,邻居节点v的度数小于节点u的度数,或邻居节点v的度数与节点u的度数相等且邻居节点v的ID小于节点u的ID的第一条件。因此,节点1的标签标记保持为真。
对于节点2,节点2的邻居节点为节点1、节点4和节点3,其中节点1的度数1小于节点2的度数3,而另外两个节点,节点3的度数为2,节点4的度数为2。且节点1的标签标记为真。因此,满足第一条件和第二条件,此时,将节点2的标签标记更新为假,同时,由于节点2的邻居节点中,不存在满足第三条件和第四条件的节点,因此不执行将邻居节点的状态标记更新为激活。
对于节点3,节点3的邻居节点为节点2和节点4,其中,节点2的度数为3,节点4的度数为2,节点3的度数为2。因此,不满足第一条件和第二条件。因此,节点3的标签标记保持为真。
对于节点4,节点4的邻居节点为节点2和节点3。节点4的度数为2,节点3的度数为2,节点2的度数为3。节点3的度数与节点4的度数相等。同时,节点3的标签标记为真。因此,节点3满足第一条件和第二条件。此时,将节点4的标签标记更新为假。此时,节点4的邻居节点中的节点2满足第三条件和第四条件。因此将节点2的状态标记更新为激活。
经过更新后,基于更新的节点的标签标记更新极大独立集,由于节点2和节点4的标签标记更新为假,因此将节点2和节点4从极大独立集中删除,因此极大独立集为{1,3}。
由于更新后,初始图中存在节点的状态标记为激活,也就是节点2的状态标记为激活,说明极大独立集发生了变化,进行了更新。此时,重复S22,基于邻居节点信息再次对每一个节点进行更新。
再次的更新过程中,先将所有节点的状态标记都变为未激活。节点2和节点4本身的标签标记已经为假,节点的标签标记没有发生变化,没有节点的状态标记更新为激活。更新完成后,图中所有的节点的所有标签标记和状态标记都没有发生改变,极大独立集仍然为{1,3},图中所有的节点的状态标记都为未激活,停止迭代。
S3、对初始图执行变化操作,对执行变化操作后的初始图进行动态查找,更新第一极大独立集。
S3的流程如图6所示,S3具体步骤包括:
S31、对初始图执行变化操作,确定执行变化操作后的受影响节点。
对于给定的时间t,将变化操作Opt中对应增加边和删除边所涉及的节点和其对应的邻居节点设为受影响节点。
上述步骤可以用以下公式表示:
AFF(u,v)={u}∪{v}∪nbr(u)∪nbr(v)
其中,AFF(u,v)表示受影响节点集,{u}、{v}表示增加边和删除边涉及到的所有的节点集,nbr(u)和nbr(v)分别表示{u}和{v}的邻居节点。
S32、将S31中所有受影响节点的状态标记更新为激活。
S33、采用S22中的方法,对所有受影响的节点进行更新。
更新过程为:
S331、根据节点ID大小遍历一遍所有受影响节点中的每一个节点,即状态标签为激活的节点。将被遍历的每一个节点的状态标记都变为未激活。
S332、受影响节点中,如果对于节点u,若满足第一条件和第二条件,则,将节点u的标签标记更新为假。其中第一条件为:存在一个节点u的邻居节点v,邻居节点v的度数小于节点u的度数,或邻居节点v的度数与节点u的度数相等且邻居节点v的ID小于节点u的ID;第二条件为:邻居节点v的标签标记为真。将节点u的标签标记更新为假后,若该节点的标签标记发生变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活。第三条件为:邻居节点v的度数大于节点u的度数,或邻居节点v的度数与节点u的度数相等且邻居节点v的ID大于节点u的ID,第四条件为:邻居节点v的标签标记与节点u相同;
返回S331,重复上述步骤,直至所有的受影响节点的状态标记都为未激活,停止迭代更新,基于更新后的节点的标签标记更新第一极大独立集。
如图7所示,初始情况t0下,图中包括5个节点,节点1、节点2、节点3、节点4和节点5。经过S2的进行静态查找后,节点1、节点3、节点4和节点5的标签标记为真,节点2的标签标记为假。因此t0时的第一极大独立集为{1,3,4,5}。从t0时刻到t1时刻,图被执行了变化操作Opt,增加了节点2和节点5之间的边。此时,确定受影响节点,受影响节点包括节点1、节点2、节点3和节点5。节点1、节点2、节点3和节点5的状态标记更新为激活。根据节点ID大小遍历一遍受影响节点中的每一个节点,将被遍历的每一个受影响节点的状态标记都变为未激活。节点1的度数为1,节点2的度数为3,节点2的标签标记为假。节点1的邻居节点只有节点2。对于节点1,不满足第一条件和第二条件。因此,节点1的标签标记保持为真。对于节点2,节点2的标签标记仍然为假,没有发生变化,未执行将状态标记变为激活的步骤。对于节点3,不满足第一条件和第二条件。因此,节点3的标签标记保持为真。对于节点5,不满足足第一条件和第二条件。因此,节点5的标签标记保持为真。因此得到的极大独立集为{1,3,4,5}。极大独立集没有发生变化,所有受影响节点的状态标记为未激活,停止迭代。
从t1时刻到t2时刻,图被执行了变化操作Opt,增加了节点4和节点5之间的边。此时,确定受影响节点,受影响节点包括节点2、节点5和节点4。节点2、节点5和节点4的状态标记更新为激活。根据节点ID大小遍历一遍受影响节点中的每一个节点,将被遍历的每一个受影响节点的状态标记都变为未激活。对于节点2,节点2本身的标签标记已经为假,节点2的标签标记没有发生变化,未执行将节点u的所有的邻居节点v的状态标记变为激活的步骤。对于节点5,节点4的度数为1,满足存在节点5的邻居节点4,邻居节点4的度数小于节点5的度数,且节点4的标签标记为真的条件,满足第一条件和第二条件。因此,节点5的标签标记更新为假,节点5的状态标记为激活。对于节点4,节点4的标签标记保持为真。存在节点的状态标记为激活,再次进行S22中的更新,再次更新完成后,所有节点的状态标记都为未激活。因此第一极大独立集更新为{1,3,4}。
从t2时刻到t3时刻,图被执行了变化操作Opt,增加了节点4和节点2之间的边。此时,确定受影响节点,受影响节点包括节点1、节点2、节点3、节点4和节点5。节点1、节点2、节点3、节点4和节点5的状态标记更新为激活。根据节点ID大小遍历一遍受影响节点中的每一个节点,将被遍历的每一个受影响节点的状态标记都变为未激活。节点1、节点2、节点3、节点4和节点5的标签标记都不发生变化,因此,所有的受影响节点的状态标记都保持未激活。因此第一极大独立集保持为{1,3,4}。
S4、将最近时刻的第一极大独立集作为结果极大独立集输出。
本发明的分布式极大独立集查找方法中,标签标记和状态标记的真、假以及激活和未激活都只是一种表示,只要可以区分出两种状态不同即可。
实施例2
本发明的分布式极大独立集查找方法可以用于大规模动态图,大规模动态图的节点采用分布式的方式存储在不同的服务器中。当出现一个服务器中的边缘的节点的邻居节点在另外一个服务器中时,对于链接两个服务器之间通信的节点,创建一个副本用于维护另一台机器的节点信息完整,节点和其副本状态保存一致,两者同时发生变化。不同服务通信节点和副本的示意图如图5所示。
实施例3
本发明的另一实施例提供分布式极大独立集查找装置,装置包括数据输入模块1、静态查找模块2、动态更新模块3和输出模块4。
数据输入模块1用于获取初始图。
静态查找模块2用于对初始图进行静态查找,得到第一极大独立集。
动态更新模块3用于执行变化操作后的初始图进行动态查找,更新第一极大独立集。
输出模块4用于将最近时刻的第一极大独立集作为结果极大独立集输出。
本发明提供的一种分布式极大独立集查找装置,包括存储器和一个或多个处理器,存储器中存储有可执行代码,一个或多个处理器执行可执行代码时,用于实现上述的分布式极大独立集查找方法。
本发明提供的一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述的分布式极大独立集查找方法。
本发明的另一实施例提供的装置包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1的分布式极大独立集查找方法。当然,除了软件实现方式之外,本发明并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware DescriptionLanguage,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced BooleanExpression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java HardwareDescription Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware DescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated CircuitHardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (16)
1.一种分布式极大独立集查找方法,其特征在于,包括以下步骤:
S1、获取初始图;
S2、对初始图进行静态查找,得到第一极大独立集;
S3、对初始图执行变化操作,所述变化操作为增加边或删除边中的一种或多种,对执行变化操作后的初始图进行动态查找,更新第一极大独立集;
S4、将最近时刻的第一极大独立集作为结果极大独立集输出;
其中,S2的具体步骤包括:
S21、对初始图中的每一个节点设置标签标记和状态标记,初始化标签标记和状态标记;S22、基于邻居节点信息对初始图的每一个节点进行更新,基于更新后的标签标记得到第一极大独立集;
S3的具体步骤包括:
S31、对初始图执行变化操作,对于给定的时刻,确定执行变化操作后的受影响节点;S32、更新S31中所有受影响节点的状态标记;S33、采用S22中的方法,对所有受影响的节点进行更新,基于更新后的标签标记更新第一极大独立集。
2.根据权利要求1所述的一种分布式极大独立集查找方法,其特征在于,所述初始化标签标记和状态标记为:将初始图中的每一个节点的标签标记设置为真,初始图中的每一个节点的状态标记设置为激活。
3.根据权利要求2所述的一种分布式极大独立集查找方法,其特征在于,基于邻居节点信息对初始图的每一个节点进行更新具体为:
S221、根据节点ID大小遍历一遍初始图的中的每一个节点,将被遍历的每一个节点的状态标记都变为未激活;
S222、如果对于一个节点,满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将节点的标签标记更新为假后,若该节点的标签标记发生了变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
返回S221,重复上述步骤,直至所有的节点的状态标记都为未激活,得到第一极大独立集。
4.根据权利要求3所述的一种分布式极大独立集查找方法,其特征在于,所述第一极大独立集由图中标签标记为真的节点组成。
5.根据权利要求3所述的一种分布式极大独立集查找方法,其特征在于,所述受影响节点包括增加边或删除边时涉及的所有节点和涉及的所有节点的邻居节点。
6.根据权利要求5所述的一种分布式极大独立集查找方法,其特征在于,更新受影响节点的状态标记为:将S31中所有受影响节点的状态标记更新为激活。
7.根据权利要求2所述的一种分布式极大独立集查找方法,其特征在于,所述采用S22中的方法,对所有受影响的节点进行更新具体为:
S331、根据节点ID大小遍历一遍受影响节点中的每一个节点,将被遍历的每一个受影响节点的状态标记都变为未激活;
S332、受影响节点中,如果对于一个节点,若满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将该节点的标签标记更新为假后,若该节点的标签标记发生变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点的度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
返回S331,重复上述步骤,直至所有的受影响节点的状态标记都为未激活,更新第一极大独立集。
8.一种分布式极大独立集查找装置,其特征在于,装置包括数据输入模块、静态查找模块、动态更新模块和输出模块;
其中,数据输入模块1用于获取初始图;
静态查找模块2用于对初始图进行静态查找,得到第一极大独立集,具体为:对初始图中的每一个节点设置标签标记和状态标记,初始化标签标记和状态标记;基于邻居节点信息对初始图的每一个节点进行更新,基于更新后的标签标记得到第一极大独立集;
动态更新模块3用于执行变化操作后的初始图进行动态查找,更新第一极大独立集,具体为:对初始图执行变化操作,对于给定的时刻,确定执行变化操作后的受影响节点;更新所有受影响节点的状态标记;采用静态查找模块中基于邻居节点信息对初始图的每一个节点进行更新的方法,对所有受影响的节点进行更新,基于更新后的标签标记更新第一极大独立集;
输出模块4用于将最近时刻的第一极大独立集作为结果极大独立集输出。
9.根据权利要求8所述的一种分布式极大独立集查找装置,其特征在于,所述初始化标签标记和状态标记为:将初始图中的每一个节点的标签标记设置为真,初始图中的每一个节点的状态标记设置为激活。
10.根据权利要求9所述的一种分布式极大独立集查找装置,其特征在于,基于邻居节点信息对初始图的每一个节点进行更新具体为:
根据节点ID大小遍历一遍初始图的中的每一个节点,将被遍历的每一个节点的状态标记都变为未激活;
如果对于一个节点,满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将节点的标签标记更新为假后,若该节点的标签标记发生了变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
重复上述步骤,直至所有的节点的状态标记都为未激活,得到第一极大独立集。
11.根据权利要求10所述的一种分布式极大独立集查找装置,其特征在于,所述第一极大独立集由图中标签标记为真的节点组成。
12.根据权利要求10所述的一种分布式极大独立集查找装置,其特征在于,所述受影响节点包括增加边或删除边时涉及的所有节点和涉及的所有节点的邻居节点。
13.根据权利要求12所述的一种分布式极大独立集查找装置,其特征在于,更新受影响节点的状态标记为:将所有受影响节点的状态标记更新为激活。
14.根据权利要求9所述的一种分布式极大独立集查找装置,其特征在于,采用静态查找模块中基于邻居节点信息对初始图的每一个节点进行更新的方法,对所有受影响的节点进行更新具体为:
根据节点ID大小遍历一遍受影响节点中的每一个节点,将被遍历的每一个受影响节点的状态标记都变为未激活;。
受影响节点中,如果对于一个节点,若满足第一条件和第二条件,则,将该节点的标签标记更新为假,其中,第一条件为:存在一个该节点的邻居节点,邻居节点的度数小于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID小于该节点的ID;第二条件为:邻居节点的标签标记为真;
将该节点的标签标记更新为假后,若该节点的标签标记发生变化,则将满足第三条件和第四条件的邻居节点的状态标记更新为激活,其中,第三条件为:邻居节点的度数大于该节点的度数,或邻居节点的度数与该节点的度数相等且邻居节点的ID大于节点的ID,第四条件为:邻居节点的标签标记与该节点相同;
重复上述步骤,直至所有的受影响节点的状态标记都为未激活,更新第一极大独立集。
15.一种分布式极大独立集查找装置,其特征在于,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现权利要求1-7中任一项所述的分布式极大独立集查找方法。
16.一种计算机可读存储介质,其特征在于,其上存储有程序,该程序被处理器执行时,实现权利要求1-7中任一项所述的分布式极大独立集查找方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211597334.2A CN115878665A (zh) | 2022-12-12 | 2022-12-12 | 一种分布式极大独立集查找方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211597334.2A CN115878665A (zh) | 2022-12-12 | 2022-12-12 | 一种分布式极大独立集查找方法、装置和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115878665A true CN115878665A (zh) | 2023-03-31 |
Family
ID=85767256
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211597334.2A Pending CN115878665A (zh) | 2022-12-12 | 2022-12-12 | 一种分布式极大独立集查找方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115878665A (zh) |
-
2022
- 2022-12-12 CN CN202211597334.2A patent/CN115878665A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113011483B (zh) | 一种模型训练和业务处理的方法及装置 | |
CN108418851B (zh) | 策略发布系统、方法、装置及设备 | |
CN107957989B (zh) | 基于集群的词向量处理方法、装置以及设备 | |
CN109034183B (zh) | 一种目标检测方法、装置及设备 | |
CN111399812B (zh) | 组件构建方法、装置、开发框架及设备 | |
CN112565047B (zh) | 一种在docker中使用VPP构建网络的方法、装置、设备及介质 | |
CN112036236A (zh) | 一种基于GhostNet的检测模型的训练方法、设备及介质 | |
CN111241353A (zh) | 一种图数据的分区方法、装置以及设备 | |
CN112764911A (zh) | 一种任务调度方法、装置、电子设备及可读存储介质 | |
CN113344098A (zh) | 一种模型训练方法及装置 | |
US10846483B2 (en) | Method, device, and apparatus for word vector processing based on clusters | |
CN113744063B (zh) | 区块链中执行交易的方法及装置 | |
CN115982416A (zh) | 一种数据处理方法、装置、可读存储介质及电子设备 | |
CN115878665A (zh) | 一种分布式极大独立集查找方法、装置和存储介质 | |
WO2022134947A1 (zh) | 一种初始化usid的方法、装置和电子设备 | |
CN115390852A (zh) | 一种生成统一抽象语法树与程序分析的方法和装置 | |
CN115204395A (zh) | 数据的处理方法、装置及设备 | |
CN109827581B (zh) | 一种地图匹配的方法及装置 | |
CN113344197A (zh) | 一种识别模型的训练方法、业务执行的方法以及装置 | |
CN113205377A (zh) | 一种信息推荐的方法及装置 | |
CN110764893A (zh) | 一种识别任务链路中无效计算的方法、系统及设备 | |
CN111984247A (zh) | 一种业务处理方法、装置和电子设备 | |
CN111539961A (zh) | 一种目标分割方法、装置以及设备 | |
CN114861665B (zh) | 一种强化学习模型训练以及确定数据关系的方法及装置 | |
CN115511053A (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 |