算法1_绪论

绪论

算法理论的两大论题:

算法设计—对于一个问题如何设计一个有效的算法
算法分析—如何评价或判断一个算法的优劣

问题的求解过程:
分析问题→设计算法→编写程序→整理结果
算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。
算法的五大特性:
⑴ 输入:一个算法有零个或多个输入。
⑵ 输出:一个算法有一个或多个输出。
⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。
⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。
算法的描述方法
⑴ 自然语言
⑵ 流程图
⑶ 程序设计语言
⑷ 伪代码——算法语言

排序算法效率

插入排序:O(n2)
冒泡排序:O(n2)
快速排序:O(n2)–O(nlogn)
堆排序:O(nlogn)
二分归并排序:O(nlogn)

0-1背包问题

问题:有n个件物品要装入背包,第i 件物品的重量 wi, 价值vi,i=1,2,…,n. 背包最多允许装入的重量为B, 问如何选择装入背包的物品,使得总价值达到最大?
问题的解:0-1向量 <x1, x2, …, xn>
xi=1 <=> 物品 i 装入背包

双机调度

问题:有n项任务, 任务 i 的加工时间为 ti , ti∈Z+, i=1,2,…,n。用两台相同的机器加工,从0时刻开始计时,完成时间是后停止加工机器的停机时间。问如何把这些任务分配到两台机器上,使得完成时间达到最小?

实例:
任务集 S ={1,2,3,4,5,6}
t1=3,t2=10,t3=6,t4=2,t5=1,t6=7
解:
机器1的任务:1, 2, 4
机器2的任务:3, 5, 6
完成时间 : max{ 3+10+2, 6+1+7 }=15
解: 0-1向量 <x1, x2, …, xn>, xi=1表示任务i分配到第一台机器,i =1,2,…,n。
不妨设机器1的加工时间<=机器2的加工时间,令T=t1+t2+…+tn,D=⌊T/2⌋ ,机器1的加工时间不超过D,且达到最大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值