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;
            }
  • 相关阅读:
    kibana 设置登录认证
    elasticsearch
    elasticsearch安装ik
    elasticsearch 安装head
    Docker 数据卷之进阶篇
    link快捷方式
    动作方法中 参数,Json
    spring单元测试
    js之cookie操作
    idea快捷键
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270397.html
Copyright © 2011-2022 走看看