2087_AL0933SAT问题

2022-5-16 18:18| 发布者: Hocassian| 查看: 42| 评论: 0|原作者: 肇庆学院ACM合集

摘要:
C:\Users\Administrator\Downloads\2019-10-12-10-14-3-89504314155400-Problem List-采集的数据-后羿采集器.html

Pro.ID

2087

Title

AL093 3SAT问题

Title链接

http://10.20.2.8/oj/exercise/problem?problem_id=2087

AC

0

Submit

0

Ratio

-

时间&空间限制

  • Time Limit: 1200/400 MS (Java/Others)     Memory Limit: 131072/65536 K (Java/Others)
  • 描述

    SAT的一个实例是k个布尔变量 x1 ,…, xk 的m个布尔表达式 A1 ,…, Am 。若存在各布尔变量 xi ( 1 <= i <= k )的0,1 赋值,使每个布尔表达式 Ai ( 1 <= i <= m ) 都取值1,则称布尔表达式 A1A2 … Am 是可满足的。
    ★ 合取范式的可满足性问题CNF-SAT
    如果一个布尔表达式是一些因子和之积,则称之为合取范式,简称CNF(Conjunctive Normal Form)。这里的因子是变量x或~x。例如 ( x1 + x2) ( x2 + x3 ) ( ~x1 + ~x2 + x3 ) 就是一个合取范式,而 x1 x2 + x3 就不是合取范式。
    ★ k-SAT
    如果一个布尔合取范式的每个乘积项最多是k个因子的析取式,就称之为k元合取范式,简记为k-CNF。一个k-SAT问题是判定一个k-CNF是否可满足。特别地,当k=3 时,3-SAT 问题在NP完全问题树中具有重要地位。
    ★ MAX-SAT
    给定k个布尔变量 x1 ,…, xk 的m个布尔表达式 A1 ,…, Am ,求各布尔变量 xi ( 1 <= i <= k ) 的0,1 赋值,使尽可能多的布尔表达式 Ai 取值1。
    ★ Weighted-MAX-SAT
    给定k个布尔变量 x1 ,…, xk 的m个布尔表达式 A1 ,…, Am ,每个布尔表达式 Ai有一个权值wi,求各布尔变量 xi ( 1 <= i <= k )的0,1赋值,使取值1 的布尔表达式权值之和达到最大。

    对于给定的带权3-CNF,设计一个蒙特卡罗算法,使其权值之和尽可能大。

    输入

    输入第一行有两个正整数k和m,分别表示变量数和布尔表达式数。接下来的m行中,每行有5个整数w,i,j,k,0,表示相应表达式的权值为w,表达式含的变量下标分别为i,j,k,行末以0 结尾。下标为负数时,表示相应的变量为取反变量。

    输出

    Description
    SAT的一个实例是k个布尔变量 x1 ,…, xk 的m个布尔表达式 A1 ,…, Am 。若存在各布尔变量 xi ( 1 <= i <= k )的0,1 赋值,使每个布尔表达式 Ai ( 1 <= i <= m ) 都取值1,则称布尔表达式 A1A2 … Am 是可满足的。
    ★ 合取范式的可满足性问题CNF-SAT
    如果一个布尔表达式是一些因子和之积,则称之为合取范式,简称CNF(Conjunctive Normal Form)。这里的因子是变量x或~x。例如 ( x1 + x2) ( x2 + x3 ) ( ~x1 + ~x2 + x3 ) 就是一个合取范式,而 x1 x2 + x3 就不是合取范式。
    ★ k-SAT
    如果一个布尔合取范式的每个乘积项最多是k个因子的析取式,就称之为k元合取范式,简记为k-CNF。一个k-SAT问题是判定一个k-CNF是否可满足。特别地,当k=3 时,3-SAT 问题在NP完全问题树中具有重要地位。
    ★ MAX-SAT
    给定k个布尔变量 x1 ,…, xk 的m个布尔表达式 A1 ,…, Am ,求各布尔变量 xi ( 1 <= i <= k ) 的0,1 赋值,使尽可能多的布尔表达式 Ai 取值1。
    ★ Weighted-MAX-SAT
    给定k个布尔变量 x1 ,…, xk 的m个布尔表达式 A1 ,…, Am ,每个布尔表达式 Ai有一个权值wi,求各布尔变量 xi ( 1 <= i <= k )的0,1赋值,使取值1 的布尔表达式权值之和达到最大。

    对于给定的带权3-CNF,设计一个蒙特卡罗算法,使其权值之和尽可能大。
    Input
    输入第一行有两个正整数k和m,分别表示变量数和布尔表达式数。接下来的m行中,每行有5个整数w,i,j,k,0,表示相应表达式的权值为w,表达式含的变量下标分别为i,j,k,行末以0 结尾。下标为负数时,表示相应的变量为取反变量。
    Output
    输出最大权值
    Sample Input
    5 3
    9 3 1 4 0
    9 1 -5 3 0
    8 2 -5 1 0
    Sample Output
    26

    样例输入

    5 3
    9 3 1 4 0
    9 1 -5 3 0
    8 2 -5 1 0

    样例输出

    26

    提示

    作者


    路过

    雷人

    握手

    鲜花

    鸡蛋

    最新评论

    返回顶部