【算法】 通过苏格拉底麦穗理论(最优停时)来研究爱情

摘要

        本篇文章通过最优停时理论,用苏格拉底捡麦穗的实例,建立模型。分析在怎么样的采样容量下, 苏格拉底捡到最长的麦穗的情况的可能性是最高的, 并给出概率的具体数值。
        本篇文章首先从数学理论角度证明最优的采样空间概率,再通过计算机代码实验证明最优停止理论的正确性,从而 给出一个较优的采样方法,同样可以运用于爱情问题等其他现实生活问题中。
关键词: 最优停止理论;苏格拉底麦穗理论;采样空间;爱情选择

1 引言

        当苏格拉底谈到爱情这一话题时,苏格拉底把学生带到了一个麦田。麦田的地上有很多麦穗, 苏格拉底要求学生从头开始一路走过去,只能捡一次麦穗。并且在道路上,只能前进,不能后退。 由于际遇的随机性,通常很难真正地选到自己最满意的那一个。那么,该观察多少麦穗之后再下手,捡到的最大的麦穗的可能性是最大的,是一个值得研究的问题。
        本论文数学证明了最优停止 理论的数学性,并通过实验证明,当选取 36.8% 为采样空间时,选到最大的麦穗的概率是最大的。 同理,在女生一生的恋爱中,选取前 36.8% 作为采样空间,找到真爱的概率是最大的。

2 数学理论证明

设有 n 个人,放弃前 k 个人,若按此策略最终选到最优的人的概率为 P(k), 则
P ( k ) = P ( 第 k + 1 个 人 是 最 优 的 ) + P ( 第 k + 2 个 人 是 最 优 的 ) + . . . + P ( 第 n 个 人 是 最 优 的 ) = 1 n + 1 n ∗ k k + 1 + 1 n ∗ k k + 2 + . . . + 1 n ∗ k n − 1 = k n ∗ ( 1 k + 1 k + 1 + 1 k + 2 + . . . + 1 n − 1 ) = k n ∑ i = k n − 1 1 i P(k) = P(第k+1个人是最优的) +P(第k+2个人是最优的)+...+P(第n个人是最优的) = \frac{1}{n} + \frac{1}{n} * \frac{k}{k + 1} + \frac{1}{n} * \frac{k}{k + 2} + ... + \frac{1}{n} * \frac{k}{n - 1}\\ = \frac{k}{n} * (\frac{1}{k} + \frac{1}{k + 1} + \frac{1}{k + 2} +... + \frac{1}{n -1})\\ =\frac{k}{n}\sum\limits_{i=k}^{n -1} \frac{1}{i} P(k)=P(k+1)+P(k+2)+...+P(n)=n1+n1k+1k+n1k+2k+...+n1n1k=nk(k1+k+11+k+21+...+n11)=nki=kn1i1

转化为规划问题
m a x k n ∑ i = k n − 1 1 i s . t . k ≤ n , k ∈ n , k ∈ N max\frac{k}{n}\sum\limits_{i=k}^{n-1}\frac{1}{i} \\ s.t. k\leq n, k\in n, k\in N maxnki=kn1i1s.t.kn,kn,kN
在n较小时,非线性规划求整数解
在n很大时, k n ∑ i = k n − 1 1 i \frac{k}{n}\sum\limits_{i=k}^{n-1}\frac{1}{i} nki=kn1i1即是y = y = 1 x y = \frac{1}{x} y=x1 将区间 ( k n , 1 ) (\frac{k}{n},1) (nk,1)分割成宽度为 1 n \frac{1}{n} n1的小区间后的黎曼和。
令x = k n \frac{k}{n} nk , 易知
P ( k ) = k n ∑ i = k n − 1 1 i ≈ x ∫ 1 x 1 x d x = − x l n x P(k) = \frac{k}{n}\sum\limits_{i=k}^{n-1}\frac{1}{i} \approx x\int_1 ^x \frac{1}{x} dx = -xlnx P(k)=nki=kn1i1x1xx1dx=xlnx
为求P(k)最大值,令P’(k) = -(1 + lnx) = 0, 有x = 1 / e
此时
P ( k ) = − 1 e l n 1 e = 1 e ≈ 36.8 % P(k) = -\frac{1}{e} ln\frac{1}{e} = \frac{1}{e} \approx 36.8\% P(k)=e1lne1=e136.8%

3 实验证明

3.1 基本思路

        数组里存放 1-100,数字越大代表男生的质量越高,将数组随机打乱。从样本容量为 1 开始到 99,在每一个样本容量里,循环执行 10000 次算法,用计数器来计数选到最大数字的次数。
        核心算法: 记录随机数组中最大的数和指定样本容量中最大的数,将备选区间里的数字和样本 容量最大的数字比较(备选区间按照顺序比较)。如果备选区间内的数字比样本容量中最大的数字大,则选择该数字。如果一直比样本容量中最大的数字小,则往后顺延。用计数器记录成功选到最 优秀数字的个数。

3.2 实验代码

//
//  main.cpp
//  最优停止问题
//
//  Created by python on 2020/10/9.
//  Copyright © 2020 SSDF. All rights reserved.
//

#include <iostream>
#include <algorithm>
#include <cstdlib>
#include<ctime>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
    srand((unsigned)time(NULL));
    //int demo = 1;
    //int chance[100];
    //int *temp = new int[1000];
     
    //设定样本容量
    int demoarray[100];
    vector<int> vs;
    for(int j=0;j<100;j++){
        vs.push_back(j+1);//将1-100放入vs
    }
    
    
    for(int demo = 1;demo<100;demo++){
    int count = 0;
   for(int i = 0;i<10000;i++){
      
       
       //打乱顺序
       random_shuffle(vs.begin(),vs.end());
       
       //取出样本容量中最大的数
        int *maxdemo = max_element(vs.begin(),vs[demo]);
        // cout<<"maxdemo"<<*maxdemo<<endl;
       
       //比较算法
       int tempfigure;
       for(int j = demo;j<100;j++){
           tempfigure = vs[j];
           if(tempfigure >= *maxdemo){
                if(tempfigure == 100){
                        count++;
                         
                }
              break;
        
           }
           if(tempfigure == 100){
               count++;
               break;
           }
        }
   
       }
        demoarray[demo-1] = count;
   // cout<<"count:"<<count<<endl;
    //cout<<count/1000.0<<endl;
      //delete [] temp;
  
}
    for(int i = 0;i<100;i++){
        cout<<demoarray[i]<<" ";
    }
  return 0;
}

3.3 实验结果

代码执行结果:
code

数据可视化:
由实验可知,当样本容量的数量在大约 37 附近时,得到的女神找到真爱的概率是最大的,其数值接近 37%。
result

4 结论

        根据理论和代码实验证明,36.8% 是最优的采样空间比例. 并且,通过数学理论推导证明,当样 本容量足够大时,选取 36.8% 作为采样空间,得到最优的概率也是最大的,为 36.8%。
        将此结论应用于女生的爱情选择中,我们可以知道,若女生一生中要谈 n 段恋爱,那么选取 n * 36.8% 个男生作为她的采样空间,找到真命天子的概率,是最大的。

5 参考资料

1.https://blog.csdn.net/hildahuang/article/details/8099202 秘书问题
2.https://www.bilibili.com/video/BV1uJ411D7AW?t=308 37% 法则

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值