二部图判定算法——染色法

二部图判定算法——染色法

  • 什么是二部图?
  • 什么是染色法?
  • 算法初始化条件
  • 算法步骤及流程
  • 算法复杂度

什么是二部图?

二部图又称作二分图偶图,是图论中的一种特殊模型。
设G = (V , E)是一个无向图,若顶点集V可以分割成两个互不相交的子集U和V,并且图G中的任意一条边(i , j)所关联的两个顶点 i 和 j 分别属于这两个不同的顶点集,即(i in U , j in V),则称图G为一个二部图。
二部图判定算法——染色法_第1张图片

什么是染色法?

染色法所做的工作是:对于任意图G,利用红、蓝两种颜色(或其它任意两种不同颜色)对其顶点进行染色,依据染色的结果来判断图G是否为二部图。

算法初始化条件

对于待判断的图G,设顶点集合V = V(G),已染色顶点集合C = 空集,已扫描顶点集合S = 空集。

算法步骤及流程

  1. 从V\C(未染色顶点集合)中任取一个未染色的顶点,染成红色,并入已染色顶点集合C中;
  2. 判断:已扫描顶点集合S==顶点集合V?是,则算法结束,图G是二部图;不是(S < V),则转向3.;
  3. 判断:已扫描顶点集合S==已染色顶点集合C?是(S = C < V),则转向1.;不是(S < C < V),则转向4.;
  4. 从C\S(已染色但未扫描顶点集合)中任取一个顶点w,扫描图G中与w相临的所有顶点:
    1. 如果顶点未染色,则染上与w相异的颜色,并入已染色顶点集合C中;
    2. 如果顶点染有与w相异的颜色,则不做改变继续扫描其它顶点;
    3. 如果顶点染有与w相同的颜色,则算法结束,图G不是二部图。
      每个顶点扫描完成后都并入已扫描顶点集合S中,最后全部扫描完成后转向2.。
      二部图判定算法——染色法_第2张图片

算法复杂度

算法的复杂度为O(n^2)。

你可能感兴趣的:(二部图判定算法——染色法)