示例#1
0
 internal static int GetPositiveWeight <T>(
     this Implicant <T> implicant)
 {
     return(implicant
            .TermSet
            .Count(term => term is PositiveTerm <T>));
 }
示例#2
0
 internal static int GetUncombinedWeight <T>(
     this Implicant <T> implicant)
 {
     return(implicant
            .TermSet
            .Count(term =>
                   term is PositiveTerm <T> ||
                   term is NegativeTerm <T>));
 }
示例#3
0
 public static DnfAnd <T> mintermOf <T>(
     Implicant <T> implicant)
 {
     var elementSet = implicant.TermSet
                      .SelectMany(term =>
     {
         return(term switch
         {
             PositiveTerm <T> _ => new List <IDnfVariable <T> > {
                 DnfVariableOf(term.Value)
             },
             NegativeTerm <T> _ => new List <IDnfVariable <T> > {
                 DnfNotVariableOf(term.Value)
             },
             _ => new List <IDnfVariable <T> >()
         });
     })
示例#4
0
        internal static bool IsContainsMinterm <T>(
            this Implicant <T> implicant,
            DnfAnd <T> minterm)
        {
            var variableMintermMapB = minterm
                                      .ElementSet
                                      .ToDictionary(term => term.Value, term => term);

            return(!implicant
                   .TermSet
                   .Any(implicantTerm =>
            {
                var mintermTerm = variableMintermMapB[implicantTerm.Value];
                return (implicantTerm, mintermTerm) switch
                {
                    (PositiveTerm <T> _, DnfNotVariable <T> _) => true,
                    (NegativeTerm <T> _, DnfVariable <T> _) => true,
                    _ => false
                };
            }));
        }
示例#5
0
 public bool Equals(
     Implicant <T> that)
 {
     return(that != null && HashSet <Term <T> > .CreateSetComparer().Equals(this.TermSet, that.TermSet));
 }