3-colorability
1.1 3-colorability

一个图的三着色问题:要使得边两头的结点颜色互不相同。
1.1.1 3元可满足规约到3着色


首先文法中的每一个变量和它自己的"非"连接。创建3个新结点分别为T,F,B并且将他们连接在一个三角形中。然后每一个文法都连接到B结点,对于每一个子句添加6个结点和13条边。其中B结点是基本颜色,这里假定为蓝色。
1.1.2 证明充分和必要性
定理:如果一个图是可以三着色的当且仅当这个图所对应的文法是可满足的。
Pf. ⇒ Suppose graph G is 3-colorable.
・Consider assignment that sets all T literals to true.
・(iv) ensures each literal is T or F. ・(ii) ensures a literal and its negation are opposites.
・(v) ensures at least one literal in each clause is T
如果一个图是可以三着色的,我们考虑几种分配方式使得所有的T文法都为True,确保所有的文法要么为T要么为F,至少保证有一个文法块为T。
ps:上面说的好乱,后来上油管看了下MIT的公开课才顿悟了!我们从头来理解一下:
这张图构造得很巧妙,它这样构造的目的是保证X1的值只能为true或者false而与它相连的x1'非'就只能是另外一种结果。
这张图也很巧妙也证明也为什么x1,x2,x3都为红(false)的时候文法式为false,它通过三着色原则强制让x1下面的结点为蓝,然后T结点右边第一个就只能为false(红色)依次推下去,发现推到F结点左边第一个结点的时候,该结点只能为红色(图中标记为黑色表示此节点跟相邻的结点有颜色冲突!)。
这个图反过来证明了为什么文法中只要一个为真就行了,可自行下来推一推。
随机推荐
- 网络编程—【自己动手】用C语言写一个基于服务器和客户端(TCP)!
如果想要自己写一个服务器和客户端,我们需要掌握一定的网络编程技术,个人认为,网络编程中最关键的就是这个东西--socket(套接字). socket(套接字):简单来讲,socket就是用于描述IP地 ...
- [Leetcode题解]2. 两数相加-链表遍历和重构
1. 审题leetcode 02 add-two-numbers 我们先看一下题目,如下 : 链表的从前往后为数字的低位到高位,模拟加法手算过程,从前往后遍历即可, 注意每个数字0-9,进位要处理 ...
- vbox挂载共享文件夹
版权 挂载共享文件夹很简单,有2种方法,1是自动挂载,2是手动挂载. 一.自动挂载步骤: 1,把想共享的文件夹设置为共享. 2,在virtualbox界面对虚拟机设置共享文件夹,如下图.
- VitualBox CentOS增强功能的安装使用 - Linux操作系统
本人因为电脑配置原因,安装的是CentOS 6.6 minimal版本,虚拟环境为VirtualBox 4.3.18. 当我使用的时候,想从本机(WindowXP)电脑将文件共享到虚拟(Cen ...
- centos8上安装mysql8
一,下载并解压mysql8 1,mysql官网 https://www.mysql.com/ 2,下载到source目录 [root@yjweb source]# wget https://cdn.m ...
- 第六章 SSH远程服务介绍
一.相关介绍 1.简介SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1)提供远程连接的服务 linux远程连 ...
- python的部分GUI模块简介tkinter、pyqt5(Qt Designer)
笔者认为,这两个作为Python3较为常用且简单的GUI模块,是Python开发者所必须学习至少是了解的. 其中tkinter为Python3自带的GUI模块,而pyqt5则需要通过pip insta ...
- ORA-28000错误解决方案
当使用SQL*Plus登录时,Oracle数据库时提示"ORA-28000:帐号被锁定". 导致出现改错误的原因是:在oracle database 11g中,默认在default ...
- Parcelable使用(一)
android有两种序列化方式:一是实现Serializable接口(是JavaSE本身就支持的),二是实现Parcelable接口(是Android特有功能,效率比实现Serializable接口高 ...
- poj 2229 一道动态规划思维题
http://poj.org/problem?id=2229 先把题目连接发上.题目的意思就是: 把n拆分为2的幂相加的形式,问有多少种拆分方法. 看了大佬的完全背包代码很久都没懂,就照着网上的写了动 ...



