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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

算法设计思想(1)— 穷举法

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法设计思想(1)— 穷举法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文系 王曉華 老師 GitChat 【算法應該怎么玩】課程筆記。

1. 窮舉法概念

窮舉法又稱窮舉搜索法,是一種在問題域的解空間中對所有可能的解窮舉搜索,并根據條件選擇最優解的方法的總稱。

數學上也把窮舉法稱為枚舉法,就是在一個由有限個元素構成的集合中,把所有元素一一枚舉研究的方法。

窮舉法一般用來找出符合條件的所有解,但是如果給出最優解的判斷條件,窮舉法也可以用于求解最優解問題。

2. 設計思路

使用窮舉法解決問題,基本上就是以下兩個步驟:

  • 確定問題的解(或狀態)的定義、解空間的范圍以及正確解的判定條件;
  • 根據解空間的特點來選擇搜索策略,逐個檢驗解空間中的候選解是否正確;

2.1 解空間定義

解空間就是全部可能的候選解的一個約束范圍,確定問題的解就在這個約束范圍內,將搜索策略應用到這個約束范圍就可以找到問題的解。

2.2 窮舉解空間的策略

窮舉解空間的策略就是搜索算法的設計策略,根據問題的類型,解空間的結構可能是線性表、集合、樹或者圖,對于不同類型的解空間,需要設計與之相適應的窮舉搜索算法。

如果選擇一種搜索策略,不帶任何假設的窮舉搜索,不管行不行,眉毛胡子一把抓,把所有可能的解都檢查一遍,這樣的搜索通常被稱為“盲目搜索”。

與之對應的是利用某種策略或計算依據,由啟發函數策動有目的的搜索行為,這些策略和依據通常能夠加快算法的收斂速度,或者能夠劃定一個更小的、最有可能出現解的空間并在此空間上搜索,這樣的搜索通常稱為“啟發性搜索”。

一般來說,為了加快算法的求解,通常會在搜索算法的執行過程中輔助一些剪枝算法,排除一些明顯不可能是正確解的檢驗過程,來提高窮舉的效率。

剪枝一個很形象的比喻,如果某一個狀態節點確定不可能演化出結果,就應該停止從這個狀態節點開始的搜索,相當于狀態樹上這一分枝就被剪掉了。

除了采用剪枝策略,還可以使用限制搜索深度的方法加快算法的收斂,但是限制搜索深度會導致無解,或錯過最優解,通常只在特定的情況下使用,比如博弈樹的搜索。

2.3 剪枝策略

對解空間窮舉搜索時,如果有一些狀態節點可以根據問題提供的信息明確地被判定為不可能演化出最優解,也就是說,從此節點開始遍歷得到的子樹,可能存在正確的解,但是肯定不是最優解,就可以跳過此狀態節點的遍歷,這將極大地提高算法的執行效率,這就是剪枝策略,應用剪枝策略的難點在于如何找到一個評價方法(估值函數)對狀態節點進行評估。

3. 實例

3.1 百錢買雞問題

一百個錢買一百只雞,是個典型的窮舉法應用。問題描述:每只大公雞值 5 個錢,每只母雞值 3 個錢,每 3 只小雞值 1 個錢,現在有 100 個錢,想買 100 只雞,問如何買?有多少種方法?

  1. 盲目搜索
    假設買 x 只公雞,y 只母雞,z 只小雞,使用代碼求解如下:
    %%time
    for x in range(1, 100):for y in range(1, 100):for z in range(1, 100):if x + y + z == 100 and 5*x + 3*y + z/3.0 == 100:print x, y, z
    
    輸出結果
    4 18 78
    8 11 81
    12 4 84
    CPU times: user 76.3 ms, sys: 0 ns, total: 76.3 ms
    Wall time: 75.2 ms
    
  2. 啟發搜索
    假設買 x 只公雞,y 只母雞,則 x 最大只能是 20 只,y 最大只能是 33 只,而小雞則應該為 100 -x-y 只,使用代碼求解如下:
    %%time
    for x in range(1, 21):for y in range(1, 34):if 5*x + 3*y + (100-x-y)/3.0 == 100:print x, y, 100-x-y
    
    輸出結果
    4 18 78
    8 11 81
    12 4 84
    CPU times: user 4.43 ms, sys: 0 ns, total: 4.43 ms
    Wall time: 2.56 ms
    

