图论:Gale-Shapley算法】的更多相关文章

作者:jostree  转载请注明出处 http://www.cnblogs.com/jostree/p/4051286.html 稳定匹配问题:有N男N女,每个人对于异性都一个排名,先需要得到一种稳定的匹配,即不会出现一个匹配中的人与另一个匹配中的异性对对方的排名均高于目前配对的人的排名. shapley算法: 每次取出一个单身男生,让他向没有拒绝过她的女生中其排名最高人表白,若该女生没有对象则配对成功,否则与其当前的对象排名进行对比,如果当前对象排名较高,则拒绝表白男生,否则dump掉目前对…
[NOI2007] 社交网络 ★★   输入文件:network1.in   输出文件:network1.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] 在社交网络(social network)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题.在一个社交圈子里有n个人,人与人之间有不同程度的关系.我 们将这个关系网络对应到一个n个结点的无向图上,两个不同的人若互相认识,则在他们对应的结点之间连接一条无向边,并附上一个正数权值c,c越小,表…
Dijkstra算法是图论中经典的最短路径算法之一,主要用于解决单源最短路径问题. 单源最短路径问题,即求某个源节点到其他各个节点的最短路径. Dijkstra算法采用了贪心算法的思想,如图求1号节点到其他各个节点最短路径. 首先从1号节点出发,扩展已知的最短路径集合,每次优先“松弛”最近的节点所相连的边,直到所有扩展范围覆盖全部,所得即最优结果. 由于负权值使得上一次最优结果积累失效,所以Dijkstra算法不能解决负权路问题.…
Tour Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 2628    Accepted Submission(s): 1285 Problem Description In the kingdom of Henryy, there are N (2 <= N <= 200) cities, with M (M <= 30000…
1.弗洛伊德算法(Floyd) 弗洛伊算法核心就是三重循环,M [ j ] [ k ] 表示从 j 到 k 的路径,而 i 表示当前 j 到 k 可以借助的点:红色部分表示,如果 j 到 i ,i 到 k 是通的,就将 j 到 k 的值更新为 M[j][i] + M[i][k] 和 M[j][k] 较短的一个. <<; ; i <= n; i++) { ; j <= n; j++) { ; k <= n; k++) { if (j!=k) { M[j][k] = min(M[…
解决最大流问题我搜到了一堆的算法:EK算法.FF算法.Dinic算法.SAP算法.ISAP算法 然而并没有什么鸟用 掌握最常见的Dinic就够了,据说极限优化的ISAP比Dinic更快一些..我当不知道好了 模板题Codevs1993 给定源点汇点,求从源点走到汇点的所有流量和,最大流就是求最大值了 建图直接Dinic下面给代码: #include<cstdio> #include<cstring> #include<algorithm> using namespace…
利用Stoer-Wagner算法求无向图最小割 直接给出算法描述和过程实现: 算法步骤: . 设最小割cut=INF, 任选一个点s到集合A中, 定义W(A, p)为A中的所有点到A外一点p的权总和. . 对刚才选定的s, 更新W(A,p)(该值递增). . 选出A外一点p, 且W(A,p)最大的作为新的s, 若A!=G(V), 则继续2. . 把最后进入A的两点记为s和t, 用W(A,t)更新cut. . 新建顶点u, 边权w(u, v)=w(s, v)+w(t, v), 删除顶点s和t, 以…
Gale-Shapley算法又叫做延迟认可算法,它可以解决这么一个问题 一共有N位男士和N位女士 每位男士对每位女士都有一个好感度,让他们结合成为N对夫妻,要求男士优先表白,最后问结合情况 第一轮,每个男人都选择自己名单上排在首位的女人,并向她表白. 这种时候会出现两种情况: ()该女士还没有被男生追求过,则该女士接受该男生的请求. ()若该女生已经接受过其他男生的追求,那么该女生会将该男士与她的现任男友进行比较,若更喜欢她的男友,那么拒绝这个人的追求,否则,抛弃现任…… 第一轮结束后,有些男人…
如果,将求二分图的最大匹配的所有匹配边的权重看做1 那么用匈牙利算法求二分图的最大匹配的问题也可以看成求二分图的最大权匹配 如果边权是特例,我们就要使用KM算法来做了 这个算法其实还是比较难的,会用就不错了,更不要说证明了 这里以HDU2255为例,这是一个裸题 在这个题目里面X和Y的size是一样的 然后我们稍微介绍一下这个算法(详细的以后再说吧,目前能力不够) int n,nx,ny,ans; int linker[maxn],lx[maxn],ly[maxn],slack[maxn],vi…
[0]README 0.1)为什么有这篇文章?因为 Dijkstra算法的优先队列实现 涉及到了一种新的数据结构,即优先队列(二叉堆)的操作需要更改以适应这种新的数据结构,我们暂且吧它定义为Distance, 而不是单纯的int类型: 0.2)本文源代码均为原创, int类型的优先队列(二叉堆)的操作实现,参见http://blog.csdn.net/PacosonSWJTU/article/details/49498255, (并比较他们的打印结果,很有必要) [1]因为 Dijkstra算法…