我想知道当每个表示具有相同数量的1和0时,是否存在整数二进制编码的特定名称。这是一个例子
0 000111
1 001011
2 001101
3 001110
4 010011
5 010101
6 010110
7 011001
8 011010
9 011100
10 100011
11 100101
12 100110
13 101001
14 101010
15 101100
16 110001
17 110010
18 110100
19 111000
我认为这种代码应经常用于人工二进制网络,以平衡任何输入的活动神经元数量。我认为这种代码与汉明代码有关,但似乎我错了。
答案 0 :(得分:0)
非常感谢@ m69,我对步行位算法有了一个很好的想法,经过一些小的改动就完成了这项工作。我在这里发布这个python代码以防万一其他人需要它。
def equalcodegen(size):
x = [ 1 for _ in xrange(size/2)]+[ 0 for _ in xrange(size/2)]
def walk(seq):
idx=0
while seq[idx] != 0: idx+=1
if idx == 0:
s = seq[:]
yield []
else:
seq[idx-1] = 0
for pos in xrange(idx, len(seq)):
s = seq[:]
s[pos] = 1
yield s
for p in walk(s[:pos]):
if len(p) == 0: continue
k = p+s[pos:]
yield k
wset = [x]+[ x for x in walk(x) ]
return [ "".join( "%d"%x for x in p) for p in wset ]
if __name__ =="__main__":
s = equalcodegen(6)
for x in s:
print x
结果:
110000
110100
101100
011100
110010
101010
011010
100110
010110
001110
110001
101001
011001
100101
010101
001101
100011
010011
001011
000111