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;
            }
  • 相关阅读:
    显示器接口
    常用英语-持续更新
    Web Service
    单元测试--Moq
    单元测试--Xunit
    Asp.Net WebApi 跨域问题
    VS中常用的快捷键
    单元测试--最佳实践
    设计模式--建造者模式
    windows10搭建GitBucket服务器(1)
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270397.html
Copyright © 2011-2022 走看看