生物学方面的计算机算法有哪些,生物信息的学算法-第1讲.ppt

生物信息的学算法-第1讲

实例:给定一棵树T 询问:求一个清扫T的方案,所用清扫人数目最少。 实例:给定一棵树T 询问:求一个清扫T的方案,所用清扫人数目最少。 实例:给定一棵树T 询问:求一个清扫T的方案,所用清扫人数目最少。 2种操作: (1)守住一个端点 (2)从一个端点搜索到另一个端点 * * * * * * * * * * * 硬币类型,25分,10分,5分,1分。将63分钱兑换成硬币 问:最少兑换几枚硬币? 贪心算法:25,25,10,1,1,1,先换大的后换小的。 实际上以上解是最优的,与类型有关。 25 10 5 1 25 25 10 1 1 1 一个正例 11,5,1分三种硬币,兑换15分钱,贪心算法解为:11,1,1,1,1 实际上,5,5,5是最优解。贪心解并不是最优解。 贪心技术可以找到可行解,未必能找到最优解。如同现实生活中的局部利益与整体利益。 寻求当前最好,未必全局最好。当前收益最大为目标/当前损失最小为目标。 11 5 1 11 1 1 1 1 5 5 5 一个反例 递归与迭代 递归算法 菲波那契数列问题 兔子繁殖模型 13世纪,意大利数学家菲波那契研究兔子后代数量。基于以下假设: 在给定一段时间内,一对大兔可繁殖出一对小兔;一对小兔可在同样时间内长成大兔。 走楼梯模型 快与慢 Procedure bubblesort(A[1-n] of integer) Begin 1 for i=1 to n-1 2 for j=n down to i+1 do 3 if A[j-1]>A[j] then 4 temp=A[j-1] 5 A[j-1]=A[j] 6 A[j]=temp 7 end if 8 end for 9 end for 时间复杂度分析,考虑最坏情况。有时比较完成以后要交换,有时不要交换,比较一次,交换3次。 我们只算比较次数作为算法时间复杂度,第一遍比较n-1次,第二遍比较n-2次,…………。时间复杂度。只算比较次数:用作时间复杂度的计数。 T(n)=(n-1)+(n-2)+…+2+1=n(n-1)/2=O(n2) 相邻的元素比较, 小的向前移动 冒泡排序 Function mergesort(L:list of integer, n) Begin If n==1 then return L Else begin break L into L1 and L2, each of length n/2 return(merge(mergesort(L1, n/2),mergesort(L2, n/2))) end end 归并排序 首先考虑两个有序表合并的算法,时间复杂度分析,两个n/2长的表合成一个表,需要O(n)次。 T(n)? L1=[10,15,18,20,31] L2=[5,13,19,23,35] L=[5,10,13,15,18,19,20,23,31,35] 归并排序的时间复杂度 求出T(n)需要解递推方程。 解递推方程的很多方法:1猜测法,2展开法,3求解法 上述方程:猜测T(n)=O(nlogn)?anlogn+b, a, b为常数,下面证明 当n=1时,T(1)=b,猜测成立 设n?k时猜测成立,T(n) ? anlogn+b, 下面考虑n=k+1的情况。可以认为n/2?k, 所以n/2?k。这个在n ≥ 2时成立, 由前面的递推方程有: T(n/2) ≤ a(n/2)log(n/2)+b T(n)?2a(n/2)log(n/2)+2b+C2n =anlogn-an+C2n+2b ≤? anlogn+b 若-an+C2n+b?0,则猜测成立,只需取b=C1, a=C1+C2即可,这样猜测就成立。 如何解递推方程 枚举 分而治之 贪心 分支定界 回溯 动态规划 局部搜索 机器学习 随机 算法设计技术 先分开把大问题化为小问题,求解小问题,再把小问题的解合并。成为大问题的解。最朴素的方法。但是没有万能的办法。 归并排序的例子:通过举例子说明方法。Merge Sort 分而治之(divide and conquer) 310,285,179,652,351|423,861,254,450,520 310,285||179,652,351|423,861,254,450,520 310|||285||179,652,351|423,861,254,450,520 285,310||179,652,351|423,861,254,450,520 285,310||179|||652,351|423,861,254,450,520 285,310||179|||652||||351

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值