生物信息学算法-第1讲.ppt

  1. 1、本文档共80页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
生物信息学算法-第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)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档