“啊 ,三分你比二分多一分

最近在做题的时候发现原来还有三分法这个东东,由于本人水平有限知道应该二分可以解决,但是由于最优解的函数并不单调不知道怎么继续分了。看了题解才发现原来三分这么好用,看来不只是简单的“比二分多一分啊”

有一篇博文写的很好三分法与二分法的区别和三分法总结
先说说二分法
二分法搜索法就是不断缩小解可能存在的范围,从而求得问题最优解的方法
就是把[L,R]区间为两个区间,[L,mid]和(mid,R]。看中间值mid,是否为合法解,然后不断缩小区间直到满足范围。
用法:
1.从有序数组中查找某个值。
2.求最优值(前提是可以对目标函数进行试探,并且这个函数必须是单调的)

那么问题来了,并不是每次目标函数都是单调的,比如:(图有点丑 )

我们要求的最优值在位置x,我们怎么进一步确定[L,R]区间呢?这里就要用到三分法了!

当我们求的目标函数不是单调函数(区间内递增/递减)就要使用三分法了,或者你重新构造一个单调函数使用二分也是可以的。

三分法:
1.将区间分为如下:

m1=L+(R-L)/3;
m2=R-(R-L)/3:

2.缩短区间

以求最大值为例,比较目标函数值f(m1)和f(m2)谁更靠近极值f(x),如果f(m1)更靠近极值f(m1)>f(m2),说明极值在[l,m2]之间,即右区间改为m2,否则左区间改为m1。

二分法和三分法的用处和区别相关推荐

  1. 算法设计 - 二分法和三分法,洛谷P3382

    二分法 二分查找:找目标值位置 二分法是一种适用于特殊场景下的分治算法. 这里的特殊场景指的是,二分法需要作用在一个具有单调性的区间内. 比如,我们熟知的二分查找,就是一种二分法的具体实现,二分查找必 ...

  2. 二分法和分治法概念区别--记录

    1.二分法和分治法的概念区别: 二分搜索每次都要舍弃一半,从留下的一半中寻找目标:而分治法把一个大问题分成两个或多个小问题,递归地求这些小问题的解,最后再把它们小心谨慎的合并起来,并且要仔细考虑合并时 ...

  3. 题目:任意给定一个浮点数,计算这个浮点数的立方根。(基于二分法和牛顿迭代法)(基于Java实现)

    题目:任意给定一个浮点数,计算这个浮点数的立方根.(基于二分法和牛顿迭代法)(基于Java实现) 首先,来分析一下这道题,其实在leetcode上做了求解根号3的题之后,对于这种求解立方根的题,基本上 ...

  4. python 二分法实现pow_Python实现二分法和黄金分割法

    运筹学课上,首先介绍了非线性规划算法中的无约束规划算法.二分法和黄金分割法是属于无约束规划算法的一维搜索法中的代表. 二分法:$$x_{1}^{(k+1)}=\frac{1}{2}(x_{R}^{(k ...

  5. (小白)函数一: 声明函数的方法—语句定义法和表达式定义法的区别

    一.函数的定义: 在说明什么是函数前先举一个小例子: 大家都知道印刷术是我国的四大发明(科普一下:中国四大发明:造纸术.印刷术.火药.指南针)之一,之所以有印刷术,是因为重复的抄写既浪费时间,效率又很 ...

  6. HttpHandler与HttpModule的用处与区别

    HttpHandler与HttpModule的用处与区别 问题1:什么是HttpHandler? 问题2:什么是HttpModule? 问题3:什么时候应该使用HttpHandler什么时候使用Htt ...

  7. hibernate中get方法和load方法的根本区别

    hibernate中get方法和load方法的根本区别 如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来 ...

  8. KNN算法和Kernel KNN算法的区别

    KNN算法和Kernel KNN算法的区别 KNN算法 KNN(K-Nearest Neighbor,简称KNN)算法,是一种常用的监督学习方法,其工作机制为:给定测试样本,基于某种距离度量找出训练集 ...

  9. 工控服务器什么作用,服务器与工控机的用处和区别在哪?

    服务器与工控机的用处和区别在哪? 2018年09月17日 10:12:15来源:立尔讯科技作者:立尔讯科技关键词:工控机,服务器 服务器与工控机有什么差异?在工厂里运用,是选服务器好,仍是选用工控机好 ...

最新文章

  1. nginx同域名代理tomcat不同目录下的文件
  2. PHP中redis的使用
  3. android 8.1没声音,Android 8.1重大改变!耳机孔不见了
  4. strtus2改成springboot_ssh框架使用springBoot升级迁移替换Struts2
  5. mysql与tomcat_mysql数据库与tomcat服务器的一些细节问题
  6. 扫一扫闪退的可能性之一[wex5开发]
  7. 《Linux 设备驱动开发详解(第2版)》——1.4 Linux设备驱动
  8. NHibernate官方文档中文版——批量插入(Batch inserts)
  9. 2021年40个最佳免费WordPress主题
  10. 如何在html中播放.flv格式的视频【vue和普通html皆可用】
  11. 计算机网络知识自问自答,2020计算机网络学习心得体会.doc
  12. 3D游戏建模行业门槛高吗
  13. KindEditor实现WORD粘贴图片自动上传
  14. vue获取焦点、失去焦点
  15. DOCK6.9学习(VII)
  16. Day114.尚医通:用户认证、阿里云OSS、就诊人管理
  17. 西安工程大学计算机学院薛涛,计算机科学学院召开2021年度国家自然科学基金申报动员会...
  18. siwave 2020R2 软件铜箔粗糙度重大升级更新!
  19. CentOS Hive安装详细步骤
  20. [解决方案] java.lang.OutOfMemoryError异常解决方法 [复制链接]

热门文章

  1. 樊纲王小鲁市场化指数(2000-2019年)
  2. 肖特基二极管与整流二极管谁能更胜一筹?
  3. 规范TS项目Any类型的使用
  4. coreldraw凸起字符_CorelDRAW中如何插入特殊符号字体
  5. 适配器(Adapter)模式
  6. 在Debian上用FVWM做自己的桌面
  7. 制药业中的自然语言处理(NLP)
  8. Python的数据分析可视化十种技能总结
  9. 递归方法 求4的阶乘
  10. nodelist与HTMLCollection