什么是贪心算法?
贪心算法是一种在每一步选择中都采取当前状态下最优或最有利的选择的算法。其核心思想是通过一系列局部最优选择来达到全局最优解。贪心算法广泛应用于各种优化问题,如最短路径、最小生成树、背包问题等。
贪心算法的特点
局部最优选择:每一步都做出在当前情况下最优的选择。
无后效性:一旦某个状态被确定,就不会再被改变或回溯。
逐步构造解决方案:通过一系列的选择逐步构建出最终的解决方案。
经典例子及其Python实现
1. 活动选择问题
问题描述:给定一组活动,每个活动有一个开始时间和结束时间,要求选择尽可能多的互不重叠的活动。
贪心策略:每次选择结束时间最早且不与已选择活动重叠的活动。
实现过程:
将所有活动按结束时间排序。
依次选择结束时间最早且不与已选择活动重叠的活动。
Python代码:
def activity_selection(activities):
# 按结束时间排序
activities.sort(key=lambda x: x[1])
# 选择活动
selected_activities = [activities[0]]
last_end_time = activities[0][1]
for start, end in activities[1:]:
if start >= last_end_time:
selected_activities.append((start, end))
last_end_time = end
r