貪心算法(Greedy Algorithm)是一種常見的算法設計策略,它在每一步選擇當前最優解,希望通過局部最優解最終得到全局最優解。貪心算法通常適用于滿足一些特定條件的問題,例如貨幣找零、活動選擇、任務調度等。貪心算法的優勢在于簡單、高效,但并不適用于所有問題。
def activity_selection(start, finish):n = len(start)activities = []i = 0activities.append(i)for j in range(1, n):if start[j] >= finish[i]:activities.append(j)i = jreturn activities# 測試示例
start_time = [1, 3, 0, 5, 8, 5]
finish_time = [2, 4, 6, 7, 9, 9]
selected_activities = activity_selection(start_time, finish_time)
print("Selected activities:", selected_activities)
在上面的示例中,activity_selection函數使用貪心算法解決活動選擇問題。給定一組活動的開始時間和結束時間,函數會選擇一組不相互沖突的活動,使得可以安排盡可能多的活動。
貪心算法的關鍵在于每次選擇結束時間最早的活動。在循環中,如果下一個活動的開始時間大于等于當前活動的結束時間,則將其加入到選擇的活動列表中。
貪心算法的一個重要特征是貪心選擇性質,即每一步都選擇最優解,而不考慮未來的選擇。因此,貪心算法的正確性通常需要證明。