zoukankan      html  css  js  c++  java
  • [模板]三分搜索

    三分思想是二分的一个简单延展

    二分区间要求是简单线性变换 

    而对于二次函数等单 峰 / 谷 函数无法获得正确的逼近趋向

    而三分搜索可以解决这样的问题

    设左右两三分点 X, Y

    若F(X)  > F(Y)

       则有 X = A && Y = B 或 X = A && Y = C; 

           则必定有峰在X 右侧

    同理

          则必定有峰在Y 左侧

    结束

    注意此处两三分点 X Y 并不是严格三等分

    而是 X 为总区间中点

    Y 为 X 到 最右区间中点

    因为假若严格三等分

    当 fst == -lst 时

    fst + lst == 0 

    则三分点X = 0 / 3 ==  Y = 0 * 2 / 3

    答案肯定就错了

    对于浮点数求解直接固定次数暴力循环即可

    代码

            ld fst = -INF, lst = INF;
            
            ld midfst, midlst;
    
            ld disa, disb; 
    
           	for(int i = 0; i < 50; i++)
           	{
                midfst = (fst + lst) / 2.0, midlst = (midfst + lst) / 2.0;
                
                disa = retdis(midfst), disb = retdis(midlst);
    
                if(disa >= disb)
                    fst = midfst;
                else
                    lst = midlst;
            }
  • 相关阅读:
    Mac pycharm专业版安装以及破解方法
    Django 错误之 No module named ‘MySQLdb’
    archery部署
    MySQL监控内容
    mac安装神器brew
    4. 寻找两个有序数组的中位数
    7.整数反转
    2.两数相加
    1. 两数之和
    141. 环形链表
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270397.html
Copyright © 2011-2022 走看看