貪心算法解決會場安排問題、多處最優(yōu)服務(wù)次序問題_第1頁
貪心算法解決會場安排問題、多處最優(yōu)服務(wù)次序問題_第2頁
貪心算法解決會場安排問題、多處最優(yōu)服務(wù)次序問題_第3頁
貪心算法解決會場安排問題、多處最優(yōu)服務(wù)次序問題_第4頁
貪心算法解決會場安排問題、多處最優(yōu)服務(wù)次序問題_第5頁
全文預覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上 西 安 郵 電 大 學 (計算機學院)課內(nèi)實驗報告實驗名稱: 貪心算法 專業(yè)名稱: 計算機科學與技術(shù)班 級: 學生姓名: 學號(8位): 指導教師: 實驗日期: 2014年5月22日1 實驗目的及實驗環(huán)境 實驗目的:通過實際應(yīng)用熟悉貪心算法,并解決會場安排問題、多出最優(yōu)服務(wù)次序問題 實驗環(huán)境:Visual C+ 6.0二. 實驗內(nèi)容1.會場安排問題. 假設(shè)要在足夠多的回廠里安排一批活動,并希望使用盡可能少的會場,設(shè)計一個有效的貪心算大進行安排(這個問題實際上是注明的圖著色問題。若將每一個活動作為圖的一個頂點,不相容活動間用邊相連。使相鄰頂點著有不同顏色的最小著色數(shù),

2、相應(yīng)于要找的最小會場數(shù))2.多處最優(yōu)服務(wù)次序問題設(shè)有n個顧客同時等待一項服務(wù)。顧客i需要的服務(wù)時間為ti,1<=i<=n。共有s處可以提供此項服務(wù)。應(yīng)如何安排n個顧客的服務(wù)次序才能使平均等待時間達到最???平均等待時間是n個顧客等待服務(wù)時間的總和除以n。三 方案設(shè)計1、設(shè)有n個活動的集合E=1,2,n,其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內(nèi)只有一個活動能使用這一資源。每個活動i都有一個要求使用該資源的起始時間si和一個結(jié)束時間fi,且si <fi 。如果選擇了活動i,則它在半開時間區(qū)間si, fi)內(nèi)占用資源。若區(qū)間si, fi)與區(qū)間sj, fj)不相交

3、,則稱活動i與活動j是相容的。也就是說,當sifj或sjfi時,活動i與活動j相容。由于輸入的活動以其完成時間的非減序排列,所以算法greedySelector每次總是選擇具有最早完成時間的相容活動加入集合A中。直觀上,按這種方法選擇相容活動為未安排活動留下盡可能多的時間。也就是說,該算法的貪心選擇的意義是使剩余的可安排時間段極大化,以便安排盡可能多的相容活動。算法greedySelector的效率極高。當輸入的活動已按結(jié)束時間的非減序排列,算法只需O(n)的時間安排n個活動,使最多的活動能相容地使用公共資源。如果所給出的活動未按非減序排列,可以用O(nlogn)的時間重排。 1.會場安排問題

4、源代碼#include <iostream>#include <vector>#include <algorithm>using namespace std;struct point int t; bool f;bool cmp(point x,point y) return x.t<y.t;int greedy(vector<point> x) int max=0,cur=0,n=x.size(); sort(x.begin(),x.end(),cmp); for(int i=0;i<n;i+) if(xi.f) cur+; els

5、e cur-; if(cur>max) max=cur; return max; int main() vector<point> x; int n,i; point temp; while(cin>>n,n) for(i=0;i<n;i+) temp.f=true; cin>>temp.t; x.push_back(temp); temp.f=false; cin>>temp.t; x.push_back(temp); cout<<greedy(x)<<endl; x.clear(); return 0;2.

6、 多處最優(yōu)服務(wù)次序問題源代碼:#include<stdio.h>#include<stdlib.h>main()int *window,*timewindow,*array,num,serve,i,j,k,temp;double min;printf("請輸入等待服務(wù)人數(shù)n");scanf("%d",&num);printf("請輸入服務(wù)窗口數(shù)n");scanf("%d",&serve);array = (int *)malloc(num + 1) * sizeof(int)

7、;timewindow = (int *)malloc(serve + 1) * sizeof(int);window = (int *)malloc(serve + 1) * sizeof(int *);for(i = 0; i <= serve;i+) windowi = (int *)malloc(num + 1) * sizeof(int *);printf("請依次輸入服務(wù)等待時間n");for(i = 1; i <= num;i+) scanf("%d",&arrayi);for(i = 0; i <= serve;

8、i+) timewindowi = 0; for(j = 0; j <= num; j+) windowij = 0;for(i = 1; i <= num; i+)/排序 for(k = i,j = i + 1; j < num; j+) if(arrayj < arrayk) k = j; temp = arrayk; arrayk = arrayi; arrayi = temp;for(i = 1; i <= num; i+) for(k = 1,j = 2; j <= serve;j+) if(timewindowk > timewindowj

9、) k = j; timewindowk +=arrayi; windowk+windowk0 = arrayi; for(min = 0.0,i = 1; i <= serve;i+) for(j = 1; j <= windowi0;j+) min += windowij * (windowi0 - j + 1); min /= num; printf("n此方案最優(yōu)服務(wù)次序為%fn",min); getch();4 運行結(jié)果 1.2.五心得體會 通過本次實驗,我了解了貪心算法的性質(zhì)與解題思路。會場安排問題和多出最優(yōu)服務(wù)次序問題很好的利用了貪心算法,我進一步理解了貪心算法的性

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論