您的位置:首页 > 其它

三分算法

2016-08-07 21:33 197 查看
综合于大牛们的总结:
三分算法解决凸形或者凹形函数的极值;
二分解决具有单调性的函数的极值;



mid = (Left + Right) / 2
midmid = (mid + Right) / 2;
如果mid靠近极值点,则Right = midmid;
否则(即midmid靠近极值点),则Left = mid;
 
程序模版如下:

double cal(Type a)

{

    /* 根据题目的意思计算 */

}
void solve()

{

    double Left, Right;

    double mid, midmid;

    double mid_value, midmid_value;

    Left = MIN; Right = MAX;

    while (Left + EPS <= Right)

    {

        mid = (Left + Right) / 2;

        midmid = (mid + Right) / 2;

        if (cal(mid)>=cal(midmid)) 
            Right = midmid;

        else Left = mid;

    }

}
三分算法的题目:HDU :3400  2298  4454  2438  3756  
                                 POJ:  3301   3737  
                                 ZOJ: 3203
------------------------------------------------------------------------------------------------------------------------
现在太多东西要学了,没空上手练了,没时间(自己太颓),有空再补坑吧~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数学 三分