zoukankan      html  css  js  c++  java
  • 弦图

    弦图

    图的基本概念

    图G = (V, E)

    • 子图

      G=(V,E),VV,EE为图G的子图。

    • 诱导子图

      G=(V,E),VV,E={(u,v)|u,vV,(u,v)E}称为图G的诱导子图。

    • 图G中的一个子图G=(V,E), G’为关于V’的完全图。

    • 极大团

      一个团是极大团当它不是其它团的子集。

    • 最大团 ω(G)团数

      点数最多的团

    • 最小染色 χ(G)色数

      用最少的颜色给点染色使相邻点颜色不同。

    • 最大独立集 α(G)集合个数

      最大的一个点的子集使任何两个点不相邻

    • 最小团覆盖 κ(G)最少团数

      用最少个数的团覆盖所有的点。

      ω(G)χ(G)

      α(G)κ(G)

    • 连接环中不相邻的两个点的边。

    • 弦图

      一个无向图当图中任意长度大于3的环都至少有一个弦的图。

    • 弦图的每一个诱导子图一定是弦图

    • 单纯点

      设N(v)表示与点v相邻的点集。一个点称为单纯点当{v} + N(v)的诱导子图为一个团。

      任何一个弦图都至少有一个单纯点,不是完全图的弦图至少有两个不相邻的单纯点。

    • 完美消除序列

      一个点的序列(每个点出现且恰好出现一次)v1,v2,,vn满足vi{vi,vi+1,,vn}的诱导子图中为一个单纯点。

      定理:一个无向图是弦图当且仅当它有一个完美消除序列。

    最大势算法(MCS)

    从n到1的顺序依次给点标号(标号为i的点出现在完美消除序列的第i个)

    label[i]表示第i个点与多少个已标号的点相邻,每次选择labeli]最大的未标号的点进行标号。

    判断一个序列是否为完美消除序列

    • 算法过程

      {vi+1,,vn}中所有与vi相邻的点依次为{vj1,,vjk}

      只需判断vj1是否与vj2,,vjk相邻即可。

      时间复杂度:O(m + n)。

      弦图判断问题可以在O(m + n)的时间内解决。

    弦图最小染色

    • 算法过程

      用MSC算法求出弦图的完美消除序列。

      完美消除序列可以从后往前依次给每个点染色,给每个点染上可以染的最小颜色。

  • 相关阅读:
    解决VS Code调试.NET Core应用遇到的坑
    .NET Core第三方开源Web框架YOYOFx
    【干货】”首个“ .NET Core 验证码组件
    .NET Core爬坑记 1.0 项目文件
    细说ASP.NET Core与OWIN的关系
    dock基本使用
    在VS中使用TinyFox调试OWIN应用(转)
    正则表达式的匹配
    构建乘积数组
    数组中重复的数字
  • 原文地址:https://www.cnblogs.com/TRDD/p/9813513.html
Copyright © 2011-2022 走看看