盒覆盖节点的方法和系统与流程

文档序号:15929932发布日期:2018-11-14 01:31阅读:199来源:国知局

本发明涉及盒覆盖领域,尤其涉及一种盒覆盖节点的方法和系统。

背景技术

复杂网络的世界是浩荡无垠的,自然社会界的一切元素作用关系都可以用复杂网络来刻画。复杂网络中由数据维度和广度引起的数据划分和规范化转化,涉及量子网络、统计物理学和计算机科学中的盒覆盖问题:以最少数量的盒分割网络,使得相邻盒的中心通过纠缠链接在一起。盒覆盖问题最早由song在参考文献中提出,用以计算节点规模为n的给定网络的分布状况,在复杂网络概念中,盒是指直径小于尺度规模b的子图。

现有技术中存在的盒覆盖算法,一方面随着节点规模的增大,算法相应的计算复杂度也呈指数增长,另一方面为保证计算较为简单导致结果的精确度较低。



技术实现要素:

本发明的主要目的在于提供一种盒覆盖节点的方法和系统,可以解决现有的盒覆盖算法,或计算复杂或结果精度不足的技术问题。

为实现上述目的,本发明第一方面提供一种盒覆盖节点的方法,其特征在于,对于网络数据中的节点集合,所述方法包括:

步骤1,遍历节点的标记信息,若存在未标记的节点,则随机生成判断概率值,并比较所述判断概率值是否小于执行概率值,所述判断概率值介于0%到100%之间;

步骤2,若所述判断概率值小于所述执行概率值,则将所述节点集合中净容量最大的非中心节点设置为中心节点,对所述中心节点的净盒子节点进行标记,所述净盒子节点为以所述中心节点为中心,预设半径内的未标记的节点,其中,节点的净容量为节点的净盒子节点与节点本身的数量和;

步骤3,若所述判断概率值大于或等于所述执行概率值,则随机将一个所述非中心节点设置为中心节点,对所述中心节点的净盒子节点进行标记;

步骤4,所述中心节点与已标记的所述中心节点的净盒子节点构成一个盒子,记盒子数增加1,所述盒子数的初始值为0;

步骤5,若不存在未标记的节点,则输出所述盒子数。

为实现上述目的,本发明第二方面提供一种盒覆盖节点的系统,其特征在于,对于网络数据中的节点集合,所述系统包括:

生成比较模块,用于遍历节点的标记信息,若存在未标记的节点,则随机生成判断概率值,并比较所述判断概率值是否小于执行概率值,所述判断概率值介于0%到100%之间;

第一标记模块,用于若所述判断概率值小于所述执行概率值,则将所述节点集合中净容量最大的非中心节点设置为中心节点,对所述中心节点的净盒子节点进行标记,所述净盒子节点为以所述中心节点为中心,预设半径内的未标记的节点,其中,节点的净容量为节点的净盒子节点与节点本身的数量和;

第二标记模块,用于若所述判断概率值大于或等于所述执行概率值,则随机将一个所述非中心节点设置为中心节点,对所述中心节点的净盒子节点进行标记;

增加模块,用于所述中心节点与已标记的所述中心节点的净盒子节点构成一个盒子,记盒子数增加1,所述盒子数的初始值为0;

输出模块,用于若不存在未标记的节点,则输出所述盒子数。

本发明提供一种盒覆盖节点的方法和系统。通过随机生成判断概率值,比较判断概率值与执行概率值的关系,从而确定中心节点的选择方式。若判断概率值小于执行概率值,则中心节点为净容量最大的非中心节点,即为最大盒覆盖算法(themaximum-excluded-mass-burningalgorithm,memb)算法;若判断概率值大于等于执行概率值,则中心节点为随机选择的非中心节点,即为随机序列算法(randomsequentialbox-coveringalgorithm,rs)。通过合理的设定执行概率值,使得memb算法与rs算法结合起来,既能保证计算复杂度相对较小,又能保证结果精度相对较高。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明第一实施例提供的一种盒覆盖节点的方法的流程示意图;

