Example #1
0
        private void SetBranchInfo()
        {
            BranchOrder = ClauseReferences.Select((clause, variable) => new { variable, clause }).OrderByDescending(x => x.clause.Count).Select(x => new Literal(x.variable, false)).ToList();

            if (heuristic == "reverse")
            {
                BranchOrder.Reverse();
            }

            Defaults = new List <bool>();
            for (int i = 0; i < LiteralCount; i++)
            {
                int T = 0;
                int F = 0;
                foreach (var clause in ClauseReferences[i])
                {
                    foreach (var literal in clause)
                    {
                        if (literal.index == i)
                        {
                            if (literal.value)
                            {
                                T++;
                            }
                            else
                            {
                                F++;
                            }
                        }
                    }
                }

                if (T >= F)
                {
                    Defaults.Add(true);
                }
                else
                {
                    Defaults.Add(false);
                }
            }

            if (debug)
            {
                for (int i = 0; i < BranchOrder.Count; i++)
                {
                    var lit = BranchOrder[i];
                    Console.WriteLine($"{i}: {lit.index + 1}\t\t{lit.index + 1}'s clauses: {ClauseReferences[lit.index].Count}");
                }
            }
        }
Example #2
0
        private void SetBranchOrder()
        {
            BranchOrder = ClauseReferences.Select((clause, variable) => new { variable, clause }).OrderByDescending(x => x.clause.Count).Select(x => new Literal(x.variable, false)).ToList();

            if (heuristic == "reverse")
            {
                BranchOrder.Reverse();
            }

            if (debug)
            {
                for (int i = 0; i < BranchOrder.Count; i++)
                {
                    var lit = BranchOrder[i];
                    Console.WriteLine($"{i}: {lit.index + 1}\t\t{lit.index + 1}'s clauses: {ClauseReferences[lit.index].Count}");
                }
            }
        }