将以下问题简化为SAT
这是问题所在。给定,其中每个。是否存在子集,其大小最大为,使得所有?我正在尝试将此问题简化为SAT。我的解决方案的想法是为1到每一个变量。对于每个,如果,则创建一个子句。然后将所有这些子句放在一起。但这显然不是一个完整的解决方案,因为它不代表的约束。k,n,T1,…,Tmk,n,T1,…,Tmk, n, T_1, \ldots, T_mTi⊆{1,…,n}Ti⊆{1,…,n}T_i \subseteq \{1, \ldots, n\}S⊆{1,…,n}S⊆{1,…,n}S \subseteq \{1, \ldots, n\}kkkS∩Ti≠∅S∩Ti≠∅S \cap T_i \neq \emptysetiiixixix_innnTiTiT_i(xi1∨⋯∨xik)(xi1∨⋯∨xik)(x_{i_1} \vee \cdots \vee x_{i_k})Ti={i1,…,ik}Ti={i1,…,ik}T_i = \{i_1, \ldots, i_k\}SSS最多包含元素。我知道我必须创建更多的变量,但是我不确定如何。所以我有两个问题:kkk 我的解决方案思路是否正确? 如何创建新变量,以便可以将它们用于表示基数约束?kkk