コード例 #1
0
        private void DetermineMaximal(Depth depth)
        {
            var couldBeMaximal = PatternsFrequent.GetPotentialMaximalAtDepth(depth + 1);

            foreach (var pt in couldBeMaximal)
            {
                pt.DetermineMaximal(depth + 1);
                if (pt.IsMaximal == YesNoUnknown.Yes)
                {
                    PatternsFrequent.AddMaximal(pt);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// For closed and maximal property if required.
        /// </summary>
        private void EvaluateF1()
        {
            if (!MiningParams.MineClosed && !MiningParams.MineMaximal)
            {
                return;
            }

            var f1Set = PatternsFrequent.Frequent1Pts;
            var f2Set = PatternsFrequent.Frequent2Pts;

            foreach (OnePatternTree f1 in f1Set.Values)
            {
                foreach (var f2 in f2Set.Values)
                {
                    if (!f1.IsSuperPattern(f2))
                    {
                        continue;
                    }

                    f1.CheckMatch(f2);

                    if (f1.HasOccurrenceMatch != YesNoUnknown.Unknown &&
                        f1.HasTransactionMatch != YesNoUnknown.Unknown)
                    {
                        break;
                    }
                }

                if (MiningParams.MineClosed)
                {
                    f1.DetermineClosed();
                    if (f1.IsClosed == YesNoUnknown.Yes)
                    {
                        PatternsFrequent.AddClosed(f1);
                    }
                }

                if (MiningParams.MineMaximal)
                {
                    f1.DetermineMaximal();
                    if (f1.IsMaximal == YesNoUnknown.Yes)
                    {
                        PatternsFrequent.AddMaximal(f1);
                    }
                }
            }
        }