1. 1、本文档共43页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§2.回溯法

§2. 回溯法 两个不相交的集合A和B所含元素个数都是n, 要确定n个有序对(a,b), a∈A, b∈B, 并满足某种限制. 稳定婚姻问题. A是n个男子的集合, B是n个女子的集合. 每个男子按自己的择偶标准和意愿将n个女子从1到n排列, 同样, 每个女子按自己的择偶标准和意愿将n个男子从1到n排列. 将他们组成n对夫妇. 但是如果存在这样一个男子和一个女子, 他俩不是夫妇, 可是他们相互喜爱的程度胜过喜爱自己的配偶. 这样的n对夫妇称为不稳定婚姻, 因为这两个人会要求离开自己的配偶而组成夫妇. 如果, 不存在这样的男子和女子, 则称为稳定婚姻. MR矩阵 问题的输入为 int n;男人的个数, 也就是女人的个数 int mr[20][20], wr[20][20];分别记载男人对女人的排序, 女人对男人的排序. 例如, mr[3, 4]=1表示第三号男子的第四选择是第一号女子, wr[3, 4]=3表示第三号女子的第四选择是第三号男子. 余类推. int mw[20][20]: 记载某女子是某男子的第几选择 int wm[20][20]: 记载某男子是某女子的第几选择 例如, mw[3, 1]=4表示第三号男子把第一号女子作为其第四选择, 余类推. 四个n阶方阵中只有两个是独立的, 建立四个矩阵的原因在于节约运行时间. 不稳定婚姻情况的形式化表述: a和b不是夫妇, 不组成有序对. a的妻子是b′, b的丈夫是a′: 组成有序对(a, b′), (a′,b). 如果下述两个不等式成立, 则称包含这两个有序对的输出为不稳定婚姻. mw[a,b]mw[a, b′] wm[b,a]wm[b, a′] 如果不存在这样的a和b, 则输出的n个有序对就是稳定婚姻. 稳定婚姻问题貌似无聊, 但不是没有意义. 穷尽法考虑所有可能的n!种可能的配对, 对每一个配对方式检验是否稳定. 回溯法思路则不一样: 第一步配成一对夫妇, 即组成一个有序对, 以此作为问题的部分解, 以后每一步考虑一男一女, 如果将他们组成有序对并加入到部分解中, 不会引起不稳定, 则加入之; 否则, 不组成有序对, 而是考虑另一对男女. 这样一步步地给部分解增加有序对, 直至得到完整解. 例。第一步选择的有序对为 (1,7) 第二步选择的有序对为 (2, 4) 现在要检测这一有序对加入到部分解中去是否会引起不稳定情况, 可能引起麻烦的人为 (i)第二位男子、第七位女子,用(2,7)表示。 (ii)第一位男子、第四位女子,用(1,4)表示。 对(i),因为 MW(2, 7)=7, MW(2,4) =1 所以 不等式 MW(2, 7)MW(2,4) 不成立,因此这一有序对,不会引起不稳定情况,所以不必检测不等式WM(7,2)WM(7,1) 是否成立。 至于(ii),因为两个不等式 MW(1,4)MW(1, 7) WM(4,1)WM(4,2) 都不成立,所以也不会引起不稳定情况。至此,确信有序对(2,4)不会引起不稳定情况, 可以将它加入到部分解中去。到此为止,部分解有两个有序对(1,7)和(2,4)· 第3步组成的有序对为 (3,3) 这一有序对加入到部分解中去,可能引起麻烦的人有四组: (i) (3,7) (ii) (3,4) (iii) (1,3) (iv) (2,3) 经检测这4组都不会引起麻烦(过程略去),因此可以将之加入到部分解中。这样继续下去,直至部分解包含七个有序对: (1,7) (2,4) (3,3) (4,8) (5,5) (6,2) (7,6) 在第八步时,可能组成的有序对只有一个: (8,1) 但当将这一对加入到部分解中去时,第八位男子和第六位女子会引起不稳定情况。因为 MW(8,6)=l,MW(8,1)=2 WM(6,8)=4, WM(6,7)=5 两不等式 MW(8, 6)MW(8,1) WM(6,8)WM(6,7) 都成立。因此这确是不稳定婚姻。故不能将这一有序对加入到部分解中去。 但这又是此时唯一可能的一个有序对,所以第八步失败。 可以认为是第七步中选择的有序对7,6导致了第八步的失败, 因此将这一有序对从部分解中删除,则必须为第七步组成并检测另一个有序对, 如果第七步中所有可能的有序对都导致失败,则须将第六步中选择的有序对从部分解中删除,重新考虑第六步的工作。 这种方法要求删除已经得到的部分解的一部分并返回去重做。回溯法由此得名。 回溯法的一般

文档评论(0)

jiayou118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档