08 2012 档案

摘要:匈牙利算法--过程图解2007-08-13 01:48:06|分类: ACM分类 |标签: |字号大中小订阅转载:以下算法可把G中任一匹配M扩充为最大匹配,此算法是Edmonds于1965年提出的,被称为匈牙利算法,其步骤如下:(1)首先用(*)标记X中所有的非M-顶点,然后交替进行步骤(2),(3)。(2)选取一个刚标记(用(*)或在步骤(3)中用(yi)标记)过的X中顶点,例如顶点xi,然后用(xi)去标记Y中顶点y,如果xi与y为同一非匹配边的两端点,且在本步骤中y尚未被标记过。重复步骤(2),直至对刚标记过的X中顶点全部完成一遍上述过程。(3)选取一个刚标记(在步骤(2)中用(xi)标 阅读全文
posted @ 2012-08-17 13:53 Robot_Asia 阅读(281) 评论(0) 推荐(0)
摘要:由二分图匹配匈牙利算法总结的一些知识[转]转自:http://www.cnblogs.com/celia01/archive/2012/04/02/2430260.html除了准备离散考试外,算是第一次仔细学习图论和网络流的相关知识了。以前只知道用最大二分匹配的模板,今天就把理论知识好好总结一下,以免以后忘记。从网上搜罗了一些知识,有一下几篇文章讲的很不错:http://imlazy.ycool.com/post.1603708.htmlhttp://old.blog.edu.cn/user3/Hailer/archives/2007/1829623.shtmlhttp://www.cnblo 阅读全文
posted @ 2012-08-17 13:51 Robot_Asia 阅读(296) 评论(0) 推荐(0)
摘要:floyd求最小环2011-08-14 9:421 定义:通常来说最小环是针对有向图而言从一个点出发,经过一条简单路径回到起点成为环.图的最小环就是所有环中长度最小的.2.怎样求最小环呢?1传统的解决方法(dijkstra): 任意一个环的权值,我们都可以看成两个有边相连的结点i、j的直接距离加上i、j间不包含边(边i->j)的最短路径。求最短路径我们第一个想到的就是Dijkstra算法。而Dijkstra所求的是一个点到所有点的最短距离。用Dijkstra所求的i、j的最短距离一定是i、j的直接距离(如果i,j连通),所以我们需要先将i、j的边从图中删除(若i,j不连通,则不用删除), 阅读全文
posted @ 2012-08-15 23:01 Robot_Asia 阅读(8946) 评论(3) 推荐(4)
摘要:[有向图强连通分量]在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强连通分量。直接根据定义,用双向遍历取交集的方法求强连通分量,时间复杂度为O(N^2+M)。更好的方法是Kosaraju算法或Tarjan算法,两者的时间复杂度都是O(N+M)。本文介绍的是Tarjan算 阅读全文
posted @ 2012-08-11 22:07 Robot_Asia 阅读(560) 评论(0) 推荐(0)
摘要:#include<stdio.h>#include<string.h>#define max 99999int map[101][101],visit[101],lowcost[101];int temp,n;int prime(){ int i,j,k,sum=0; memset(visit,0,sizeof(visit)); visit[1] = 1; for(i = 1; i <= n; i++) lowcost[i] = map[1][i]; for(i = 1; i <= n; i++) { temp = max... 阅读全文
posted @ 2012-08-04 12:36 Robot_Asia 阅读(955) 评论(0) 推荐(0)