2011-04-05 129 views
3

在序言中表示二維數組的最有效方法是什麼?我想到了一個長列表或列表清單,但它們的線性訪問時間似乎對我的問題來說太慢了。我不一定在尋找一個現成的解決方案,而是一個應該如何實施的概念。序言中的快速二維數組

回答

4

您可以通過AVL樹或紅黑樹獲得對數時間訪問,請參閱SWI和YAP中的庫(assoc)和庫(rbtrees)。對於持續時間訪問,使用N個參數定義一個術語,並使用arg/3進行高效訪問。這些參數中的每一個都可以是一個有N個元素的術語,因此您可以使用高效的讀取訪問。使用setarg/3,你甚至可以破壞性地修改元素,代價是失去很好的邏輯屬性和更加痛苦的調試和測試。在很多情況下,您可以重新制定算法,不要求隨機訪問,並使用列表清單。如果這不可能,AVL或其他平衡樹通常是一個非常好的選擇。