日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

關(guān)于貪心算法詳解

新機器視覺 ? 來源:CSDN ? 作者:一葉執(zhí)念 ? 2022-04-07 09:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


															

顧名思義,貪心算法總是作出在當前看來最好的選擇。也就是說貪心算法并不從整體最優(yōu)考慮,它所作出的選擇只是在某種意義上的局部最優(yōu)選擇。

當然,希望貪心算法得到的最終結(jié)果也是整體最優(yōu)的。雖然貪心算法不能對所有問題都得到整體最優(yōu)解,但對許多問題它能產(chǎn)生整體最優(yōu)解。

如單源最短路經(jīng)問題,最小生成樹問題等。在一些情況下,即使貪心算法不能得到整體最優(yōu)解,其最終結(jié)果卻是最優(yōu)解的很好近似。

基本思路:

1. 建立數(shù)學模型來描述問題。

⒉.把求解的問題分成若干個子問題。

⒊.對每一子問題求解,得到子問題的局部最優(yōu)解。

⒋.把子問題的解局部最優(yōu)解合成原來解問題的一個解。

實現(xiàn)該算法的過程:

⒈.從問題的某一初始解出發(fā);

2. while 能朝給定總目標前進一步 do

3.求出可行解的一個解元素;

4.由所有解元素組合成問題的一個可行解。從問題的某一初始解出發(fā)

背包問題

有一個背包,最多能承載150斤的重量,現(xiàn)在有7個物品,重量分別為[35, 30, 60, 50, 40, 10, 25],它們的價值分別為[10, 40, 30, 50, 35, 40, 30],應該如何選擇才能使得我們的背包背走最多價值的物品?

把物品一個個的往包里裝,要求裝入包中的物品總價值最大,要讓總價值最大,就可以想到怎么放一個個的物品才能讓總的價值最大,因此可以想到如下三種選擇物品的方法,即可能的局部最優(yōu)解:

1:每次都選擇價值最高的往包里放。

2:每次都選擇重量最小的往包里放。

3:每次都選擇單位重量價值最高的往包里放。

4:選擇價值最高的,按照制訂的規(guī)則(價值)進行計算,順序是:4 2 6 5 。

最終的總重量是:130;最終的總價值是:165。

2:選擇重量最小的,按照制訂的規(guī)則(重量)進行計算,順序是:6 7 2 1 5 。

最終的總重量是:140;最終的總價值是:155??梢钥吹?,重量優(yōu)先是沒有價值優(yōu)先的策略更好。

3:選擇單位密度價值最大的,按照制訂的規(guī)則(單位密度)進行計算,順序是:6 2 7 4 1。

最終的總重量是:150;最終的總價值是:170。

可以看到,單位密度這個策略比之前的價值策略和重量策略都要好。

單源最大路徑問題

給定帶權(quán)有向圖G =(V,E),其中每條邊的權(quán)是非負實數(shù)。另外,還給定V中的一個頂點,稱為源。現(xiàn)在要計算從源到所有其它各頂點的最短路長度。這里路的長度是指路上各邊權(quán)之和。這個問題通常稱為單源最短路徑問題。

Dijkstra算法是解單源最短路徑問題的貪心算法。

其基本思想是,設置頂點集合S并不斷地作貪心選擇來擴充這個集合。一個頂點屬于集合S當且僅當從源到該頂點的最短路徑長度已知。

初始時,S中僅含有源。設u是G的某一個頂點,把從源到u且中間只經(jīng)過S中頂點的路稱為從源到u的特殊路徑,并用數(shù)組dist記錄當前每個頂點所對應的最短特殊路徑長度。

Dijkstra算法每次從V-S中取出具有最短特殊路長度的頂點u,將u添加到S中,同時對數(shù)組dist作必要的修改。一旦S包含了所有V中頂點,dist就記錄了從源到所有其它頂點之間的最短路徑長度。

例如,對下圖中的有向圖,應用Dijkstra算法計算從源頂點1到其它頂點間最短路徑的過程列在下表中。

018a7ffe-b606-11ec-aa7f-dac502259ad0.png

Dijkstra算法的迭代過程:

01a2dcd4-b606-11ec-aa7f-dac502259ad0.png

算法的正確性和計算復雜性

(1)貪心選擇性質(zhì)

(2)最優(yōu)子結(jié)構(gòu)性質(zhì)

(3)計算復雜性

對于具有n個頂點和e條邊的帶權(quán)有向圖,如果用帶權(quán)鄰接矩陣表示這個圖,那么Dijkstra算法的主循環(huán)體需要O(n)時間。這個循環(huán)需要執(zhí)行n-1次,所以完成循環(huán)需要O(n)時間。算法的其余部分所需要時間不超過O(n^2)。

