活動安排 貪心演算法

2021-06-22 09:04:37 字數 896 閱讀 4417

活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單、漂亮的方法使得盡可能多的活動能相容地使用公共資源。

設有n個活動的集合e=,其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活動i都有乙個要求使用該資源的起始時間si和乙個結束時間fi,且si

// activityarrange.cpp : 定義控制台應用程式的入口點。

//貪心演算法解決活動安排問題

//#include "stdafx.h"

void outputresult(int *a_r,int n) }}

int _tmain(int argc, _tchar* argv)

; int acticity_e[11]=;

int activity_r[11]=;

greedyselect(activity_s,acticity_e,activity_r,11);

outputresult(activity_r,11);

getchar();

return 0;

}

由於輸入的活動以其完成時間的非減序排列,所以演算法greedyselector每次總是選擇具有最早完成時間的相容活動加入集合a中。

直觀上,按這種方法選擇相容活動為未安排活動留下盡可能多的時間。也就是說,該演算法的貪心選擇的意義是使剩餘的可安排時間段極大化,以便安排盡可能多的相容活動。

演算法greedyselector的效率極高。當輸入的活動已按結束時間的非減序排列,演算法只需o(n)的時間安排n個活動,使最多的活動能相容地使用公共資源。如果所給出的活動未按非減序排列,可以用o(nlogn)的時間重排。

活動安排問題 貪心演算法

問題表述 設有n個活動的集合 e 其中每個活動都要求使用同一資源,如演講會場等,而在同一時間內只有乙個活動能使用這一資源。每個活 i都有乙個要求使用該資源的起始時間 si和乙個結束時間 fi,且 si 如果選擇了活動 i,則它在半開時間區間 si,fi 內占用資源。若區間 si,fi 與區間 sj,...

活動安排問題(貪心演算法)

類似的問題是 選點問題和區間覆蓋問題。活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單 漂亮的方法使得盡可能多的活動能相容地使用公共資源。設有n個活動的集合e 其中每個活動都...

活動安排問題 貪心演算法

活動安排問題就是要在所給的活動集合中選出最大的相容活動子集合,是可以用貪心演算法有效求解的很好例子。該問題要求高效地安排一系列爭用某一公共資源的活動。貪心演算法提供了乙個簡單 漂亮的方法使得盡可能多的活動能相容地使用公共資源。設有n個活動的集合e 其中每個活動都要求使用同一資源,如演講會場等,而在同...