Mar*_*usQ 6 language-agnostic algorithm tree equivalence-classes data-structures
我正在寻找一个良好的数据结构来在树的节点上构建等价类.在理想的结构中,以下操作应该是快速的(适当的O(1)/ O(n))和容易(没有神秘代码的段落):
到目前为止,我已经考虑过(其中一些可以组合使用):
我错过了一个甜蜜的选择吗?
您似乎要处理两种形式的对等。简单的等价 (A),跟踪为保持最新的等价类和结构等价 (D),您偶尔会为此构建一个等价类,然后将其丢弃。
在我看来,如果您为普通和结构等价维护等价类,问题在概念上会更简单。如果这会给结构等价带来过多的变动,您可以为结构等价的某些方面维护等价类。然后你可以找到一个平衡点,你可以负担得起这些等价类的维护,但仍然可以大大减少在构建结构等效节点列表时要检查的节点数量。