算法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向量
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向量 , xi=1表示任务i分配到第一台机器,i =1,2,…,n。
不妨设机器1的加工时间<=机器2的加工时间,令T=t1+t2+…+tn,D=⌊T/2⌋ ,机器1的加工时间不超过D,且达到最大。

你可能感兴趣的:(算法1_绪论)