一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

益智游戲克星:BFS暴力搜索算法

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:算法與數(shù)據(jù)結(jié)構(gòu) ? 2020-08-03 16:53 ? 次閱讀

滑動(dòng)拼圖游戲大家應(yīng)該都玩過,下圖是一個(gè) 4x4 的滑動(dòng)拼圖:

拼圖中有一個(gè)格子是空的,可以利用這個(gè)空著的格子移動(dòng)其他數(shù)字。你需要通過移動(dòng)這些數(shù)字,得到某個(gè)特定排列順序,這樣就算贏了。

我小時(shí)候還玩過一款叫做「華容道」的益智游戲,也和滑動(dòng)拼圖比較類似:

那么這種游戲怎么玩呢?我記得是有一些套路的,類似于魔方還原公式。但是我們今天不來研究讓人頭禿的技巧,這些益智游戲通通可以用暴力搜索算法解決,所以今天我們就學(xué)以致用,用 BFS 算法框架來秒殺這些游戲。

一、題目解析

LeetCode 第 773 題就是滑動(dòng)拼圖問題,題目的意思如下:

給你一個(gè) 2x3 的滑動(dòng)拼圖,用一個(gè) 2x3 的數(shù)組board表示。拼圖中有數(shù)字 0~5 六個(gè)數(shù),其中數(shù)字 0 就表示那個(gè)空著的格子,你可以移動(dòng)其中的數(shù)字,當(dāng)board變?yōu)閇[1,2,3],[4,5,0]]時(shí),贏得游戲。

請(qǐng)你寫一個(gè)算法,計(jì)算贏得游戲需要的最少移動(dòng)次數(shù),如果不能贏得游戲,返回 -1。

比如說輸入的二維數(shù)組board = [[4,1,2],[5,0,3]],算法應(yīng)該返回 5:

如果輸入的是board = [[1,2,3],[4,0,5]],則算法返回 -1,因?yàn)檫@種局面下無論如何都不能贏得游戲。

二、思路分析

對(duì)于這種計(jì)算最小步數(shù)的問題,我們就要敏感地想到 BFS 算法。

這個(gè)題目轉(zhuǎn)化成 BFS 問題是有一些技巧的,我們面臨如下問題:

1、一般的 BFS 算法,是從一個(gè)起點(diǎn)start開始,向終點(diǎn)target進(jìn)行尋路,但是拼圖問題不是在尋路,而是在不斷交換數(shù)字,這應(yīng)該怎么轉(zhuǎn)化成 BFS 算法問題呢?

2、即便這個(gè)問題能夠轉(zhuǎn)化成 BFS 問題,如何處理起點(diǎn)start和終點(diǎn)target?它們都是數(shù)組哎,把數(shù)組放進(jìn)隊(duì)列,套 BFS 框架,想想就比較麻煩且低效。

首先回答第一個(gè)問題,BFS 算法并不只是一個(gè)尋路算法,而是一種暴力搜索算法,只要涉及暴力窮舉的問題,BFS 就可以用,而且可以最快地找到答案。

你想想計(jì)算機(jī)怎么解決問題的?哪有那么多奇技淫巧,本質(zhì)上就是把所有可行解暴力窮舉出來,然后從中找到一個(gè)最優(yōu)解罷了。

明白了這個(gè)道理,我們的問題就轉(zhuǎn)化成了:如何窮舉出board當(dāng)前局面下可能衍生出的所有局面?這就簡單了,看數(shù)字 0 的位置唄,和上下左右的數(shù)字進(jìn)行交換就行了:

這樣其實(shí)就是一個(gè) BFS 問題,每次先找到數(shù)字 0,然后和周圍的數(shù)字進(jìn)行交換,形成新的局面加入隊(duì)列…… 當(dāng)?shù)谝淮蔚竭_(dá)target時(shí),就得到了贏得游戲的最少步數(shù)。

