浅谈三分法
本篇随笔简单讲解一下算法中的三分算法。
一、前置知识
要学三分的话,首先要对二分有一个了解和掌握。这是肯定的了。
尤其是二分答案,把求解转化为判定。
二、三分法的概念
刚刚已经提到过,二分答案是把求解转化成判定,但是其有一个很重要的适用范围:答案一定要满足单调性。这很显然。
但是如果答案函数就不是一个单调函数,而是一个类似于二次函数的波峰、波谷函数的话,怎么办呢?显然,二分是无勇武之地的。
那就三分呗。
是的,三分法可以求解波峰波谷函数的极值问题。(怎么感觉高中数学讲过呢?)
三、三分的正确性和原理
三分其实就是每次把可行区间分成三等分,进行判断后缩小区间的过程也是三分之一三分之一地缩小。所以其复杂度应该是以3为底的对数。这也不是很严格的。
那么三分为什么是对的呢?
现在你把可行区间分成了三份,因为只有一个最值,那么你的三等分点一定是同时处于答案一侧或者分别处于答案两侧。这个时候显然只需要判断两个三等分点的函数值大小,决定函数值往左右移动即可。这个考场画图即可正确模拟。