zoukankan      html  css  js  c++  java
  • 匈牙利算法的小总结

    背景:

    设G=(V,E)是一个无向图。如顶点集V可分区为两个互不相交的子集V1,V2之并,并且图中每条边依附的两个顶点都分属于这两个不同的子集。则称图G为二分图。二分图也可记为G=(V1,V2,E)。

    给定一个二分图G,在G的一个子图M中,M的边集{E}中的任意两条边都不依附于同一个顶点,则称M是一个匹配。 选择这样的子集中边数最大的子集称为图的最大匹配问题(maximal matching problem)

    (引自维基百科

    1. 匹配边:连结分属于V1和V2的两个顶点的边。其他边是未匹配边。

    2. 匹配点:匹配边所连结的顶点。不在匹配边上的顶点就是未匹配点。

    3. 交错路:设P是图G的一条路,如果P的任意两条相邻的边一条是已匹配边而另一条不是,就称P是一条交错路。

    4. 增广路径:两个端点都是未匹配点的交错路叫做可增广路。

    5. 为什么每找到一条增广路径能使匹配M的大小|M|加1?

    由上述3和4,增广路径是由以未匹配点为起点和终点(起点和终点可为同一个未匹配点)且未匹配边和匹配边交替出现的路径。由于以未匹配点为起点和终点,故而增广路径上的第一条边和最后一条边必定是未匹配边。即增广路径具有形式<未匹配边, 匹配边, 未匹配边, 匹配边, ... , 匹配边,未匹配边>,假设增广路径上的匹配边数为n,易见未匹配边数为n+1。于是在将增广路径取反,即将匹配边所连结的两个顶点去配,将未匹配边所连接的两个顶点结配后,增广路径变成<匹配边, 未匹配边, 匹配边, 未匹配边, ... , 未匹配边,匹配边>,此时匹配边数由此前的n变为n+1。可见通过取反增广路径能使|M|增1.

    2013-09-20 13:07:52

  • 相关阅读:
    数量关系
    笨办法学python问题记录
    CSS布局与定位
    python学习 预备篇
    基于hexo搭建个人博客
    CSS常用样式
    计算机组成原理(期末篇)
    Codeblock错误提示栏隐藏
    Markdown标记语言
    笨办法学python(不同版本的python代码差别)
  • 原文地址:https://www.cnblogs.com/cszlg/p/3330359.html
Copyright © 2011-2022 走看看