亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        優(yōu)化A算法搜索連連看圖塊配對(duì)和消除次序

        2017-03-02 08:20:20黃艾璇
        關(guān)鍵詞:圖塊搜索算法結(jié)點(diǎn)

        黃艾璇 王 亮

        (1.華中師范大學(xué)第一附屬中學(xué) 武漢 430223)(2.華中光電技術(shù)研究所 武漢 430223)

        優(yōu)化A算法搜索連連看圖塊配對(duì)和消除次序

        黃艾璇1王 亮2

        (1.華中師范大學(xué)第一附屬中學(xué) 武漢 430223)(2.華中光電技術(shù)研究所 武漢 430223)

        針對(duì)連連看游戲這種具有小循環(huán)特性的動(dòng)態(tài)不確定路徑搜索問題,論文根據(jù)游戲特點(diǎn),通過對(duì)幾種搜索算法分析比較,設(shè)計(jì)并實(shí)現(xiàn)了一種優(yōu)化的A算法,對(duì)連連看圖塊配對(duì)和圖塊對(duì)消除次序進(jìn)行搜索。實(shí)驗(yàn)證明論文算法是一種高效實(shí)用的動(dòng)態(tài)搜索方法,有效減少了因圖塊組對(duì)不合適或圖塊對(duì)消除次序不合適造成的死鎖。

        動(dòng)態(tài)不確定; 廣義搜索; 深度搜索; A算法; 圖塊對(duì)

        Class Number TP18

        1 引言

        搜索技術(shù)是人工智能應(yīng)用于游戲中的最基本的問題之一,是人工智能一個(gè)重要的研究?jī)?nèi)容。

        游戲連連看是在許多帶有圖案的小方塊中找出相同的圖塊,如果兩個(gè)相同圖塊可以用三根以內(nèi)的直線相連,則可以將兩圖塊消除,一定時(shí)間內(nèi)將所有圖塊消完即過關(guān)進(jìn)入下一個(gè)難度關(guān)卡。

        以圖塊配對(duì)作為結(jié)點(diǎn),連連看游戲?qū)儆谝环N具有小循環(huán)特性的動(dòng)態(tài)不確定路徑搜索問題,動(dòng)態(tài)和小循環(huán)的特點(diǎn),造成搜索計(jì)算量巨大且很容易陷入死循環(huán),此類尋路問題難度較大。當(dāng)前將搜索算法應(yīng)用于連連看的只有尋找兩相同圖塊之間連通路徑[1~2]。

        由于連連看一個(gè)關(guān)卡中相同圖案的圖塊不只有兩個(gè),因此相同圖塊組對(duì)是有多個(gè)選擇的;有的關(guān)卡中,各個(gè)圖塊位置也不是固定的,會(huì)朝某一個(gè)方向移動(dòng),填補(bǔ)已消除圖塊的空位,因此圖塊的消除順序也不是隨意的。如果圖塊組對(duì)不合適或圖塊消除順序不對(duì),經(jīng)常發(fā)生可消的圖塊對(duì)越來越難找,甚至出現(xiàn)圖塊未完全消完已找不到可以消除的圖塊對(duì)了,需要圖塊重新排序。

        連連看游戲消除步數(shù)固定,圖塊對(duì)與圖塊對(duì)之間沒有空間的關(guān)聯(lián)性,不存在尋找最短路徑問題;圖塊連通性相對(duì)簡(jiǎn)單,采用盲目搜索算法(廣度優(yōu)先、深度優(yōu)先)或啟發(fā)式搜索(A*算法)此類單步搜索算法計(jì)算量大、速度慢,無太大必要[3];而通過搜索算法找到較優(yōu)的圖塊配對(duì)和較優(yōu)的圖塊對(duì)消除順序,可達(dá)到減小死鎖的目的。

        2 問題分析及算法選擇

        人工智能中比較成熟的有盲目搜索算法和啟發(fā)式搜索算法,盲目搜索算法主要有廣度優(yōu)先算法和深度優(yōu)先算法,啟發(fā)式搜索算法用得較多的是A算法和A*算法[4]。

        圖1 廣義搜索樹

        廣義優(yōu)先算法(BFS),從根結(jié)點(diǎn)出發(fā),接著遍歷根結(jié)點(diǎn)的所有子結(jié)點(diǎn),再遍歷子結(jié)點(diǎn)的所有子結(jié)點(diǎn),以此類推,一層一層向下尋找,直至找到終點(diǎn)。廣義優(yōu)先算法是完備的,總能找到最優(yōu)路徑,但搜索算法時(shí)間和空間復(fù)雜度較高。

        圖2 深度搜索樹

        深度優(yōu)先算法(DFS),從根結(jié)點(diǎn)出發(fā),沿著一條路并一直走下去,直到遇到障礙或者沒有達(dá)到目標(biāo)點(diǎn),于是返回上一層換一條路重新走,直至找到終點(diǎn)。深度優(yōu)先算法一般比廣義優(yōu)先算法耗時(shí)短,但深度搜索不完備,可能搜到錯(cuò)誤路上,陷入死循環(huán)或找到的不是最優(yōu)答案[5~6]。

        啟發(fā)式搜索A和A*算法均是深度優(yōu)先算法的改進(jìn),A算法定義一個(gè)評(píng)價(jià)函數(shù)F,對(duì)當(dāng)前的搜索狀態(tài)進(jìn)行評(píng)估,找出最有希望的結(jié)點(diǎn)為擴(kuò)展,A算法中評(píng)價(jià)函數(shù)設(shè)計(jì)是重點(diǎn)。

        A*算法把到達(dá)當(dāng)前結(jié)點(diǎn)的消耗代價(jià)和從該結(jié)點(diǎn)到目標(biāo)點(diǎn)的預(yù)估消耗結(jié)合起來對(duì)結(jié)點(diǎn)進(jìn)行評(píng)價(jià)

        F(n)=g(n)+h(n)

        (1)

        F(n)是節(jié)點(diǎn)n的估價(jià)函數(shù),g(n)為從起始點(diǎn)到結(jié)點(diǎn)n的路徑消耗,一般取結(jié)點(diǎn)在狀態(tài)樹中的深度;h(n)為從結(jié)點(diǎn)n到目標(biāo)點(diǎn)的最低消耗估計(jì),通常取結(jié)點(diǎn)n到終點(diǎn)的曼哈頓距離。[7~8]

        連連看從開始到過關(guān)一般有很多條路可以走,只需選一條即可。連連看結(jié)點(diǎn)是動(dòng)態(tài)的,每個(gè)結(jié)點(diǎn)在多個(gè)不同的層上都可能出現(xiàn),結(jié)點(diǎn)數(shù)量幾乎是無限的,全遍歷的廣義搜索是不可能完成的任務(wù)。由于連連看結(jié)點(diǎn)深度有限,有利于基于深度優(yōu)先的搜索方式,但同樣由于結(jié)點(diǎn)是動(dòng)態(tài)的,且具有小循環(huán)特性,當(dāng)一條路徑無結(jié)果,回溯時(shí),很容易進(jìn)入死循環(huán)中。針對(duì)這種動(dòng)態(tài)多目標(biāo)路徑搜索[9~11]需要通過引入一些評(píng)估因子找到一條不易進(jìn)入死循環(huán)的較優(yōu)路徑。

        游戲者在玩連連看時(shí)會(huì)遵守一些基本的技巧,如多個(gè)連通區(qū)間之間的障礙塊要先消除,如圖3中B型圖塊,右邊兩個(gè)組合消除較好;只此一對(duì)的孤對(duì)圖塊先消除,如圖3中A型圖塊,只此兩個(gè),先消;外圍圖塊消除對(duì)別的圖塊移動(dòng)動(dòng)態(tài)影響小的可先消除等。將游戲技巧構(gòu)建評(píng)價(jià)函數(shù)F,可實(shí)現(xiàn)啟發(fā)式搜索,減少回溯,增加搜索速度。針對(duì)圖塊配對(duì)和圖塊消除順序,選擇A算法進(jìn)行搜索比較合適,其中F估值是算法關(guān)鍵。

        圖3 游戲技巧示意

        3 A算法設(shè)計(jì)和實(shí)現(xiàn)

        連連看消除順序排列計(jì)算程序由以下幾個(gè)部分組成:

        1) 獲取連連看圖片

        本文選擇寵物連連看3.1無敵版,采用截屏方法直接從屏幕上copy正在運(yùn)行連連看圖片。此版本連連看背景較單一,圖塊之間用一個(gè)像素黑線分隔,方便對(duì)圖塊進(jìn)行分割和讀取。

        2) 將連連看圖片按連連看網(wǎng)格分割成一個(gè)個(gè)獨(dú)立圖塊

        分別在水平和垂直方向統(tǒng)計(jì)連連看圖像每行和每列像素灰度之和。設(shè)置一個(gè)閾值,小于此閾值即為塊與塊之間的邊界。

        3) 遍歷所有圖塊,找出相同的圖塊

        兩圖塊對(duì)應(yīng)像素灰度相減,相同圖塊由于像素灰度相同,相減后基本為黑色,如圖5所示。根據(jù)相減后圖像中所有像素剩余灰度之和判斷是否相同圖塊。

        圖4 連連看圖片獲取及圖塊分割

        圖5 尋找相同圖塊

        4) 相同圖塊連通性計(jì)算

        對(duì)A、B兩塊按先橫后縱兩個(gè)方向進(jìn)行掃描。以橫向掃描為例,找到A和B左右空格范圍(包括A、B自身),找出兩者空格公共范圍,在公共范圍內(nèi)檢查是否有一條豎線空格可以將兩者連接,如能連說明此兩塊是連通的,否則再在縱方向?qū)、B進(jìn)行掃描,如圖6所示[3]。

        圖6 兩圖塊連通性判斷

        5) 結(jié)點(diǎn)配對(duì)塊估值

        對(duì)結(jié)點(diǎn)配對(duì)塊估值是A算法的關(guān)鍵。

        連連看游戲當(dāng)前層一般有多個(gè)可消除的圖塊對(duì),要關(guān)注的是先消誰后消誰及消除順序?qū)_(dá)到最終成功通關(guān)的影響。常用A或A*算法中選擇的結(jié)點(diǎn)在狀態(tài)樹中的深度或此結(jié)點(diǎn)到終點(diǎn)的曼哈頓距離作為估值對(duì)消塊次序無效。

        根據(jù)連連看游戲技巧,假定A、B兩圖塊可連通,設(shè)計(jì)估值函數(shù)為

        F(A,B)=(S/2-1)+G(A)+G(B)

        (2)

        S當(dāng)前與A相同的圖塊數(shù)量。G(A)、G(B)分別為消掉圖塊A、B后整體結(jié)構(gòu)松散性度量函數(shù),其公式為

        G(A)=1-CH+1-CV

        (3)

        CH是以A為交叉點(diǎn)橫軸方向上未消A前最大空腔與消掉A后最大空腔之比,CV是以A為交叉點(diǎn)縱軸方向上未消A前最大空腔與消掉A后最大空腔之比。

        6) 搜索算法實(shí)現(xiàn)

        搜索算法多采用一個(gè)OPEN和一個(gè)CLOSE兩個(gè)棧表對(duì)結(jié)點(diǎn)進(jìn)行管理,比較適合穩(wěn)態(tài)結(jié)點(diǎn)管理。

        根據(jù)連連看圖塊對(duì)動(dòng)態(tài)變化的特點(diǎn),采用動(dòng)態(tài)生成結(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu),結(jié)點(diǎn)之間用指針關(guān)聯(lián),建立深度搜索樹。

        typedef struct CONN_CLASS{

        POINT pair_A; //配對(duì)圖塊A位置

        POINT pair_B; //配對(duì)圖塊B位置

        double F_value; //此結(jié)點(diǎn)估價(jià)值

        CONN_CLASS * leftson; //左子結(jié)點(diǎn)指針

        CONN_CLASS * parent; //父結(jié)點(diǎn)指針

        CONN_CLASS * rightbro; //右兄弟結(jié)點(diǎn)指針

        }CONN_CLASS;

        圖7 數(shù)據(jù)結(jié)構(gòu)鏈表建立深度搜索樹

        圖8 A搜索算法流程

        圖塊配對(duì)和圖塊消除順序A搜索算法實(shí)現(xiàn)流程如圖8所示。

        A算法每進(jìn)行下層一結(jié)點(diǎn)搜索,都要擴(kuò)展當(dāng)前層結(jié)點(diǎn),計(jì)算它們的F值,選擇F值最小的節(jié)點(diǎn)向下擴(kuò)展,鏈表中記錄了大量的結(jié)點(diǎn),增加了存儲(chǔ)量和可能搜索寬度。

        針對(duì)連連看的特點(diǎn),可采用特別方法減小鏈表存儲(chǔ)空間:對(duì)于F=0的幾個(gè)結(jié)點(diǎn)(孤對(duì)且消除后別的圖塊位置不移動(dòng)的結(jié)點(diǎn))可以看成一個(gè)結(jié)點(diǎn),一次消除,且此層所有右兄弟結(jié)點(diǎn)全部取消。對(duì)于此層的回溯直接跳到上一層。

        4 算例測(cè)試

        對(duì)多個(gè)連連看圖像塊進(jìn)行了動(dòng)態(tài)測(cè)試,采用正常的深度搜索算法,很容易走到死循環(huán),出現(xiàn)死鎖,采用優(yōu)化的A算法對(duì)路徑進(jìn)行估值,多數(shù)可一次找到較優(yōu)路徑,實(shí)現(xiàn)通關(guān)。圖9為兩幅連連看,圖塊分別向下和向上移動(dòng)補(bǔ)充空格,采用隨機(jī)搜索或人工配對(duì)均死鎖,采用優(yōu)化A算法搜索,均一次找到通關(guān)的較優(yōu)路徑,見右表。

        5 結(jié)語

        本文仿照游戲技巧設(shè)計(jì)了A算法對(duì)連連看圖塊配對(duì)和圖塊對(duì)消除順序進(jìn)行搜索;針對(duì)連連看特點(diǎn),改進(jìn)A算法減小鏈表存儲(chǔ)空間,減小了算法的計(jì)算量;搜索算法減小了圖塊組對(duì)不合適或圖塊消除順序不合適而死鎖的情況。

        [1] 胡正紅.一種尋路算法在游戲中的應(yīng)用[J].山西電子技術(shù),2009(6):53-54. HU Zhenghong. Application of a Path-finding Method in Game Development[J]. Shanxi Electronic Technology,2009(6):53-54.

        [2] 胡正紅,張俊花.A*算法在游戲?qū)ぢ分械膽?yīng)用[J].山西電子技術(shù),2012(1):55-57. HU Zhenghong, ZHANG Junhua. Application of A* Algorithm in Game Path-finding Development[J]. Shanxi Electronic Technology,2012(1):55-57.

        [3] icekiller.連連看核心算法詳解[EB/OL].http://bbs.9ria.com/thread-63206-1-1.html. icekiller. explain in detail about the kernel algorithms of LianLinakan[EB/OL]. http://bbs.9ria.com/thread-63206-1-1.html.

        [4] 人工智能算法綜述[EB/OL].http://www.docin.com/p-70067975.html. The Summary of artificial intelligence[EB/OL]. http://www.docin.com/p-70067975.html.

        [5] 嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,1997. YAN Weiming. Data Structure[M]. Beijing: Tsinghua University Press,1997.

        [6] 關(guān)麗霞.廣度優(yōu)先尋路算法在手機(jī)游戲?qū)ぢ分械膽?yīng)用[J].清遠(yuǎn)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2012(12):57-60. GUAN Lixia. The Application of Breadth-first Search Algorithm in Mobile Game Path-finding Development[J]. Journal of Qingyuan Polytechnic,2012(12):57-60.

        [7] 鄢靖豐,陶少華,夏方玉.基于單元樹結(jié)構(gòu)的廣度優(yōu)先P2P搜索算法[J].計(jì)算機(jī)工程,2011(9):135-137. YAN Jingfeng, TAO Shaohua, XIA Fangyu. Breadth First P2P Search Algorithm Based on Unit Tree Structure[J]. Computer Engineering,2011(9):135-137.

        [8] 胡榮,未召弟,符楊.基于深度優(yōu)先遍歷算法的配電網(wǎng)拓?fù)鋭?dòng)態(tài)檢測(cè)[J].上海電力學(xué)院學(xué)報(bào),2010(4):109-118. HU Rong, WEI Zhaodi, FU Yang. Distribution Network Topology Dynamic Detection Based on Depth first Search Algorithm[J]. Journal of Shanghai University of Electric Power,2010(4):109-118.

        [9] 周軍鋒,陳偉,費(fèi)春蘋,等.BiRch:一種處理k步可達(dá)性查詢的雙向搜索算法[J].通信學(xué)報(bào),2015(8):50-60. ZHOU Junfeng, CHEN Wei, FEI Chunping, et al. BiRch: a bidirectional search algorithm for k-step reachability queries[J]. Journal on Communications,2015(8):50-60.

        [10] 魏唯,歐陽丹彤,呂帥,等.動(dòng)態(tài)不確定環(huán)境下多目標(biāo)路徑規(guī)劃方法[J].計(jì)算機(jī)學(xué)報(bào),2011(5):837-846. WEI Wei, OUYANG Dantong, LV Shuai, et al. Multiobjective Path Planning under Dynamic Uncertain Environment[J]. Chinese Journal of Computers,2011(5):837-846.

        [11] 魏唯,歐陽丹彤,呂帥,等.結(jié)合增量與啟發(fā)式搜索的多目標(biāo)問題處理方法[J].計(jì)算機(jī)研究與發(fā)展,2010(11):1954-1961. WEI Wei, OUYANG Dantong, LV Shuai, et al. An Approach Combining Incremental Search and Heuristic Search for Solving Multiobjective Problems[J]. Journal of Computer Research and Development,2010(11):1954-1961.

        Optimization of A Algorithm for the Search of the LianLinakan Picture Patch Matching and the Elimination Order

        HUANG Aixuan1WANG Liang2

        (1. High School Affiliated to Central China Normal University, Wuhan 430223) (2. Huazhong Institute of Electro-Optics, Wuhan 430223)

        In view of the dynamic uncertain path searching problem with small loop characteristic, according to the characteristics of the Lianliankan game, through analyzing and comparing several search algorithms, this paper designs and implements a kind of optimized A algorithm, and searches the Lianliankan picture patch matching and the picture patch couple elimination order. The experiment proves that, the proposed algorithm is a kind of high speed and accurate dynamic search algorithm, and effectively avoids the dead lock caused by the non-fitness of the picture patch couple or the picture patch elimination order.

        dynamic uncertain, generalized search, depth search, A algorithm, picture patch couple

        2016年8月11日,

        2016年9月27日

        黃艾璇,女,研究方向:人工智能。王亮,男,碩士研究生,工程師,研究方向:信號(hào)處理。

        TP18

        10.3969/j.issn.1672-9722.2017.02.023

        猜你喜歡
        圖塊搜索算法結(jié)點(diǎn)
        從拼圖觀人生
        改進(jìn)的和聲搜索算法求解凸二次規(guī)劃及線性規(guī)劃
        Ladyzhenskaya流體力學(xué)方程組的確定模與確定結(jié)點(diǎn)個(gè)數(shù)估計(jì)
        AutoCAD中圖塊命令的應(yīng)用分析
        茶壺難題
        基于汽車接力的潮流轉(zhuǎn)移快速搜索算法
        基于逐維改進(jìn)的自適應(yīng)步長(zhǎng)布谷鳥搜索算法
        基于跳點(diǎn)搜索算法的網(wǎng)格地圖尋路
        基于Raspberry PI為結(jié)點(diǎn)的天氣云測(cè)量網(wǎng)絡(luò)實(shí)現(xiàn)
        基于AutoCAD的圖塊的查找/替換器的開發(fā)
        99久久久无码国产精品动漫| 午夜福利理论片在线观看| 亚洲男人的天堂在线aⅴ视频| 欧美日韩国产专区| 亚洲国产综合性感三级自拍 | 亚洲国产综合精品中文| 熟女一区二区三区在线观看| 人人摸人人操| 亚洲精品综合第一国产综合| 最新国产成人自拍视频| 日韩 亚洲 制服 欧美 综合 | 欧美极品jizzhd欧美| 亚洲色大成网站www在线观看| 美女偷拍一区二区三区| 精品人妻码一区二区三区剧情| 国产麻豆md传媒视频| 精品亚洲午夜久久久久| 白白色发布视频在线播放 | 国产乱子轮xxx农村| 亚洲免费观看在线视频| 国产精品国产三级国产an| 国产女主播一区二区久久| 狠狠噜天天噜日日噜无码| 最新精品亚洲成a人在线观看| 久久久人妻一区精品久久久| 337p日本欧洲亚洲大胆色噜噜| 伊人狠狠色丁香婷婷综合| av狼人婷婷久久亚洲综合| 国产人妻久久精品二区三区老狼| 国自产拍偷拍精品啪啪一区二区 | 在线观看一区二区三区国产| 亚洲av无码乱码国产一区二区| 国产成人精品一区二区视频| 无码国产精品一区二区免费式芒果| 五月婷婷六月丁香久久综合| 国产真实乱对白精彩| av无码天一区二区一三区| 少妇我被躁爽到高潮在线影片| 国产成人精品无码一区二区三区 | 国产男女猛烈无遮挡免费网站| 未满十八勿入av网免费|