波斯公主选驸马,她是这么利用大数据和算法找男人的

2023-10-24 03:20

本文主要是介绍波斯公主选驸马,她是这么利用大数据和算法找男人的,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


《波斯公主选驸马》题,如下:

波斯公主到了适婚年龄,要选驸马。候选男子 100 名,都是公主没有见过的。百人以随机顺序,从公主面前逐一经过。每当一位男子在公主面前经过时,公主要么选他为驸马,要么不选。如果选他,其余那些还没有 登场的男子就都遣散回家,选驸马的活动也 over 了。如果不选,当下这名男子就离开,也就是 pass 掉此人,下一人登场。被 pass 掉的,公主不可以反悔再从选。规则是,公主必须在这百人中选出一人做驸马,也就是说,如果前 99 人公主都看不中的话,她必须选择第 100 名男子为驸马,不管他有多么丑陋。

任务是,给公主设计选择方法,让她有最高概率选到百人中最英俊的男子为驸马。

        说明一点是,没有任何选择方法能够保证公主一定选择到最帅的帅哥。对于任何选择方法,总存在某些出场的顺序,让公主与帅哥错过。所以,题目所问的,不是必胜的选法(因为不存在),而是概率最高的选法。

        因为并不是要讨论数学,我这里就直接给出答案了:最佳选法是 pass 掉最开始的 100/e 名男子(e = 2.718… 是自然对数,即 100/e 约等于 37)。但是记录下这 37 名男子中最英俊者。之后鱼贯而来的男子中,出现的第一位英俊程度超越所有前 37 人者,即为驸马。如果人都走光了,也没出现这么一位 Mr. Right,那么就只好选择第 100 位男子。

        这个最佳选法,后面有很有意思的数学推导。

        正解后面的思考方法

        数学的推论且不论,这个答案背后是一个可为广泛应用的思考方法。公主选择的难处在于她不知道这百人的英俊程度是怎样分布的,是在怎样一个范围 内。所以她最佳的策略是,pass 掉最初 37 位男子,但是把他们看成一个有代表性的 sample,从而了解这百人相貌的大致分布。然后在这个认知的基础上进行选择。

        真实的谈情说爱当然不是一个简单的选美。普通人也不能像波斯贵族那样要谁有谁。但是思维方法共通。假如你是一位女生,第一次恋爱的时候,也许你 觉得男朋友不够细腻,不解风情。但你无法判断的是,是否天下男生大多如此,还是你特别倒霉碰到这样的极品。你唯有试过三个五个后,才能够对男性这个物种有 个全局的判断。所以,当你和第一任男朋友分手后,大可不必悲天悯人,亦或对天下男人失望。正确的态度是:okay,我现在有一个 data point, 现在我来找些更多的 data points。

        花多长时间学习?

        找到多少 data points 才够呢?换句话说我们学习到什么时候才能够信任自己对世界的判断?以下这个小故事中,我们可以看出大自然是怎么解决这个问题的。

        1944 年冬天,二战进入尾声。德国人封锁了荷兰德占区的补给。1944-1945 年的冬天,被称为”hunger winter”(饥饿的冬天)。有四百五十万荷兰人遭受饥饿,一万八千人饿死。1945 年,德国战败,封锁也随之解除。

        但这个饥饿冬天所带来的影响却一直留存到几十年后。那些封锁期间怀着孩子的妇女,她们肚子里发育中的胚胎,虽无知觉,也经历了这场灾难。几十年后,当这些孩子成为 50 岁的中年人,科学家们发现他们会比之前,或者之后出生的荷兰孩子都更肥胖,更容易有心血管疾病。

        对此的一种解释是,还在妈妈肚子里的时候,我们的身体就在学习这是怎样一个世界:是个食物充足,衣食无忧的世界?还是一个有上顿没下顿的世界? 这些荷兰饥荒那年出生的婴儿,他们的身体学习到:“这是一个食物匮乏的世界”。哪怕他们成年之后,荷兰已经是一个富余的发达国家,他们的身体还是不忘早年 饥饿的经历,会尽力存储脂肪,准备着下一个饥饿冬天的到来。结果就是这个人群更容易肥胖,并且更容易患有与肥胖相关的心血管疾病。

        有意思的是,对食物丰富与否的学习,在 10 月怀胎中完成,居然之后几十年也无法扭转。这个学习的窗口,是我们的身体,我们的基因所决定的。孩子学东西快,是因为他们的身体和大脑就是 specialized 学习机器。有研究说,人脑中负责抽象思维的前额叶在 25 岁才定型。换句话说,25 岁以前,我们的思维,特别是那些高级的认知能力,还在不断变化着。而这其中很多的变化,就来自我们的环境。这种变化,就是我们在学习我们所在的,到底是怎 样一个世界;怎样的思维和行为,是在这个世界上行得通的。

        从人脑的发育看来,过了 25 岁,至少从生理上来说,这种学习就停止了。这个 deadline 取决于基因,而基因来源于千百万年的进化。千百万年中,人类的平均寿命是徘徊在 20-30 岁。这可能就是为什么我们的学习,从我们身体的设计上看来,是在 25 岁就截止了。

        我们无法影响自己生理、身体上的学习,但是有些事情的学习,却是我们可以影响的,而且应该去影响的。选择怎样的工作?居住在哪个城市?找什么样 的伴侣?这些似乎不是应该匆匆忙忙,赶着一个 deadline (特别是 25 岁的 deadline)去决定的事情。你会进行很多比较,才决定购买一辆汽车或者房子。而工作、伴侣,这些更重要的决定,你当然要更多比较比较,了解一下你是 在怎样的一个世界里,才做决定。

        也许你 30 岁了,没有婚配的对象,不喜欢正在做的工作,但有种种压力期待你“别折腾,安顿下来”。这压力可能来自于一个一直不给个人选择的社会传统,或者来自于一个 预期寿命只有 30 岁的进化压力。但是这一切都变了:社会已经有越来越多的选择余地,我们也可以预料之中的活到 80,90 岁。

        也许你要认真考虑一下波斯公主的问题:我是否应该继续收集 data points?还是已经到了要做终生决定的时候?

        回到波斯公主的题目

        波斯公主的题目至少还教了我们另一点,就是哪怕你的方法是最优,你也永远不可能是每次都得到最英俊的驸马。在最优化的选择方法下,公主也只有 40% 左右的可能性选择到最帅的男人。就是说,如果这样选择十次,每次这百名男子以随机顺序出现,其中有 6 次,公主都会选到不是最帅的驸马。

        生活就是有风险的,不可测的。这似乎是个打击,但也是一种释怀。尽人事,安天命。如果你按照一个正确的方法去做了,哪怕结果差强人意,这也并不是你的错。

        我学会的另一点是,如果我是作为被选的一方(就像那 100 名男子),timing 是至关重要的。以下是一个简单的多的题目:

        如果你是这百名男子中的一名,并且你能够决定自己出场的名次,你会选择在什么时候出场,以最大提高自己被选的概率?

        答案是第 38 名。你不会选择在 38 名之前,因为你被选的概率是零(假设我们的公主学过高等数学,知道最佳选法)。你也不会选择后于 38,因为你前面每多一个人,就意味着多了一分公主选上他的机会。

        如果你有一位意中人,你当然要努力去追求幸福,但你可能也要想一下,这是否是最好的 timing?

        37% 法则“实测”

        37% 法则的效果究竟如何呢?我们在计算机上编写程序模拟了当 n = 30 时利用 37% 法则进行选择的过程(如果 MM 始终未接受求爱者,则自动选择最后一名求爱者)。编号越小的男生越次,编号为 30 的男生则表示最佳选择。程序运行 10000 次之后,竟然有大约 4000 次选中最佳男生,可见 37% 法则确实有效啊。

