女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一種優化的方法:記憶化搜索

算法與數據結構 ? 來源:小K算法 ? 作者:小K ? 2022-06-14 10:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

01 故事起源有一天小K去滑雪,雪山高低不平,當然小K只能從高的地方向低的地方滑,那如何選擇路線才能滑的最遠呢? 把這個問題抽象描述如下:

在一個二維地圖中,數值代表此處山的高度,在某個點只能滑向上下左右4個相鄰的點,最遠的滑行路線,也就等價于找出一條最長的數值下降路線。

比如下圖中的紅色路線就是此時最長的一條路線,長度為10。那要如何找出這樣的一條路線呢?
64a37f7a-eb88-11ec-ba43-dac502259ad0.jpg ? ?02 分析在每個點上,只能向周圍4個方向滑行,當然前提是此處的高度必須比周圍高。 64b7b616-eb88-11ec-ba43-dac502259ad0.jpg ?我們當然可以選擇盡可能高的位置出發,比如圖中17比15要高。 64ff5ffc-eb88-11ec-ba43-dac502259ad0.jpg ?但這種有可能會陷入局部最優解,比如從下圖中的15開始,最大長度為2。而從13開始會更優,長度為5。 65127cb8-eb88-11ec-ba43-dac502259ad0.jpg ?所以啟示我們,不能簡單的貪心,而是要考慮全局最優,因為每一個起點都有可能是最優的起點。
那就有了初步的框架了,從每一個起點出發,把可行的路線都找出來,也就是能走的路線都走一遍,再比較全局最優的就行了,而且這也正好符合深搜的算法框架。偽代碼

			intfind(inti,intj){  //向4個方向嘗試  for(i=0->3){  if(ok){  returnfind(next)+1  } } } intmain(){  for(i=0->n){  for(j=0->m) {  t=find(i,j)  ans=max(ans,t)  }  } }
			
									03
									問題上面的做法可以得到最優解,但有一個問題。如下例,以15為起點的時候,會嘗試把6->5->4->3->2->1走一遍。但以16為起點的時候,還會嘗試把這條路線走一遍,這就會導致大量的重復計算。
			653bb826-eb88-11ec-ba43-dac502259ad0.jpg
			?那能不能優化呢? 之所以重復計算,是因為每一次嘗試都是重新的開始,它并不知道這條路已經走過了,也就是沒有記憶,所以我們引入一種優化的方法,就是記憶化搜索。
			
									04
									記憶化搜索可以引入一個f[i][j]數組,記錄以(i,j)為起點所能找到的最長路線的長度,初始賦值為-1,表示還沒有走過。
			6544aac6-eb88-11ec-ba43-dac502259ad0.jpg
			?當走過一點,就將對應的f[i][j]更新為以(i,j)為起點的最大長度。 再回到上面的問題,因為之前肯定走過了(2,3),對應的f[2][3]為6,當嘗試從(2,4)出發時,會發現周圍已經走過了,只需要更新當前的值+1即可,就避免了重復計算。
			659bca36-eb88-11ec-ba43-dac502259ad0.jpg
			?
									?05
									代碼實現路線搜索

			intfind(vector<vector<int>>&snowMountain,vector<vector<int>>&f,inti,intj,intr,intc){ intx,y; if(f[i][j]!=-1) returnf[i][j]; f[i][j]=1; for(intk=0;k4;k++){ x=i+direction[k][0]; y=j+direction[k][1]; //validdirection if(x>=0&&x=0&&ysnowMountain[x][y]){ f[i][j]=maxOfTwo(f[i][j],find(snowMountain,f,x,y,r,c)+1); } } returnf[i][j]; }main函數

			intmain(){ ifstreamfin("a.in"); ofstreamfout("a.out"); inti,j,r,c,maxHeight=0; fin>>r>>c; vector<vector<int>>snowMountain(r,vector<int>(c,0)); vector<vector<int>>f(r,vector<int>(c,-1)); for(i=0;ifor(j=0;j>snowMountain[i][j]; for(i=0;ifor(j=0;jendl; fin.close(); fout.close(); return0; }
			
									06
									總結記憶化搜索是一種非常實用的算法,因為深搜用遞歸很容易實現,記憶化又避免了重復子問題的計算,提高了運行效率。 這其實就是動態規劃的思想,常見的動態規劃用遞推實現,相比記憶化搜索實現上會更難一點,而記憶化搜索就沒有這個問題。 算法的適用場景也需要根據具體的問題來分析,一般常用在地圖或者樹型結構中。
			
			審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4709

    瀏覽量

    95332
  • 代碼
    +關注

    關注

    30

    文章

    4900

    瀏覽量

    70671

原文標題:啥是記憶化搜索?

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    一種環保型紅色發煙彈主裝藥配方設計與優化

    (DSC)的功能,能夠在同實驗條件下同時獲得樣品的質量變化和熱流信息。一種環保型紅色發煙彈主裝藥配方設計與優化【(1、武警工程大學研究生大隊2、武警工程大學裝備
    的頭像 發表于 07-07 15:56 ?107次閱讀
    <b class='flag-5'>一種</b>環保型紅色發煙彈主裝藥配方設計與<b class='flag-5'>優化</b>

    無刷直流電機滑模觀測器參數優化設計方法

    摘要:滑模反電勢觀測器的增益參數會影響觀測器的收斂速度以及動態響應性能,常見的設計方法是基于觀測器穩定性理論進行設計。提出一種利用遺傳算法在穩定域內搜索觀測誤差最小的增益參數的新方法,
    發表于 06-27 16:48

    漢思新材料取得一種PCB板封裝膠及其制備方法的專利

    漢思新材料取得一種PCB板封裝膠及其制備方法的專利漢思新材料(深圳市漢思新材料科技有限公司)于2023年取得了項關于PCB板封裝膠及其制備方法的發明專利(專利號:CN20231015
    的頭像 發表于 06-27 14:30 ?159次閱讀
    漢思新材料取得<b class='flag-5'>一種</b>PCB板封裝膠及其制備<b class='flag-5'>方法</b>的專利

    一種分段氣隙的CLLC變換器平面變壓器設計

    氣隙設計的優點。 目錄1 概述2 一種分段氣隙的CLLC平面變壓器設計3 實驗驗證4 參考文獻 1 概述學者們從LLC拓撲原理、新型器件、改進拓撲、先進調制方法、諧振參數優化方法、磁性
    發表于 03-27 13:57

    一種永磁電機用轉子組件制作方法

    一種永磁電機所使用的轉子組件,是由磁鋼與芯軸組裝而成,產品工作轉速80 000 r /mi n,磁鋼相對于芯軸的同軸度要小于O.015 mm。現有的裝配方法是:先在芯軸兩端面制作中心孔,然后直接
    發表于 03-25 15:20

    VirtualLab Fusion應用:參數優化文檔介紹

    局部優化算法和一種全局優化算法。 參數優化文檔 可以為光學裝置生成參數優化文檔,該光學裝置通過探測器或分析儀輸出要
    發表于 02-28 08:44

    記憶示波器的原理和應用

    記憶示波器是一種基于數字處理原理的測量儀器,其原理和應用可以從以下幾個方面進行詳細介紹:記憶示波器的原理 核心組件:記憶示波器的核心是
    發表于 01-06 15:50

    一種面向飛行試驗的數據融合框架

    天地氣動數據致性,針對某外形飛行試驗數據開展了典型對象的天地氣動數據融合方法研究。結合數據挖掘的隨機森林方法,本文提出了一種面向飛行試驗的數據融合框架,通過引入地面風洞試驗氣動數據,
    的頭像 發表于 11-27 11:34 ?842次閱讀
    <b class='flag-5'>一種</b>面向飛行試驗的數據融合框架

    一種創新的動態軌跡預測方法

    本文提出了一種動態軌跡預測方法,通過結合歷史幀和歷史預測結果來提高預測的穩定性和準確性。它引入了歷史預測注意力模塊,以編碼連續預測之間的動態關系,并通過三重因子注意力模塊實現了最先進的性能。本方法能夠生成準確且穩定的未來軌跡,這
    的頭像 發表于 10-28 14:34 ?1079次閱讀
    <b class='flag-5'>一種</b>創新的動態軌跡預測<b class='flag-5'>方法</b>

    一種基于光強度相關反饋的波前整形方法

    基于反饋的波前整形通過散射介質聚焦光是一種成熟的方法。在傳統的基于反饋的波前整形中,入射光被分成N個輸入模式,這些模式由空間光調制器(SLM)使用N個段進行調制,每個段具有相同數量和大小的像素
    的頭像 發表于 10-27 16:28 ?692次閱讀
    <b class='flag-5'>一種</b>基于光強度相關反饋的波前整形<b class='flag-5'>方法</b>

    一種簡單高效配置FPGA的方法

    本文描述了一種簡單高效配置FPGA的方法,該方法利用微處理器從串行外圍接口(SPI)閃存配置FPGA設備。這種方法減少了硬件組件、板空間和成本。
    的頭像 發表于 10-24 14:57 ?1604次閱讀
    <b class='flag-5'>一種</b>簡單高效配置FPGA的<b class='flag-5'>方法</b>

    谷歌取消“站點鏈接搜索框”,適應新搜索需求

    功能的取消似乎并未對用戶產生太大影響。 在當下這個信息快速更新的時代,人們不斷嘗試和探索新的搜索方式和工具,以獲取更加精準和全面的信息。谷歌的這決定,或許正是其適應新時代用戶需求的一種體現。 同時,谷歌也在
    的頭像 發表于 10-23 11:20 ?665次閱讀

    BitEnergy AI公司開發出一種新AI處理方法

    BitEnergy AI公司,家專注于人工智能(AI)推理技術的企業,其工程師團隊創新性地開發了一種名為線性復雜度乘法(L-Mul)的AI處理方法。該方法的核心在于,它用整數加法替代
    的頭像 發表于 10-22 15:15 ?822次閱讀

    一種利用wireshark對遠程服務器/路由器網絡抓包方法

    一種利用wireshark對遠程服務器/路由器網絡抓包方法
    的頭像 發表于 09-21 08:03 ?4870次閱讀
    <b class='flag-5'>一種</b>利用wireshark對遠程服務器/路由器網絡抓包<b class='flag-5'>方法</b>

    一種無透鏡成像的新方法

    使用OAM-HHG EUV光束對高度周期性結構進行成像的EUV聚光顯微鏡 為了研究微電子或光子元件中的納米級圖案,一種基于無透鏡成像的新方法可以實現近乎完美的高分辨率顯微鏡。 層析成像是一種強大的無
    的頭像 發表于 07-19 06:20 ?762次閱讀
    <b class='flag-5'>一種</b>無透鏡成像的新<b class='flag-5'>方法</b>