zoukankan      html  css  js  c++  java
  • 2-SAT问题(白书)

    1. 定义

    给定一个布尔方程,判断是否存在一组布尔变量的真值指派使整个方程为真的问题,被称为布尔方程的可满足性问题(SAT)。SAT问题是NP完全的,但对于满足一定限制条件的SAT问题,还是能够有效求解的。

    如果合取范式的每一个子句中的文字个数不超过两个,那么对应的SAT问题可以称为2-SAT问题。

    (ab)¬a 令a为假而b为真,则可以满足
    (a¬b)(bc)(¬c¬a) 令a和b为真,而c为假,则可以满足

    利用强联通分量分解,可以在布尔公式子句数的线性时间内解决2-SAT问题

    首先利用(蕴含)将每一个子句(ab) 改写成等价的(¬ab)(¬ba)
    对于每个布尔变量x,构造两个顶点分别代表x和¬x,以关系为有向边,建立有向图。此时,如果a点能够到达b点,就表示当a为真时b也为真。因此图中的同一个强联通分量中的所有布尔值均相同。

    如果存在某个布尔变量x,x¬x均在同一个强联通分量中,则显然无法令整个布尔公式的值为真。反之,如果不存在这样的布尔变量,那么对于每个布尔变量x,让

    x¬xx

    就是使得该公式的值为真的一组适合的布尔变量赋值。

    2. 题目讲解

    (1)POJ 3683

  • 相关阅读:
    异步nodejs代码的同步样子写法样例
    npm用法及离线安装方法
    javascript 事件相关使用总结01
    python wsgi PEP333 中文翻译
    android webview 播放 video经验总结
    javascript面向对象的写法03
    javascript面向对象的写法02
    Nginx在Windows下的基本介绍安装以及基本使用
    window7下 cmd命令行 Mysql导出表结构 + 表数据
    【一】Spark基础
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9386910.html
Copyright © 2011-2022 走看看