标签: java algorithm list bioinformatics
任何给定的区域(列表A中的一个,列表B中的另一个),只要它们在任何坐标中重叠,它们就称为重叠。有可用的工具来做到这一点。但我希望编写一个有效的算法,我可以在列表A中维护类似哈希表的结构,然后迭代列表B中的所有区域,并且对于列表中的每个区域,BI可以使用快速算法来判断是否有些列表A中的区域与列表B中的特定区域重叠。
我特别需要一个有效的解决方案,因为两个列表都非常大。非常感谢。
答案 0 :(得分:1)
一种选择是:
对于Java,有多种R树实现。我在库SIRtree中使用的支持1维范围的JTS。它提供了插入范围和搜索交叉点的简单方法。
内存中表示的任何数据结构都将成为足够大的BED文件的可扩展性问题。您可以通过增加VM可用的内存量(硬件和-Xmx设置)或通过在磁盘上表示数据结构来解决此问题。