图2为本发明第一实施例中步骤2的细化步骤的流程示意图;

图3为本发明第一实施例中步骤22的细化步骤的流程示意图;

图4为本发明第一实施例中步骤23的细化步骤的流程示意图;

图5为本发明第一实施例中节点数组算法在小型网络下的示意图;

图6为本发明第一实施例中节点向量算法在小型网络下的示意图;

图7为本发明第二实施例提供的一种盒覆盖节点的系统的结构示意图;

图8为本发明第二实施例中第一标记模块b的细化模块的结构示意图;

图9为本发明一种盒覆盖节点的方法和系统在大规模网络中不同尺度下的盒子覆盖数目折线图;

图10为本发明一种盒覆盖节点的方法和系统在大规模网络中不同尺度下的运行耗时折线图;

图11为本发明一种盒覆盖节点的方法和系统在不同规模网络中,使用节点数组、节点向量、原始memb算法和原始rs算法的耗时折线图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

由于现有技术中存在现有的盒覆盖算法,或计算复杂或结果精度不足的技术问题。

为了解决上述技术问题,本发明提出一种盒覆盖节点的方法和系统。通过随机生成判断概率值,比较判断概率值与执行概率值的关系,从而确定中心节点的选择方式。若判断概率值小于执行概率值,则中心节点为净容量最大的非中心节点,即为memb算法;若判断概率值大于等于执行概率值,则中心节点为随机选择的非中心节点,即为rs算法。通过设定执行概率值,使得memb算法与rs算法结合起来,既能保证计算复杂度相对较小,又能保证结果精度相对较高。

请参阅图1,为本发明第一实施例提供的一种盒覆盖节点的方法的流程示意图。该方法步骤包括:

步骤1,遍历节点的标记信息,若存在未标记的节点,则随机生成判断概率值,并比较判断概率值是否小于执行概率值,判断概率值介于0%到100%之间;

步骤2,若判断概率值小于执行概率值,则将节点集合中净容量最大的非中心节点设置为中心节点,对中心节点的净盒子节点进行标记,净盒子节点为以中心节点为中心,预设半径内的未标记的节点,其中,节点的净容量为节点的净盒子节点与节点本身的数量和;

其中,请参阅图2,为本发明第一实施例中步骤2的细化步骤的流程示意图。具体的:

步骤21,若判断概率值小于执行概率值,则获取节点集合中非中心节点的数据容量,并判断非中心节点的数据容量是否小于预设存储阈值;

步骤22,若非中心节点的数据容量小于存储阈值,则利用节点数组确定净容量最大的非中心节点,并将净容量最大的非中心节点设置为中心节点,对中心节点的净盒子节点进行标记;

步骤23,若非中心节点的数据容量大于或等于存储阈值,则利用节点向量确定净容量最大的非中心节点,并将净容量最大的非中心节点设置为中心节点,对中心节点的净盒子节点进行标记。

其中,请参阅图3,为本发明第一实施例中步骤22的细化步骤的流程示意图。具体的:

步骤221,若非中心节点的数据容量小于存储阈值,则使用节点数组存储非中心节点和非中心节点的净盒子节点;

步骤222,依次计算非中心节点的净容量,确定净容量最大的非中心节点;

步骤223,将净容量最大的非中心节点设置为中心节点,查找中心节点对应的节点数组并标记节点数组内的净盒子节点。

其中,请参阅图4,为本发明第一实施例中步骤23的细化步骤的流程示意图。具体的:

步骤231,若非中心节点的数据容量大于或等于存储阈值,则使用节点向量统计非中心节点的净容量,确定净容量最大的非中心节点;

步骤232,将净容量最大的非中心节点设置为中心节点,并查找中心节点的净盒子节点;

步骤233,依次标记中心节点的净盒子节点,并分别以已标记的净盒子节点为中心,使预设半径内的节点对应的节点向量中的净容量减1。

