【发布时间】:2017-05-19 07:48:54
【问题描述】:
我有一个普通维度的汉明立方体,但实际上,通常,维度范围是 3 到 6。
搜索算法为:
Input: any vertex, `v`.
Find all vertices that lie in Hamming distance 1 from `v`.
Find all vertices that lie in Hamming distance 2 from `v`.
...
我事先不知道我需要离开v 多远。例如,我可能会停在距离 1 处。
例如,给定这个立方体:
和v = 100,我需要汉明距离为 1 的顶点,即 000、101、110(任意顺序)。然后,我可能需要得到距离 2 的顶点,即 111、001、010。万一也需要距离 3 的顶点,我也会得到 011。
立方体的一个顶点可能包含 ID(整数)。
哪种数据结构适合存储这个多维数据集并有效地搜索它?我对其他操作不是很感兴趣。
我想过以某种方式对所有位序列进行排序,以便我可以轻松访问它们,但没有任何工作。
到目前为止我的方法:
data-structure使用哈希表(特别是std::unordered_map),其中键是顶点,值是ID。
algorithm给定一个顶点v,生成汉明距离t(即1、2、...)内的所有位序列。
但是,这需要我每次调用一个函数,一个顶点varrives(这经常发生)。我有一个功能可以实现这一点,基于this。
【问题讨论】:
-
您是否考虑过将立方体表示为图形?特别是邻接表。然后你可以使用深度限制搜索来找到你选择的节点。
-
@aryamccarthy 没有。图因其数据局部性而臭名昭著,不是吗?但是,如果您有完整的想法,请发布答案,我一定会通过它!
标签: data-structure algorithm c++ algorithm math data-structures hamming-distance