Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/09/12 17:29:33 (12 years ago)
Author:
bburlacu
Message:

#1772: Fixed bug in fragment tracing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.EvolutionaryTracking/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/SymbolicExpressionTreeMatching.cs

    r7785 r7788  
    9292    // convenience methods for less typing :)
    9393    private static IEnumerator<ISymbolicExpressionTreeNode> Enumerator(this ISymbolicExpressionTree tree) {
    94       return tree.IterateNodesPostfix().GetEnumerator();
     94      return tree.IterateNodes().GetEnumerator();
    9595    }
    9696    private static IEnumerator<ISymbolicExpressionTreeNode> Enumerator(this ISymbolicExpressionTreeNode tree) {
    97       return tree.IterateNodesPostfix().GetEnumerator();
     97      return tree.IterateNodes().GetEnumerator();
    9898    }
    9999    // method for breath-width iteration of nodes
    100     private static IEnumerable<ISymbolicExpressionTreeNode> IterateNodes(this ISymbolicExpressionTree tree) {
     100    public static IEnumerable<ISymbolicExpressionTreeNode> IterateNodes(this ISymbolicExpressionTree tree) {
    101101      return IterateNodes(tree.Root);
    102102    }
     
    128128    /// <returns>A symbolic expression tree node representing the difference fragment between parent and child</returns>
    129129    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();
    132134      while (e1.MoveNext() && e2.MoveNext()) {
    133135        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
    135142      }
    136143      return null;
     
    145152      var comparer = new SymbolicExpressionTreeNodeComparer(mode);
    146153      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       //}
    155154      for (int i = patlen; i <= seqlen; ++i) {
    156155        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.