论文部分内容阅读
树(如二叉树或一般树)是一种重要的数据结构,它经常被用来表示像数学表达式或结构性文档(如XML)这样的分层数据结构。虽然树结构被广泛应用在串行程序中,但由于其不规则和不平衡的结构特点,使得开发有效率的在树上进行计算的并行程序变得很困难。虽然目前已经存在不少关于树的并行化研究,但设计高效的适合于分布式系统的树并行化算法仍然是个挑战。另一方面,大型的网络(图)开始普遍存在于很多领域中,如生物、物理、化学、通讯和社交网络等。人们日益增长的对大规模图数据进行分析的需求对图并行化的研究提出了挑战。很多图优化问题(如最大权重独立集问题)是NP困难的。解决这样的图问题需要的计算复杂度通常和图的大小呈指数关系,即与图上的顶点数或边数成指数关系。对于那些大规模的图,极高的计算复杂度使得这些图问题即使利用计算机集群也很难计算出结果。幸运的是,研究者发现,很多图上的NP困难问题在具有有限树宽的图上可以使用动态规划技术和树分解在多项式时间内进行求解。本课题对国内外树并行化和图并行化相关的工作进行了研究。通过扩展第三同态定理在树上的应用和zipper结构,提出了适合于分布式环境并可应用于MapReduce模型上的树并行框架。由于树分解从数据结构角度来看是树结构,本课题提出了把树分解上自底向上的动态规划算法转化为在zipper结构上的并行算法的方法。通过结合所提出的树并行化框架和树分解技术,提出了适用于分布式环境的图并行化框架,从而实现了图优化类问题的高效并行化。本论文的主要贡献有如下几个方面:1.通过扩展第三同态定理和zipper结构,提出了递归式的平衡树切分方法,进而设计了适合于分布式环境的树并行框架。2.在树并行框架之上,结合树分解技术提出了适合于分布式环境的图并行化框架。3.分别为树并行框架和图并行框架设计了易于使用的接口或抽象。4.设计了系统化的算法转化框架,自动将用户定义在框架接口上的串行算法转化为并行化算法,并生成相应的并行程序。