Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/07/18 17:30:02 (6 years ago)
Author:
gkronber
Message:

#2886 worked on grammar enumeration

Location:
branches/2886_SymRegGrammarEnumeration
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2886_SymRegGrammarEnumeration

    • Property svn:ignore set to
      TestResults
  • branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/GrammarEnumeration/Grammar.cs

    r15725 r15734  
    158158    public int CalcHashCode(SymbolString sentence) {
    159159      Debug.Assert(sentence.Any(), "Trying to evaluate empty sentence!");
    160       Debug.Assert(sentence.All(s => s is TerminalSymbol), "Trying to evaluate symbol sequence with nonterminalsymbols!");
    161 
    162       Stack<TerminalSymbol> parseStack = new Stack<TerminalSymbol>(sentence.OfType<TerminalSymbol>());
    163 
    164       TerminalSymbol peek = parseStack.Peek();
     160      // Debug.Assert(sentence.All(s => s is TerminalSymbol), "Trying to evaluate symbol sequence with nonterminalsymbols!");
     161
     162      Stack<Symbol> parseStack = new Stack<Symbol>(sentence);
     163
     164      Symbol peek = parseStack.Peek();
    165165      int[] subtreeHashes = GetSubtreeHashes(parseStack);
    166166      return AggregateHashes(peek, subtreeHashes);
    167167    }
    168168
    169     private int[] GetSubtreeHashes(Stack<TerminalSymbol> parseStack) {
    170       TerminalSymbol currentSymbol = parseStack.Pop();
     169    private int[] GetSubtreeHashes(Stack<Symbol> parseStack) {
     170      Symbol currentSymbol = parseStack.Pop();
    171171
    172172      // VARIABLE
    173       if (Var.VariableTerminalSymbols.Contains(currentSymbol)) {
    174         return currentSymbol.StringRepresentation.GetHashCode().ToEnumerable().ToArray();
    175       }
     173      // if (Var.VariableTerminalSymbols.Contains(currentSymbol)) {
     174      //   return currentSymbol.StringRepresentation.GetHashCode().ToEnumerable().ToArray();
     175      // }
    176176
    177177      // MULTIPLICATION
     
    220220        return result.ToArray();
    221221      }
    222       throw new ArgumentException("Trying to hash malformed sentence!");
    223     }
    224 
    225     private int AggregateHashes(TerminalSymbol rule, IEnumerable<int> hashes) {
     222
     223      // var
     224      return currentSymbol.StringRepresentation.GetHashCode().ToEnumerable().ToArray();
     225
     226
     227      // throw new ArgumentException("Trying to hash malformed sentence!");
     228    }
     229
     230    private int AggregateHashes(Symbol operatorSym, IEnumerable<int> hashes) {
    226231      // If multiple subtrees are "merged" (e.g. added, multiplied, etc.), consider the executed operation
    227232      var hashesArray = hashes.ToArray();
    228       int start = hashesArray.Length > 1 ? rule.StringRepresentation.GetHashCode() : 0;
     233      int start = hashesArray.Length > 1 ? operatorSym.StringRepresentation.GetHashCode() : 0;
    229234      return hashesArray.Aggregate(start, (result, ti) => ((result << 5) + result) ^ ti.GetHashCode());
    230235    }
Note: See TracChangeset for help on using the changeset viewer.