[数学知识]三分法
2017-07-15 09:56
204 查看
原出处:http://blog.csdn.net/u012469987/article/details/50897291
三分法
当二分的函数值不是递增/减,而是先增后减或者先减后增时二分就挂了。此时需要三分法,这里直接盗用hihocoder Problem 1142的图(hihocoder需要注册登陆,没登陆进不去)如图这种情况先减后增有极小,若lm比rm低(即lm对应的函数值 < rm函数值)则极小点(图中最低点)肯定在[ left, rm ] ,反之在[ lm, right ],剩下就跟二分一样根据大小关系调整区间就行了。那lm和rm取值多少?一个不错的取值是lm为整个区间的1/3点,rm为2/3点,即
[cpp] view
plain copy
lmid = l + (r - l)/3;
rmid = r - (r - l)/3;
嗯三分就这样完了。
然后另外一种情况,先增后减有极大:
如图lm低于rm,则极大在[ lm,right ](为啥不是[ left, rm ]?你试试把rm放在lm右边,极大值左边看看?),否则极大在 [ left, rm ]。写代码上就是极小的处理语句反过来就行了。
相关文章推荐
- 手机游戏开发用到的数学知识(2)
- 《DirectX 9.0 3D游戏开发编程基础》必备的数学知识 读书笔记
- D3D编程必备的数学知识(4)
- 数学知识
- ACM会用到的一些数学知识(转alpc01)
- 数学知识
- 数学背景知识课程笔记
- [jbb0523整理]压缩感知中的数学知识:NP-hard问题
- 编程需要学习多少数学知识
- D3D开发中你必须知道的一些函数和数学知识
- 数学知识
- 电路分析计算必备数学知识----三角函数
- C#数据结构---- 数学预备知识
- Directx11学习笔记【六】 基本的数学知识----矩阵篇
- 数学知识积累
- 数学是知识,哲学是智慧
- [数学知识]求小于等于a^b的与a^b互质的数的个数与和
- 【知识贴】战争中的数学应用
- 3D数学 ---- 矩阵的更多知识(2)
- 数学知识总结(不定期更新)