我試圖實現this paper(GBDP策略,「匹配距離」)中描述的算法,需要一點澄清。非重疊區間的貪婪選擇
基本上,問題是我有一個項目列表,其中每個項目有一個長度和間隔(它實際上是兩個區間,但它是相同的想法)。
ID LENGTH START END
1 1000 1 1000
2 20000 5 20005
3 20 30500 30520
4 500 30500 31000
5 200 900 1100
目標是找到具有非重疊範圍的項目子集。在論文中,他們說他們首先由長度
ID LENGTH START END
2 20000 5 20005
1 1000 1 1000
4 500 30500 31000
5 200 900 1100
3 20 30500 30520
對項目進行排序,然後進行「貪婪地選擇[項目]具有非重疊的時間間隔的一個子集」。這是我困惑的地方。我知道一個貪婪的算法是什麼,但我不確定這裏的作者是什麼意思。我猜想可能是他們只是通過清單,只保留那些不與上面那些重疊的項目。
ID LENGTH START END
2 20000 5 20005
4 500 30500 31000
5 200 900 1100
3 20 30500 30520
注意,使用這種方法,結果仍然包括具有重疊範圍的項目(4和3)。
我設法在Perl中輕鬆實現這種方法,但我想這可能不是作者的意圖。他們的意思是保留與任何以上的其他項目不重疊的項目?如果有人在這種情況下解釋了「貪婪選擇」的含義,我會很感激。
謝謝。我想我可以使用Perl的IntervalTree來做到這一點。 最終目的實際上是根據序列比對的間隔找出兩個或多個序列(例如DNA)之間的遺傳距離。更長的路線被認爲更重要,所以我們想偏向於保持它們。 – Novice