コード例 #1
0
        static void Main(string[] args)
        {
            List <Literal> list = new List <Literal>();

            list.Add(new Literal(true, 0));
            list.Add(new Literal(false, 2));
            list.Add(new Literal(true, 1));
            DNF a   = new DNF(3);
            DNF dnf = new DNF(3);

            dnf.Sort();                                      //демонстрация сорта
            dnf.Write();                                     // вывод
            Console.WriteLine("");
            dnf.Insert(new List <Literal>(), 2);             //вставка
            dnf.Erase(2);                                    //удаление того же елемента
            Console.WriteLine("");
            DNF q = dnf.MakeNewDNFFromIndex(1);              //постороение новой днф в которой присутствуют только конъюнкции содержащие икс с какаимто индексом в этом случае икс1

            q.Write();                                       // вывод
            Console.WriteLine("");
            a.Sort();                                        //демонстрация сорта
            a.Write();                                       // вывод
            Console.WriteLine("");
            Console.WriteLine(a.Calculate(list).ToString()); //вывод значения в какой -то вершине , так же будет работать для n вершин
            Console.WriteLine("");
            DNF sum = DNF.Merge(a, dnf);                     //дизъюнкция

            sum.Write();                                     // вывод
            Console.WriteLine("");
        }
コード例 #2
0
        public static DNF Merge(DNF d1, DNF d2)
        {
            DNF ans = new DNF();

            for (int i = 0; i < d1.body.Count; i++)
            {
                ans.body.Add(d1.body[i]);
            }
            for (int i = 0; i < d2.body.Count; i++)
            {
                ans.body.Add(d2.body[i]);
            }
            return(ans);
        }//–Используя списки, построить дизъюнкцию двух ДНФ
コード例 #3
0
        public DNF MakeNewDNFFromIndex(int index)
        {
            DNF ans = new DNF();

            for (int i = 0; i < body.Count; i++)
            {
                for (int j = 0; j < body[i].Count; j++)
                {
                    if (body[i][j].Index == index)
                    {
                        ans.body.Add(body[i]);
                        break;
                    }
                }
            }
            if (ans.body.Count == 0)
            {
                return(null);
            }
            return(ans);
        }//–Построить новый список из конъюнкций, содержащих переменную x (переменная определяется в интерактивном режиме).