论文部分内容阅读
基因组翻转排序在基因组重组研究与实践中具有重要价值,本文研究基因组翻转排序的计算方法。基因组翻转排序目的是计算两个基因组之间的最少翻转次数,最少翻转次数称为两个基因组之间的翻转距离。有向基因组翻转排序由Hannenhalli等最先给出多项式时间求解算法,目前所知最好的算法时间复杂性为O(n~2)。无向基因组翻转排序由Capara证明为NP-Hard。 已有的无向基因组翻转排序算法过程复杂,实现困难。本文提出了无向基因组翻转排序的一种新启发式算法,编程实现了该算法,本文简称为FDSR算法。在PentiumⅢ800/256M计算机上的实验表明,FDSR计算193个基因符号的翻转所需计算时间为10毫秒,计算5000符号的基因组翻转所需计算时间为1.282秒。本文证明了算法的正确性。我们利用程序验证了算法求解的优化程度,实验结果表明,对于100个较小的基因组,用本文算法得到的解中有68个为最优解。 FDSR算法主要思想为,先在基因排列中找降序小队,在其末元素和逆相邻元素之间作相应的翻转操作。算法难点在于当基因排列不存在降序小队时,需要通过调整获得降序小队。 程序的实现过程是,首先设置并初始化一个基因排列的存储空间,然后读入基因排列的数据项,接着校验基因排列是否正确,若正确则对其进行断点式转换并进行翻转排序,否则中止程序的运行。 本文创新点表现在下面几个方面: (1)本文将两个断点之间的部分序列称为一个断点式。通过翻转断点式使断点的个数逐步减少,从而接近目标基因组序列。 (2)论文中提出了第一降序小队概念。降序小队是翻转断点式的基点,采用第一降序小队作为基点可以减少查找基点的时间,从而提高了算法的时间效率。 (3)论文给出了算法的正确性证明,算法时间复杂度为O(n~2),n为基因排列中基因个数。