贪心算法-活动选择问题(python实现)
时间: 2024-11-28 10:08:33 浏览: 34
浅谈Python实现贪心算法与活动安排问题
贪心算法是一种在每一步选择中都采取当前状态下最好或最优解决方案,希望导致结果是全局最好的策略。对于活动选择问题,也称为任务调度或课程表问题,通常涉及在一个有限的时间窗口内选择一系列活动,每个活动有开始时间和结束时间。
Python中实现活动选择问题的一个常见例子是克鲁斯卡尔(Kruskal's)算法,用于解决最小生成树问题,但也可以通过比较活动的结束时间来调整为贪心地选择最早结束的活动,只要它们不会冲突。以下是简单的Python代码示例:
```python
def activity_selection(activities, n):
# 按照结束时间排序活动
activities.sort(key=lambda x: x[1])
selected_activities = []
for i in range(n):
if not selected_activities or activities[i][0] >= selected_activities[-1][1]:
selected_activities.append(activities[i])
return selected_activities
# 示例活动列表,每个元素是一个元组 (start_time, end_time)
activities = [(1, 3), (2, 4), (3, 5), (6, 8)]
n = len(activities)
result = activity_selection(activities, n)
print("选择的不冲突活动:", result)
阅读全文