Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/23/16 19:33:03 (8 years ago)
Author:
bburlacu
Message:

#2685: Revert accidental commit.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding/3.4/Grammars/GrammarUtils.cs

    r14353 r14354  
    6666                continue;
    6767
    68               if (visited.Add(childSymbol))
     68              if (visited.Add(childSymbol)) {
    6969                numberedSymbols.Add(Tuple.Create(childSymbol, ++index));
     70              }
    7071            }
    7172          }
     
    8788            minLength = Math.Min(minLength, oldLength);
    8889          minimumExpressionLengths[symbol.Name] = (int)Math.Min(int.MaxValue, minLength);
    89         }
    90         // correction step for cycles
    91         bool changed = true;
    92         while (changed) {
    93           changed = false;
    94           foreach (var symbol in numberedSymbols.Select(x => x.Item1)) {
    95             long minLength = Enumerable.Range(0, grammar.GetMinimumSubtreeCount(symbol))
    96               .Sum(x => grammar.GetAllowedChildSymbols(symbol, x)
    97               .Min(s => (long)minimumExpressionLengths[s.Name])) + 1;
    98             if (minLength < minimumExpressionLengths[symbol.Name]) {
    99               minimumExpressionLengths[symbol.Name] = (int)Math.Min(minLength, int.MaxValue);
    100               changed = true;
    101             }
    102           }
    10390        }
    10491      }
     
    134121                continue;
    135122
    136               if (visited.Add(childSymbol))
     123              if (visited.Add(childSymbol)) {
    137124                numberedSymbols.Add(Tuple.Create(childSymbol, ++index));
     125              }
    138126            }
    139127          }
     
    144132        // going bottom-up (reverse breadth order), we ensure depths are calculated bottom-up
    145133        foreach (var symbol in numberedSymbols.Select(x => x.Item1)) {
    146           long minDepth = -1;
     134          long minDepth = int.MaxValue;
    147135          for (int argIndex = 0; argIndex < grammar.GetMinimumSubtreeCount(symbol); ++argIndex) {
    148136            long depth = grammar.GetAllowedChildSymbols(symbol, argIndex)
    149137              .Where(x => minimumExpressionDepths.ContainsKey(x.Name))
    150               .Select(x => (long)minimumExpressionDepths[x.Name]).DefaultIfEmpty(int.MaxValue).Min() + 1;
    151             minDepth = Math.Max(minDepth, depth);
     138              .Select(x => minimumExpressionDepths[x.Name]).DefaultIfEmpty(int.MaxValue).Min();
     139            minDepth = Math.Min(minDepth, depth + 1);
    152140          }
    153141          int oldDepth;
     
    155143            minDepth = Math.Min(minDepth, oldDepth);
    156144          minimumExpressionDepths[symbol.Name] = (int)Math.Min(int.MaxValue, minDepth);
    157         }
    158         // correction step for cycles
    159         bool changed = true;
    160         while (changed) {
    161           changed = false;
    162           foreach (var symbol in numberedSymbols.Select(x => x.Item1)) {
    163             long minDepth = Enumerable.Range(0, grammar.GetMinimumSubtreeCount(symbol))
    164               .Max(x => grammar.GetAllowedChildSymbols(symbol, x)
    165               .Min(s => (long)minimumExpressionDepths[s.Name])) + 1;
    166             if (minDepth < minimumExpressionDepths[symbol.Name]) {
    167               minimumExpressionDepths[symbol.Name] = (int)Math.Min(minDepth, int.MaxValue);
    168               changed = true;
    169             }
    170           }
    171145        }
    172146      }
Note: See TracChangeset for help on using the changeset viewer.