可以看出第二種搜索算法比第一種明顯快很多。

3.2 雞兔同籠問題

窮舉法的經典題目:雞兔同籠問題。有雞和兔在一個籠子中,數頭共 50 個頭,數腳共 120 只腳,問:雞和兔分別有多少只?

  1. 盲目搜索
    假設買 x 雞,y 只兔,使用代碼求解如下:
    %%time
    for x in range(1, 51):for y in range(1, 51):if x + y == 50 and 2*x + 4*y == 120:print x, y
    
    輸出結果
    40 10
    CPU times: user 0 ns, sys: 3.19 ms, total: 3.19 ms
    Wall time: 2.17 ms
    
  2. 啟發搜索
    假設買 x 雞,則兔子數量只能是 50 - x ,使用代碼求解如下:
    %%time
    for x in range(1, 51):if 2*x + 4*(50-x) == 120:print x, 50-x
    
    輸出結果
    40 10
    CPU times: user 190 μs, sys: 0 ns, total: 190 μs
    Wall time: 137 μs
    

同樣也可以看出第二種搜索算法比第一種明顯快很多。

總結

以上是生活随笔為你收集整理的算法设计思想(1)— 穷举法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 最新免费av | 激情文学亚洲 | 男人天堂亚洲 | 91九色蝌蚪91por成人 | 美女张开腿露出尿口 | 天堂综合网 | 中文字幕欧美日韩 | 日韩欧美一区二区区 | 国产又粗又猛又爽又黄的网站 | 黄色网页免费观看 | 国产高清www| 欧美成人精品三级网站 | 黄色av免费在线看 | 丰满少妇在线观看bd | 国产一级一级 | 午夜性影院 | 国产盗摄av | 日韩在线精品强乱中文字幕 | 中文字幕人妻熟女人妻a片 麻豆91视频 | 精品动漫av| 成人免费午夜视频 | 欧美36p| 亚洲成人三区 | 波多野结衣视频网站 | 国产美女免费 | 羞视频在线观看 | 久久精品色欲国产AV一区二区 | 国产精成人品 | 国产熟女精品视频 | 福利片第一页 | 一级黄色性片 | 一区二区三区在线观看 | 蜜桃久久久aaaa成人网一区 | 欧美性网址 | 成人免费毛片嘿嘿连载视频 | 调教驯服丰满美艳麻麻在线视频 | 538国产精品视频一区二区 | 69堂在线观看 | 视频二区中文字幕 | 国产在线网 | 欧美日一区二区 | 久久国产精品无码一级毛片 | 欧美成人激情视频 | 久热这里只有 | 成人一区二区三区在线观看 | 射黄视频 | 一区二区精品国产 | 免费成人在线网站 | 久久精品国产亚洲 | 131美女爱做视频 | 成人国产一区二区 | 无码久久精品国产亚洲av影片 | 色偷偷免费视频 | 天天射天天干天天操 | 精品人妻伦一二三区久 | 亚洲激情一区二区三区 | 天堂中文字幕免费一区 | 极品蜜桃臀肥臀-x88av | 午夜欧美精品久久久久久久 | 精品美女久久久久 | 日韩高清影视 | 天天舔天天干天天操 | 国产亚洲天堂网 | 午夜天堂影院 | 日韩三级视频在线 | 久久久久18| 日本熟妇人妻xxxxx | 欧美亚韩一区二区三区 | 久操热久操 | 久草热播 | 久久人人妻人人人人妻性色av | 性色网站| 日本激情视频一区二区三区 | 亚洲石原莉奈一区二区在线观看 | 久久综合中文字幕 | av中文字幕网址 | 在线看的免费网站 | 久久成人乱码欧美精品一区二区 | 国产成人免费看一级大黄 | 男女搞鸡网站 | 欧美色悠悠 | 欧美一区二区视频 | 亚洲乱熟 | 91吃瓜今日吃瓜入口 | 国产午夜在线播放 | 国产精品久久精品 | 大片视频免费观看视频 | 国产成人一级片 | 日韩电影一区二区三区四区 | 亚洲第一在线视频 | 求av网址 | 丰满人妻一区二区三区四区 | 日本成人激情 | 国产少妇一区二区 | 2021国产在线视频 | 久久av一区 | 亚洲综合成人网 | 免费黄色小视频在线观看 | 日韩视频网站在线观看 |