Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/06/18 13:18:31 (6 years ago)
Author:
lkammere
Message:

#2886: Add simple data analysis tests and further informations about algorithm run.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2886_SymRegGrammarEnumeration/HeuristicLab.Algorithms.DataAnalysis.SymRegGrammarEnumeration/GrammarEnumeration/Grammar.cs

    r15722 r15723  
    5959
    6060
    61       #region Production ruless
     61      #region Production rules
     62      // order of production is important, since they are accessed via index
     63      // in memoization.
    6264      StartSymbol = Expr;
    6365
     
    8991    }
    9092
     93    /*
     94    #region Memoize subtrees
     95
     96    public void MemoizeSubtrees(SymbolString sentence) {
     97      Stack<TerminalSymbol> parseStack = new Stack<TerminalSymbol>(sentence.OfType<TerminalSymbol>());
     98
     99      // Parse root symbol "+"
     100      MemoizeSubtreeExpression(parseStack);
     101    }
     102
     103    private SymbolString MemoizeSubtreeExpression(Stack<TerminalSymbol> parseStack) {
     104      SymbolString subtree = new SymbolString();
     105
     106      if (ReferenceEquals(parseStack.Peek(), Addition)) {
     107        subtree.Add(parseStack.Pop());
     108        subtree.InsertRange(0, MemoizeSubtreeExpression(parseStack));
     109        subtree.InsertRange(0, MemoizeSubtreeTerm(parseStack));
     110
     111        Expr.Alternatives[0].GeneratedSentences.Add(subtree);
     112      } else {
     113        subtree.InsertRange(0, MemoizeSubtreeTerm(parseStack));
     114
     115        Expr.Alternatives[1].GeneratedSentences.Add(subtree);
     116      }
     117
     118      return subtree;
     119    }
     120
     121    private SymbolString MemoizeSubtreeTerm(Stack<TerminalSymbol> parseStack) {
     122      SymbolString subtree = new SymbolString();
     123
     124      if (ReferenceEquals(parseStack.Peek(), Multiplication)) {
     125        subtree.Add(parseStack.Pop());
     126        subtree.InsertRange(0, MemoizeSubtreeTerm(parseStack));
     127        subtree.InsertRange(0, MemoizeSubtreeFactor(parseStack));
     128
     129        Term.Alternatives[0].GeneratedSentences.Add(subtree);
     130      } else {
     131        subtree.InsertRange(0, MemoizeSubtreeFactor(parseStack));
     132
     133        Term.Alternatives[1].GeneratedSentences.Add(subtree);
     134      }
     135
     136      return subtree;
     137    }
     138
     139    private SymbolString MemoizeSubtreeFactor(Stack<TerminalSymbol> parseStack) {
     140      SymbolString subtree = new SymbolString(MemoizeSubtreeVar(parseStack));
     141
     142      Factor.Alternatives[0].GeneratedSentences.Add(subtree);
     143      return subtree;
     144    }
     145
     146    private SymbolString MemoizeSubtreeVar(Stack<TerminalSymbol> parseStack) {
     147      SymbolString subtree = new SymbolString(parseStack.Pop().ToEnumerable());
     148
     149      // ... not really
     150      //Var.Alternatives[0].GeneratedSentences.Add(subtree);
     151      return subtree;
     152    }
     153
     154
     155    #endregion
     156    */
     157   
     158    #region Hashing
    91159    public int CalcHashCode(SymbolString sentence) {
    92160      Debug.Assert(sentence.Any(), "Trying to evaluate empty sentence!");
     
    99167    }
    100168
    101     #region Hashing
    102169    private int[] GetSubtreeHashes(TerminalSymbol currentSymbol, Stack<TerminalSymbol> parseStack) {
    103170      List<int> childHashes = null;
     
    166233      return childHashes.ToArray();
    167234    }
    168 
    169235
    170236    private int AggregateHashes(IEnumerable<int> hashes) {
Note: See TracChangeset for help on using the changeset viewer.