換句話說,我們可以在持久數據結構中有效地模擬多對多關係嗎?是否有雙向multimap持久數據結構?
建議使用一對單向multimaps。但是,我不確定這對於在持久數據結構中刪除將如何工作。我們來看一下情況:我們將鍵1..4設爲值「1」,「4」,並且假設它們各自指的是所有其他鍵,所以我們有兩張在兩個方向上看起來非常相似的地圖:
{1 => [「2」,「3」,「4」],2 => [「1」,「3」,「4」],...} {「1」=> [2,3 ,4],「2」=> [1,3,4],...}
現在我們想要從系統中完全刪除項目1。這需要更改第一個映射中的一個節點,但它需要在第二個映射中更改n-1個節點。對於數千人中的n(這可能是我正在考慮的情況)不會很貴嗎?或者是爲處理這種類型的更改而優化的multimap?這是一個病態的情況,但仍然...
Quadtrees似乎是一個迷人的想法。我會給予更多的思考。
我很好奇,我想引用令人興奮的數據結構,即使不是英文。 – mentics 2011-04-18 06:16:51
@taotree>我只是爲它添加了一些代碼。你怎麼看? – gasche 2011-04-18 12:48:29
有趣的是,雖然我注意到沒有刪除功能,這是我看到有這種類型的事情的挑戰。此外,它看起來鍵和值必須是不同的類型,或者至少他們不能有兩個相同的值。 – mentics 2011-04-18 17:24:11