<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • JAVA認證基礎知識:近似算法格雷厄姆算法簡介

    時間:2024-10-29 14:32:43 JAVA認證 我要投稿
    • 相關推薦

    JAVA認證基礎知識:近似算法(格雷厄姆算法)簡介

      之前做了很多貪心算法,他們都能找到最優(yōu)解,這也是之所以用貪心算法的原因。貪心算法較之其他,最大的優(yōu)勢體現(xiàn)在時間復雜度低,空間復雜度也比較低。對于試用貪心算法的題型,有兩個重要特征:貪心策略與最優(yōu)子結(jié)構(gòu)。貪心策略即每步采取策略的依據(jù);最優(yōu)子結(jié)構(gòu)則是指問題的求解可以轉(zhuǎn)化為求解子問題的最優(yōu)解。這點與動態(tài)規(guī)劃有點像,但后者要枚舉問題的解空間,資源消耗很大。

    JAVA認證基礎知識:近似算法(格雷厄姆算法)簡介

      貪心算法不一定保證得到最優(yōu)解,但很多時候用其他方法的無效(有的是確實沒有解決方法,有的是復雜度難以接受),在這種情況下我們可以嘗試用近似算法,根據(jù)一定的有效貪心策略,哪怕得不到最優(yōu)解,但權衡之下也是可以接受的。

      例如給定若干物品,要求盡可能的將它們分成質(zhì)量相近的兩堆。如物品數(shù)為5,重量分別為3,3,2,2,2,很容易根據(jù)經(jīng)驗判斷分成3+3和 2+2+2的兩堆。但這是一個2^n級難題,數(shù)據(jù)量一大就出現(xiàn)組合爆炸。解決該問題目前還沒有無有效的方法。枚舉法可以得到最優(yōu)解,但時間復雜度為 O(2^n),難以接受。下面是n<=15時的枚舉法,用位操作簡化計算。

      #include

      #include

      using namespace std;

      const int MAXN=20;

      int w[MAXN];

      int used[MAXN];

      const int INF=1<<30;

      int n,id,sum;

      int Solve()

      {

      int min,cnt=1

      memset(used,0,sizeof(used));

      for(int i=0;i>w[i];

      int ans=Solve();

      for(int i=0;i運行結(jié)果為:2+2+2=6 3+3=6

      格雷厄姆提出了解決該問題的近似算法。即每次從尚未分堆的物品中選擇最大我w[i]的,然后分別將它試探性加到已分的兩堆(a1,b1)中,若|a1+w[i]-b1|>|a1-w[i]-b1|,澤加到b1中;否則加到

      a1中。已有神牛可以證明這樣的最終結(jié)果與最優(yōu)解的誤差不超過16%。下面是格雷厄姆算法的實現(xiàn)。

      #include

      #include

      #include

      using namespace std;

      const int MAXN=20;

      int w[MAXN];

      int used[MAXN];

      int n,a,b;

      void Solve()

      {

      sort(w,w+n);

      a=0,b=0;

      for(int i=n-1;i>=0;i--)

      {

      if(abs(a+w[i]-b)<=abs(a-w[i]-b))

      {

      a+=w[i];

      used[i]=true;

      }

      else b+=w[i];

      }

      }

      int main()

      {

      cin>>n;

      memset(used,0,sizeof(used));

      for(int i=0;i>w[i];

      Solve();

      printf(" 第一堆為:");

      for(int i=0;i運行結(jié)果為:2+2+3=7 2+3=7

      在有些情況下是完全可以接受近似算法的。

    【JAVA認證基礎知識:近似算法格雷厄姆算法簡介】相關文章:

    JAVA認證簡介03-19

    JAVA認證基礎知識:Java獲取當前的系統(tǒng)時間03-18

    JAVA認證基礎知識:JavaNativeInterface學習小結(jié)01-11

    Java認證輔導:Java實現(xiàn)二叉樹遍歷算法03-19

    Java認證基礎知識:java字符串轉(zhuǎn)化整型問題03-18

    JAVA認證基礎知識:JSP使用數(shù)據(jù)庫操作03-18

    JAVA認證基礎知識:基于反射機制的服務代理調(diào)用03-08

    Adobe認證技能認證簡介03-19

    Adobe認證ning認證簡介03-19

    主站蜘蛛池模板: 一本大道久久a久久精品综合| 奇米影视7777久久精品| 亚洲精品高清一二区久久| 91精品国产91久久综合| 一区二区三区精品高清视频免费在线播放| 国产精品黄网站| 亚洲日韩一页精品发布| 国内精品99亚洲免费高清| 国产精品爽黄69天堂a| 人妻精品久久久久中文字幕69| 免费精品久久久久久中文字幕 | 国产精品va久久久久久久| 国产麻豆一精品一AV一免费| 亚洲精品国产自在久久| 国产精品国产三级国产a| 久久97精品久久久久久久不卡| 激情亚洲一区国产精品| 尤物TV国产精品看片在线| 久久精品无码av| 国产成人精品在线观看| 青青青国产依人精品视频| 1000部精品久久久久久久久| 亚洲国产精品久久电影欧美| 老子影院午夜精品无码| 国产午夜精品久久久久九九电影 | 久久久精品久久久久久 | 97精品一区二区视频在线观看| 亚洲欧美日韩久久精品第一区 | 国内精品久久久久久99蜜桃| 爽爽精品dvd蜜桃成熟时电影院| 亚洲国产人成精品| 亚洲国产综合精品一区在线播放| 欧美精品国产一区二区三区| 欧美精品成人3d在线| 午夜精品久久久内射近拍高清| 欧美日韩精品一区二区三区不卡| 久久久久久国产精品免费免费| 久久久99精品一区二区| 亚洲国产小视频精品久久久三级| 亚洲午夜精品一级在线播放放| 亚洲中文久久精品无码ww16 |