• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 14,  comments - 4,  trackbacks - 0

            連連看的A*搜索 VS 深度優(yōu)先搜索

            這周在測試連連看的時(shí)候發(fā)現(xiàn)了嚴(yán)重的搜索算法錯(cuò)誤問題。原先我用的A*只是比較兩個(gè)節(jié)點(diǎn)的轉(zhuǎn)彎次數(shù),使用的hash標(biāo)記就是遍歷過的節(jié)點(diǎn)不能再走。但是在這樣的情況下就不能保證走出正確的路徑。如圖1所示。S為起點(diǎn),E為終點(diǎn),黑色表示墻壁。從S開始遍歷的時(shí)候路徑12走到紅色位置的轉(zhuǎn)彎次數(shù)是相同的,然而在往下走一步1就永遠(yuǎn)走不到終點(diǎn)了(轉(zhuǎn)彎次數(shù)超過了兩次)。所以這樣的hash標(biāo)記是行不通的。不能一棒子打死走過的地方就不讓走。

             


            在這里輸入文本
            圖 1.

             

            既然設(shè)置了轉(zhuǎn)彎次數(shù),hash標(biāo)記可以使用轉(zhuǎn)彎次數(shù)來設(shè)定。如圖2所示。圖中的數(shù)字表示從起點(diǎn)到該節(jié)點(diǎn)的轉(zhuǎn)彎次數(shù)。在遍歷的時(shí)候通過判斷之前到達(dá)該節(jié)點(diǎn)的時(shí)候轉(zhuǎn)彎次數(shù)是否大于等于當(dāng)前節(jié)點(diǎn)的轉(zhuǎn)彎次數(shù)。這樣上面所說的路徑2就可以順利通過紅色位置。到了下一個(gè)節(jié)點(diǎn)通過判斷路徑2的轉(zhuǎn)彎次數(shù)少于路徑1那么只需要保留路徑2走到終點(diǎn)即可。

            注意:此時(shí)已經(jīng)沒必要再用轉(zhuǎn)彎次數(shù)作為A*搜索的啟發(fā)函數(shù)了。


            2.

            雖然這樣做避免了搜索不到終點(diǎn)的致命錯(cuò)誤,但是效率上并不可觀。因?yàn)楸闅v到某個(gè)點(diǎn)轉(zhuǎn)彎次數(shù)相同的情況很多,所以這樣的搜索帶來了大量的不必要的遍歷。后來我加了一個(gè)當(dāng)前節(jié)點(diǎn)到終點(diǎn)的步數(shù)記錄。將步數(shù)這個(gè)條件作為啟發(fā)函數(shù)。這樣做可以將最可能打到終點(diǎn)的節(jié)點(diǎn)優(yōu)先搜索。效率有顯著的提高。

            但是我又想用這A*算法浪費(fèi)了那么多的內(nèi)存用來記錄各種中間值,深搜的話會(huì)不會(huì)更加快。因?yàn)橹灰^2次轉(zhuǎn)彎就不必繼續(xù)遍歷。于是我寫了個(gè)深搜試了一下,的確比之前我個(gè)人認(rèn)為已經(jīng)不能再優(yōu)化的A*算法要快的多。當(dāng)然我測試的地圖是15*15的,并且A*算法搜索的路徑還可以將步數(shù)控制在最短。而深搜的遞歸會(huì)大量調(diào)用函數(shù)堆棧。但是……在這個(gè)問題上A*的優(yōu)勢并沒有體現(xiàn)出來,1.連連看是不管距離遠(yuǎn)近的 2.轉(zhuǎn)彎次數(shù)不超過兩次深搜的遞歸次數(shù)并不多。

            綜上所述A*可以解決大多數(shù)擁有各種條件的搜索問題,但是對(duì)于連連看的搜索在15*15的地圖規(guī)模下深搜的確優(yōu)于A*,內(nèi)存和時(shí)間都比較省,時(shí)間幾乎每次都是0的。

            最后我保留了兩個(gè)算法函數(shù)。可能有人會(huì)看不懂什么A*啊,什么啟發(fā)式搜索啊,什么hash…。其實(shí)A*就是廣搜加一個(gè)比較函數(shù),那個(gè)比較函數(shù)就是啟發(fā)函數(shù),通過它來排列隊(duì)列中節(jié)點(diǎn)的先后順序決定哪些節(jié)點(diǎn)應(yīng)該先搜索。上文提到的hash標(biāo)記,即最簡單的hash。舉個(gè)例子就是搜索地圖的時(shí)候標(biāo)記已走過的地方防止重復(fù)遍歷。其實(shí)這些東西以前ACM的時(shí)候都用過,一直到不知道專業(yè)名詞….

            順便提一下,杭電上的那道連連看數(shù)據(jù)太弱了,測試數(shù)據(jù)沒有包含我以上提到的情況。

             

             

            蛋疼的差事

            我表哥現(xiàn)在在浦江做婚紗攝影,叫我給他做個(gè)網(wǎng)站,為什么為什么會(huì)這樣。我真的不會(huì)做網(wǎng)站,但是第一次和他說的時(shí)候我說你要的那點(diǎn)屁功能隨便寫寫就是了,你只要把圖片資料什么的弄來就好了。結(jié)果他發(fā)給我一個(gè)excel寫的都是寫什么居然還寫了一個(gè)網(wǎng)址www.pjhssy.com 我頓時(shí)無語,在他眼里這域名也是程序員寫出來的。他的原話是這樣的:反正你全部幫我搞定,寫好了買什么空間什么的都弄好,除了買空間的錢你其他的想都別想(我還沒想這事他倒是事先說明了,好像我欠他錢一樣- -)。硬的不行他又說難道你忘了以前我在杭州的時(shí)候我是怎么對(duì)你的,每次來我這里玩都是熱情接待,上廁所我都讓你先去。還有一大堆切扁的廢話,很無奈。

             

            觸動(dòng)

            參觀了幾個(gè)同事的住處,房間慘不忍睹…..人全部在玩游戲…..,兩個(gè)用iphone的同事房間就和衛(wèi)生間一樣大,只有一張床和一個(gè)放電腦的小桌子,衣服就掛在一根長度最多一米的木條上,iphone放在破桌子的隔層,這樣的場景很不協(xié)調(diào),感覺就像傾家蕩產(chǎn)買了個(gè)手機(jī)。對(duì)于工作生活他們似乎沒有目標(biāo),對(duì)于這份工作似乎并不是自己的興趣,反而像讀書是自己不得不做的事情。人生怎能如此無聊!

            也看了我即將要搬進(jìn)去的地方,一個(gè)字“大”,兩個(gè)字“豪華”!哈哈,陽臺(tái)、獨(dú)立衛(wèi)生間,good650/very good

            既然要做這個(gè)行業(yè)絕對(duì)不能停止學(xué)習(xí),絕對(duì)不能滿足現(xiàn)狀,不然僅僅在公司的框架上填空,毫無創(chuàng)造性一點(diǎn)激情也沒有。

            我留在這里工作的目標(biāo),要自己寫一個(gè)完完全全的網(wǎng)絡(luò)游戲,可以很小,但是要包括多線程、數(shù)據(jù)庫、安全性考慮等。游戲模塊要盡可能多的使用C++的特性,將書上看過但是沒用過的東西都試試。到時(shí)候再換工作也不必要擔(dān)心自己的能力問題。

             

            吃了晚飯之后走在學(xué)源街上,由于是暑假學(xué)生比較少,黃昏夕陽,安靜的街道很美。

             


             

             

            陳元杰

            2012/7/22

            posted on 2012-07-22 17:39 mr_chen 閱讀(434) 評(píng)論(2)  編輯 收藏 引用

            FeedBack:
            # re: 周報(bào) 2012-07-22
            2012-10-28 23:24 | betabone
            博主你好,請問你是杭電的嗎?我是杭電大四的,對(duì)游戲編程很有興趣,不知道你們公司有沒有實(shí)習(xí)的機(jī)會(huì)呢?  回復(fù)  更多評(píng)論
              
            # re: 周報(bào) 2012-07-22
            2012-10-28 23:32 | betabone
            我也想自己做一個(gè)完全的小型網(wǎng)絡(luò)游戲,目前只做過單機(jī)小游戲,非常希望能跟博主成為朋友,我的QQ是864835862,留QQ好像不太好,但是一時(shí)間也找不到博主的聯(lián)系方式,只好這樣了~  回復(fù)  更多評(píng)論
              

            只有注冊用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2012年10月>
            30123456
            78910111213
            14151617181920
            21222324252627
            28293031123
            45678910

            常用鏈接

            留言簿

            隨筆檔案(14)

            文章分類(8)

            文章檔案(11)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            三上悠亚久久精品| 婷婷五月深深久久精品| 久久99国产乱子伦精品免费| 国产成人无码精品久久久性色 | 7777精品伊人久久久大香线蕉| 国产福利电影一区二区三区,免费久久久久久久精 | 91久久成人免费| 精品久久久久久无码中文字幕| 精品国产婷婷久久久| 久久国产精品免费一区二区三区| 久久福利片| 一本色道久久88精品综合| 麻豆精品久久精品色综合| 久久亚洲国产成人精品无码区| 久久精品中文字幕一区| 91精品国产91久久久久福利| 久久成人永久免费播放| 亚洲精品无码久久千人斩| 久久93精品国产91久久综合| 久久久久久久免费视频| 国内精品久久久久久久久电影网| 久久国产一片免费观看| 99麻豆久久久国产精品免费| 四虎国产精品成人免费久久| 久久se精品一区精品二区| 久久AV高清无码| 久久久久女教师免费一区| 久久婷婷五月综合97色| 欧美精品乱码99久久蜜桃| 精品久久久久久无码免费| 99久久无码一区人妻a黑| 中文字幕无码久久人妻| 国产国产成人久久精品| 久久人人爽人人爽人人片AV不| 国产伊人久久| 久久久久国产精品| 久久国产精品无码一区二区三区| 久久婷婷午色综合夜啪| 久久久这里有精品中文字幕| 国产激情久久久久影院小草| 国产成人无码久久久精品一|