zoukankan      html  css  js  c++  java
  • 2-SAT学习笔记

    快NOIP了我学这个干什么。。。

    (2-SAT)定义

    (SAT)(Satisfiability)的缩写,意为可满足性。即一串布尔变量,每个变量只能为真或假。要求对这些变量进行赋值,满足布尔方程。
    例如(()(a) (or) (b)())(and)(()(a) (or) (!c)())(and)(()(a) (and) (c) (or) (b)()),求解这个问题就是让你找出一组a,b,c的取值使得这个表达式为真。
    而这个问题当一个括号里有多于2个元素时只能枚举,是NP问题。(2-SAT)就是括号里只有两个元素的情况。

    解法: 咕咕咕

    注意事项:之前在理解的时候有很大一个难关就是不知道如何以及为什么要对表达式进行转化(我真菜)。

    原因是这样:我们建的模型是(a)(b)连一条边表示选了(a)必须选(b),即((a) (and) (b))
    而大多数题目中很多要求的形式是((a) (or) (b)) (and) ((!a) (or) (b))
    这时候就需要转化: ((a) (or) (b)=(a) (and) (!b)) (or) ((a) (and) (!b))
    我现在也不知道这个式子有什么道理,只是对着dalao们的模板推出来的这个式子,并且发现他是正确的。。。
    所以我们连边的时候要从(a)(b)的反连一条边,从(a)的反向(b)连一条边。

  • 相关阅读:
    Node项目
    Angular模块/服务/MVVM
    Angular介绍1
    Node环境配置及Gulp工具
    Linux及Git介绍
    数据库MySQL
    ReactiveCocoa 监听枚举类型enumerate 或者 NSInteger类型
    ReactiveCocoa 监听布尔(BOOL)类型改变
    python3.7 urlopen请求HTTPS警告'CERTIFICATE_VERIFY_FAILED'解决办法
    Centos yum命令
  • 原文地址:https://www.cnblogs.com/taduro/p/9744868.html
Copyright © 2011-2022 走看看