步骤3,若判断概率值大于或等于执行概率值,则随机将一个非中心节点设置为中心节点,对中心节点的净盒子节点进行标记;

步骤4,中心节点与已标记的中心节点的净盒子节点构成一个盒子,记盒子数增加1,盒子数的初始值为0;

步骤5,若不存在未标记的节点,则输出盒子数。

另外,在本发明第一实施例中,步骤2和步骤3之后还包括:

步骤6,若无中心节点的净盒子节点,则取消对中心节点的设置,并返回执行步骤1。

需要说明的是,在本盒覆盖节点的方法执行前,需要读取网络数据中的节点集合,对节点集合中的节点进行初始化。将节点集记为n,将中心节点的节点集记为center,已标记的节点(不包括中心节点)的节点集记为covered,没有被标记的节点的节点集记为non-center或者uncovered。然后设置执行概率值和预设半径的数值。遍历节点的标记信息,若存在未标记的节点,则随机生成判断概率值,若判断概率值小于执行概率值,则将净容量最大的非中心节点设置为中心节点,即执行memb算法,对中心节点的净盒子节点进行标记;若判断概率值大于或等于执行概率值,则随即将一个非中心节点设置为中心节点,即执行rs算法,对中心节点的净盒子节点进行标记。净盒子节点为以中心节点为中心,预设半径内的未标记的节点。其中,在方法执行前,对节点进行了设置,节点集合中的节点包括中心节点、已标记节点和未标记节点。因此,非中心节点包括已标记节点和未标记节点。中心节点和已标记的中心节点的净盒子节点构成一个盒子,记盒子数增加1.重复执行上述方法,直到不存在未标记的节点,输出盒子数。

需要说明的是,纯粹的memb算法的时间开销在小尺度下很大,随着网络规模的增大,memb算法的时间开销逐渐趋于平稳。因此,如果能加快对节点的净容量的检索,那么memb算法的运行速度就可以得到提升。考虑到储存器的存储大小,在预设了存储阈值的情况下,选择两种方式对memb算法进行优化。1、使用节点数组来存储全部的盒子节点,如使用buffer数组,存储一个非中心节点和非中心节点的净盒子节点,便于快速的确定净容量最大的非中心节点及其净盒子节点;2、使用节点向量来记录每个非中心节点的净容量,便于快速的确定净容量最大的非中心节点。相对于节点向量而言,使用节点数组来存储全部的盒子节点所需的内存更大。在实际应用中,可以选择仅使用其中一种优化算法,或者两种优化算法结合的方式。下面分别对节点数组算法和节点向量算法进行说明:

1、请参阅图5,为本发明第一实施例中节点数组算法在小型网络下的示意图。其中,倾斜的数字表示中心节点及已标记的该中心节点的净盒子节点,加粗的数字表示当前净容量最大的非中心节点和该中心节点的净盒子节点。初始的,节点集合中所有的节点均未被标记,因此所有的节点均为非中心节点,使用节点数组存储每个非中心节点及非中心节点的净盒子节点,计算每个非中心节点的净容量,确定净容量最大的非中心节点,将净容量最大的非中心节点设置为中心节点,查找中心节点对应的节点数组并标记节点数组内的净盒子节点。其中,若选择仅使用节点数组来对memb算法进行优化,当非中心节点的数据容量大于或等于存储阈值时,则在存储阈值内,使用节点数组存储每个非中心节点及非中心节点的净盒子节点,计算节点集合中每个非中心节点的净容量,确定净容量最大的非中心节点并将净容量最大的非中心节点设置为中心节点,确定中心节点是否存储在节点数组中。若中心节点存储在节点数组中,则查找中心节点对应的节点数组并标记节点数组内的净盒子节点;若中心节点没有存储在节点数组中,则查找中心节点的净盒子节点并依次标记中心节点的净盒子节点。

