活动安排问题python实现

        活动安排问题要求高效地安排一系列争用某一公共资源的活动,贪心算法提供了一个简单的方法,使尽可能多的活动能兼容地使用公共资源。贪心算法并不总能求得问题的整体最优解,但对于活动安排问题,贪心算法却能做到,使得最终所确定的相容活动集合的规模最大,证明不在这里给出。代码如下:

def greedyManage(meeting):
	length=len(meeting)
	meeting.sort(key=lambda x:x[1])
	result=[False for i in range(length)]
	j=0 #当前选中的活动
	result[j]=True #选中第一个活动
	for i in range(1,length):
		if meeting[i][0]>=meeting[j][1]:
			j=i
			result[j]=True
	return result

def show(result):
	length=len(result)
	print('安排的活动为:')
	count=0
	for i in range(length):
		if result[i]:
			print('第',i+1,'个活动')
			count+=1
	print('\n共计',count,'个活动')

if __name__=='__main__':
	meetings=[(1,4),(3,5),(0,6),(5,7),(3,8),(5,9),(6,10),(8,11),(8,12),(2,13),(12,14)]
	res=greedyManage(meetings)
	show(res)

活动安排问题python实现_第1张图片

    meetings是一个list,里面每个tuple是一个活动的起始时间和结束时间,刚开始是乱序的,首先要按照每个活动的结束时间升序排列,然后首先默认选择第一个活动,依次遍历所有活动找出相容的活动,最后输出结果如下:

活动安排问题python实现_第2张图片


转载请注明:转自http://blog.csdn.net/littlethunder/article/details/26449245

你可能感兴趣的:(python,贪心算法,活动安排问题)