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结点左边第一个结点的时候,该结点只能为红色(图中标记为黑色表示此节点跟相邻的结点有颜色冲突!)。



这个图反过来证明了为什么文法中只要一个为真就行了,可自行下来推一推。

随机推荐

  1. 【C/C++编程入门学习】同样是数据类型,链表对比数组?哪一个更香?

    说起链表,第一反应:链表是一种数据类型!它可以用来存储同种类型多个批量数据.   有了这种认知,很容易去联想到数组,它也是一种数据类型,也可以用来存储同种类型的批量数据.初学者往往对数组的印象比较好, ...

  2. Nginx禁止html等缓存

    +++ date="2020-10-16" title="Nginx禁止html等缓存" tags=["nginx"] categories ...

  3. java安全编码指南之:Thread API调用规则

    目录 简介 start一个Thread 不要使用ThreadGroup 不要使用stop()方法 wait 和 await 需要放在循环中调用 简介 java中多线程的开发中少不了使用Thread,我 ...

  4. C++学习笔记---引用的本质

    本质:引用本质上是C++内部实现的一个指针常量 发现是引用的话,自动帮我们转换成指针常量 运行后,发现修改ref的值那么a的值也会一起改变,这就说明了引用的本质就是指针

  5. 用node.js给C#写一个数据表的实体类生成工具

    虽然微软提供了T4模板,但是我感觉非常难用.哪儿比得上直接用脚本来写模板来的爽. 因为要给一个老项目做周边的工具,需要连接到数据库. 我习惯性用EntityFrameworkCore来做,因为毕竟从出 ...

  6. SpringBoot整合Apache-CXF实践

    一.Apache CXF是什么? Apache CXF 是一个开源的 Services 框架,CXF 帮助您利用 Frontend 编程 API 来构建和开发 Services ,像 JAX-WS . ...

  7. paraview将csv格式显示为云图

    paraview可以直接读入csv数据,并且显示为vtk的云图效果,和矢量图效果. 二维矢量图 导入csv数据(数据在文章最后有提供): 成功导入: 关闭右侧数据,并选择Filters->Alp ...

  8. (PatchGANs)Pecomputed Real-time Texture Synthesis With Markovian Generative Adversarial Networks

    Introduction: Deconvolution;   Computational costs; Strided convolutional nets; Markov patches; 1. Q ...

  9. 并发编程——多线程计数的更优解:LongAdder原理分析

    前言 最近在学习ConcurrentHashMap的源码,发现它采用了一种比较独特的方式对map中的元素数量进行统计,自然是要好好研究一下其原理思想,同时也能更好地理解ConcurrentHashMa ...

  10. Docker学习笔记之--.Net Core项目容器连接mssql容器(环境:centos7)

    前一节演示在docker中安装mssql,地址:Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7) 本节演示 .Net Core项目容 ...