gpt4 book ai didi

java - 如何从汉明球中的一个字节计算所有最近的邻居

转载 作者:行者123 更新时间:2023-11-30 10:48:20 25 4
gpt4 key购买 nike

我想从给定字节计算所有可能的汉明邻居,并具有最大汉明距离。

对于 1 的汉明距离,我创建了这个函数:

public static ArrayList<Byte> hammingNeighbours(byte input, int maxDistance){
ArrayList<Byte> neighbours = new ArrayList<>();
neighbours.add(input);
byte value;;
byte mask = 1;


for (int i = 0; i < 8; i++) {
value = (byte) (input ^mask);
neighbours.add(value);
mask = (byte) (mask << 1);

}
return neighbours;
}

但是如何添加距离 > 1 的邻居?有人可以帮我解决这个问题吗?

最好的问候

最佳答案

正如我在评论中所说,所有没有距离 == 1 或 0 的 byte 都是有效的。但是如果你想要一个算法来给你所有最多 maxDist 的字节,你可以这样做一个递归方法:

public static void getNeighbours(ArrayList<Byte> nbrs, byte input, int bit, int maxDist) {
if(maxDist == 0 || bit == 8) {
nbrs.add(input);
} else {
getNeighbours(nbrs, (byte) (input^(1<<bit)), bit+1, maxDist-1);
getNeighbours(nbrs, input, bit+1, maxDist);
}
}

如果您只想要恰好 maxDist 的字节,则只需添加 if(maxDist == 0) 并终止分支 if(bit = = 8)

关于java - 如何从汉明球中的一个字节计算所有最近的邻居,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35841068/

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