Java 家教(DNF)和矛盾(CNF)方法
我需要为CNF和DNF制定一个方法,尽管我很难理解如何在代码中实现它。问题就在这里 方法1。在DNF中为给定输入/输出表定义的函数构造布尔表达式 (至少有一行的值为1)。 要构造具有给定输入/输出表的DNF,请标识表中的每一行,其中 函数的最大值为1。在上表中,这些是第1、2、3、4和6行。对于每个这样的行,构造一个 为该行的p、q和r的真值的精确组合生成1(或真)的乘积,以及 p、q和r的真值的所有其他组合为0(或假)。例如,第一个 行是pqr,因为当p=1、q=1和r=1时,pqr为1(真),对于p、q和r的所有其他真值,pqr为0。 第二行的乘积是pqr̅,因为如果p=1、q=1和r=0,pqr̅是1(真),其他所有行的乘积都是0 p、q和r的真值。同样,第三行的产品为pq̅r,第四行的产品为pq̅r̅, 第6行的乘积是p̅q r̅。现在,任何以给定表作为输入/输出表的布尔表达式的值都是1(true) pqr=1,或者pqr̅=1,或者pq̅r=1,或者pq̅r̅=1,或者p̅q r̅=1,并且没有其他情况。信息技术 遵循给定表的DNF形式的布尔表达式为 pqr+pqr̅+pq̅r+pq̅r̅+p̅q r̅ 方法2。在CNF中为给定输入/输出表定义的函数构造布尔表达式 (至少有一行的值为0)。 要构造具有给定输入/输出表的CNF,请标识表中的每一行 函数的值为0。在上表中,这些是第5、7和8行。对于每一行,构造一个 为该行的p、q和r的真值和1(或真)的精确组合生成0(或假) 对于p、q和r的真值的所有其他组合。例如,第5行的和是p+q̅+r 因为如果p=0,q=1,r=1,p+q̅+r̅是0(假),对于p,q和r的所有其他真值,它都是0。这个 第7行的和是p+q+r̅,因为如果p=0、q=0和r=1,p+q+r̅为0(false),其他所有行的和都为1 p、q和r的真值。类似地,第8行的和是p+q+r。 现在,任何以给定表作为其输入/输出表的布尔表达式的大小写为0(false) p+q̅+r̅=0,在p+q+r̅=0的情况下,在p+q+r=0的情况下,没有其他情况。因此,布尔 给定表的CNF形式的表达式为 (p+q+r)(p+q+r)(p+q+r)(p+q+r)Java 家教(DNF)和矛盾(CNF)方法,java,math,discrete-mathematics,Java,Math,Discrete Mathematics,我需要为CNF和DNF制定一个方法,尽管我很难理解如何在代码中实现它。问题就在这里 方法1。在DNF中为给定输入/输出表定义的函数构造布尔表达式 (至少有一行的值为1)。 要构造具有给定输入/输出表的DNF,请标识表中的每一行,其中 函数的最大值为1。在上表中,这些是第1、2、3、4和6行。对于每个这样的行,构造一个 为该行的p、q和r的真值的精确组合生成1(或真)的乘积,以及 p、q和r的真值的所有其他组合为0(或假)。例如,第一个 行是pqr,因为当p=1、q=1和r=1时,pqr为1(真)
import java.util.Scanner;
班长{
公共静态布尔DNF(int数组[]){//它们都必须为真才能为DNF
int计数器=0;
对于(int x=0;x做什么问题?…我很难理解…你能更具体地说明你不理解的部分吗?因此,我试图找出如何在程序中实现CNF方法和DNF方法,以便在真值表中打印出来,但我对如何编码感到困惑。
import java.util.Scanner;
class Main {
public static boolean DNF(int array[]){ // they all have to be true to be DNF
int counter =0;
for ( int x =0; x <= 8; x++){
//HEEEEEEEEEEEEEEEEEEEEEEERRRRRRRRRRRRRRRRRRRRRRRRRRREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
}//end for
return true;
}//end dnf
public static boolean CNF(){ // they all have to be true to be cnf
int counter = 0;
for ( int y = 0; y <= 8; y++){
//////////////////////////////////HEEEEEEEEEEEEEEEEEEEEEEEEERRRRRRREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
}//end for
return false;
}//end cnf
public static void main(String[] args) {
Scanner scan = new Scanner ( System.in);
int myArray[] = new int[8];
char p ;
char q ;
char r ;
boolean cnf = false;
boolean dnf = false;
int i = 0;
int j = 0;
int k = 0;
int input;
for(int variable = 0; variable < 8; variable++){
System.out.println(" Enter 0 or 1 : ");
input = scan.nextInt();
if (input == 0 || input == 1){
myArray[variable] = input;
}else if(input > 1){
System.out.println("ERRRORRRRRRRR!");
break;
}else if(input < 0){
System.out.println("ERRRORRRRRRRR!");
break;
}
}
System.out.println( "Truth Table" );
System.out.println( "P \t Q \t R \t | f (p,q,r)" );
System.out.println("________________________");
System.out.println();
for (i = 0; i < 2 ; i++) {
for (j = 0; j < 2 ; j++) {
for ( k= 0; k < 2 ; k++) {
if ( i == 0) {
p = '1';
}//end if
else {
p = '0';
}//end
if (j == 0) {
q = '1';
}//end if
else {
q = '0';
}//end else
if (k == 0) {
r = '1';
}//end if
else {
r = '0';
}//end else
//tutology = {i, j ,k};
System.out.println( p + "\t" + q + "\t" + r);
//System.out.println( DNF(tutology) );
System.out.println();
}//end for
}//end for
}//end for
}//end main
}//end main