贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网
1.簡介
貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當(dāng)前看來是最好的選擇。也就是說,不從整體最優(yōu)上加以考慮,他所做出的是在某種意義上的局部最優(yōu)解。
貪心算法不是對所有問題都能得到整體最優(yōu)解,關(guān)鍵是貪心策略的選擇,選擇的貪心策略必須具備無后效性,即某個狀態(tài)以前的過程不會影響以后的狀態(tài),只與當(dāng)前狀態(tài)有關(guān)。
2.思想
貪心算法的基本思路是從問題的某一個初始解出發(fā)一步一步地進(jìn)行,根據(jù)某個優(yōu)化測度,每一步都要確保能獲得局部最優(yōu)解。每一步只考慮一個數(shù)據(jù),他的選取應(yīng)該滿足局部優(yōu)化的條件,直到把所有數(shù)據(jù)枚舉完。
貪心算法的思想如下:
a)建立數(shù)學(xué)模型來描述問題;
b)把求解的問題分成若干個子問題;
c)對每一子問題求解,得到子問題的局部最優(yōu)解;
d)把子問題的解局部最優(yōu)解合成原來解問題的一個解。
與動態(tài)規(guī)劃不同的是,貪心算法得到的是一個局部最優(yōu)解(即有可能不是最理想的),而動態(tài)規(guī)劃算法得到的是一個全局最優(yōu)解(即必須是整體而言最理想的),一個有趣的事情是,動態(tài)規(guī)劃中的01背包問題就是一個典型的貪心算法問題。
3.學(xué)習(xí)方法
由淺入深,不妨先將動態(tài)規(guī)劃中的01背包問題弄熟悉,再來學(xué)習(xí)貪心算法的基礎(chǔ)思維,其實(shí)在很多時候自己并未發(fā)覺自己已經(jīng)是在使用貪心了,當(dāng)你基本掌握了一些貪心的概念的時候,可以做一些諸如裝箱問題,切割問題,區(qū)域分配問題的題目,鞏固自己的知識。
4.相關(guān)例題
有很多經(jīng)典的應(yīng)用,比如霍夫曼編碼(Huffman Coding)、Prim 和 Kruskal 最小生成樹算法、還有 Dijkstra 單源最短路徑算法,最小生成樹算法和最短路徑算法,甚至是一些暴力求解題目,都是使用了貪心的這種思維。
可以直接從dotcpp網(wǎng)站標(biāo)簽中搜索貪心即可,貪心算法在很多題目中均或多或少有一些思維的應(yīng)用,因此題目涵蓋非常廣闊,非常適合逐步練習(xí)。
總結(jié)
以上是生活随笔為你收集整理的贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安徽省计算机一级选择题题库,计算机等级考
- 下一篇: 喵呜