2、请参阅图6,为本发明第一实施例中节点向量算法在小型网络下的示意图。其中,加粗的数字表示当前净容量最大的非中心节点及其净容量。初始的,节点集合中所有的节点均未标记,即节点集合中所有的节点均是非中心节点。使用节点向量,如nc,统计非中心节点及其净容量,确定节点向量中净容量最大的非中心节点,设置净容量最大的非中心节点为中心节点,并查找中心节点的净盒子节点,依次标记中心节点的净盒子节点,且每标记一个中心节点的净盒子节点,均以该净盒子节点为中心,使预设半径内的节点对应的节点向量中的净容量减一。即,以图6中的节点3为例,当标记节点1时,节点1的预设半径内的节点1、节点2和节点3的净容量均减1;然后标记节点2时,节点2的预设半径内的节点1、节点2和节点3的净容量均减1;然后标记节点3时,节点3的预设半径内的节点1、节点2、节点3及节点4的净容量均减1;然后标记节点4时,节点4的预设半径内的节点3、节点4和节点5的净容量减1。此时中心节点3的净盒子节点标记完成,节点向量中的各节点的数值关系由图(a)变成图(b)。

进一步的,当将为净容量最大的非中心节点或者随机选择的非中心节点设置为中心节点后,以该中心节点为中心,预设半径内无未标记的节点,即,无该中心节点的净盒子节点,则取消对该中心节点的设置,返回执行步骤1。

在本发明实施例中,通过设定执行概率值,使得memb算法与rs算法结合起来,既能保证计算复杂度相对较小,又能保证结果精度相对较高。通过非中心节点的数据容量及存储阈值进行判断,从而确定采取节点数组还是节点向量来确定净容量最大的非中心节点。不仅充分利用了存储器的存储量,且使用节点数组与节点向量均能够加快对节点的净容量的检索,使memb算法的运行速度得到提升。通过取消对中心节点的设置,能够有效的减少盒子数量,使得结果精度大大提高。

请参阅图7,为本发明第二实施例提供的一种盒覆盖节点的系统的结构示意图。具体的:

生成比较模块a,用于遍历节点的标记信息,若存在未标记的节点,则随机生成判断概率值,并比较判断概率值是否小于执行概率值,判断概率值介于0%到100%之间;

第一标记模块b,用于若判断概率值小于执行概率值,则将节点集合中净容量最大的非中心节点设置为中心节点,对中心节点的净盒子节点进行标记,净盒子节点为以中心节点为中心,预设半径内的未标记的节点,其中,节点的净容量为节点的净盒子节点与节点本身的数量和;

第二标记模块c,用于若判断概率值大于或等于执行概率值,则随机将一个非中心节点设置为中心节点,对中心节点的净盒子节点进行标记;

增加模块d,用于中心节点与已标记的中心节点的净盒子节点构成一个盒子,记盒子数增加1,盒子数的初始值为0;

输出模块e,用于若不存在未标记的节点,则输出盒子数。

有关本发明实施例的相关说明,请参阅本发明第一实施例中的相关说明,这里不再赘述。

在本发明实施例中,通过设定执行概率值,使得memb算法与rs算法结合起来,既能保证计算复杂度相对较小,又能保证结果精度相对较高。

请参阅图8,为本发明第二实施例中第一标记模块b的细化模块的结构示意图。具体的:

第一标记模块b具体包括以下模块:

获取判断模块b1,用于若判断概率值小于执行概率值,则获取节点集合中非中心节点的数据容量,并判断非中心节点的数据容量是否小于预设存储阈值;

第一确定模块b2,用于若非中心节点的数据容量小于存储阈值,则利用节点数组确定净容量最大的非中心节点,并将净容量最大的非中心节点设置为中心节点,对中心节点的净盒子节点进行标记;

第二确定模块b3,用于若非中心节点的数据容量大于或等于存储阈值,则利用节点向量确定净容量最大的非中心节点,并将净容量最大的非中心节点设置为中心节点,对中心节点的净盒子节点进行标记。

第一确定模块b2具体包括以下模块:

存储模块b21,用于若非中心节点的数据容量小于存储阈值,则使用节点数组存储非中心节点和非中心节点的净盒子节点;

