2012-09-13 186 views
1

我的書(人工智能一種現代的方法)說遺傳算法以一組隨機產生的狀態開始,稱爲總體。每個狀態在有限字母表中表示爲一個字符串 - 最常見的是一串0和1。例如,8皇后狀態必須指定8個皇后的位置,每個皇后位於8個方格的列中,因此需要8 * log(2)8 = 24位。可替換地,狀態可以表示爲8位數字,每一個在範圍從1到8關於遺傳算法的困惑

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

我不理解的表達8 *日誌(2)8 = 24個比特,爲什麼LOG2^8?這24位應該是爲了什麼?

+0

8皇后不能共享一行或一列。所以你知道他們的行(或列)是0-7:女王#0的行= 0等,所以你不必存儲行。你必須存儲0-7列,這需要3位/皇后。 [事實上,枚舉更加緊密,因爲你可以使用混合基數編碼,這可以讓你省掉幾個位(我猜)。通過對稱壓縮也可以節省幾位。但使用3位/皇后更簡單算術。] – wildplasser

回答

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行上,等等。

0

存儲可能方塊(8種可能性0-7)所需的位數是log(2 )8。請注意,二進制中的111是十進制的7。你必須指定8列的平方,所以你需要8位8位