日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

分治 —— 三分法

發布時間:2025/3/17 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分治 —— 三分法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【概述】

三分法是二分法的擴展,其用于求凸性或凹形函數的極值,當通過函數本身表達式并不容易求解時,就可以用三分查找來不斷逼近求解。

其原理為:函數中存在一個點 x 是最值,對于 x 的左邊,滿足單調上升(下降),右邊滿足單調下降(上升),然后進行兩次二分,使得不斷的逼近這個 x 點,最后求得答案。

【基本思想】

類似二分的定義 Left 和 Right,對于?[L,R],先找出 lmid,緊接著再找出 rmid,然后比較兩者誰更優,然后舍去不優的。

  • mid=Left+(Left-Right)/3
  • mid_mid=Right-(Right-Left)/3

若 lmid 靠近極值點,則 Right=rmid,若 rmid 靠近極值點,則 Left=lmid;

要注意的是,若在三分過程中,遇到 f(lmid)=f(rmid) 時,若函數嚴格單調,那么令 left=lmid 或令 right=rmid 均可,若函數不嚴格單調,即在函數中存在一段函數值相等的區間,將無法判斷定義域左右邊界該如何縮小,三分法也就不再適用。

【查找連續函數的寫法】

/*查找函數最大值*/ int BinarySearch(double low,double high){//low為區間下界,high為區間上界 double left,right,mid;left=low;//設置當前查找區間上界的初值 right=high;//設置當前查找區間下界的初值 while(right-left>1.0e-6) { mid=(max+min)/2;//設置中值mid_mid=(mid+max)/2;//設置中值if(Caculate(mid)<Caculate(mid_mid))//若函數結果左值小于右值 left=mid;//調整集合下界 else//否則 right=mid_mid;//調整集合上界 } return Caculate(mid); }

【例題】

  • Strange fuction(HDU-2899):點擊這里
  • Error Curves(HDU-3714):點擊這里
  • 曲線(信息學奧賽一本通-T1435):點擊這里
  • Line Belt(HDU-3400)(三分兩次找點):點擊這里
  • Toxophily(HDU-2298)(三分+二分):點擊這里
  • Turn the corner(HDU-2438)(三分+數學推導):點擊這里
  • Light Bulb(ZOJ-3203)(三分+數學推導):點擊這里
    同題:燈泡(信息學奧賽一本通-T1438):點擊這里
  • 傳送帶(洛谷-P2571)(三分套三分):點擊這里
    同題:傳送帶(信息學奧賽一本通-T1439):點擊這里
  • 總結

    以上是生活随笔為你收集整理的分治 —— 三分法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。