我经常使用逆区间图来表示基因组序列中的生物学相关特征。例如,给定一个(相对)小的基因组区域,该图将包含该区域中每个基因的一个节点,如果相应的基因不重叠(区间图的补集),则两个节点之间将存在一条边。
我最近实现了一个程序,该程序使用 Bron-Kerbosch 算法来列出对应于小基因组区域的逆区间图的所有最大团。这个算法具有指数级的复杂性,但我一开始并不担心,因为我没想到在给定区域中会出现多个基因。但是,此后我在数据中遇到了一些 Bron-Kerbosch 算法无法在合理的时间或空间内处理的情况。
这篇 Wikipedia 文章提到了 Bron-Kerbosch 算法的几种替代方案,只要团的数量是多项式有界的,它们就具有多项式复杂度。我已经开始研究Chiba & Nishizeki 的算法作为一种可能的替代方案,但公式非常密集。在我花太多时间研究这个之前,我想问两个问题。
- 首先,由于我的图是逆区间图而不是区间图,我真的可以用这些替代算法保证多项式运行时间吗?
- 其次,假设我确实想实现这些替代算法之一,它们中是否有可用的参考实现?我不希望参考实现可以开箱即用地解决我的问题,但是在尝试为我的程序调整算法时它会非常有帮助。