gpt4 book ai didi

c++ - 生成所有汉明距离至多为2的无序位串对

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:17 25 4
gpt4 key购买 nike

我正在寻找一种有效的方法来生成汉明距离最多为 2 的所有无序位串对(表示为整数)。在 this answer 中,它显示了对于汉明距离为 1 的对,这是如何非常有效地完成的。

换句话说,上面的答案给了我们 hypercube graph 的所有边.用这些术语来说,我正在寻找一种有效的方法来生成 square 的边缘的超立方体。

是否有一些众所周知的快速方法,也许类似地基于位技巧?

最佳答案

Nate Kohl's answer 有一个简单的修改.

int n = 3;
// examine all vertices from 0...2^n-1
unsigned long long max = 1ULL << n;
for (unsigned long long vertex = 0; vertex < max; ++vertex) {
std::cout << vertex << ':';
// print all vertices that differ from vertex by one bit
unsigned long long mask = 1;
for (int shift_amt = 0; shift_amt < n; ++shift_amt) {
std::cout << ' ' << (vertex ^ (mask << shift_amt));
}
for (int shift_amt1 = 0; shift_amt1 < n; ++shift_amt1) {
for (int shift_amt2 = 0; shift_amt2 < shift_amt1; ++shift_amt2) {
std::cout << ' ' << (vertex ^ (mask << shift_amt1) ^ (mask << shift_amt2));
}
}
std::cout << '\n';
}

关于c++ - 生成所有汉明距离至多为2的无序位串对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34708916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com