【发布时间】:2012-09-14 02:19:33
【问题描述】:
我的书(人工智能一种现代方法)说遗传算法从一组 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 bits ,为什么是 log2 ^ 8?这 24 位应该是干什么用的?
【问题讨论】:
-
8 个皇后不能共享一行或一列。所以你知道他们的行(或列)是 0-7:queen#0 有 row=0,等等。所以你不必存储这些行。您必须存储 0-7 列,这需要 3bit/queen。 [实际上有一个更严格的枚举,因为您可以使用混合基数编码,这样可以节省一些位(我猜是 3)通过对称压缩也可以节省一些位。但是使用 3bits/queen 算术更简单。]
标签: algorithm genetic-algorithm