Frage

In der Vergangenheit hatte ich ein Programm entwickelt, das die Tat, als eine Regel evaluator.Sie hatte eine Vorgeschichte und einige consecuents (Aktionen), wenn also die Vorgeschichte evaled "true" werden die Aktionen, wo ausgeführt.

Damals habe ich es verwendet eine modifizierte version der RETE-Algorithmus (es gibt drei Versionen des RETE nur die erste öffentlich) für die Vorgeschichte pattern matching.Wir reden hier über ein großes system, hier mit Millionen von Operationen pro Regel und einige Operatoren "wiederholt" in mehreren Regeln.

Es ist möglich, dass ich ' ll haben, es zu implementieren, alle immer wieder in andere Sprache und das, obwohl ich bin erfahren in RETE, kennt jemand eine andere pattern-matching-algorithmen?Irgendwelche Vorschläge, oder sollte ich halten Sie mit RETE?

War es hilfreich?

Lösung

Die BEHANDLUNG Algorithmus ist ähnlich RETE, aber nicht aufzeichnen teilweise übereinstimmungen.Als Ergebnis, es kann weniger Speicher als RETE in bestimmten Situationen.Auch, wenn Sie, ändern eine erhebliche Zahl der bekannten Fakten, dann BEHANDELN kann viel schneller sein, weil Sie nicht haben zu verbringen Zeit auf Einziehungen.

Es gibt auch RETE* die Salden zwischen RETE und BEHANDLUNG durch speichern einige join-Knoten Zustand, je nachdem wie viel Speicher Sie verwenden möchten.So können Sie immer noch einige zu retten Geltendmachung Zeit, sondern auch Speicher-und ausfahren der Einsparung von Zeit, je nachdem wie optimieren Sie Ihr system.

Sie können auch prüfen wollen, SPRÜNGE, mit einer lazy evaluation Schema und enthält Elemente der beiden RETE und zu BEHANDELN.

Ich habe nur persönliche Erfahrungen mit dem NETZ, aber wie es scheint, RETE* oder SPRÜNGE werden besser, mehr flexible Möglichkeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top