1、1关于玫瑰有约的数学模型摘要:现在城市大龄青年的婚姻问题收起了社会的广泛关注,针对这一社会现象,我们假设某单位有 20 对大龄青年男女,每个人的基本条件都不相同,并且每个人的择偶条件也不相同。该单位的妇联组织拟根据他们的年龄,基本条件和要求条件牵线搭桥。本文根据每个人的情况和要求,建立数学模型帮助妇联解决 3 个问题。关键词:数学模型;满意度;匈牙利算法;KM 算法The mathematical model about making an appointment for life(Department of Mathematics and Computational Science Huna
2、n University of Science and Engineering,Yongzhou,425100,Hunan)Abstract: Nowadays, the problem of the youngs marriage has roused more and more publics concern. According to this phenomenon, we assume that there are twenty pairs of aged people in a company, all of which have different basic condition
3、and their demanding。The Womens Federation of this company wants to wire-pull for them on the basis of their age, basic condition and demand. This paper, according to everyones condition and demands, helps the Womens Federation solving this problem.Key words: mathematical model; the measurement of sa
4、tisfaction; Hungary algorithm; KM algorithm; 1. 引言现在在城市大龄青年的婚姻问题引起了社会的广泛关注,针对这一现象,我们给出 20 对青年男女的基本条件和择偶条件的抽样是真实可靠的。首先,我们将所给的两个表格按年龄升序重新进行排列,分别编号为 1,2,320。并且将外貌、性格、气质、事业、财富五个方面的五个等级 A、B 、C、D 、E分别赋值为 5、4、3、2、1,这样我们就得到了男女青年的基本条件和要求条件的四个矩阵 ;其次,我们定义了“满意度”的概念,利用图论,AB,CD(二部图)的方法解决这个问题。在模型中,根据男青年的基本条件和女青年的要
5、求条件构造度量矩阵(权2值矩阵)A,男 1 号的基本条件和女 1 号的要求条件,比如在外貌方面,男 1号满足女 1 号的要求则赋值为 5-3+1,在事业方面,男 1 号不满足女 1 号的要求,则赋值为 0,按照这个方法,如果满足条件则按公式(男青年基本条件值-女青年相应的要求条件+1)赋值,反之赋值为 0,这样可以得到外貌,性格,气质,事业,财富五个方面的数值,并将这些数值相加得到 ,最终得到权值ijt矩阵 T=( )20 20,同理可得,女青年的基本条件和男青年的要求条件所构ijt成的权值矩阵 S=( )20 20,那么男女青年配对的总权值矩阵(即为满意度矩ijs阵)为 R1=T+S, (因
6、为 表示男 i 号的基本条件对 j 号的要求条件, 表示女 jijt ijs号的基本条件对男 i 号的要求条件,那么用 + 表示男 i 号对女 j 号的总权数ijtijs即为他们之间的满意度):再次,我们根据年龄的限制在矩阵 R1 中将不满足条件的赋 0,得到矩阵 R,利用匈牙利算法可得到问题(1)的结果。再在矩阵R 中将大于 2 的数字赋 1 反之赋 0,再利用 KM 算法可得问题(2)的结果。由于以上的模型在构造权值矩阵 R 时,男青年基本条件不满足女青年要求条件时赋值为 0,实际上还存在男女青年的失望度,故在模型改进中针对失望度将模型中赋值为 0 的另外赋值为(女青年要求条件值男青年相应
7、的基本条件值)即考虑到可能单向面的满意度较大而另一方面的失望度也较大时同样不能配对成功,且在把模型无向化时是采用把每个结点分成两个结点的方法即把有向的平行边分成各自带自己权的无向边,同时在此模型中将初等模型中的五个等级 A、B、C 、D 、E 量化为 9、7、5、3、1(由于模型中的赋值尺度比较粗糙) ,其余的步骤与模型相同,从而得到了模型改进。2.问题的提出目前,在许多城市大龄青年的婚姻问题已引起了妇联和社会团体组织的关注。某单位现在有 20 对大龄青年男女,每个人的基本条件都不相同,如外貌、性格、气质、事业、财富等。每项条件通常可以分为五个等级A、B、 C、D 、E,如外貌、性格、气质、事
8、业可分为很好、好、较好、一般、差;财富可以分为很多、多、较多、一般、少。每个人的择偶条件也不尽相同,即对每项基本条件的要求是不同的。该单位的妇联组织拟根据他(她)们的年龄、基本条件和要求条件进行牵线搭桥。下面给出 20 对大龄青年男女的年龄、基本条件和要求条件(如下表) 。一般认为,男青年至多比女青年的年龄大 5 岁,或女青年的年龄比男青年的大 2 岁,并且要至少满足个人要求 5 项条件中的 2 项,才有可能配对成功。本文根据每个人的情况要求,建立数学模型帮助妇联解决如下问题:(1)给出可能的配对方案,使得在尽量满足个人要求的条件下,使得配对成功率尽可能的高。(2)给出一种 20 对男女青年可
9、同时配对的最佳方案,使得全部配对成功的可能性最大。(3)假设男女双方都相互了解了对方的条件和要求,让每一个人出一次选择,3只有当男女双方相互选中对方时才认为配对成功,每一个人只有一次选择机会。怎样告诉 20 对男女青年都应该如何做出选择,使得自己的成功的可能性最大?选择的方案最多能配对成功多少对?基本条件 要求条件男青年外貌性格气质事业财富年龄外貌性格气质事业财富A C B C A 29 A A C B DC A B A D 29 B A B B CB B A B B 28 B A A B CC A B B D 28 C A B C DD B C A A 30 C B B B EC B C B
10、 B 28 B B C D CA B B D C 30 C B B D CB A B C D 30 A B C C DA D C E B 28 A A A C CD B A A A 28 A B A D EB A C D A 32 A B C D BA B C A B 29 B A B B CB A D E C 28 A C B B CA A B B D 30 A C C D CA B B C C 28 A A B C DD E B A A 30 A A A E EC A B A D 28 A A A E EA B A C B 31 B B A C CC D A A A 29 A B A E
11、DA B C D E 27 B C B D B4注:表中的要求条件一般是指不低于所给的条件。为了方便后面的计算,我们按年龄升序重新对上述两个表格进行排列并且编号:基 本 条 件 要 求 条 件男青年外貌性格气质事业财富年龄外貌性格气质事业财富1 A B C D E 27 B C B D B2 B B A B B 28 B A A B C3 C A B B D 28 C A B C D4 C B C B B 28 B B C D C5 A D C E B 28 A A A C C6 D B A A A 28 A B A D E7 B A D E C 28 A C B B C8 A B B C C
12、 28 A A B C D9 C A B A D 28 B A B B C10 A C B C A 29 A A C B D11 C A B A D 29 B A B B C12 A B C A B 29 B A B B C13 C D A A A 29 A B A E D14 D B C A A 30 C B B B E15 A B B D C 30 C B B D C16 B A B C D 30 A B C C D17 A A B B D 30 A C C D C18 D E B A A 30 A A A E E19 A B A C B 31 B B A C C20 B A C D A
13、32 A B C D B基 本 条 件 要 求 条 件女青年外貌性格气质事业财富年龄外貌性格气质事业财富A C C D A 28 B A B A DB A B A D 25 C B B A BC B A E A 26 B A C B CA B B C D 27 A A B B AB D C E C 25 A B C B BA C B C A 26 B A B B CD C B A B 30 C B A A CA B A E C 31 B A B A BA A A C E 26 C B B B AB C D B B 27 B B A A CA B B C B 28 C B A B CB E C
14、E A 26 A A B B EE A C B B 26 C A B C CB B C A A 25 B A A B DC B A A C 29 B A B B BB A C D C 28 B A B B AA E E D A 25 A A D A CA A B B C 28 C A B A CB A C C E 25 B B B A AD B A C D 29 B B A B B5基 本 条 件 要 求 条 件女青年外貌性格气质事业财富年龄外貌性格气质事业财富1 B A B A D 25 C B B A B2 B D C E C 25 A B C A B3 B B C A A 25 B A
15、A B D4 A E E D A 25 A A D A C5 B A C C E 25 B B B A A6 C B A E A 26 B A C B C7 A C B C A 26 B A B B C8 A A A C E 26 C B B B A9 B E C E A 26 A A B B E10 E A C B B 26 C A B C C11 A B B C D 27 A A B B A12 B C D B B 27 B B A A C13 A C C D A 28 B A B A D14 A B B C B 28 C B A B C15 B A C D C 28 B A B B A1
16、6 A A B B C 28 C A B A C17 C B A A C 29 B A B B B18 D B A C D 29 B B A B B19 D C B A B 30 C B A A C20 A B A E C 31 B A B A B注:表格中的要求条件一般是指不低于所给条件3.问题分析该问题是现实生活中的实际问题,主要就是确定合理配对方案,使得在尽量满足个人要求条件下,使配对成功率尽可能的高。由于每个人的基本条件和要求条件都是给定的,双方彼此是知道的,而且是相互之间有很大的差异,如果完全按照要求条件组合配对成功。任意一对男女的配对可以看成一个随机事件,按某一概率可能配对成功,或
17、不成功。在这里双方的满意度主要反映出一个人对另一个人的客观和主观看法,因此,满意度的定义成为解决问题的一个关键。所谓的“成功率” ,就是男女双方最终配对的概率。实际上,可以用他们相互之间的满意度来间接刻画。相互的满意度越高,双方配对的成功率就越大。对于问题(1) ,要使配对成功率尽可能的高明,也就是给出一种方案,使得 20对男女的配对后的满意度之和最高。对于问题(2) ,要使 20 对男女青年同时配对,使得全部同时成功的可能性(概率)最大。对于问题(3) ,因为每人个只能选择一次,能不配对成功取决于双方是不是选中对方,即要看双方彼此的满意度如何。实际中,假如一个男青年 (iA6)对一个女青年
18、( )的满意度最高,但 对 的满意度不120ijB120jjBiA一定最高,即若 选择 ,但 不一定选择 。因此, 与 不一定配成对,iAj iAi反之亦然。现在的问题是谁选谁,使配对成功的可能性最大呢?这个问题实际上是男女双方在彼此基本了解的情况下,在保证自己一定满意的条件下做出自己的选择,也需要猜测对方会做出怎样的选择。因此,这个问题可能转化为男女双方的对策问题,即转化为求男女双方的非零和对策的纳什平衡点的问题。4. 模型的假设与符号说明41 模型的假设(1)题目所给出的男女青年的评价是客观真实的;(2)每个人在选择双方的时候是理智的;(3)男女青年不会受当时环境的影响。42 符号说明K=
19、1,2,3,4,5.分别表示外貌、性格、气质、事业、财富这 5 个条件;(i=1,2 20)表示年龄升序排列后男青年编号;iA(j=1,2 20)表示年龄升序排列后女青年编号;jB( i=1,2 20,k=1,2,3,4,5)表示男青年在 k 方面的基本条件;ika( i=1,2 20,k=1,2,3,4,5)表示男青年在 k 方面的要求;b( j=1,2 20,k=1,2,3,4,5)表示女青年在 k 方面的基本条件;jkc( j=1,2 20,k=1,2,3,4,5)表示女青年在 k 方面的要求;d表示男青年 i 对女青年 j 在 k 方面的满意度;ijs表示女青年 j 对男青年 i 在
20、k 方面的满意度;kT表示男青年 i 与女青年 j 在 k 方面的满意度之和.ijR5模型的建立和求解5.1 条件量化处理对于每个人的外貌、性格、气质、事业、财富五项条件的 5 个等级A,B,C ,D,E 分别作量化处理为 5,4,3,2, 1。于是根据上表可以得到男女青年的基本条件量化矩阵和要求条件量化矩阵(或称权值矩阵)以及满意度分量分别记为: , , ,()0()05252ikikj jAaBbCcDd70,1jkikkijjkikjicbScb0,1ikjkkjiikjkijadTad5.2 满意度现在,我们对满意度进行说明,要确定 对 的第 KiAjB项(1,20,5)ijk条件的满
21、意度。先对年龄进行筛选,年龄为大于 或大于 的满意度(2)i(5)jB为 0;如果 基本条件 达不到 的要求 即(jiBA()jkicaijikjbd,给它赋值为 0 值.否则,满意度记为刚好达到为 1,超过一个,)jkiikcbad等级加 1。即满意度为 。这样就体现了,当一方实际条件高于对方期1jkib望(要求)条件时,则对方对他(她)的好感(相对于要求条件)就会增加,超过得越多,好感增加得越多。5.3 模型的建立我们把二十个青年男女抽象化为 40 个结点得到一个带权二部图,其中 Aj表示二十个男青年,Bj 表示二十个女青年,而从男青年到女青年有一条带权边,权则由上面求得的满意度矩阵决定,
22、然后,我们用最大二部图匹配算法(匈牙利算法)求出一个最大匹配的解;但是,一开始所求得的是一个有向图,因此我们必须把它无向化,至此对问题(1)我们仅仅是采用把两结点间权值相加而转化为一个无向图,进而就可以用匈牙利算法对其求解了。而对于问题(2)则要采用图的完美匹配算法(KM 算法)进行求解,从而使全部配对成功的可能性最大,对于问题(3) ,则同样采用匈牙利算法只是把权值改变即可,这里我们把结点间有向边的权值同时大于 2 且满意度和不满意度差别不是很大时才有可能配对成功此时把它赋为 1,而在不满足条件时则赋为 0,从而得出能配对成功最多的方案。下面对匈牙利算法和 KM 算法进行说明。匈牙利算法的主
23、要思想是在每次增广的时候不是找一条增广路而是同时找几条点不相交的最短增广路,形成极大增广路集,随后可以沿着这几条增广路同时进行增广。可以证明在寻找增广路集的每一个阶段所寻找到的最短增广路都具有相等的长度,并且随着算法的进行最短增广路的长度是越来越长的,更进一步分析可以证明最多只需增广 ceil(sqrt(n)次就可以得到最大匹配(证明在8这里略去) 。KM 算法:(全称是 Kuhn-Munkras,是这二个人在 1957 年提出来的) ,首先为每个点设立一个顶标 Li,设 vi,j-为(i,j)边的权,如果可以求得一个完美匹配,使得每条匹配边 vi, ,其余边 。此时的解就是最优的,ijjLi
24、jjL因为匹配边的权和= ,其余任意解的权和都不可能比这个大。i5.4 模型的求解以题中所给数据为例,我们用 EXCEL 处理后得到权值,然后编程求得结果为:问题(1)男 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10女 B18 B17 B16 B15 B2 B19 B3 B12 B1 B14男 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20女 B20 B10 B7 B8 B6 B5 B4 B11 B9 B13问题(2)男 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10女 B11 B12 B19 B18 B8 B5 B3 B6 B2
25、B20男 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20女 B1 B17 B7 B14 B15 B13 B16 B9 B4 B10问题(3)男 A1 A3 A5 A10 A12 A14 A15 A17 A18 A19女 B15 B18 B19 B9 B2 B6 B4 B14 B11 B85.5 模型修正(1)对满意度的说明首先要注意到两个事实:其一,如果 基本条件 比 的要求条件 差iAikajBjkd得越多,则 对 的第 K 项条件的满意度 就越小,反之亦然。也就是说,iAjBjT如果一方的实际条件比对方期望(要求)的条件差距越大,则对方对另一方失望就越大,即
26、满意度就越小。其二,如果 的基本条件 比 的要求条件i ikj高,则 对 的第 k 项条件的满意度 (k)就会增加,但增加不会太多。jkdji j即当一方的实际条件高于对方期望(要求)的条件时,则对方对加一方的好感(相对要求条件)增加不会太大。而在模型中只考虑了实际条件高于要求条件,好感会增加并考虑到实际条件低于要求条件时,失望会增加,即满意度会减小。现在模型的基础上加以改进:如果 的基本条件 达不到 的要求 ,即 (()ijAB()jkica()jiBA()ikjbdjkicb)时,给它赋值 它是一个负值,体现了当一方实际条ikjadjkbd9件低于期望(要求)的条件时,则对方对他(她)失望
27、(相对于要求条件)就会增加差距越大,失望度就越大,相应的满意度就越小。显然,改进后成功的解决了上面所提出的问题,所以显得更加合理。满意度矩阵中的各分量分别表示如下: ,1jkijkikij jijicbcbS,ikjikjkkji ijijadadT(2) 模型的重新建立首先,我们把量化的尺度改为 1-9 尺度把 A,B,C,D,E 五个等级分别量化为9、7、5、3、1,然后在给出的二部图转化为无向图时则把每个结点分为两个结点,从而问题转化为求 40 对结点的二部图的最大匹配和完美匹配问题了,对问题 1 和问题 2 用同样算法求解,而对于问题 3 则当满意度矩阵中的权大于零时赋为 1 而在小于
28、零时则赋为 0。(3)以题中所给数据为例,我们用 EXCEL 处理后得到权值,然后编程求得结果为:问题(1)男 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10女 B4 B18 B15 B20 B2 B5 B3 B13 B17 B9男 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20女 B16 B10 B7 B1 B6 B19 B14 B11 B8 B12问题(2)男 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10女 B2 B18 B6 B14 B19 B5 B3 B13 B11 B20男 A11 A12 A13 A14 A15 A16
29、A17 A18 A19 A20女 B1 B17 B7 B12 B15 B9 B16 B8 B4 B10问题(3)男 A1 A3 A5 A10 A12 A14 A15 A17 A18 A19女 B15 B18 B19 B9 B2 B6 B4 B14 B11 B86. 模型结果的分析从所得的结果分析可知,模型改进后所得到的结果比改进前所得到的结果更加合理,对问题 1 是为了要尽量满足个人要求的条件使配对成功率更高,即要使得二部图中的边的权值相对来说是比较大的,而对问题 2 则是要全部配对10成功的可能性最高,即是要使得所得到的完美配对图的权值之和最大即使得要20 对同进配对的可能性最大的方案。而对
30、问题 3 则要在男女双方都满意的前提下并且是双方都选择了双方。则从我们得到的结果可知模型改进后得到的结果比模型要更优。7. 模型的优缺点对于两个模型,改进前的模型显然比改进后的模型粗糙得多,但是运行起来相对简单,而且在模型中我们运用了匈牙利算法使问题更加简单化,充分体现了熟练运用数学软件在我们运用数学思想解决实际问题中的重要性。而在改进后的模型中,我们利用图论的思想,运用匈牙利算法(二部图的最大匹配算法)和 KM 算法(二部图的完美匹配算法) ,并且将原精度提高,采用 1-9 尺度,使得问题的解答更加精确,但是由于算法太复杂,在计算机计算方面显得比较吃力,运行也相对难以实现一点。在社会上各人的
31、择偶标准不同,所以他们在选择对象的侧重点也会不同,比方说;有的人会特别注重外表,然而有的人特别注重对方的事业和个人的气质等等。而我们在两个模型中,只是简单的将五个方面的五个等级分别赋值为几个数值,不能体现个人的侧重点。同时,我们在模型中假设了对各人的抽样是真实可靠的,然而各人的择偶标准还会随时间不断改变,所以假设不一定会长久成立,若在模型的改进方向上再注意这些问题,结果会更接近现实。11参考文献1韩中庚.数学建模方法及其应用M. 北京: 高等教育出版社,2005.5.2边馥萍,侯文华,梁冯珍.数学模型方法与算法M. 北京: 高等教育出版社,2005.4.3姜启源,谢金星.数学模型(第三版 )M
32、.北京:高等教育出版社,2003.8.4吴乃陵,况迎辉.C+程序设计( 第二版)M. 北京:高等教育出版社 ,2006.3.5 Bczdek J, Pal S. Fuzzy Models for Pattern Recognition M. Piscataway: IEEE Press, 1992. 6 zdek J. Pattern Recognition with KM Algorithm M. New York: PlenumBe Press, 1981.附 录匈牙利算法#include #include #include using namespace std; bool mark11
33、00,mark2100; int list100; int n,m,edge,num;c ector v; bool dfs(int to) register int i,point,s = listto; for(i=0;in) if(n = 0)break; v.clear(); v.resize(n); cin m edge; for(i=0;i j s d; vs.push_back(d); Solve(); return 0; KM 算法:14#include #include #include using namespace std; const int size = 160; c
34、onst int INF = 100000000; / 相对无穷大 bool mapsizesize; / 二分图的相等子图, mapij = true 代表 Xi 与 Yj 有边 bool xckdsize, yckdsize; / 标记在一次 DFS 中,Xi 与 Yi 是否在交错树上 int matchsize; / 保存匹配信息,其中 i 为 Y 中的顶点标号,matchi为X 中顶点标号 bool DFS(int, const int); void KM_Perfect_Match(const int n, const int edgesize) int i, j; int lxsi
35、ze, lysize; / KM 算法中 Xi 与 Yi 的标号 for(i = 0; i n; i+) lxi = -INF; lyi = 0; for(j = 0; j n; j+) lxi = max(lxi, edgeij); bool perfect = false; while(!perfect) / 初始化邻接矩阵 for(i = 0; i n; i+) for(j = 0; j n; j+) if(lxi+lyj = edgeij) mapij = true; else mapij = false; 15 / 匹配过程 int live = 0; memset(match, -
36、1, sizeof(match); for(i = 0; i n; i+) memset(xckd, false, sizeof(xckd); memset(yckd, false, sizeof(yckd); if(DFS(i, n) live+; else xckdi = true; break; if(live = n) perfect = true; else / 修改标号过程 int ex = INF; for(i = 0; i n; i+) for(j = 0; xckdi j+) if(!yckdj) ex = min(ex, lxi+lyj-edgeij); for(i = 0
37、; i n; i+) if(xckdi) lxi -= ex; if(yckdi) lyi += ex; / 此函数用来寻找是否有以 Xp 为起点的增广路径,返回值为是否含有增广路 bool DFS(int p, const int n) 16int i; for(i = 0; i n; i+) if(!yckdi int t = matchi; matchi = p; if(t = -1 | DFS(t, n) return true; matchi = t; if(t != -1) xckdt = true; return false; int main() int n, edgesizesize; / edgeij为连接 Xi 与 Yj 的边的权值 int i; /* * 在此处要做的工作 : * 读取二分图每两点间边的权并保存在 edge中, * 若 X 与 Y 数目不等,应添加配合的顶点 * 保存二分图中 X 与 Y 的顶点数 n,若上一步不等应保 * 存添加顶点完毕后的 n */ KM_Perfect_Match(n, edge); int cost = 0; for(i = 0; i n; i+) cost += edgematchii; 17/ cost 为最大匹配的总和, match中保存匹配信息 return 0;