使用贪心算法求解活动安排问题
时间: 2023-12-02 10:42:26 浏览: 112
贪心算法求解最短路径问题matlab
活动安排问题是一种经典的贪心算法问题。该问题要求在给定的活动集合中选出最大的相容活动子集合,使得尽可能多的活动能兼容地使用公共资源。下面是使用贪心算法求解活动安排问题的步骤:
1. 将所有活动按照结束时间从早到晚排序。
2. 选择第一个活动,并将其加入最终的活动集合中。
3. 对于剩下的活动,如果其开始时间晚于等于已选择的最后一个活动的结束时间,则将其加入最终的活动集合中。
4. 重复步骤3,直到所有活动都被考虑完毕。
下面是一个Python实现的例子:
```python
def activity_selection(start, finish):
n = len(finish)
activities = []
i = 0
activities.append(i)
for j in range(n):
if start[j] >= finish[i]:
activities.append(j)
i = j
return activities
start = [1, 3, 0, 5, 8, 5]
finish = [2, 4, 6, 7, 9, 9]
activities = activity_selection(start, finish)
print("Selected activities are:", activities)
```
上述代码中,`start`和`finish`分别表示每个活动的开始时间和结束时间。`activity_selection`函数返回一个列表,其中包含被选中的活动的索引。在上述例子中,被选中的活动是0、1、3和4。
阅读全文