小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

最優(yōu)停止法則-麥穗理論

 退思齋1964 2024-04-13 發(fā)布于北京

最優(yōu)停止法則-麥穗理論

看到一個最優(yōu)停止法則-麥穗理論,故分享給讀者,并通過Matlab進行結果驗證

麥穗理論

  有一天,柏拉圖問老師蘇個拉底什么是愛情?老師就讓他先到麥田里去,摘一顆全麥田里最大最金黃的麥穗來。期間只能摘一次,并且期間只能向前走,不能回頭。

  柏拉圖于是按照老師說的去做了,結果他兩手空空的走出了田地。老師問他為什么摘不到?

  他說:“因為只能摘一次,又不能走回頭路,期間即使見到最大最金黃的,因為不知前面是否有更好的,所以沒有摘。走到前面時,又發(fā)覺總不及之前見到的好,原來最大最金黃的麥穗早已錯過了。于是我什么也沒有摘!”

  老師說:這就是“愛情”。

  之后有一天柏拉圖問他的老師什么是婚姻?老師就叫他先到樹林里,砍下一顆全樹林里最大最茂盛的,最適合放在家做圣誕樹的樹。期間同樣只能砍一次,以及同樣只能向前走,不能回頭。

  于是柏拉圖又照著老師的話去做。今次,他帶了一顆普普通通,不是很茂盛,也不算太差的樹回來。老師問他:怎么帶這顆這么普通的樹回來?他說:“有了上一次的經驗,當我走到大半路程還兩手空空時,看到這顆樹也不太差,便砍了下來,免得錯過了后,最后有什么也帶不回來。”

  老師說:“這就是婚姻!”

數學解答

  現在我們用數學的角度來討論這個問題。

  假設我們碰到的麥穗有n個,我們用這樣的策略來選麥穗,前k個,記住一個最大的麥穗記為d(可能是重量,也可能是體積),然后k+1個開始,只要大于d的,就選擇,否則就不選擇。

  對于某個固定的k,如果最大的麥穗出現在了第i個位置(k<i≤n),要想讓他有幸正好被選中,就必須得滿足前i-1個麥穗中的最好的麥穗在前k個麥穗里,這有k/(i-1)的可能。考慮所有可能的i,我們便得到了前k個麥穗作為參考,能選中最大麥穗的總概率P(k):

  設k/n=x,并且假設n充分大,則上述公式可以改為:

  對-x·lnx求導,并令這個導數為0,可以解出x的最優(yōu)值,它就是歐拉研究的神秘常數的倒數——1/e。

  所以k=n/e.

  如果你想摘取最大的麥穗,假設有n個麥穗,你應該先將前n/e個麥穗作為參考,然后再k+1個麥穗開始選擇比前面k個最大的麥穗即可。

e = 2.718281828459,1/e = 0.36787944117144。

其他例子

一、一樓到十樓的每層電梯門口都放著一顆鉆石,鉆石大小不一。你乘坐電梯從一樓到十樓,每層樓電梯門都會打開一次,只能拿一次鉆石,問怎樣才能拿到最大的一顆。

答案:首先,這個題目說的,并不能完全拿到最大的鉆石。但可以保證拿到最大鉆石的概率最大。10/e = 3.67,向上取整,得4。則:前四層皆不取,只記下最大的。后面遇到的,只要比前面最大的還大,取之。即可。

二、秘書問題。在機率及博弈論上,秘書問題(類似名稱有相親問題、止步問題、見好就收問題、蘇丹的嫁妝問題、挑剔的求婚者問題等)內容是這樣的:要聘請一名秘書,有n人來面試。每次面試一人,面試過后便要即時決定聘不聘他,如果當時決定不聘他,他便不會回來。面試時總能清楚了解求職者的適合程度,并能和之前的每個人作比較。問憑什么策略,才使選得到最適合擔任秘書的人的機率最大?

實驗證明

基本思路

數組里存放 1-100,數字越大代表男生的質量越高,將數組隨機打亂。從樣本容量為 1 開始到 99,在每一個樣本容量里,循環(huán)執(zhí)行 10000 次算法,用計數器來計數選到最大數字的次數。

核心算法: 記錄隨機數組中最大的數和指定樣本容量中最大的數,將備選區(qū)間里的數字和樣本 容量最大的數字比較(備選區(qū)間按照順序比較)。如果備選區(qū)間內的數字比樣本容量中最大的數字大,則選擇該數字。如果一直比樣本容量中最大的數字小,則往后順延。用計數器記錄成功選到最 優(yōu)秀數字的個數。

實驗代碼

clear
clc
close all
num = 100;
rng default
loop = 100000;
result = zeros(1,num);
for i = 1:num-1
    for k = 1:loop
        a=randperm(num);
        [max_a,index] = max(a);
        max_1 = max(a(1:i));
        for j = i+1:num
            if max_1<a(j) 
                if j==index
                    result(i) = result(i) + 1;
                end
                break
            end
        end
    end
end
figure
plot(result)
[max_result,index_result] = max(result)

結果符合預期,100/e=36.7,四舍五入等于37,

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發(fā)現有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多