求关于斐波那契查找算法性能的定量分析

poson 2003-11-14 10:26:43
如题,一直没懂为什么平均情况下斐波那契会比二分查找好,主要是觉得二分查找树是平衡,一般极值都应该在平衡态。
所以那位高手可以教导一下。
谢谢
...全文
190 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzwu 2003-11-20
  • 打赏
  • 举报
回复
找函数f(x)极值的麻烦在于:预先不知道极值的大小,所以一定要找出2点的函数值来比较(图),然后根据 P[i],P[i+2]两点的函数值的大小,来确定极值不可能在左边或右边,从而下次搜索就可以排除这部分,在剩下2部分中搜索。

[----------+--------------+------------]
a P[i] m P[i+2] b
例如,若f(x)极大值在左边,则根据单峰性,必有P[i]>P[i+2],下次就可以不考虑P[i+2]-b这一段,收敛得较快。
如果用2分法,只能找出a,b的中点m,利用m一点的函数值,无法确定f(x)极大值的位置,所以必须对m的左半边和m的右半边再找中点,不妨说分别为Pl,Pr,然后根据 Pl,Pr两点的函数值的大小,来确定极值不可能在Pl左边或Pr右边,从而下次搜索就可以排除这部分,在剩下3部分中搜索。
由于2分法被排除只有1/4区间,不如斐波那契排除的大,所以收敛较慢。

显然,不用2分法,而改用3分法,每次将区间分为3等分,速度将比2分法(2次)速度高。但可以证明,斐波那契每次排除的区间段落一般都比1/3更大。


zzwu 2003-11-19
  • 打赏
  • 举报
回复
需要弄清,斐波那契法和二分法查找的对象是不同的:
斐波那契法用来查找单变量单峰函数f(x)的极值(极大或极小),
而二分法一般用来查找单变量单调(递增或递减)函数f(x)的某个可能出现的函数值,
二分法也可用来查找单峰函数的极值,这时效率就不如斐波那契法高了。

zzwu 2003-11-18
  • 打赏
  • 举报
回复
是有根据的,在<最优化方法>中讲到.我给你找找,明天公布.
NowCan 2003-11-17
  • 打赏
  • 举报
回复
这个,,,,,听楼下解释吧。

33,029

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