代碼實現(xiàn)(來自于第四個參考鏈接):

#include #include #include using namespace std ;
class BBShortestDijkstra{public:  BBShortestDijkstra (const vector<vector<int> >& vnGraph)     :m_cnMaxInt (numeric_limits<int>::max())   {    m_vnGraph = vnGraph ;    m_stCount = vnGraph.size () ;    m_vnDist.resize (m_stCount) ;    for (size_t i = 0; i < m_stCount; ++ i) {      m_vnDist[i].resize (m_stCount) ;    }  }    void doDijkatra (){    int nMinIndex = 0 ;    int nMinValue = m_cnMaxInt ;    vector<bool> vbFlag (m_stCount, false) ;    for (size_t i = 0; i < m_stCount; ++ i) {      m_vnDist[0][i] = m_vnGraph[0][i] ;      if (nMinValue > m_vnGraph[0][i]) {        nMinValue = m_vnGraph[0][i] ;        nMinIndex = i ;      }    }
    vbFlag[0] = true ;    size_t k = 1 ;    while (k < m_stCount) {      vbFlag[nMinIndex] = true ;      for (size_t j = 0; j < m_stCount ; ++ j) {        // 沒有被選擇        if (!vbFlag[j] && m_vnGraph[nMinIndex][j] != m_cnMaxInt ) {          if (m_vnGraph[nMinIndex][j] + nMinValue            < m_vnDist[k-1][j]) {            m_vnDist[k][j] = m_vnGraph[nMinIndex][j] + nMinValue ;          }          else {            m_vnDist[k][j] = m_vnDist[k-1][j] ;          }        }        else {          m_vnDist[k][j] = m_vnDist[k-1][j] ;        }      }      nMinValue = m_cnMaxInt ;      for (size_t j = 0; j < m_stCount; ++ j) {        if (!vbFlag[j] && (nMinValue > m_vnDist[k][j])) {          nMinValue = m_vnDist[k][j] ;          nMinIndex = j ;        }      }      ++ k ;    }
    for (int i = 0; i < m_stCount; ++ i) {      for (int j = 0; j < m_stCount; ++ j) {        if (m_vnDist[i][j] == m_cnMaxInt) {          cout << "maxint " ;        }        else {          cout << m_vnDist[i][j] << " " ;        }      }      cout << endl ;    }  }private:   vector<vector<int> >  m_vnGraph ;  vector<vector<int> >  m_vnDist ;  size_t m_stCount ;  const int m_cnMaxInt ;} ;
int main(){  const int cnCount = 5 ;  vector<vector<int> > vnGraph (cnCount) ;  for (int i = 0; i < cnCount; ++ i) {    vnGraph[i].resize (cnCount, numeric_limits<int>::max()) ;  }  vnGraph[0][1] = 10 ;  vnGraph[0][3] = 30 ;  vnGraph[0][4] = 100 ;  vnGraph[1][2] = 50 ;  vnGraph[2][4] = 10 ;  vnGraph[3][2] = 20 ;  vnGraph[3][4] = 60 ;
  BBShortestDijkstra bbs (vnGraph) ;  bbs.doDijkatra () ;}

貪心算法三個核心問題

第一個問題:為什么不直接求全局最優(yōu)解?

1.原問題復雜度過高;

2.求全局最優(yōu)解的數(shù)學模型難以建立;

3.求全局最優(yōu)解的計算量過大;

4.沒有太大必要一定要求出全局最優(yōu)解,“比較優(yōu)”就可以。

第二個問題:如何把原問題分解成子問題?

1、按串行任務分

時間串行的任務,按子任務來分解,即每一步都是在前一步的基礎上再選擇當前的最優(yōu)解。

2、按規(guī)模遞減分

規(guī)模較大的復雜問題,可以借助遞歸思想(見第2課),分解成一個規(guī)模小一點點的問題,循環(huán)解決,當最后一步的求解完成后就得到了所謂的“全局最優(yōu)解”。

3、按并行任務分

這種問題的任務不分先后,可能是并行的,可以分別求解后,再按一定的規(guī)則(比如某種配比公式)將其組合后得到最終解。

第三個問題:如何知道貪心算法結(jié)果逼近了全局最優(yōu)值?

這個問題是不能量化判斷的,正是因為全局最優(yōu)值不能夠知道,所以才求的局部最優(yōu)值。追求過程需要考慮以下幾個問題:

1.成本

耗費多少資源,花掉多少編程時間。

2.速度

計算量是否過大,計算速度能否滿足要求。

3.價值

得到了最優(yōu)解與次優(yōu)解是否真的有那么大的差別,還是說差別可以忽略。

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

