自動(dòng)生成空洞騎士速通路線的設(shè)想(空想)
建模成一個(gè)圖上的轉(zhuǎn)移。令地圖每一面各個(gè)入口作為圖的結(jié)點(diǎn),直接相連的結(jié)點(diǎn)(如同一面的兩端)作為邊。
同時(shí)維護(hù)一個(gè)狀態(tài)向量,其中的每一維可以包括:當(dāng)前總耗時(shí)(可以是概率分布),當(dāng)前位于哪個(gè)結(jié)點(diǎn),是否具有某能力、物品,是否裝備了某護(hù)符,具有的血量和靈魂(可以是概率分布),是否處于超沖狀態(tài)(以繼承上一面的超沖),某道門開沒開等等任何影響速通目標(biāo)和圖上移動(dòng)速度的狀態(tài)。
那么我們實(shí)際上做的是狀態(tài)向量之間的轉(zhuǎn)移,某個(gè)符合一定條件的狀態(tài)向量可以轉(zhuǎn)移成另一個(gè)狀態(tài)向量(消耗一定的時(shí)間、血量、靈魂獲得某一能力、移動(dòng)到另一位置、改變其他狀態(tài)等)。所以其實(shí)搜索是在狀態(tài)向量為點(diǎn)的圖上搜。
優(yōu)化的目標(biāo)是,從初始向量開始,使最終的狀態(tài)向量滿足一定條件,且總耗時(shí)盡可能小。樸素的算法就是從初始向量開始bfs。能想到的簡(jiǎn)單剪枝是,引入一定的記憶化,如果判斷某個(gè)狀態(tài)向量嚴(yán)格劣于另一個(gè)就剪掉,避免到處閑逛。另一個(gè)想法是給bfs隊(duì)列加權(quán),衡量當(dāng)前狀態(tài)和目標(biāo)狀態(tài)的相似度,然后和時(shí)間結(jié)合作為權(quán)值,做一個(gè)優(yōu)先隊(duì)列bfs。
這東西如果有應(yīng)用價(jià)值,那應(yīng)該是在tas或者長(zhǎng)流程。前者可以保證每一面基本耗時(shí)固定,不受概率影響(這樣就不用建模成概率分布)。后者則是流程太長(zhǎng),人設(shè)計(jì)的路線不一定完美。
但是問題是,狀態(tài)向量的轉(zhuǎn)移要多長(zhǎng)時(shí)間,這是要人自己去輸入的。也就是說把它搞出來有很大成本(雖然搞出來之后維護(hù)更新很簡(jiǎn)單,改一下數(shù)據(jù)然后在已有結(jié)果上跑就可以,已有結(jié)果應(yīng)該會(huì)讓剪枝很充分),而且只能讓已有想法最優(yōu)。像酸淚線這種,如果最初根本沒有這樣的跑法,也就不會(huì)輸入到算法里,也就不可能生成出來。不過這種東西,簡(jiǎn)化一下應(yīng)該能當(dāng)個(gè)大模擬題。