Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 微软解决方案基金会 我试图通过微软Stuver基础SATSOVER来解决一个简单的CNF问题,通过Visual Studio C或VB。 有人能举一个简单的例子来解释如何做到这一点吗_C#_Solver_Cnf - Fatal编程技术网

C# 微软解决方案基金会 我试图通过微软Stuver基础SATSOVER来解决一个简单的CNF问题,通过Visual Studio C或VB。 有人能举一个简单的例子来解释如何做到这一点吗

C# 微软解决方案基金会 我试图通过微软Stuver基础SATSOVER来解决一个简单的CNF问题,通过Visual Studio C或VB。 有人能举一个简单的例子来解释如何做到这一点吗,c#,solver,cnf,C#,Solver,Cnf,下面是一个简短的例子: ConstraintSystem s1 = ConstraintSystem.CreateSolver(); CspTerm t1 = s1.CreateBoolean("v1"); CspTerm t2 = s1.CreateBoolean("v2"); CspTerm t3 = s1.CreateBoolean("v3"); CspTerm t4 = s1.CreateBoolean("

下面是一个简短的例子:

        ConstraintSystem s1 = ConstraintSystem.CreateSolver();

        CspTerm t1 = s1.CreateBoolean("v1");
        CspTerm t2 = s1.CreateBoolean("v2");
        CspTerm t3 = s1.CreateBoolean("v3");
        CspTerm t4 = s1.CreateBoolean("v4");

        CspTerm tOr12 = s1.Or(s1.Neg(t1), s1.Neg(t2));
        CspTerm tOr13 = s1.Or(s1.Neg(t1), s1.Neg(t3));
        CspTerm tOr14 = s1.Or(s1.Neg(t1), s1.Neg(t4));

        CspTerm tOr23 = s1.Or(s1.Neg(t2), s1.Neg(t3));
        CspTerm tOr24 = s1.Or(s1.Neg(t2), s1.Neg(t4));

        CspTerm tOr34 = s1.Or(s1.Neg(t3), s1.Neg(t4));

        CspTerm tOr = s1.Or(t1, t2, t3, t4);

        s1.AddConstraints(tOr12);
        s1.AddConstraints(tOr13);
        s1.AddConstraints(tOr14);
        s1.AddConstraints(tOr23);
        s1.AddConstraints(tOr24);
        s1.AddConstraints(tOr34);
        s1.AddConstraints(tOr);

        ConstraintSolverSolution solution1 = s1.Solve();
        Console.WriteLine(solution1[t1]);
        Console.WriteLine(solution1[t2]);
        Console.WriteLine(solution1[t3]);
        Console.WriteLine(solution1[t4]);
结果应该只有一个值为1的变量,其余变量应该为0,但解决方案是1,1,1,0

谢谢
Guy

您应该使用s1.Nott1而不是s1.Negt1。

VS编译器会自动为您执行此操作。如果某件事永远不会是真的,它会告诉你……你能举个小例子吗?恐怕你没有理解我的问题。我不是在寻找一种方法来检测哪些if语句将在我的代码中执行或不执行。我需要解决一个SAT问题,定义为CNF。我建议您使用MiniSat或picosat,而不是使用此Microsoft解算器。它们都易于使用,有一个充满活力的社区支持您,并在web上提供常见问题解答、示例等