2014-03-25 17 views
1

我有一個邊緣列表,這些邊緣由一個包含座標的類型的點組成。檢查邊緣列表中的子集的合理快捷方式

我試圖刪除任何邊緣是另一個邊緣的子集,即一個邊緣的所有點都包含在另一個邊緣(儘管順序可能意味着向後和向前)。

我很努力想出一個解決方案,它不需要四個嵌套for循環(循環遍歷邊,循環遍歷邊,循環遍歷第一個點,循環遍歷第二個,比較)。有沒有更快的方式來處理這個問題?或者至少有些事情不會那麼糟糕。

謝謝。

編輯:這一切都在C#中完成。我也已經有了一種方法來比較彼此之間的平等點。

編輯:

如果這是一條線(假裝的數字座標)。

1 ----- ----- 2 3 4 ------ ------- ------- 5 6

,這是由另一行向上的某些相同的點的:

3 ------ ------ 4 5

第二個是第一的子行,所以想要從列表中刪除所述第二。

+0

當你說把邊緣列表添加到一個集合中是什麼意思?我不太確定如何做推斷檢查一個是否是另一個的子線。 – djcmm476

+0

邊緣總是線條? –

+0

請提供您使用的數據結構的更多細節。作爲一個集合可以訪問邊緣嗎?一條線總是一個間隔? – Codor

回答

1

構造從每對點(即片段)到邊緣和索引對的集合的映射,其中邊緣在該索引處具有該片段。然後,迭代映射條目,遍歷集合中的第一條邊,迭代集合中的第二條邊,並從給定索引開始向外比較它們。