對(duì)于第二個(gè)問題,我們這里的board僅僅是 2x3 的二維數(shù)組,所以可以壓縮成一個(gè)一維字符串。其中比較有技巧性的點(diǎn)在于,二維數(shù)組有「上下左右」的概念,壓縮成一維后,如何得到某一個(gè)索引上下左右的索引?

很簡單,我們只要手動(dòng)寫出來這個(gè)映射就行了:

vector>neighbor={ {1,3}, {0,4,2}, {1,5}, {0,4}, {3,1,5}, {4,2} };

這個(gè)含義就是,在一維字符串中,索引i在二維數(shù)組中的的相鄰索引為neighbor[i],:

至此,我們就把這個(gè)問題完全轉(zhuǎn)化成標(biāo)準(zhǔn)的 BFS 問題了,借助前文BFS 算法框架套路詳解的代碼框架,直接就可以套出解法代碼了:

intslidingPuzzle(vector>&board){ intm=2,n=3; stringstart=""; stringtarget="123450"; //將2x3的數(shù)組轉(zhuǎn)化成字符串 for(inti=0;i>neighbor={ {1,3}, {0,4,2}, {1,5}, {0,4}, {3,1,5}, {4,2} }; /*******BFS算法框架開始*******/ queueq; unordered_setvisited; q.push(start); visited.insert(start); intstep=0; while(!q.empty()){ intsz=q.size(); for(inti=0;i

至此,這道題目就解決了,其實(shí)框架完全沒有變,套路都是一樣的,我們只是花了比較多的時(shí)間將滑動(dòng)拼圖游戲轉(zhuǎn)化成 BFS 算法。

很多益智游戲都是這樣,雖然看起來特別巧妙,但都架不住暴力窮舉,常用的算法就是回溯算法或者 BFS 算法,感興趣的話我們以后再聊。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4684

    瀏覽量

    94391
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    419

    瀏覽量

    26308

原文標(biāo)題:益智游戲克星:BFS暴力搜索算法

文章出處:【微信號(hào):TheAlgorithm,微信公眾號(hào):算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    百度搜索與文心智能體平臺(tái)接入DeepSeek及文心大模型深度搜索

    夠免費(fèi)使用DeepSeek和文心大模型的深度搜索功能。這一功能不僅融合了先進(jìn)的搜索算法,還借助文心大模型的強(qiáng)大能力,實(shí)現(xiàn)了對(duì)信息的深度挖掘和精準(zhǔn)匹配。用戶在進(jìn)行搜索時(shí),將能夠獲得更加全面、準(zhǔn)確的結(jié)果,滿足多樣化的需求。 同時(shí),文
    的頭像 發(fā)表于 02-17 09:14 ?457次閱讀

    領(lǐng)益智造與XREAL合作,深耕XR產(chǎn)業(yè)

    近日,領(lǐng)益智造在互動(dòng)平臺(tái)上明確表示,公司在XR(擴(kuò)展現(xiàn)實(shí))產(chǎn)業(yè)領(lǐng)域已深耕多年,專注于為AR(增強(qiáng)現(xiàn)實(shí))、VR(虛擬現(xiàn)實(shí))、MR(混合現(xiàn)實(shí))等智能穿戴設(shè)備提供核心組件和技術(shù)支持。作為該領(lǐng)域的佼佼者,領(lǐng)
    的頭像 發(fā)表于 01-14 10:19 ?1084次閱讀

    基于PY32MD310單片機(jī)開發(fā)的11萬轉(zhuǎn)強(qiáng)力渦輪暴力風(fēng)扇方案介紹

    今天給大家介紹下我們的11萬轉(zhuǎn)高速暴力風(fēng)扇方案,搭載了11萬轉(zhuǎn)高性能無刷電機(jī)、采用獨(dú)特旋鈕設(shè)計(jì)產(chǎn)出更大風(fēng)力。暴力風(fēng)扇在日常生活中有著很好的應(yīng)用??梢杂米鲆恍╇娮赢a(chǎn)品清灰,寵物毛發(fā)吹干,除塵助燃等
    的頭像 發(fā)表于 01-02 17:52 ?650次閱讀

    算法到生命,自動(dòng)化人工生命搜索已然顯現(xiàn)?

    」像生命體一樣運(yùn)作。 ASAL 其中一位研究者 Phillip Isola 近日,Sakana AI團(tuán)隊(duì)攜手麻省理工學(xué)院(MIT)、開放人工智能研究院(OpenAI)以及瑞士AI實(shí)驗(yàn)室IDSIA等機(jī)構(gòu)研究人員,共同提出了“自動(dòng)化人工生命搜索”(ASAL)的新算法。 尤其,
    的頭像 發(fā)表于 12-31 10:54 ?304次閱讀
    從<b class='flag-5'>算法</b>到生命,自動(dòng)化人工生命<b class='flag-5'>搜索</b>已然顯現(xiàn)?

    暴力風(fēng)扇方案:高轉(zhuǎn)速強(qiáng)勁風(fēng)力無刷風(fēng)扇方案

    在當(dāng)今科技高速發(fā)展的時(shí)代,電子設(shè)備的性能不斷提升,散熱問題也日益成為關(guān)注的焦點(diǎn)。而 13w 高轉(zhuǎn)速暴力風(fēng)扇方案的出現(xiàn),為解決各種設(shè)備的散熱難題提供了強(qiáng)大的技術(shù)支持。 一、高轉(zhuǎn)速暴力風(fēng)扇的重要性 隨著
    的頭像 發(fā)表于 12-30 17:48 ?1243次閱讀

    ChatGPT新增實(shí)時(shí)搜索與高級(jí)語音功能

    。OpenAI對(duì)搜索算法進(jìn)行了深度優(yōu)化,使得ChatGPT能夠在用戶提出問題后,迅速獲取到分鐘級(jí)別的最新信息,包括股票、新聞等。這一功能的加入,極大地滿足了用戶對(duì)即時(shí)數(shù)據(jù)的需求,使得ChatGPT在各類應(yīng)用場景中更加得心應(yīng)手。 同時(shí),ChatGPT還推出了高級(jí)語音功能。在高級(jí)語
    的頭像 發(fā)表于 12-17 14:08 ?499次閱讀

    鼎盛合 無刷電機(jī)渦輪增壓暴力風(fēng)扇方案

    酷熱的夏天常常讓人感到煩躁不安,而風(fēng)扇作為一種便捷的消暑工具能夠?yàn)槿藗儙硪唤z清涼。傳統(tǒng)的有刷風(fēng)扇在使用過程中存在著一些噪音大、壽命短、風(fēng)力不夠強(qiáng)勁等問題。為了解決這些問題,暴力無刷風(fēng)扇應(yīng)運(yùn)而生。它
    的頭像 發(fā)表于 11-11 15:57 ?1059次閱讀

    UHF RFID自適應(yīng)射頻干擾對(duì)消技術(shù)

    。針對(duì)目前有源干擾對(duì)消技術(shù)存在的抑制效果和實(shí)時(shí)性較差的缺點(diǎn)在分析有源干擾對(duì)消原理的基礎(chǔ)上提出了基于改進(jìn)Powell 搜索算法的自適應(yīng)射頻干擾對(duì)消方案。設(shè)計(jì)了有源對(duì)消電路通過改進(jìn)的Powell 最優(yōu)值搜索算法實(shí)現(xiàn)電路控制參數(shù)的自適應(yīng)調(diào)節(jié)使電路工作在最優(yōu)的抑制狀態(tài)。測試結(jié)果表
    發(fā)表于 11-05 10:22 ?1次下載

    OpenAI推出ChatGPT搜索功能

    近日,OpenAI再次邁出了重要的一步,為其廣受好評(píng)的ChatGPT平臺(tái)添加了一項(xiàng)全新的搜索功能。 據(jù)悉,這項(xiàng)被命名為“ChatGPT搜索”的新功能,將為用戶帶來前所未有的搜索體驗(yàn)。以往,當(dāng)用戶需要
    的頭像 發(fā)表于 11-04 10:34 ?579次閱讀

    谷歌取消“站點(diǎn)鏈接搜索框”,適應(yīng)新搜索需求

    近日,谷歌發(fā)布了一則通知,決定取消搜索結(jié)果中的“站點(diǎn)鏈接搜索框”。這一功能已經(jīng)陪伴了用戶十多年,它允許用戶在特定網(wǎng)站上進(jìn)行更深入的搜索,為許多網(wǎng)民提供了便利。然而,隨著時(shí)代的變遷和技術(shù)的進(jìn)步,這一
    的頭像 發(fā)表于 10-23 11:20 ?569次閱讀

    MS3142 馬達(dá)驅(qū)動(dòng):電動(dòng)積木益智游戲的創(chuàng)新動(dòng)力

    在當(dāng)今科技飛速發(fā)展的時(shí)代,電動(dòng)積木益智游戲以其獨(dú)特的魅力吸引著眾多玩家,尤其是孩子們。而在這背后,MS3142 馬達(dá)驅(qū)動(dòng)發(fā)揮著至關(guān)重要的作用。接下來,讓我們一同深入探索 MS3142 馬達(dá)驅(qū)動(dòng)在電動(dòng)
    的頭像 發(fā)表于 09-14 17:37 ?589次閱讀

    電商搜索革命:大模型如何重塑購物體驗(yàn)?

    自我介紹:京東零售搜推算法算法工程師,專注于大模型技術(shù)以及在 AI 助手搜推等領(lǐng)域的應(yīng)用探索和實(shí)踐。在 AI 助手,NLP 和搜索領(lǐng)域有十多年研發(fā)實(shí)踐經(jīng)驗(yàn),在 AI/NLP 領(lǐng)域申請(qǐng)超過 15
    的頭像 發(fā)表于 08-19 15:09 ?484次閱讀

    基于 FPGA 的飛機(jī)大戰(zhàn)游戲系統(tǒng)設(shè)計(jì)

    第一部分 設(shè)計(jì)概述1.1 設(shè)計(jì)目的我們?cè)O(shè)計(jì)了一款基于 FPGA 的SEA開發(fā)板 的飛機(jī)大戰(zhàn)游戲。飛機(jī)大戰(zhàn)游戲是一款休閑益智游戲,既簡單又耐玩。在初始界面,我們有開始
    發(fā)表于 07-24 20:03

    仁懋MOSFET:驅(qū)動(dòng)13萬轉(zhuǎn)暴力風(fēng)扇無刷電機(jī)的隱形力量

    仁懋MOSFET驅(qū)動(dòng)13萬轉(zhuǎn)暴力風(fēng)扇無刷電機(jī)應(yīng)用炎炎夏日,一款性能卓越、風(fēng)力強(qiáng)勁的戶外暴力風(fēng)扇無疑是消暑利器。而在這背后,仁懋電子的MOSFET產(chǎn)品以其卓越的性能和穩(wěn)定性,成為了這些高性能風(fēng)扇
    的頭像 發(fā)表于 07-18 08:37 ?1149次閱讀
    仁懋MOSFET:驅(qū)動(dòng)13萬轉(zhuǎn)<b class='flag-5'>暴力</b>風(fēng)扇無刷電機(jī)的隱形力量

    揭秘谷歌搜索算法工作原理,與官方聲明存在矛盾

    有著十多年搜索引擎優(yōu)化經(jīng)驗(yàn)的蘭德·菲什金,近日透露他收到一份長達(dá)2500頁的文件,據(jù)稱這是對(duì)谷歌搜索算法工作原理的真實(shí)揭示,而非谷歌官方所聲稱的那樣。
    的頭像 發(fā)表于 05-29 16:00 ?814次閱讀