图染色问题的NP完全性证明

2023-05-16

文章目录

    • 1.Overview
    • 2.CNF 3-sat
    • 3. Gadgets
      • 3.1 Concolorous Edges
      • 3.2 Starter/Variable Gadget
      • 3.3 Splitter Gadget
      • 3.4 OR Gadget
      • 3.5 Clause Gadget
    • 4. To Planar Graph

最近在学 6.890,然后 devans 刚好问了我这个问题,然后尝试编了一个证明。

1.Overview

我们从 CNF 3-sat 问题规约到 3-染色问题(G3C),随后从 3-染色问题可以轻松的规约到 k k k-染色问题 k ≥ 3 k\geq 3 k3
首先我们引入同色边的概念,利用同色边我们可以方便的确定三种颜色中的一种,通过一个三元环确定三个颜色分别对应 T/F/O,随后利用 variable gadget 确定每一个 3-sat 变量的取值,对于每一个 clause gadget 输出的结果即三个输入的或,利用 OR gadget 实现,要求每一个 clause 的返回结果均为 true。这样构建出来的一个图我们声称,如果这个图有 3-染色,则原来的 3-sat 问题有解,即得到 C N F 3 S A T ≤ p G 3 C CNF3SAT\leq_p G3C CNF3SATpG3C,而接下来的 G 3 C ≤ p G C G3C\leq_pGC G3CpGC 是比较显然的。
最后构建的图 G G G 形如下图:

在这里插入图片描述

2.CNF 3-sat

CNF 3-sat 问题是指,给布尔变量 x 1 , x 2 , ⋯ x_1,x_2,\cdots x1,x2, 赋值,是的一个布尔表达式的值为真,其中这个布尔表达式形如若干个 clause 的与,其中一个 clause 为三个变量(可能带非运算符)的或的形式。下面是一个可能的 CNT 布尔表达式

F = ( x 1 ∨ ¬ x 2 ∨ x 3 ) ∧ ( x 1 ∨ x 2 ∨ ¬ x 4 ) ∧ ( x 1 ∨ ¬ x 2 ∨ ¬ x 3 ) F=(x_1\vee \neg x_2\vee x_3)\wedge(x_1\vee x_2 \vee \neg x_4)\wedge (x_1 \vee \neg x_2 \vee \neg x_3) F=(x1¬x2x3)(x1x2¬x4)(x1¬x2¬x3)

3. Gadgets

3.1 Concolorous Edges

我们把下面这个子图称之为一条同色边,用一条红色的边来表示,不难发现,A 和 B 两个点的染色必须相同。

在这里插入图片描述

3.2 Starter/Variable Gadget

我们首先需要给每个变量确定他的取值,而我们有三个颜色,一种自然的方法就是设定一种颜色代表他为 T,一种为 F,剩下的一种叫做 O
为了实现这件事情,我们先用一个三元环作为 starter gadget,通过这个三元环的染色方法,可以确定 TFO 对应的是哪一种颜色,然后对于变量再设立一个三元环,其中一个点用同色边钦定其为 O,剩下两个分别代表 x i x_i xi x i ˉ \bar{x_i} xiˉ,若代表 x i x_i xi 的点选择的颜色 T,则 x i x_i xi 取值为 True,否则取值为 False。
在这里插入图片描述

3.3 Splitter Gadget

显然分裂一个状态是好做的,我们只需要直接用红边进行分叉即可

3.4 OR Gadget

我们这里需要定义一个 OR gadget,根据两个输入的节点的颜色,定义输出节点的颜色。
直接设计是较为困难的,我们考虑构造一个 gadget 满足一个较为弱化的条件,当两个输入为 F,F 的时候,一定输出 F
一个直观的设计师这样的:

在这里插入图片描述

A,B 为输入,E 为输出
而在输入为 T,F 的时候,输出可以为 T/F 中的任意一个,注意和 starter 里面的 O 节点连边后实际上保证了输出不为 O。
下面我们会证明,如果此时取 F 的话对于答案一定是不优的。

3.5 Clause Gadget

这里我们要求三个输入中的一个至少一个为真,只需要把 A,B OR 起来的结果再和 C OR 一下即可,最后设计出来的如图:

在这里插入图片描述

其中 OR1 和 OR2 分别是 OR gadget
因为我们要求每一个 clause 为 True,所以我们向 OR2 的 输出端 连上 F 和 O 相当于钦定输出必须为 True,这也就意味着在 OR1 和 OR2 的输入中,T,F 的情况下返回 F 一定是不优的。

把上面这些 gadgets 拼一起,就得到了第一节里面的总流程的模式图。

4. To Planar Graph

很遗憾的是,上面这个做法很难拓展到平面图三染色问题,因为这个 Crossover Gadget 很难设计。至少我还不会
但是根据 stackexchange 上面的一篇回答平面图三染色同样也是 NPC 的。
因此这个做法的推广的瓶颈在于如何把两条相交的红边转化成等价的平面图。
或许过两天想出来了来填坑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