波斯公主选驸马,她是这么利用大数据和算法找男人的

        计算机模拟 10000 次后得到的结果

        这个问题由数学家 Merrill M. Flood 在 1949 首次提出,这个问题被他取名为“未婚妻问题”。这个问题的精妙之处在于,在微积分界叱咤风云的自然底数 e,竟也出人意料地出现在了这个看似与它毫不相关的问题中。不知道此问题发表后,Geek 男女间会不会多了一种分手的理由:不好意思,你是那 37% 的人⋯⋯

        如何求出最优的 k 值?

        大数学家欧拉对一个神秘的数学常数 e ≈ 2.718 深有研究,这个数字和“拒人问题”竟然有着直接的联系。

        对于某个固定的 k,如果最适合的人出现在了第 i 个位置(k < i ≤ n),要想让他有幸正好被 MM 选中,就必须得满足前 i-1 个人中的最好的人在前 k 个人里,这有 k/(i-1) 的可能。考虑所有可能的 i,我们便得到了试探前 k 个男生之后能选中最佳男生的总概率 P (k):

波斯公主选驸马,她是这么利用大数据和算法找男人的

        用 x 来表示 k/n的值,并且假设n充分大,则上述公式可以写成:

波斯公主选驸马,她是这么利用大数据和算法找男人的

        对-x · ln x 求导,并令这个导数0,可以解出x的最优值,它就是欧拉研究的神秘常数的倒数——1/e!

        也就是说,如果你预计求爱者有n个人,你应该先拒绝掉前n/e个人,静候下一个比这些人都好的人。假设你一共会遇到大概 30 个求爱者,就应该拒绝掉前 30/e ≈ 30/2.718≈ 1 个求爱者,然后从第 12 个求爱者开始,一旦发现比前面 11 个求爱者都好的人,就果断接受他。由于 1/e 大约等于 37%,因此这条爱情大法也叫做 37% 法则。

        不过,37% 法则有一个小问题:如果最佳人选本来就在这 37% 的人里面,错过这 37% 的人之后,她就再也碰不上更好的了。但在游戏过程中,她并不知道最佳人选已经被拒,因此她会一直痴痴地等待。也就是说,MM 将会有 37% 的概率“失败退场”,或者以被迫选择最后一名求爱者的结局而告终。

这篇关于波斯公主选驸马,她是这么利用大数据和算法找男人的的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/272345

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