关于遗传算法的困惑

时间:2012-09-13 18:08:31

标签: algorithm genetic-algorithm

我的书(人工智能现代方法)说遗传算法以一组 k 随机生成的状态开始,称为种群。每个状态都表示为有限字母表上的字符串 - 最常见的是0和1的字符串。例如,8皇后状态必须指定8个皇后的位置,每个皇后位于8个方格的列中,因此需要8 * log(2)8 = 24位。或者,状态可以表示为8位,每个位于1到8之间。

[http://en.wikipedia.org/wiki/Eight_queens_puzzle]

我不明白表达式8 * log(2)8 = 24位,为什么log2 ^ 8?那些24位应该用于什么?

2 个答案:

答案 0 :(得分:1)

如果我们在维基百科页面上取第一个例子,解决方案可以编码为[2,4,6,8,3,1,7,5]:第一个数字给出A列中女王的行号,第二列为女王B列,依此类推。现在我们不是从1开始行编号,而是从0开始。然后用[1,3,5,7,0,6,4]编码解。任何位置都可以这样编码 我们只有0到7之间的数字,如果我们用二进制3位(= log2(8))写它们就足够了:

000 -> 0
001 -> 1
...
110 -> 6
111 -> 7

可以使用8位3位数字对位置进行编码,例如从[1,3,5,7,2,0,6,4]我们得到[001,011,101,111,010,000,110,100]或更简要的001011101111010000110100:24位。
在另一方面,位串000010001011100101111110解码为000.010.001.011.100.101.111.110然后[0,2,1,3,4,5,7,6]并给出[1,3,2,4,5,8, 7]:A列中的女王在第1行,B列中的女王在第3行,等等。

答案 1 :(得分:0)

存储可能方块所需的位数(8种可能性0-7)是log(2)8。请注意,二进制的111是十进制的7。您必须为8列指定方形,因此需要3位8次