计算确定模块b22,用于依次计算非中心节点的净容量,确定最大净容量的非中心节点;

设置标记模块b23,用于将最大净容量的非中心节点设置为中心节点,查找中心节点对应的节点数组并标记节点数组内的净盒子节点。

第二确定模块b3具体包括以下模块:

统计确定模块b31,用于若非中心节点的数据容量大于或等于存储阈值,则使用节点向量统计非中心节点的净容量,确定净容量最大的非中心节点;

设置查找模块b32,用于将净容量最大的非中心节点设置为中心节点,并查找中心节点的净盒子节点;

标记减1模块b33,依次标记中心节点的净盒子节点,并分别以已标记的净盒子节点为中心,使预设半径内的节点对应的节点向量中的净容量减1。

有关本发明实施例的相关说明,请参阅本发明第一实施例中的相关说明,这里不再赘述。

在本发明实施例中,在本发明实施例中,通过设定执行概率值,使得memb算法与rs算法结合起来,既能保证计算复杂度相对较小,又能保证结果精度相对较高。通过非中心节点的数据容量及存储阈值进行判断,从而确定采取节点数组还是节点向量来确定净容量最大的非中心节点。不仅充分利用了存储器的存储量,且使用节点数组与节点向量均能够加快对节点的净容量的检索,使memb算法的运行速度得到提升。

另外,在本发明第二实施例中,在第一标记模块b或者第二标记模块c之后还包括:

取消返回模块f,用于若无中心节点的净盒子节点,则取消对中心节点的设置,并返回执行生成比较模块a。

有关本发明实施例的相关说明,请参阅本发明第一实施例中的相关说明,这里不再赘述。

在本发明实施例中,若无中心节点的净盒子节点,通过取消对中心节点的设置,能够有效的减少盒子数量,使得结果精度大大提高。

在本发明中,分别从盒覆盖数目和算法时耗两个角度进行实际可行性和有效性描述。具体的:

1、本算法继承memb算法特性,保证盒子内的节点是连通的,在分配节点到盒子的过程中不需要进行多次的模拟。将memb算法和rs算法掺杂在一起,算法的实现具有简易性。并且根据设置的执行概率的值,能够手动调控通过memb算法得到的盒子数量与通过rs算法得到的盒子数量之间的关系,针对不同需求具备多样性。

将本算法分成11种(执行概率值从0.0开始,以0.1递增,直到1.0),其中包括纯粹的memb算法(执行概率为1.0)和纯粹的rs算法(执行概率为0.0)。使用数据集标准来展示本算法的运行实况。

(1)盒覆盖数目上。请参阅图9,为本发明一种盒覆盖节点的方法和系统在大规模网络中不同尺度下的盒子覆盖数目折线图。其中,纵轴表示盒子覆盖数目,横轴表示尺度。(a)与(b)表示小世界网络,结果取单对数。(c)与(d)表示分形网络,结果取双对数,其中(c)是对小世界网络添加c=0.05比例的连边得到的分形网络,(d)是万维网网络。

从图9中可知,盒覆盖数目依赖于执行概率的调控。针对大规模网络的处理能力,即使是执行概率为0.1的算法,其盒覆盖数目相较rs算法的结果,不管是在小尺度下,还是中大尺度下,对盒子数目的减少都超过了至少一倍。当执行概率值大于或者等于0.7时,本算法在各种量级和尺度下的结果精确度与纯粹memb算法的结果比例差值都不超过0.1,尤其是随着尺度的增长最终盒子覆盖数目结果差值会停留在1个以下。在分形网络中,本算法在执行概率值小于0.4的大尺度下会出现抖动状况,这是由于rs算法配比过高,在大尺度的少量盒子覆盖结果下会产生一定的负面效果。但是这样的结果依然可以得出rs算法与memb算法的结合,其导致的随机性是具有可控性的。除此之外,在全部大规模网络中,盒覆盖数目都得到优秀的结果。

