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

news2025/6/18 4:20:15

文章目录

    • 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 的。
因此这个做法的推广的瓶颈在于如何把两条相交的红边转化成等价的平面图。
或许过两天想出来了来填坑。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/426690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

功能测试面试没人要了!软件自动化测试如何入门?

对于我来说,我做的是web端的测试,做测试也有好几个年头了,每次都是使用手工测试的话,一直是做重复性的工作,既枯燥又繁琐,所以我在两年前自己使用java语言写了一系列的自动化测试脚本,利用的框架…

Java数据结构与算法----动态规划(背包篇)

1. 0/1背包 1.1.算法思路 0/1背包是动态规划、背包问题中最经典的问题啦!它主要的问题是: 给定n种物品、这n种物品的重量分别是,价值分别是 ,而你有一个容量为C的背包,请问如何求出所能拿的最大价值呢? …

嵌入式开发——串口常见问题和调试手段

1、串口介绍 参考博客:《ARM芯片(S5PV210芯片)——串口通信详解》、《UART和RS232、RS485的联系和区别、以及对软件编程的影响》; 2、串口常见问题 (1)内核没有开启串口,导致没有产生设备节点; (2)上层应用…

运动想象脑电信号数据集及其预处理方法

脑电信号基础知识 在BCI应用中,获取脑信号的途径包括多种技术方式。其中,EEG是最适合脑机接口应用的技术,主要因为无创性、便携式和高时间分辨率是其的优势。EEG是记录头部表面不同位置之间电位差异的时间记录,它起源于分布在大脑皮层的数百万个神经元的同步电活动的总和。…

我把Solon打包成了native image,速度快的惊人

Solon 一个高效的应用开发框架:更快、更小、更简单。https://solon.noear.org/ 我刚开始对 Solon 感兴趣的原因,就是启动快、包体积小,用了一段时间之后,发现 Solon 使用 GraalVM native iamge 打包有一些问题,我把问题…

Cache;高速缓冲存储器

高速缓冲存储器 概述 ​ 在多体并行存储系统中,由于IO设备向主存请求的级别高于CPU访存,这就出现了CPU等待IO设备访存的现象,导致CPU空等一段时间,甚至等待几个周期,从而降低了CPU的工作效率,为了避免CPU…

Eclipse环境搭建并且运行wordcount程序

一、安装Hadoop插件 1. 所需环境 hadoop2.0伪分布式环境平台正常运行 所需压缩包:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz           在Linux环境下运行的eclipse软件压缩包,解压后文件名为eclipse           hadoop2x-eclipse-plugin-m…

【Mysql】事物处理(TransAction Processing)

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶最近在复习mysql,复习到了mysql事物处理(TransAction),帮自己回顾一下,如果你也想了解什么是mysql的事物处理,希望这篇…

【SQL Server】无需公网IP,就可以远程连接SQL Server数据库

目录 1.前言 2.本地安装和设置SQL Server 2.1 SQL Server下载 2.2 SQL Server本地连接测试 2.3 Cpolar内网穿透的下载和安装 2.3 Cpolar内网穿透的注册 3.本地网页发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 1.前言 数据库的重要性相信大家…

基于html+css的自适应展示3

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

MySQL--库的操作--校验规则对于数据库的影响--0409

目录 1.库的基础操作 查看数据库 创建数据库 删除数据库 查看建库语句 修改数据库 2.字符集和字符集校验规则 2.1 查看系统默认字符集以及校验规则 2.2 使用特定的字符集创建数据库 2.3 不同校验规则对数据库的影响 2.3.1 大小写验证 2.3.2 排序验证 3.备份和恢复 3.1…

开启单细胞及空间组学行业发展黄金时代!首届国际单细胞及空间组学大会在穗闭幕

2023年4月16日,首届TICSSO国际单细胞及空间组学大会圆满闭幕,本次大会吸引了2000余位来自产、学、研、资、医、政、媒等业界人士齐聚羊城,注册总人数5398人,网络播放总量达548245人次,网络观看覆盖美国、德国、日本、澳…

Vue语法糖<script setup>详解,用最快的方式让你看懂和<script>的区别

前言 Vue3出来已经3年了&#xff0c;但是前两天在百度上搜索有关setup语法糖的细节时&#xff0c;发现很多博客关于语法糖细节部分&#xff0c;还是讲的很粗糙&#xff0c;因此决定自己来写一篇入门的博客&#xff0c;方便大家快速上手。 <script setup>简介 它是Vue3…

关于ASP.NET MVC与.NET CORE 的区别--小结

简述关于ASP.NET MVC与.NET CORE的区别 1、关于ASP.NET 关于MVC 刚开始接触这个技术的时候我经常不理解他们的名字&#xff0c;我相信许多学ASP.NET开发人员开始接触MVC应该也和我一样产生很多为什么&#xff0c;也会误认为认为MVC与ASP.NET完全没有关系&#xff0c;是一个全新…

基于ssm+vue的学生实习过程管理系统

基于ssmvue的学生实习过程管理系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍…

Kotlin与H5通信的实现方式

Kotlin与H5通信1、H5中主动的调用Kotlin中的程序1编写后端程序并且在服务器上运行2准备好AndroidStudio的界面布局中的WebView3编写工具类用来处理H5调用逻辑4通过addJavascriptInterface来构建桥梁5结果展示2在Kotlin中调用H5的程序1在H5中编写方法&#xff0c;来处理Kotlin的…

【C】Operator / Expression

系列连载 【python / C / C】 参考 《C语言程序设计&#xff08;第四版&#xff09;谭浩强》【C语言】C语言视频教程《郝斌 C 语言自学教程》 文章目录1 运算符1.1 基本的算术运算符2 表达式1 运算符 1.1 基本的算术运算符 注意&#xff0c; 是右结合的 “” 具有左结合性&…

C++ 面向对象、多继承

// Student.hclass Student { private: // 私有的&#xff0c;外界不能访问char *name;int age;public:void setAge(int age);void setName(char* name);int getAge();char* getName();// 空参构造函数Student(){}// 一参构造函数Student(char* name) : Student(name,80) {// 调…

干翻Hadoop系列:MapReduce详解

第一章&#xff1a;MapReduce原理 数据存储在分布式文件系统中HDFS里边&#xff0c;通过使用Hadoop资源管理系统YARN&#xff0c;Hadoop可以将MapReduce计算&#xff0c;转移到有存储部分的数据的各台机器上。 一&#xff1a;概念和原理 1&#xff1a;MapReduce作业 MapRed…

【机器学习】P16 激活函数 Activation Function

对于激活函数&#xff08;Activation Function&#xff09;&#xff0c;存在两个问题&#xff1a; 为什么要用激活函数&#xff1f;如何选择用哪种激活函数&#xff1f;如何使用激活函数&#xff1f; 本博文将围绕这两个问题&#xff0c;首先介绍激活函数的作用&#xff0c;从…