论文部分内容阅读
图作为一种通用的数据结构,正在越来越多地被用来建模科学数据,如何开发有效的并且高效的图挖掘算法从图数据库挖掘感兴趣的模式引起了广泛的关注。目前存在两类不同的图数据中频繁子图挖掘问题,即图集合上和单个大图上挖掘频繁子图,虽然在单个大图上挖掘频繁模式的应用更普遍,但是提出的挖掘的算法并不是很多,目前存在的算法或者是启发式算法,挖掘过程中会丢失很多的频繁模式或者是计算量大又不容易扩展到大图模式中的算法。因此本文在分析现有的频繁模式挖掘工作的基础上,对单个大图的频繁子图挖掘进行了深入的研究。首先分析了目前的单个大图上挖掘频繁子图的单机算法,提出了免子图同构测试的基于深度优先扩展子图的单机算法。其次,随着数据量的增大,图集合不能完全加载到内存,虽然一些基于磁盘的图数据库挖掘的解决方案已被提出,但是访问图数据产生的开销,磁盘I/O的代价是非常高的。目前还没有高效的完整的精确的可扩展的并行的单个大图的频繁子图挖掘的算法,本文提出了基于最大团的频繁计数的并行频繁子图挖掘算法。再次,本文在提出的基于最大团的频繁计数的频繁子图挖掘并行算法的基础上,进一步对算法进行了优化。生成频繁1-子图阶段时,对图数据进行图划分,使得map任务尽量负载均衡。在生成候选子图阶段对出现的重复的(k+1)·子图,直接去重,不必等到子图支持度计算阶段再去重,降低通信消息量。在子图支持度计算阶段,新加入六处剪枝方法尽量避免求最大团的问题,提高效率。挖掘频繁子图整个过程中不再使用默认的partition方法,定制新的Partitioner解决reduce过程中的负载不均衡的问题。最后,由于最大团的计算是NP-hard问题,因此有必要找到一种时间复杂度低的定义子图支持度的方法替代覆盖图的补图的最大团的计算问题。因此本文又提出了基于AMNI频繁计数的子图挖掘算法。总之,本文主要研究了单个大图的频繁子图挖掘问题,并针对其中的不足,提出了高效的解决方案。大量的实验验证了本文方案的高效性和准确性。