日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

拼图游戏及其相关算法

發(fā)布時(shí)間:2023/12/9 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拼图游戏及其相关算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

From: http://blog.sina.com.cn/s/blog_4ed8b87701011c6x.html

?

??這個(gè)問題其實(shí)可以簡單表述成,3*3的格子裝了1至8,8個(gè)數(shù)字,數(shù)字是隨機(jī)分布于各個(gè)格子中,問是否可以利用空格的格子,移動裝有數(shù)字的格子最終達(dá)到某種序列?比如像常見的拼圖游戲,8個(gè)圖格,然后利用空白格移動圖片格子使其成為一幅完整的圖案。

如圖1所示

圖1 隨機(jī)打亂的數(shù)字圖格和目標(biāo)狀態(tài)

問題隱含的數(shù)學(xué)原理

這個(gè)問題其實(shí)涉及到數(shù)學(xué)中群論。目標(biāo)狀態(tài)問題可以歸結(jié)為一個(gè)置換群的問題,一個(gè)任意的狀態(tài)A最終如果能夠達(dá)到目標(biāo)狀態(tài)F,那么我們可以說置換群的個(gè)數(shù)為1,如果只有50%的可能性,那么這個(gè)置換群的個(gè)數(shù)就是2了。置換群內(nèi)部的狀態(tài)可以互相轉(zhuǎn)換,但是卻不可能有A群中的狀態(tài)轉(zhuǎn)向B群中的狀態(tài)互相轉(zhuǎn)換的情形發(fā)生。九宮格的問題其實(shí)是一個(gè)奇偶置換群的實(shí)例,該群無論如何置換奇偶性都不變,所以如果開局和目標(biāo)的奇偶性相同,就一定有解(因?yàn)榻?jīng)過有限次的置換一定循環(huán)),如果奇偶性不同,一定無解。

n*n的方格中放入1,2,3,…,n-1及一個(gè)空格,在任何一種狀態(tài)A下,??

定義:f(i)=k,表示i放在第k個(gè)格子中,k按照從左至右,從上到下排序;??

定義:g(i,j)=1,?如果(f(i)-f(j))(i-j)<0;否則為0;

定義:F(A)=∑?g(i,j),對所有i,j求和(這里i<j);

針對圖1,其目標(biāo)F(End)=0,其初始F(Begin)=12(f(1)=1 f(2)=9 f(3)=3 f(4)=4 f(5)=8 f(6)=2 f(7)=7 f(8)=5),其奇偶性相同,故有解。利用F函數(shù)可以解決所有n為奇數(shù)的情況。比如n=3,因?yàn)橐苿涌崭裰挥?種方式:在同行中移動不改變F值,在不同行中移動F值+2,-2或不變,故初始和末態(tài)的狀態(tài)不會發(fā)生改變。

問題隱含的人工智能原理

在數(shù)學(xué)上,我們雖然完美解決了問題是否存在解決方案的問題,但是實(shí)際上,我們需要實(shí)現(xiàn)這個(gè)方案的具體內(nèi)容,即在存在解的情況下,如何移動最少的步數(shù)使其達(dá)到目標(biāo)狀態(tài)。人工智能的啟發(fā)式搜索算法在這里派上了用場。所謂的啟發(fā)式搜索就是對于許多應(yīng)用過程,可以找到領(lǐng)域特有的知識來指導(dǎo)搜索過程,以提高工作效率,而這些知識稱為啟發(fā)式知識。我們先給出狀態(tài)空間搜索的概念,狀態(tài)空間搜索,就是將問題求解過程表現(xiàn)為從初始狀態(tài)到目標(biāo)狀態(tài)尋找這個(gè)路徑的過程,就是在解一個(gè)問題時(shí),找到一條解題的過程可以從求解的開始到問題的結(jié)果。由于求解問題的過程中分枝有很多,主要是求解過程中求解條件的不確定性,不完備性造成的,使得求解的路徑很多這就構(gòu)成了一個(gè)圖,我們說這個(gè)圖就是狀態(tài)空間。問題的求解實(shí)際上就是在這個(gè)圖中找到一條路徑可以從開始到結(jié)果。這個(gè)尋找的過程就是狀態(tài)空間搜索。常用的狀態(tài)空間搜索有深度優(yōu)先和廣度優(yōu)先。廣度優(yōu)先是從初始狀態(tài)一層一層向下找,直到找到目標(biāo)為止。深度優(yōu)先是按照一定的順序前查找完一個(gè)分支,再查找另一個(gè)分支,以至找到目標(biāo)為止。這兩種算法在數(shù)據(jù)結(jié)構(gòu)書中都有描述,可以參看這些書得到更詳細(xì)的解釋。前面說的廣度和深度優(yōu)先搜索有一個(gè)很大的缺陷就是他們都是在一個(gè)給定的狀態(tài)空間中窮舉。這在狀態(tài)空間不大的情況下是很合適的算法,可是當(dāng)狀態(tài)空間十分大,且不預(yù)測的情況下就不可取了。他的效率實(shí)在太低,甚至不可完成。在這里就要用到啟發(fā)式搜索了。啟發(fā)式搜索就是在狀態(tài)空間中的搜索對每一個(gè)搜索的位置進(jìn)行評估,得到最好的位置,再從這個(gè)位置進(jìn)行搜索直到目標(biāo)。這樣可以省略大量無畏的搜索路徑,提到了效率。在啟發(fā)式搜索中,對位置的估價(jià)是十分重要的。采用了不同的估價(jià)可以有不同的效果。我們先看看估價(jià)是如何表示的。啟發(fā)中的估價(jià)是用估價(jià)函數(shù)表示的,如:f(n) = g(n) + h(n),其中f(n)是節(jié)點(diǎn)n的估價(jià)函數(shù),g(n)實(shí)在狀態(tài)空間中從初始節(jié)點(diǎn)到n節(jié)點(diǎn)的實(shí)際代價(jià),h(n)是從n到目標(biāo)節(jié)點(diǎn)最佳路徑的估計(jì)代價(jià)。

對于這個(gè)九宮格游戲,我們采用如下的評價(jià)函數(shù),f(n) = d(n) + h(n),其中d(n)為當(dāng)前狀態(tài)從初始狀態(tài)開始移動的步數(shù),h(n)計(jì)算當(dāng)前狀態(tài)與目標(biāo)狀態(tài)相比錯位的個(gè)數(shù)。搜索過程總是往f(n)最小的分枝方向進(jìn)行,以便快速達(dá)到最終狀態(tài)。

總結(jié)

以上是生活随笔為你收集整理的拼图游戏及其相关算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。