我正在寻找一种数据结构,能够支持联合、查找和分离操作,效率至少为O(log n)或更好。标准的不相交集合结构不支持分离操作。背景是我正在编写一个使用MCTS [http://en.wikipedia.org/wiki/Monte_Carlo_tree_search]的Go AI,并且需要在回溯过程中跟踪棋子组的连接和断开。我认为这可能会更容易,因为分离操作不是针对集合中的某个任意对象,而是针对最新联合操作的“撤消”。
我已经阅读了下面的论文,虽然我可以实现所提出的数据结构,但它似乎有点过于复杂,需要一段时间才能实现。 http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1773&context=cstech 虽然O( a(n))的效率非常棒,但我很确定路径压缩无法与分离操作一起使用,而我将满足O(log n)的效率也很满意。我的直觉告诉我这可能与堆有关,但我还没有想出任何解决方案。
我已经阅读了下面的论文,虽然我可以实现所提出的数据结构,但它似乎有点过于复杂,需要一段时间才能实现。 http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1773&context=cstech 虽然O( a(n))的效率非常棒,但我很确定路径压缩无法与分离操作一起使用,而我将满足O(log n)的效率也很满意。我的直觉告诉我这可能与堆有关,但我还没有想出任何解决方案。