    關(guān)注

    23

    文章

    4810

    瀏覽量

    98619
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3834

    瀏覽量

    52289
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4977

    瀏覽量

    74420

原文標題:貪心算法詳解

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    AI 算法核心知識清單(深度實戰(zhàn)版2)

    三、機器學習核心算法(入門到實戰(zhàn))?1.監(jiān)督學習算法(已知標簽的模型訓練)?線性模型?線性回歸(回歸任務):?核心原理:假設y=w?+w?x?+w?x?+...+w?x?+ε(ε為誤差項),通過
    的頭像 發(fā)表于 04-24 11:58 ?223次閱讀
    AI <b class='flag-5'>算法</b>核心知識清單(深度實戰(zhàn)版2)

    端子電流循環(huán)壽命試驗機核心算法解析:溫升預測模型與壽命衰減曲線擬合

    端子電流循環(huán)壽命試驗機的核心算法,是實現(xiàn)端子壽命精準預測、測試過程智能管控的關(guān)鍵,其中溫升預測模型與壽命衰減曲線擬合兩大核心算法,分別解決了測試過程中的溫度動態(tài)調(diào)控與壽命趨勢研判問題,共同構(gòu)建起科學
    的頭像 發(fā)表于 04-02 09:21 ?200次閱讀
    端子電流循環(huán)壽命試驗機核<b class='flag-5'>心算法</b>解析:溫升預測模型與壽命衰減曲線擬合

    【硬核拆解】別被“吹膜”標簽騙了!深扒海納張力變頻器的全場景控制算法

    自適應慣量辨識,深度解析海納如何憑借一套核心算法,通吃鋰電、印刷、紡織等全場景卷繞控制。 一、引言:是“專用機”還是“通用平臺”? 很多工程師在選型時,看到海納在吹膜機上的高占有率,便下意識認為它只適合塑料薄膜行業(yè)。
    的頭像 發(fā)表于 03-25 10:22 ?151次閱讀

    深入淺出GMSSL:掌握SM2、SM3、SM4國密算法的高效實踐

    將帶你從零開始,深入理解這三大核心算法在GMSSL中的高效使用方式,幫助你在實際項目中快速落地國密安全方案。 本文將以通信定位二合一系列Air780EGH核心板為例,帶你快速上手GMSSL國密算法SM2、SM3、SM4相關(guān)示例。 一、SM2:橢圓曲線公鑰密碼
    的頭像 發(fā)表于 12-12 18:20 ?994次閱讀
    深入淺出GMSSL:掌握SM2、SM3、SM4國密<b class='flag-5'>算法</b>的高效實踐

    藍牙信標、UWB等主流室內(nèi)定位無線技術(shù)的參數(shù)對比、核心算法和選型指南詳解(二)

    本文系統(tǒng)解析室內(nèi)定位無線技術(shù),涵蓋藍牙、Wi-Fi、UWB、RFID、超聲波、可見光等主流技術(shù)的原理、參數(shù)對比與核心算法(RSSI、TDOA、AoA),并提供按精度、成本、場景匹配的選型指南,助力民用、工業(yè)、資產(chǎn)盤點及特殊環(huán)境下的最優(yōu)技術(shù)選擇。
    的頭像 發(fā)表于 12-12 16:28 ?1976次閱讀
    藍牙信標、UWB等主流室內(nèi)定位無線技術(shù)的參數(shù)對比、核<b class='flag-5'>心算法</b>和選型指南<b class='flag-5'>詳解</b>(二)

    芯片專家精準賦能:超聲切割技術(shù)迎來核心算法突破新契機

    算法與硬件平臺的協(xié)同挑戰(zhàn)在技術(shù)對接過程中,固特超聲技術(shù)總監(jiān)坦言面臨的三大技術(shù)難題:"雖然我們已構(gòu)建基于DSP或FPGA的全數(shù)字控制平臺,實現(xiàn)了超聲電源系統(tǒng)的數(shù)字
    的頭像 發(fā)表于 11-11 18:18 ?961次閱讀
    芯片專家精準賦能:超聲切割技術(shù)迎來核<b class='flag-5'>心算法</b>突破新契機

    SM4算法實現(xiàn)分享(一)算法原理

    SM4分組加密算法采用的是非線性迭代結(jié)構(gòu),以字為單位進行加密、解密運算,每次迭代稱為一輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密算法與密鑰擴展都是采用32輪非線性迭代結(jié)構(gòu)
    發(fā)表于 10-30 08:10

    Camellia算法的實現(xiàn)二(基于開源蜂鳥E203協(xié)處理器)

