Changeset 7788 for branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeMatching.cs
- Timestamp:
- 05/09/12 17:29:33 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeMatching.cs
r7785 r7788 92 92 // convenience methods for less typing :) 93 93 private static IEnumerator<ISymbolicExpressionTreeNode> Enumerator(this ISymbolicExpressionTree tree) { 94 return tree.IterateNodes Postfix().GetEnumerator();94 return tree.IterateNodes().GetEnumerator(); 95 95 } 96 96 private static IEnumerator<ISymbolicExpressionTreeNode> Enumerator(this ISymbolicExpressionTreeNode tree) { 97 return tree.IterateNodes Postfix().GetEnumerator();97 return tree.IterateNodes().GetEnumerator(); 98 98 } 99 99 // method for breath-width iteration of nodes 100 p rivatestatic IEnumerable<ISymbolicExpressionTreeNode> IterateNodes(this ISymbolicExpressionTree tree) {100 public static IEnumerable<ISymbolicExpressionTreeNode> IterateNodes(this ISymbolicExpressionTree tree) { 101 101 return IterateNodes(tree.Root); 102 102 } … … 128 128 /// <returns>A symbolic expression tree node representing the difference fragment between parent and child</returns> 129 129 public static ISymbolicExpressionTreeNode GetFragmentDiff(ISymbolicExpressionTree parent, ISymbolicExpressionTree child) { 130 var e1 = parent.Enumerator(); 131 var e2 = child.Enumerator(); 130 var nodes1 = parent.IterateNodes().ToList(); 131 var nodes2 = child.IterateNodes().ToList(); 132 var e1 = nodes1.AsEnumerable().GetEnumerator(); 133 var e2 = nodes2.AsEnumerable().GetEnumerator(); 132 134 while (e1.MoveNext() && e2.MoveNext()) { 133 135 var comparer = new SymbolicExpressionTreeNodeComparer((int)SimilarityLevel.Exact); 134 if (!comparer.Equals(e1.Current, e2.Current)) { return e2.Current; } // return the fragment by which child differs from parent 136 if (!comparer.Equals(e1.Current, e2.Current)) { 137 return e2.Current; 138 } 139 //if (!e1.Current.IterateNodes().SequenceEqual(e2.Current.IterateNodes(), comparer)) { 140 // return e2.Current; 141 //} // return the fragment by which child differs from parent 135 142 } 136 143 return null; … … 145 152 var comparer = new SymbolicExpressionTreeNodeComparer(mode); 146 153 if (patlen == seqlen) return seq.SequenceEqual(pat, comparer) ? 0 : -1; 147 //int i = patlen;148 //while (i <= seqlen) {149 // var ch = seq[i - 1];150 // if (comparer.Equals(ch, pat.Last()))151 // if (seq.Skip(i - patlen).Take(patlen).SequenceEqual(pat, comparer))152 // return i - patlen;153 // ++i;154 //}155 154 for (int i = patlen; i <= seqlen; ++i) { 156 155 if (comparer.Equals(seq[i - 1], pat.Last())) // first check if last element is a match
Note: See TracChangeset
for help on using the changeset viewer.