Exemplo n.º 1
0
 protected SymbolicExpressionTreeNodeEqualityComparer(SymbolicExpressionTreeNodeEqualityComparer original, Cloner cloner)
     : base(original, cloner)
 {
     matchConstantValues  = original.matchConstantValues;
     matchVariableNames   = original.matchVariableNames;
     matchVariableWeights = original.matchVariableWeights;
 }
 public SymbolicExpressionTreeMaxCommonSubtreeSimilarityCalculator(bool matchVariableWeights, bool matchConstantValues) {
   comparer = new SymbolicExpressionTreeNodeEqualityComparer {
     MatchConstantValues = matchConstantValues,
     MatchVariableNames = true,
     MatchVariableWeights = matchVariableWeights
   };
 }
    public static IEnumerable<ISymbolicExpressionTreeNode> FindMatches(ISymbolicExpressionTreeNode root, ISymbolicExpressionTreeNode subtree, SymbolicExpressionTreeNodeEqualityComparer comp) {
      var fragmentLength = subtree.GetLength();
      // below, we use ">=" for Match(n, subtree, comp) >= fragmentLength because in case of relaxed conditions, 
      // we can have multiple matches of the same node

      return root.IterateNodesBreadth().Where(n => n.GetLength() >= fragmentLength && Match(n, subtree, comp) == fragmentLength);
    }
Exemplo n.º 4
0
 public SymbolicExpressionTreeMaxCommonSubtreeSimilarityCalculator(bool matchVariableWeights, bool matchConstantValues)
 {
     comparer = new SymbolicExpressionTreeNodeEqualityComparer {
         MatchConstantValues  = matchConstantValues,
         MatchVariableNames   = true,
         MatchVariableWeights = matchVariableWeights
     };
 }
        public static IEnumerable <ISymbolicExpressionTreeNode> FindMatches(ISymbolicExpressionTreeNode root, ISymbolicExpressionTreeNode subtree, SymbolicExpressionTreeNodeEqualityComparer comp)
        {
            var fragmentLength = subtree.GetLength();

            // below, we use ">=" for Match(n, subtree, comp) >= fragmentLength because in case of relaxed conditions,
            // we can have multiple matches of the same node

            return(root.IterateNodesBreadth().Where(n => n.GetLength() >= fragmentLength && Match(n, subtree, comp) == fragmentLength));
        }
 public static IEnumerable <ISymbolicExpressionTreeNode> FindMatches(ISymbolicExpressionTree tree, ISymbolicExpressionTreeNode subtree, SymbolicExpressionTreeNodeEqualityComparer comparer)
 {
     return(FindMatches(tree.Root, subtree, comparer));
 }
 public static bool ContainsSubtree(this ISymbolicExpressionTreeNode root, ISymbolicExpressionTreeNode subtree, SymbolicExpressionTreeNodeEqualityComparer comparer)
 {
     return(FindMatches(root, subtree, comparer).Any());
 }
Exemplo n.º 8
0
 protected SymbolicExpressionTreeMaxCommonSubtreeSimilarityCalculator(SymbolicExpressionTreeMaxCommonSubtreeSimilarityCalculator original, Cloner cloner)
     : base(original, cloner)
 {
     comparer = cloner.Clone(original.comparer);
 }
 protected SymbolicExpressionTreeNodeEqualityComparer(SymbolicExpressionTreeNodeEqualityComparer original, Cloner cloner)
   : base(original, cloner) {
   matchConstantValues = original.matchConstantValues;
   matchVariableNames = original.matchVariableNames;
   matchVariableWeights = original.matchVariableWeights;
 }
 protected SymbolicExpressionTreeMaxCommonSubtreeSimilarityCalculator(SymbolicExpressionTreeMaxCommonSubtreeSimilarityCalculator original, Cloner cloner)
   : base(original, cloner) {
   comparer = cloner.Clone(original.comparer);
 }
 public static IEnumerable<ISymbolicExpressionTreeNode> FindMatches(ISymbolicExpressionTree tree, ISymbolicExpressionTreeNode subtree, SymbolicExpressionTreeNodeEqualityComparer comparer) {
   return FindMatches(tree.Root, subtree, comparer);
 }
 public static bool ContainsSubtree(this ISymbolicExpressionTreeNode root, ISymbolicExpressionTreeNode subtree, SymbolicExpressionTreeNodeEqualityComparer comparer) {
   return FindMatches(root, subtree, comparer).Any();
 }