当前位置: 首页 > wzjs >正文

网页制作基础教程素材seo网站推广公司

网页制作基础教程素材,seo网站推广公司,建一个收费网站,西安优化网站Python实现贪心算法(Greedy Algorithm) 概念 贪心算法是一种在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优的算法策略。 基本特点 局部最优选择:每一步都做出当前看起来最佳的选择不可回退:一旦做出选择&#xf…

Python实现贪心算法(Greedy Algorithm)

概念

贪心算法是一种在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优的算法策略。

基本特点

  1. 局部最优选择:每一步都做出当前看起来最佳的选择
  2. 不可回退:一旦做出选择,就不可更改
  3. 高效性:通常比其他全局优化算法更快
  4. 不保证全局最优:但能得到近似最优解

基本实现框架

(以分数背包问题为栗子)

def greedy_algorithm(items, capacity):# 通常先按某种规则排序items.sort(key=lambda x: x[1]/x[0], reverse=True)#按单位重量价值(value/weight)降序排序total_value = 0 #背包中物品的总价值selected_items = [] #选择的物品列表(完整或部分物品)#开始选择for item in items:if capacity >= item[0]:capacity -= item[0]total_value += item[1]selected_items.append(item)else:# 可选: 部分物品的情况(如分数背包问题)fraction = capacity / item[0]total_value += item[1] * fractionselected_items.append((item[0]*fraction, item[1]*fraction))breakreturn total_value, selected_items

经典应用示例 😍 😍

1. 找零钱问题

def coin_change(coins, amount):coins.sort(reverse=True)count = 0change = []for coin in coins:while amount >= coin:amount -= coincount += 1change.append(coin)return count if amount == 0 else -1, change# 示例
coins = [25, 10, 5, 1]
print(coin_change(coins, 63))  # 输出: (6, [25, 25, 10, 1, 1, 1])

2. 区间调度问题

def interval_scheduling(intervals):# 按结束时间排序intervals.sort(key=lambda x: x[1])selected = []last_end = -float('inf')for start, end in intervals:if start >= last_end:selected.append((start, end))last_end = endreturn selected# 示例
intervals = [(1, 3), (2, 4), (3, 5), (4, 6)]
print(interval_scheduling(intervals))  # 输出: [(1, 3), (3, 5)]

3. 霍夫曼编码(数据压缩)

import heapqdef huffman_encoding(freq):heap = [[weight, [symbol, ""]] for symbol, weight in freq.items()]heapq.heapify(heap)while len(heap) > 1:lo = heapq.heappop(heap)hi = heapq.heappop(heap)for pair in lo[1:]:pair[1] = '0' + pair[1]for pair in hi[1:]:pair[1] = '1' + pair[1]heapq.heappush(heap, [lo[0] + hi[0]] + lo[1:] + hi[1:])return sorted(heapq.heappop(heap)[1:], key=lambda p: (len(p[-1]), p))# 示例
freq = {'a': 5, 'b': 9, 'c': 12, 'd': 13, 'e': 16, 'f': 45}
print(huffman_encoding(freq))

适用场景

  1. 问题具有贪心选择性质:局部最优能导致全局最优
  2. 最优子结构:问题的最优解包含子问题的最优解
  3. 典型应用
    • 最小生成树(Prim和Kruskal算法)
    • 最短路径问题(Dijkstra算法)
    • 背包问题的分数版本
    • 任务调度问题
    • 文件压缩(霍夫曼编码)

贪心算法的局限性👀👀

  1. 不总是能得到全局最优解
  2. 需要证明问题的贪心选择性质
  3. 对某些问题可能需要结合其他算法(如动态规划)

贪心 vs 动态规划💪💪

特性贪心算法动态规划
决策每个阶段做局部最优选择考虑所有可能的子问题
复杂度通常更低通常更高
最优解保证不总是总是
存储需求通常更少需要存储子问题结果
典型问题找零钱、任务调度背包问题、最长子序列

总结

贪心算法因其高效性在实际工程中应用广泛,但使用时需要仔细分析问题是否适合贪心策略。😼😼

http://www.dtcms.com/wzjs/209680.html

相关文章:

  • seo网站建设价格手机seo快速排名
  • wordpress增加logoseo推广效果怎么样
  • 旅游网站做模板素材网页设计制作软件
  • 上海城乡建设与管理委员会网站浏阳廖主任打人案
  • 凡科一个注册做2个网站网站页面禁止访问
  • 织梦手机端网站怎么做网页设计流程步骤
  • 一站式网站管家seo实战技巧100例
  • 房地产小程序开发seo主要做什么工作内容
  • 义乌网站建站百度seo优化公司
  • 手机网站建设开什么类型的票seo 优化案例
  • wordpress注册页快排seo软件
  • wordpress革命滑块seo中国官网
  • 太原做网站排名bt磁力搜索引擎索引
  • 商业网站建设知识点国际新闻最新消息今天 新闻
  • 最专业网站建设公司申京效率值联盟第一
  • 定制化网站建设在百度上怎么卖自己的产品
  • 惠阳网站建设公司广东seo推广方案
  • 惠州网站制作公司电商推广
  • 济南住房和城乡建设部网站在哪里可以做百度推广
  • 对电子商务网站建设与维护的总结排名优化哪家专业
  • 北京中国建设部网站seo优化报价公司
  • 网站建设价格如何国内最新新闻事件
  • 宣传类的网站有哪些内容怀化网络推广
  • python做网站多么网站快速排名服务
  • 牙科医院网站源码品牌策划书
  • 一般网站的架构恩施seo整站优化哪家好
  • javaweb做新闻网站网络营销试卷及答案
  • 东城区网站建设seo实战密码
  • 湛江网站优化四种基本营销模式
  • 合肥微信网站建设2022年明星百度指数排行