图染色问题的NP完全性证明 的相关文章

  • javaScript中String中配合正则匹配的一些方法

    目录 创建正则表达式 实例方法 字符串中的正则方法 字符串的 match xff08 xff09 方法 字符串的 search xff08 xff09 字符串的 split xff08 xff09 方法 字符串的 replace xff08
  • JS常用方法,字符串,数组,

    字符串方法 字符串方法 slice xff08 xff09 截取第几位 三个参数 第一个参数截取位置 第二个是截取第几位 返回截取后的字符串 字符串方法 split xff08 xff09 括号里按什么拆分 返回一个数组 字符串方法跟正则
  • Markdown 编辑器TOAST UI Editor Vue安装使用教程

    目录 安装 官网 引入 引入样式文件和组件 中文配置 导入中文包 安装五个插件 下面是几个常用方法 首先给Editor插件添加ref属性 常见问题 如遇到文字居中 请设置样式 我在书写个人博客时 xff0c 需要书写markdown xff
  • error while loading shared libraries: libssl.so.10: cannot open shared object file: No such file完美解决

    遇到问题 部署时遇到安装MongoDB完成 运行 mongod dbpath usr local mongodb data db 命令时遇到 找了很多文章和帖子无法解决 xff0c 最后发现安装命令是无效的 xff0c 考虑是包地址不对 x
  • 项目部署 Linux 服务器相关 nginx代理 mongoDB安装 数据库加密 fnalshell连接主机上传静态资源 nginx简单配置

    目录 部署具体流程 linux常用命令 安装 Node js 安装 MongoDB 部署具体流程 linux常用命令 进入到 Linux 系统后 xff0c 使用命令来进行操作 xff0c 先介绍几个命令 xff1a ls xff1a ll
  • mermaid流程图(VUE)的基本使用

    npm 导入 npm install mermaid lt template gt lt div class 61 34 test container 34 gt lt h1 gt 输入编辑流程图 lt h1 gt lt div class
  • [NOI2018] 归程

    关于spfa 他死了 问题可以转化成 xff0c 我们在所有海拔 gt p gt p gt p 的边组成的图中 xff0c v v
  • Vue.js 3 ssr 中报错Hydration node mismatch: - Client vnode: div - Server rendered DOM:已解决

    使用nuxt框架 43 element 43 vue3 出现该问题 解决方案 该问题其实是由于在开发阶段本地服务器的代码与浏览器的代码不一致导致的问题 xff0c 可以执行一次build命令 xff0c 可以解决该问题 xff0c 实际到部
  • egg js 搭建项目,教程

    Egg js 搭建工程 Egg js 为企业级框架和应用而生 xff0c 我们希望由 Egg js 孕育出更多上层框架 xff0c 帮助开发团队和开发人员降低开发和维护成本 官网 使用脚手架搭建应用程序 快速初始化项目 npm init e
  • k8s1.26安装(kubeadm containerd)

    环境背景 xff1a k8s 1 k8s 2 k8s3三台主机 1台master节点 xff0c 2台node节点 准备环境 修改主机名 3台分别修改主机名 hostnamectl set hostname k8s 1 hostnamect
  • 自动化运维必备之Shell脚本的循环语句,超详细讲解!

    Shell编程之循环语句 自动化运维必备之Shell脚本的循环语句 xff0c 超详细讲解 xff01 Shell编程之循环语句前言1 for循环3 while循环和until循环4 嵌套循环5 循环语句中的break exit和conti
  • 洛谷P2078 朋友

    题目传送门 xff1a 洛谷P2078 朋友 题目详情 xff1a 小明在 A 公司工作 xff0c 小红在 B 公司工作 这两个公司的员工有一个特点 xff1a 一个公司的员工都是同性 A 公司有 N 名员工 xff0c 其中有 P 对朋
  • Ubuntu-18.04版本网络配置,连接网络的方法

    运行命令 sudo apt get update 时出错 xff1a 好久没有Ubuntu xff0c 本来想安装一个工具 xff0c 结果一顿操作后 xff0c 发现网没连上 后来查了资料 xff0c 才解决 1 查看网络状态 xff0c
  • Windows系统安装配置MinGw64位详细教程

    MinGW 全称为 xff0c Minimalist GNU for Windows xff0c 它实际上是将经典的开源 C语言编译器 GCC 移植到了 Windows 平台下 xff0c 并且包含了 Win32API xff0c 因此可以
  • 如何学习正则表达式

    正则基础知识点 1 元字符 万物皆有缘 xff0c 正则也是如此 xff0c 元字符是构造正则表达式的一种基本元素 我们先来记几个常用的元字符 xff1a 元字符说明 匹配除换行符以外的人一字符 w匹配字母或数字或下划线或汉字 s匹配任意的
  • css布局入门指南,掌握页面布局基础

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大
  • 运用CSS视觉差和精灵图优化网页性能案例

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大
  • [CSP2019] 划分

    link 32pts 用 f i j f i j f i j
  • CSS基本语法入门,掌握几种常见的选择器

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大
  • 深入理解css复杂选择器的应用:解密多层标签嵌套的最佳案例

    大前端入门到精通 专栏正在持续更新中 案例的原理图解析 各种模块分析 这里都有哦 同时也欢迎大家订阅专栏 获取更多详细信息哦 个人主页 零小唬的博客主页 欢迎大家 点赞 评论 收藏 作者简介 20级计算机专业学生一枚 来自宁夏 可能会去做大

随机推荐