• ALG 3-4: Testing Bipartiteness


    Bipartite Graphs

    Def. An undirected graph G = (V, E) is bipartiteif the nodes can be colored red or blue such that every edge has one red and one blue end.

    (定义: 无向图G = (V, E)是双偏图,如果节点可以用红色或蓝色表示,使得每条边都有一个红色和一个蓝色端)

    Applications.

    • Stable marriage: men = red, women = blue.
    • Scheduling: machines = red, jobs = blue.

    Testing Bipartiteness

    Testing bipartiteness. Given a graph G, is it bipartite? (给定一个图G,它是二部图吗?)

    • Many graph problems become:
      • easier if the underlying graph is bipartite (matching)
      • tractable if the underlying graph is bipartite (independent set)
    • Before attempting to design an algorithm, we need to understand structure of bipartite graphs.

     

    An Obstruction to Bipartiteness

    Lemma. If a graph G is bipartite, it cannot contain an odd length cycle.

    (引理: 如果图G是二部图,它不可能包含奇长度环)

    Proof. Not possible to 2-color the odd cycle, let alone G.

     

    Bipartite Graphs

    Lemma. Let G be a connected graph, and let L0, …, Lk be the layers produced by BFS starting at node s. Exactly one of the following holds.

    (引理:设G为连通图,L0,…,Lk为从节点s开始的BFS生成的层. 则至少有下面的一个是正确的)

    (i) No edge of G joins two nodes of the same layer, and G is bipartite. (G的边从不连接同一层的两个节点,且G是二部图)

    (ii) An edge of G joins two nodes of the same layer, and G contains anodd-length cycle (and hence is not bipartite).

         (G其中的一条边连接了同一层的两个节点,并且G包含奇数长度的循环(因此不是二部图)

     

    Proof. (i)

    • Suppose no edge joins two nodes in adjacent layers. (假设没有边连接相邻层中的两个节点)
    • By previous lemma, this implies all edges join nodes on same level. (根据前面的引理,这意味着所有边都在同一层上连接节点)
    • Bipartition: red = nodes on odd levels, blue = nodes on even levels (双分割:红色=奇数级别的节点,蓝色=偶数级别的节点)

     

     Proof. (ii)

    • Suppose (x, y) is an edge with x, y in same level Lj.  // 假设(x, y)是一条边,x, y在Lj层中
    • Let z = lca(x, y) = lowest common ancestor.            // 令z = lca(x, y) =最近一层的共同祖先   
    • Let Li be level containing z.                                         // 设Li是包含z的层 
    • Consider cycle that takes edge from x to y,then path from y to z, then path from z to x.  // 考虑一个循环,边从x到y,然后路径从y到z,然后路径从z到x

  • 相关阅读:
    git的工作区和暂存区
    git的撤销、删除和版本回退
    PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/phalcon.so'
    please complete all spokes before continuing 提示
    右键添加git bush here
    phalcon 设置cookie一直是httponly导致前端读取不到cookie的值
    composer update 提示 username
    Git Error: warning: refname 'origin/branch-name' is ambiguous.
    Phalcon框架数据库读写分离的实现方法
    Windows环境下redis 配置文件中设置的密码无效
  • 原文地址:https://www.cnblogs.com/JasperZhao/p/13975618.html
Copyright © 2020-2023  润新知