520 我用算法帮女朋友的闺蜜选男友

文章目录:

  • [用算法拯救她闺蜜]
  • [本质上是最优解问题]
  • [用平行宇宙解释]
  • [蒙特卡洛算法求解]
  • [所有的前任只是前戏]
  • [每天只想和你做四件事——一日三餐]

我用算法帮女朋友的闺蜜选男友

用算法拯救她闺蜜

在这里插入图片描述

下班前收到女友的电话,说晚上要和她的网红闺蜜一起吃个饭。
“what?这不是鸿门宴吧?”
“你想什么呢?她最近处的一个男朋友像她求婚了,不知道要不要答应。你不是搞数据分析的吗?想让你帮忙理性分析一下!”
要说女朋友的闺蜜,条件是真不错,中产家庭,高等学历,当然最关键的颜值很能打,要不然也不能当网红。可惜遇人不淑,有几段失败的感情经历,也算是受了情伤。自古美女遇渣男,也算是常态。是时候用算法来拯救妹子了。

本质上是最优解问题

如果你读过《Algorithms to live by》就知道本质上这就是一个“最优停止问题”,答案很简单,就是37% (1/e)。
我们来把这个问题说的更清晰一点:
问题描述:
我们假设网红妹子在一生中有可能会遇到100个求婚的男人,妹子要答应第几个男人才是最优的呢?

限制条件:

  • 男人会一个一个来求婚。
  • 妹子只能对提出过求婚请求的男人来进行打分比较。(也就是在未来有可能求婚的男人你没有办法进行打分,因为还没遇到)。
  • 已经被拒绝的求婚者,就永远不再考虑了。

为此,妹子可以这样做:

  • 设立观察期,在观察期内对所有的求婚者只打分不接受求婚
  • 选出观察期内的最高得分
  • 对接下来的每一个求婚者进行打分,并与观察期内的最高得分进行比较,如果大于等于为真,则接受求婚停止求解,否则拒绝求婚并比较下一个求婚者。

这个观察期的停止最优解就是37%,也就是你观察100 * 37% = 37,妹子只考察前37个求婚者,只打分不接受求婚。从第38个人开始,如果得分大于等于前37个人中的最大值,就接受她的求婚。
现在头疼的是如何把妹子讲明白呢?

用平行宇宙解释

我们遇到这类问题之所以头疼是因为我们的人生只有一次。但如果这个世界存在平行宇宙,拥有多个平行宇宙的你,这个问题是不是就好解决了?



想象一下你拥有了《十二大战》中老鼠的异能。当然你没有也没有关系,你可以用计算机来帮你实现。

np.random.seed(100)
lifes = np.random.uniform(0,1, size=(100000, 100))

这样你就产生了100000个平行宇宙,在每个宇宙中妹子会遇到100个求婚者,每个求婚者的得分是随机生成的,范围为0~1

蒙特卡洛算法求解

是时候放大招了,我们要在100000个平行宇宙,求最优解了,这个时候咱们就不用什么数学证明了,直接用蒙特卡洛算法的思路去解决就好了。

蒙特卡洛算法就是通过构建大量的随机值去模拟现实中的数据,并猜测最优解的过程。

我们先来完成核心的check函数。
把每一个平行宇宙的数据传给check,如果我们选到了最大值返回True,否则返回False。

def check(life, stop):
    max_in_saw = max(life[:stop])
    select = 0
    for i in range(stop, len(life)):
        if life[i] >= max_in_saw:
            select = life[i]
            break
    maxall = max(life)
    if select == maxall:
        return True
    else:
        return False

接下来就遍历100000个平行宇宙,在每个宇宙去,去尝试不同的stop值,也就是设置不同的观察期。

success_count = np.zeros(100)
for stop in range(1, 100):
    for life in lifes:
        if check(life, stop):
            success_count[stop] += 1

输出success_count数组的最大值,正好是37。这意味着你用这个停止条件,获得的最大值最多(也就是挑选到合适人选的次数)。

print(success_count.argmax())
#输出值为37

当然如果你的平行宇宙个数和求婚者个数和我不一样,结果可能会有差距,但应该是在37%的位置左右。

做一个可视化,让结果更好观察

x_axis = np.arange(1,100)
y_axis = success_count[1:100]
plt.plot(x_axis, y_axis, 'ro-', linewidth=2.0)
plt.show()
结果可视化

所有的前任只是前戏

这种在观察阶段冒着与优秀的人选失之交臂的策略,到底值不值呢?
我们简单的思考一下,在100个中候选者中,我们随机选一个人,他是最优解的概率是1%。
而在我们刚才示例的100000个平行宇宙中,如果我们使用stop为37的策略,我们将在37131.0个平行宇宙中获得最优解。
在就把获得最优解的概率提高到了37.131%。这真是巨大的提升,这就是算法的力量。
所有的前任只是前戏,只有最优解才是高潮!

每天只想和你做四件事——一日三餐

晚餐吃的很愉快,席间好好的给女友的闺蜜普及了一下"37%"最优解。
"你看假设你打算38岁之前把自己嫁出去,从18-38这20年间,你每年遇到一个求婚者也就是20个!"
你的观察期最优解为20
37%= 7.4 也就是你先观察7个求婚者,你现在男朋友正好是第8个,从你描述你对他的评价比之前那7个人都高。所以从概率上来说,你选择他是你的最优解!"
*
图文并茂很是让女友的闺蜜信服,收获了无数崇拜的小星星!

晚上回家,女友问我她是我的第几个女朋友,是不是最优解?
我肯定的回答,你就是我的最优解。
我计划38岁结婚,从18~38,这20年间我在28岁遇到你,你不是我的最优解,谁是?
以后:"每天只想和你做四件事——一日三餐"

天作之合

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342