非常大的二进制数据的数据结构

时间:2011-08-11 15:14:57

标签: data-structures binary language-agnostic

我正在构建遗传算法,我想知道用于编码染色体的良好数据结构(基本上是0和1的长序列)。

我的目标是在染色体内随机改变比特并在染色体之间进行交叉。本质上是大量复制和更改位或子位序列。

到目前为止,我只是坚持使用普通的布尔数组,但我觉得应该有一个更好的数据结构来有效地处理大量的二进制数据。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

切换到使用int基元来表示二进制值组,并使用按位运算和掩码来更改二进制值组可能会增加速度,这取决于您操作数据的方式。你可以使用随机生成的面具随机改变基因块。

如果您正在扫描整个事物或提前知道索引,那么阵列很难被击败。但是,将数组的部分复制到其他部分可能具有挑战性,但它仍然相当有效。

如果你更关心交换固定大小的基因组,建立一个2层树,每个叶子上有n个分支,每个叶子上有一组基因,这样你就可以非常快速地交换基因组。这些组也可能不需要具有相同的大小。如果您需要将基因进一步分解为染色体,则可以在树中添加中间水平。