    115200波特率向FPGA發(fā)送數(shù)據(jù)或密鑰數(shù)據(jù),UART_RX模塊接收到數(shù)據(jù)后,進行串并轉(zhuǎn)換,并將轉(zhuǎn)換后的數(shù)據(jù)傳給Camellia的核心算法模塊進行處理。經(jīng)過處理后的數(shù)據(jù),并進行并串轉(zhuǎn)換后,通過UART_TX
    發(fā)表于 10-30 06:35

    商品價格動態(tài)調(diào)整接口技術(shù)詳解

    ? ?在電商或零售系統(tǒng)中,商品價格需根據(jù)市場動態(tài)(如供需變化、競爭環(huán)境)實時調(diào)整,以最大化利潤和競爭力。本文將從接口設計、核心算法、實現(xiàn)代碼到優(yōu)化策略,逐步解析如何構(gòu)建一個高效的“商品價格動態(tài)調(diào)整
    的頭像 發(fā)表于 10-13 15:49 ?572次閱讀
    商品價格動態(tài)調(diào)整接口技術(shù)<b class='flag-5'>詳解</b>

    數(shù)據(jù)濾波算法的具體實現(xiàn)步驟是怎樣的?

    (高頻電磁、瞬時脈沖等),選擇適配的濾波算法并落地。以下以電能質(zhì)量監(jiān)測中最常用的 IIR 低通濾波(抗高頻干擾)、滑動平均濾波(抗瞬時脈沖)、卡爾曼濾波(抗動態(tài)波動) 為例,詳解具體實現(xiàn)步驟: 一、前置準備:明確濾波目標與硬件基
    的頭像 發(fā)表于 10-10 16:45 ?1029次閱讀

    液態(tài)金屬電阻率測試儀的核心算法與信號處理技術(shù)

    液態(tài)金屬電阻率測試儀之所以能在科研與工業(yè)領(lǐng)域精準捕捉液態(tài)金屬的電學特性,背后離不開核心算法與信號處理技術(shù)的協(xié)同支撐。這兩大技術(shù)如同測試儀的“智慧大腦” 與 “敏銳感官”,前者負責將原始測量數(shù)據(jù)轉(zhuǎn)化
    的頭像 發(fā)表于 09-01 09:21 ?765次閱讀
    液態(tài)金屬電阻率測試儀的核<b class='flag-5'>心算法</b>與信號處理技術(shù)

    三坐標測量機路徑規(guī)劃與補償技術(shù):核心算法解析

    三坐標測量的微米級精度背后,是精密的路徑規(guī)劃算法與實時補償技術(shù)在保駕護航。三坐標測量機的智能避撞算法保障了測量的安全與高效;溫度補償技術(shù)消除了環(huán)境的無形干擾;點云智能處理則讓海量數(shù)據(jù)蛻變?yōu)榫珳实墓こ?/div>
    的頭像 發(fā)表于 08-01 14:15 ?1834次閱讀
    三坐標測量機路徑規(guī)劃與補償技術(shù):核<b class='flag-5'>心算法</b>解析

    shimetapi:開源RGB+EVS視覺融合相機事件相機工具鏈與算法

    的接口控制和算法處理。 一、shimetapi_Hybrid_vision_algo (算法層 SDK) 定位: 這是 SDK 的核心算法處理層,位于架構(gòu)的中間層(黃色部分)。 核心功能: 專注于處理來自
    的頭像 發(fā)表于 06-26 13:52 ?869次閱讀

    SVPWM的原理及法則推導和控制算法詳解

    小,使得電機轉(zhuǎn)矩脈動降低,旋轉(zhuǎn)磁場更逼近圓形,而且使直流母線電壓的利用率有了很大提高,且更易于實現(xiàn)數(shù)字化。下面將對該算法進行詳細分析闡述。 1.1 SVPWM 基本原理 SVPWM 的理論基礎
    發(fā)表于 06-16 17:11

    SSH常用命令詳解

    SSH常用命令詳解
    的頭像 發(fā)表于 06-04 11:30 ?2213次閱讀
    宣化县| 金阳县| 绥化市| 长治县| 宁化县| 哈尔滨市| 新竹市| 辰溪县| 伊宁市| 栾川县| 讷河市| 永宁县| 报价| 得荣县| 丰镇市| 汶上县| 夏邑县| 鄯善县| 衡阳县| 西乡县| 绩溪县| 云龙县| 宜昌市| 渭南市| 黄陵县| 小金县| 儋州市| 宁蒗| 桐城市| 吴川市| 苏州市| 肥东县| 商城县| 莱阳市| 大新县| 南川市| 安岳县| 屯留县| 齐河县| 定西市| 云梦县|