(2)时间消耗上。请参阅图10,为本发明一种盒覆盖节点的方法和系统在大规模网络中不同尺度下的运行耗时折线图。纵轴表示算法运行耗时,横轴表示尺度。(a)与(b)表示小世界网络,结果取单对数。(c)与(d)表示分形网络,结果取双对数,其中(c)是对小世界网络添加c=0.05比例的连边得到的分形网络,(d)是万维网网络。

从图10中可知,当网络规模足够大的时候,算法的时耗会呈现一个近似幂度下降趋势。当尺度极低(约为3时),本算法的耗时极度接近rs算法耗时,并且与rs算法的差值比远远小于其与memb算法的差值比。即使尺度极大的情况下,本算法的耗时最差情况基本不超过memb算法的耗时,并且最后最差结果只在memb算法结果耗时周围波动。在相对小一些的网络规模下,memb算法的耗时在不同尺度下是极其不稳定的,但是rs算法却可以获取相对平稳的结果曲线,本算法继承rs算法对时间效率的追求,通过实测可以得到定量可观并且稳定的时间消耗。这些都充分说明本算法中对rs算法具有较佳的控制性和使用率,以及对memb算法高时耗性质的优秀改进。

2、请参阅图11,为本发明一种盒覆盖节点的方法和系统在不同规模网络中,使用节点数组、节点向量、原始memb算法和原始rs算法的耗时折线图。纵轴表示算法运行耗时,横轴表示尺度。(a)与(b)表示小世界网络,结果取单对数。(c)与(d)表示分形网络,结果取双对数,其中(c)是对小世界网络添加c=0.05比例的连边得到的分形网络,(d)是万维网网络。

从图11中可知,在各种量级网络下的小尺度中使用节点数组的memb算法和使用节点向量的memb算法的复杂度远小于纯粹的memb算法,并且当尺度约为3时,复杂度趋近纯粹的rs算法。尤其是使用节点向量的memb算法在十万量级网络以上的中大尺度(尺度大于13)下,可以得到与纯粹的memb算法的耗时不相上下。因此我们可以得到在小尺度和极大尺度下,使用节点数组的memb算法和使用节点向量的memb算法均能获取到比纯粹的memb算法优势的表现;在中尺度时,使用节点数组的memb算法和使用节点向量的memb算法的耗时会围绕纯粹的memb算法上下波动,这表明在盒子能够覆盖较多节点数目时,添加的节点数组和节点向量对memb算法中未覆盖节点的净含量更新的影响基本抵消,未有产生负面影响。因此,使用节点数组的memb算法和使用节点向量的memb算法在实际对大规模网络的小尺度盒覆盖下,是有极大优势的。

其次,本发明至少在科研与电子商务领域里具有较大优势。具体的:

1、科研领域,本算法可以在根据科研需要的情况下以降低较低精度为代价,极大的提升算法的实际运行速度。该算法不止可以应用于复杂网络领域,同样可以应用于生物学蛋白质交互网络中蛋白的进化。蛋白质交互网络是一个超大规模的小世界网络,对其进行盒覆盖处理,可以极大的提升对该网络的研究。但是只是采取纯粹的memb算法,将会出现恐怖的时间消耗。那么在基于贪心算法精神获取逼近最优解的前提下,丧失较低精度结果,就可以相对更快速的获取指定蛋白的进化结果。使用节点数组的memb算法和使用节点向量的memb算法适合应用于大规模复杂网络进行小尺度盒覆盖处理,能够得到近似于存粹的rs算法的高效率,并且不失纯粹的memb算法的高精度。应用方式是编程实现并作为核心步骤使用。

2、电子商务领域,如淘宝、京东、亚马逊等大型电子商城,可应用于商品用户喜好度的快速迭代计算,大宗商品类别的粗粒度整理统计等必要技术。应用方式是编程实现并在导入数据后的数据预处理过程中应用。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如多个模块可以结合或者可以集成到另一个系统等。且对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的一种盒覆盖节点的方法和系统的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1