日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【控制】贪心算法(GA,Greedy Algorithm)及 Matlab 实现

發布時間:2025/4/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【控制】贪心算法(GA,Greedy Algorithm)及 Matlab 实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 算法思路
  • 應用實例
  • 仿真
  • Ref.

算法思路

貪心算法一般按如下步驟進行:

  • 建立數學模型來描述問題。
  • 把求解的問題分成若干個子問題。
  • 對每個子問題求解,得到子問題的局部最優解。
  • 把子問題的解局部最優解合成原來解問題的一個解。
  • 貪心算法是一種對某些求最優解問題的更簡單、更迅速的設計技術。貪心算法的特點是一步一步地進行,常以當前情況為基礎根據某個優化測度作最優選擇,而不考慮各種可能的整體情況,省去了為找最優解要窮盡所有可能而必須耗費的大量時間。貪心算法采用自頂向下,以迭代的方法做出相繼的貪心選擇,每做一次貪心選擇,就將所求問題簡化為一個規模更小的子問題,通過每一步貪心選擇,可得到問題的一個最優解。雖然每一步上都要保證能獲得局部最優解,但由此產生的全局解有時不一定是最優的,所以貪心算法不要回溯。

    對于一個具體問題,要確定它是否具有貪心選擇性質,必須證明每一步所作的貪心選擇最終導致問題的整體最優解。

    要確定一個問題是否適合用貪心算法求解,必須證明每一步所作的貪心選擇最終導致問題的整體最優解。證明的大致過程為:首先考察問題的一個整體最優解,并證明可修改這個最優解,使其以貪心選擇開始,做了貪心選擇后,原問題簡化為規模更小的類似子問題。然后用數學歸納法證明通過每一步做貪心選擇,最終可得到問題的整體最優解。

    應用實例

    例如,平時購物找零錢時,為使找回的零錢的硬幣數最少,不要求找零錢的所有方案,而是從最大面值的幣種開始,按遞減的順序考慮各面額,先盡量用大面值的面額,當不足大面值時才去考慮下一個較小面值,這就是貪心算法。

    仿真

    % PSO % Author: Zhao-Jichao % Date: 2021-10-06 clc clear%% n = 20 ; % 用于記錄點數x = zeros(1,n) ; % 產生一個與經過點數相同的行向量 y = zeros(1,n) ;best = 1:1:n; % 生成一個用來存儲點順序的矩陣 handle = 1:1:n;for i = 1 : (n) % 生成n個隨機數x(i) = rand * 20 ; y(i) = rand * 20 ; endd = zeros(n) ; for i = 1 : n for j = 1 : nd(i,j) = sqrt( ( x(i) - x(j) ) ^ 2 + ( y(i) - y(j) ) ^ 2) ; % 距離矩陣end endbest(1) = 1; % 默認起點 num = 1; for a = 1:(n-2) % 需要n-2次判斷handle(:,1)=[]; % 上一次最優點的數據裁掉dis = zeros(1,(n-a)); % 用來存剩下各個點的距離for b = 1:(n-a) % 用來獲取剩下各個點的距離dis(b) = d (num , handle(b)); endnum1 = find( dis == min(dis) ); % 得到最優點所在檢索t = handle(1); % 將最優點與最前面的點位置進行交換 handle(1) = handle(num1);handle(num1) = t;num = handle(1); % 獲取下次進行操作的數best(a+1) = handle(1); % 將最優點存入best數組 endbest(n) = handle(num1); % 補上最后一個點plot(x(best),y(best),'-+') ; % 用'+'標出點并用實線連接得到最優路徑 grid on

    Ref.

  • 貪心算法-百度百科
  • MATLAB實現貪心算法
  • 總結

    以上是生活随笔為你收集整理的【控制】贪心算法(GA,Greedy Algorithm)及 Matlab 实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。