第三章 排列與組合

2021-06-19 06:40:05 字數 1948 閱讀 4675

第三章 排列與組合

3.1 加法原理與乘法原理

3.2 排列與組合概念與計算公式

3.3 排列與組合的產生演算法

7.1 貪心策略的定義 

7.2 貪心策略特點

7.3 典型例題與習題

在眾多的計算機解題策略中,貪心策略可以算得上是最接近人們日常思維的一種解題策略,正基於此,貪心策略在各級各類資訊學競賽、尤其在對npc類問題的求解中發揮著越來越重要的作用。

7.1 貪心策略的定義

貪心策略是:指從問題的初始狀態出發,通過若干次的貪心選擇而得出最優值(或較優解)的一種解題方法。

其實,從「貪心策略」一詞我們便可以看出,貪心策略總是做出在當前看來是最優的選擇,也就是說貪心策略並不是從整體上加以考慮,它所做出的選擇只是在某種意義上的區域性最優解,而許多問題自身的特性決定了該題運用貪心策略可以得到最優解或較優解。

例1:在n行m列的正整數矩陣中,要求從每一行中選乙個數,使得選出的n個數的和最大。

本題可用貪心策略:選n次,每一次選相應行中的最大值即可。

例2:在乙個n×m的方格陣中,每一格仔賦予乙個數(即為權)。規定每次移動時只能向上或向右。現試找出一條路徑,使其從左下角至右上角所經過的權之和最大。

本題用貪心策略不能得到最優解,我們以2×4的矩陣為例。 34

61210

若按貪心策略求解,所得路徑為:1,3,4,6;                              

若按動態規劃法求解,所得路徑為:1,2,10,6。    

例3:設定有n臺處理機p1,p2,......pn,和m個作業j1,j2,...jm,處理機可並行工作,作業未完成不能中斷,作業ji在處理機上的處理時間為ti,求解最佳方案,使得完成m項工作的時間最短?

本題不能用貪心演算法求解:理由是若n=3,m=6 各作業的時間分別是11  7  5  5  4  7

用貪心策略解(每次將作業加到最先空閒的機器上)time=15,用搜尋策略最優時間應是14,但是貪心策略給我們提供了乙個線索那就是每台處理上的時間不超過15,給搜尋提供了方便。

總之:1. 不能保證求得的最後解是最佳的;

2. 只能用來求某些最大或最小解問題;

3. 能確定某些問題的可行解的範圍,特別是給搜尋演算法提供了依據。

7. 2 貪心策略的特點

貪心演算法有什麼樣的特點呢?我認為,適用於貪心演算法解決的問題應具有以下2個特點:

1、貪心選擇性質:

所謂貪心選擇性質是指應用同一規則f,將原問題變為乙個相似的、但規模更小的子問題、而後的每一步都是當前看似最佳的選擇。這種選擇依賴於已做出的選擇,但不依賴於未做出的選擇。從全域性來看,運用貪心策略解決的問題在程式的執行過程中無回溯過程。關於貪心選擇性質,讀者可在後文給出的貪心策略狀態空間圖中得到深刻地體會。

2、區域性最優解:

我們通過特點2向大家介紹了貪心策略的數學描述。由於運用貪心策略解題在每一次都取得了最優解,但能夠保證區域性最優解得不一定是貪心演算法。如大家所熟悉得動態規劃演算法就可以滿足區域性最優解,但貪心策略比動態規劃時間效率更高站用記憶體更少,編寫程式更簡單。    

7.3 典型例題與習題

例4:揹包問題:

有乙個揹包,揹包容量是m=150。有7個物品,物品可以分割成任意大小。

要求盡可能讓裝入揹包中的物品總價值最大,但不能超過總容量。

物品 abc

defg

重量35

3060

5040

1025

價值10

4030

5035

4030

分析:目標函式: ∑pi最大

約束條件是裝入的物品總重量不超過揹包容量:∑wi<=m( m=150)

(1)根據貪心的策略,每次挑選價值最大的物品裝入揹包,得到的結果是否最優?

(2)每次挑選所佔空間最小的物品裝入是否能得到最優解?

(3)每次選取單位容量價值最大的物品,成為解本題的策略。

程式如下:

第三章 堆疊

1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...

第三章 曙光

第三章 曙光 第二場校園招聘開始了。其實,洋對這個公司的不是很了解。因為前幾天突然在bbs上面看到了這個公司的招聘資訊,洋覺得這個公司不錯,就上網投了簡歷。接下來的乙個多小時,讓洋很震撼!想不到這個公司這個厲害,而且無論從哪方面來說,絕對不比之前的那個公司差。想不到自己的乙個不經意的決定到了這個大的...

第三章 遞迴

遞迴是一種強大的方法,它允許乙個物件以其自身更小的形式來定義自己。恐怕沒有什麼比觀察神秘的自然界中出現的遞迴現象更好的方法來體會遞迴的重要意義了。想想蕨類植物的葉子,每片葉子的小枝幹都是整片葉子的較小縮影 又或者兩個反光的物體,相互對映對方的漸遠的影像。這樣的例子使我們明白儘管大自然的力量是強大的,...