Algorithmus von Rete

Der Rete Algorithmus (oder, selten oder) ist ein effizientes Muster, das Algorithmus vergleicht, um Produktionsregel-Systeme durchzuführen. Der Rete Algorithmus wurde von Dr Charles L. Forgy von Universität von Carnegie Mellon entworfen, hat zuerst in einem Arbeitspapier 1974 veröffentlicht, und hat später in seiner 1979-Doktorarbeit und einer 1982-Zeitung ausführlich behandelt (sieh Verweisungen). Rete ist die Basis für viele populäre Regeln rengines und Expertensystem-Schalen, einschließlich BÜROKLAMMERN, Jess geworden, Sabbert JRules, OPSJ, Flamme-Berater, Regel-Motor von BizTalk, und Aufsteigen. Das Wort 'Rete' ist für 'das Netz' oder 'den Kamm' lateinisch. Dasselbe Wort wird in modernem Italienisch verwendet, um zu bedeuten. Charles Forgy hat wie verlautet festgestellt, dass er den Begriff 'Rete' wegen seines Gebrauches in der Anatomie angenommen hat, um ein Netz des Geäders und der Nervenfasern zu beschreiben.

Eine naive Durchführung eines Expertensystemes könnte jede Regel gegen die bekannten Tatsachen in der Kenntnisse-Basis überprüfen, diese Regel nötigenfalls anzündend, dann zur folgenden Regel weitergehend (und sich zurück zur ersten Regel, wenn beendet, schlingend). Für sogar gemäßigte nach Größen geordnete Regeln und Tatsache-Kenntnisse-Basen leistet diese naive Annäherung zu langsam. Der Rete Algorithmus schafft die Grundlage für eine effizientere Durchführung. Ein mit Sitz in Rete Expertensystem baut ein Netz von Knoten, wo jeder Knoten (außer der Wurzel) einem Muster entspricht, das in der linken Seite (der Bedingungsteil) einer Regel vorkommt. Der Pfad vom Wurzelknoten bis einen Blatt-Knoten definiert eine ganze Regel-linke Seite. Jeder Knoten hat ein Gedächtnis von Tatsachen, die dieses Muster befriedigen. Diese Struktur ist im Wesentlichen ein verallgemeinerter trie. Da neue Tatsachen behauptet oder modifiziert werden, pflanzen sie sich entlang dem Netz fort, Knoten veranlassend, wenn diese Tatsache Matchs dieses Muster kommentiert zu werden. Wenn eine Tatsache oder Kombination von Tatsachen alle Muster für eine gegebene Regel veranlassen, zufrieden zu sein, wird ein Blatt-Knoten erreicht, und die entsprechende Regel wird ausgelöst.

Der Rete Algorithmus wird entworfen, um Gedächtnis für die vergrößerte Geschwindigkeit zu opfern. In den meisten Fällen ist die Geschwindigkeitszunahme über naive Durchführungen mehrere Größenordnungen (weil Leistung von Rete der Zahl von Regeln im System theoretisch unabhängig ist). In sehr großen Expertensystemen, jedoch, neigt der ursprüngliche Algorithmus von Rete dazu, in Speicherverbrauchsprobleme zu geraten. Andere Algorithmen, sowohl neuartig als auch mit Sitz in Rete, sind seitdem entworfen worden, die weniger Gedächtnis verlangen.

Beschreibung

Der Rete Algorithmus stellt eine verallgemeinerte logische Beschreibung einer Durchführung der Funktionalität zur Verfügung, die dafür verantwortlich ist, Datentupel ("Tatsachen") gegen die Produktion ("Regeln") in einem Muster vergleichenden Produktionssystem (eine Kategorie des Regel-Motors) zu vergleichen. Eine Produktion besteht aus einer oder mehr Bedingungen und einer Reihe von Handlungen, die für jeden ganzen Satz von Tatsachen übernommen werden können, die die Bedingungen vergleichen. Bedingungen prüfen Tatsache-Attribute einschließlich des specifiers/identifiers Tatsache-Typs. Der Rete Algorithmus stellt die folgenden Haupteigenschaften aus:

  • Es reduziert oder beseitigt bestimmte Typen der Überfülle durch den Gebrauch des Knotenteilens.
  • Es versorgt teilweise Matchs, wenn sich das Durchführen zwischen verschiedenen Tatsache-Typen anschließt. Das erlaubt abwechselnd Produktionssystemen, ganze Neubewertung aller Tatsachen jedes Mal zu vermeiden, wenn Änderungen mit dem Arbeitsgedächtnis des Systems der Produktion vorgenommen werden. Statt dessen muss das Produktionssystem nur die Änderungen (Deltas) zum Arbeitsgedächtnis bewerten.
  • Es berücksichtigt effiziente Eliminierung von Speicherelementen, wenn Tatsachen vom Arbeitsgedächtnis zurückgenommen werden.

Der Rete Algorithmus wird weit verwendet, um das Zusammenbringen der Funktionalität innerhalb von Muster vergleichenden Motoren durchzuführen, die einen Zyklus der Match-Entschlossenheitstat ausnutzen, um vorwärts das Anketten und inferencing zu unterstützen.

Retes werden acyclic Graphen geleitet, die Regel-Sätze des höheren Niveaus vertreten. Sie werden allgemein bei der Durchlaufzeit mit einem Netz von Gegenständen im Gedächtnis vertreten. Diese Netze vergleichen Regel-Bedingungen (Muster) zu Tatsachen (Verwandtschaftsdatentupel). Die Netztat von Rete als ein Typ des Verwandtschaftsanfragenverarbeiters, Vorsprünge, Auswahlen durchführend, und schließt sich bedingt auf beliebigen Zahlen von Datentupeln an.

Produktion (Regeln) wird normalerweise gewonnen und von Analytikern und Entwicklern definiert, die eine Regel-Sprache auf höchster Ebene verwenden. Sie werden in Regel-Sätze gesammelt, die dann häufig in der Durchlaufzeit in rechtskräftigen Rete übersetzt werden.

Wenn Tatsachen zum Arbeitsgedächtnis "behauptet" werden, schafft der Motor Arbeitsspeicherelemente (WMEs) für jede Tatsache. Tatsachen sind N-Tupel, und können deshalb eine beliebige Zahl von Datensachen enthalten. Jeder WME kann ein komplettes N-Tupel, oder wechselweise halten, jede Tatsache kann durch eine Reihe von WMEs vertreten werden, wo jeder WME ein Tupel der festen Länge enthält. In diesem Fall sind Tupel normalerweise Drillinge (3 Tupel).

Jeder WME geht ins Netz von Rete an einem einzelnen Wurzelknoten ein. Der Wurzelknoten gibt jeden WME seinen Kinderknoten weiter, und jeder WME kann dann durch das Netz fortgepflanzt werden, vielleicht in Zwischenerinnerungen versorgt werden, bis es einen Endknoten erreicht.

Alpha-Netz

Das "linke" (Alpha) die Seite des Knotengraphen bildet ein Urteilsvermögen-Netz, das dafür verantwortlich ist, individuellen WMEs auszuwählen, der auf einfachen bedingten Tests gestützt ist, die WME-Attribute gegen unveränderliche Werte vergleichen. Knoten im Urteilsvermögen-Netz können auch Tests durchführen, die zwei oder mehr Attribute desselben WME vergleichen. Wenn ein WME gegen die durch einen Knoten vertretenen Bedingungen erfolgreich verglichen wird, wird er zum folgenden Knoten passiert. In den meisten Motoren werden die unmittelbaren Kinderknoten des Wurzelknotens verwendet, um den Entitätsbezeichner oder Tatsache-Typ jedes WME zu prüfen. Folglich überqueren alle WMEs, die denselben Entitätstyp normalerweise vertreten, einen gegebenen Zweig von Knoten im Urteilsvermögen-Netz.

Innerhalb des Urteilsvermögen-Netzes endet jeder Zweig von Alpha-Knoten (auch genannt 1-Eingang-Knoten) an einem Gedächtnis, genannt ein Alpha-Gedächtnis. Diese Erinnerungen versorgen Sammlungen von WMEs, die jede Bedingung in jedem Knoten in einem gegebenen Knotenzweig vergleichen. WMEs, die scheitern, mindestens eine Bedingung in einem Zweig zu vergleichen, werden innerhalb des entsprechenden Alpha-Gedächtnisses nicht verwirklicht. Alpha-Knotenzweige können sich gabeln, um Bedingungsüberfülle zu minimieren.

Eine mögliche Schwankung soll zusätzliche Erinnerungen für jeden Zwischenknoten im Urteilsvermögen-Netz einführen. Das vergrößert die Gemeinkosten von Rete, aber kann im Vorteil in Situationen sein, wo Regeln dazu dynamisch hinzugefügt oder von Rete entfernt werden, es leichter machend, die Topografie des Urteilsvermögen-Netzes dynamisch zu ändern.

Eine alternative Durchführung wird von Doorenbos beschrieben. In diesem Fall wird das Urteilsvermögen-Netz durch eine Reihe von Erinnerungen und einen Index ersetzt. Der Index kann mit einer Hash-Tabelle durchgeführt werden. Jedes Gedächtnis hält WMEs, die ein einzelnes bedingtes Muster vergleichen, und der Index an Bezugserinnerungen durch ihr Muster gewöhnt ist. Diese Annäherung ist nur praktisch, wenn WMEs Tupel der festen Länge vertreten, und die Länge jedes Tupels (z.B, 3 Tupel) kurz ist. Außerdem gilt die Annäherung nur für bedingte Muster, die Gleichheitstests gegen unveränderliche Werte durchführen. Wenn ein WME in Rete eingeht, wird der Index verwendet, um eine Reihe von Erinnerungen ausfindig zu machen, deren bedingtes Muster die WME-Attribute vergleicht, und der WME dann direkt zu jedem dieser Erinnerungen hinzugefügt wird. An sich enthält diese Durchführung keine 1-Eingang-Knoten. Jedoch, um Nichtgleichheitstests durchzuführen, kann Rete zusätzliche 1-Eingang-Knotennetze enthalten, durch die WMEs passiert werden, bevor sie in ein Gedächtnis gelegt werden. Wechselweise können Nichtgleichheitstests im Beta-Netz durchgeführt werden, das unten beschrieben ist.

Beta-Netz

Das "Recht" (Beta), das die Seite des Graphen hauptsächlich durchführt, schließt sich zwischen verschiedenem WMEs an. Es ist fakultativ, und wird nur auf Anfrage eingeschlossen. Es besteht aus 2-Eingänge-Knoten, wo jeder Knoten einen "linken" und einen "richtigen" Eingang hat. Jeder Beta-Knoten sendet seine Produktion an ein Beta-Gedächtnis.

Beta-Knoten bearbeiten Jetons. Ein Jeton ist eine Einheit der Lagerung innerhalb eines Gedächtnisses und auch eine Einheit des Austausches zwischen Erinnerungen und Knoten. In vielen Durchführungen werden Jetons innerhalb von Alpha-Erinnerungen eingeführt, wo sie verwendet werden, um einzelnen WMEs zu halten. Diese Jetons werden dann zum Beta-Netz passiert.

Jeder Beta-Knoten führt seine Arbeit durch und kann infolgedessen neue Jetons schaffen, um eine Liste von WMEs das Darstellen eines teilweisen Matchs zu halten. Diese verlängerten Jetons werden dann in Beta-Erinnerungen versorgt, und zu nachfolgenden Beta-Knoten passiert. In diesem Fall passieren die Beta-Knoten normalerweise Listen von WMEs durch das Beta-Netz durch das Kopieren vorhandener WME-Listen von jedem erhaltenen Jeton in neue Jetons und dann das Hinzufügen eines weiteren WMEs zu den Listen infolge des Durchführens einer Verbindungslinie oder einer anderen Handlung. Die neuen Jetons werden dann im Produktionsgedächtnis versorgt.

Eine allgemeine Schwankung soll verbundene Listen von Jetons bauen, wo jeder Jeton einen einzelnen WME hält. In diesem Fall werden Listen von WMEs für ein teilweises Match durch die verbundene Liste von Jetons vertreten. Diese Annäherung kann besser sein, weil sie das Bedürfnis beseitigt, Listen von WMEs von einem Jeton bis einen anderen zu kopieren. Statt dessen muss ein Beta-Knoten nur einen neuen Jeton schaffen, um einen WME zu halten, dem er sich mit der teilweisen Match-Liste anschließen, und dann den neuen Jeton mit einem im Eingangsbeta-Gedächtnis versorgten Elternteiljeton verbinden möchte. Der neue Jeton bildet jetzt den Kopf der Scheinliste, und wird im Produktionsbeta-Gedächtnis versorgt.

In Beschreibungen von Rete ist es üblich, sich auf den Jeton zu beziehen, der innerhalb des Beta-Netzes geht. In diesem Artikel, jedoch, werden wir Datenfortpflanzung in Bezug auf WME-Listen, aber nicht Jetons, als Anerkennung für verschiedene Durchführungsoptionen und den zu Grunde liegenden Zweck und Gebrauch von Jetons beschreiben. Da irgendwelche WME-Liste das Beta-Netz durchführt, kann neuer WMEs dazu hinzugefügt werden, und die Liste kann in Beta-Erinnerungen versorgt werden. Eine WME-Liste in einem Beta-Gedächtnis vertritt ein teilweises Match für die Bedingungen in einer gegebenen Produktion.

WME Listen, die das Ende eines Zweigs von Beta-Knoten erreichen, vertreten ein ganzes Match für eine einzelne Produktion, und werden zu Endknoten passiert. Diese Knoten werden manchmal P-Knoten genannt, wo "p" für Produktion eintritt. Jeder Endknoten vertritt eine einzelne Produktion, und jede WME-Liste, die einen Endknoten erreicht, vertritt einen ganzen Satz, WMEs für die Bedingungen in dieser Produktion zu vergleichen. Für jede WME-Liste erhält es, ein Produktionsknoten wird ein neues Produktionsbeispiel auf der "Tagesordnung" "aktivieren". Tagesordnungen werden normalerweise als prioritised Warteschlangen durchgeführt.

Beta-Knoten leisten normalerweise schließt sich zwischen WME-Listen an, die in Beta-Erinnerungen und individuellem in Alpha-Erinnerungen versorgtem WMEs versorgt sind. Jeder Beta-Knoten wird mit zwei Eingangserinnerungen vereinigt. Ein Alpha-Gedächtnis hält WM und führt "richtige" Aktivierungen auf dem Beta-Knoten jedes Mal durch, wenn es einen neuen WME versorgt. Ein Beta-Gedächtnis meint, dass WME verzeichnet und "verlassene" Aktivierungen auf dem Beta-Knoten jedes Mal durchführt, wenn es eine neue WME-Liste versorgt. Wenn ein Verbindungslinie-Knoten Recht-aktiviert wird, vergleicht er ein oder mehr Attribute des kürzlich versorgten WME von seinem Eingangsalpha-Gedächtnis gegen gegebene Attribute von spezifischem WMEs in jeder im Eingangsbeta-Gedächtnis enthaltenen WME-Liste. Wenn ein Verbindungslinie-Knoten nach links aktiviert wird, überquert er eine Single kürzlich hat WME-Liste im Beta-Gedächtnis versorgt, spezifische Attribut-Werte von gegebenem WMEs wiederbekommend. Es vergleicht diese Werte mit Attribut-Werten jedes WME im Alpha-Gedächtnis.

WME jede Beta-Knotenproduktionslisten, die entweder in einem Beta-Gedächtnis versorgt oder direkt an einen Endknoten gesandt werden. WME Listen werden in Beta-Erinnerungen versorgt, wann auch immer der Motor zusätzliche linke Aktivierungen auf nachfolgenden Beta-Knoten durchführen wird.

Logisch ist ein Beta-Knoten an der Spitze eines Zweigs von Beta-Knoten ein spezieller Fall, weil er keinen Eingang von jedem Beta-Gedächtnis höher im Netz nimmt. Verschiedene Motoren behandeln dieses Problem unterschiedlich. Einige Motoren verwenden Spezialadapter-Knoten, um Alpha-Erinnerungen mit dem linken Eingang von Beta-Knoten zu verbinden. Andere Motoren erlauben Beta-Knoten, Eingang direkt von zwei Alpha-Erinnerungen zu nehmen, ein als ein "linker" Eingang und der andere als ein "richtiger" Eingang behandelnd. In beiden Fällen nehmen "Haupt"-Beta-Knoten ihren Eingang von zwei Alpha-Erinnerungen.

Um Knotenredundanzen zu beseitigen, können irgendwelches Alpha oder Beta-Gedächtnis verwendet werden, um Aktivierungen auf vielfachen Beta-Knoten durchzuführen. Sowie schließen Sie sich Knoten an, das Beta-Netz kann zusätzliche Knotentypen enthalten, von denen einige unten beschrieben werden. Wenn Rete kein Beta-Netz enthält, füttern Alpha-Knoten Jetons, jeder, einen einzelnen WME direkt zu P-Knoten enthaltend. In diesem Fall kann es kein Bedürfnis geben, WMEs in Alpha-Erinnerungen zu versorgen.

Konfliktentschlossenheit

Während irgendwelchen Zyklus der Match-Entschlossenheitstat wird der Motor alle möglichen Matchs für die zum Arbeitsgedächtnis zurzeit behaupteten Tatsachen finden. Sobald alle aktuellen Matchs gefunden worden sind, und entsprechende Produktionsbeispiele auf der Tagesordnung aktiviert worden sind, bestimmt der Motor eine Ordnung, in der die Produktionsbeispiele "angezündet" werden können. Das wird Konfliktentschlossenheit genannt, und die Liste von aktivierten Produktionsbeispielen wird der Konfliktsatz genannt. Die Ordnung kann auf dem Regel-Vorrang (Hervorspringen), Regel-Ordnung, die Zeit basieren, in der in jedem Beispiel enthaltene Tatsachen zum Arbeitsgedächtnis, der Kompliziertheit jeder Produktion oder einigen anderen Kriterien behauptet wurden. Viele Motoren erlauben Regel-Entwicklern, zwischen verschiedenen Konfliktentschlossenheitsstrategien auszuwählen oder eine Auswahl an vielfachen Strategien zu ketten.

Konfliktentschlossenheit wird als ein Teil des Algorithmus von Rete nicht definiert, aber wird neben dem Algorithmus verwendet. Einige Spezialproduktionssysteme führen Konfliktentschlossenheit nicht durch.

Produktionsausführung

Konfliktentschlossenheit durchgeführt, "zündet" der Motor jetzt das erste Produktionsbeispiel "an", eine Liste von mit der Produktion vereinigten Handlungen durchführend. Die Handlungen folgen den durch die Produktionsbeispiel-WME-Liste vertretenen Daten.

Standardmäßig wird der Motor fortsetzen, jedes Produktionsbeispiel in der Ordnung anzuzünden, bis alle Produktionsbeispiele angezündet worden sind. Jedes Produktionsbeispiel wird nur einmal höchstens während irgendwelchen Zyklus der Match-Entschlossenheitstat schießen. Diese Eigenschaft ist genannte Brechung. Jedoch kann die Folge von Produktionsbeispiel-Zündungen in jeder Bühne durch das Durchführen von Änderungen zum Arbeitsgedächtnis unterbrochen werden. Regel-Handlungen können Instruktionen enthalten, WMEs vom Arbeitsgedächtnis des Motors zu behaupten oder zurückzunehmen. Jedes Mal, wenn jedes einzelne Produktionsbeispiel eine oder mehr solche Änderungen durchführt, geht der Motor sofort in einen neuen Zyklus der Match-Entschlossenheitstat ein. Das schließt "Aktualisierungen" zu WMEs zurzeit im Arbeitsgedächtnis ein. Aktualisierungen werden durch das Zurücknehmen und dann die Beurkundung des WME vertreten. Der Motor übernimmt das Zusammenbringen der geänderten Daten, die abwechselnd auf Änderungen zur Liste von Produktionsbeispielen auf der Tagesordnung hinauslaufen können. Folglich, nachdem die Handlungen für irgendwelches spezifisches Produktionsbeispiel durchgeführt worden sind, können vorher aktivierte Beispiele ausgeschaltet und von der Tagesordnung entfernt worden sein, und neue Beispiele können aktiviert worden sein.

Als ein Teil des neuen Zyklus der Match-Entschlossenheitstat führt der Motor Konfliktentschlossenheit auf der Tagesordnung durch und führt dann das aktuelle erste Beispiel durch. Der Motor setzt fort, Produktionsbeispiele anzuzünden, und in neue Zyklen der Match-Entschlossenheitstat einzugehen, bis keine weiteren Produktionsbeispiele auf der Tagesordnung bestehen. An diesem Punkt, wie man hält, hat der Regel-Motor seine Arbeit und Halte vollendet.

Einige Motoren unterstützen fortgeschrittene Brechungsstrategien, in denen bestimmte in einem vorherigen Zyklus durchgeführte Produktionsbeispiele im neuen Zyklus nicht wiederdurchgeführt werden, wenn auch sie noch auf der Tagesordnung bestehen können.

Es ist für den Motor möglich, in endlose Schleifen einzutreten, in denen die Tagesordnung nie den leeren Staat erreicht. Deshalb unterstützen die meisten Motoren ausführliche "Halt"-Verben, die von Produktionshandlungslisten angerufen werden können. Sie können auch automatische Schleife-Entdeckung zur Verfügung stellen, in der endlose Schleifen nach einer gegebenen Zahl von Wiederholungen automatisch gehalten werden. Einige Motoren unterstützen ein Modell, in dem, anstatt wenn zu hinken, die Tagesordnung leer ist, geht der Motor in einen warten Staat ein, bis neue Tatsachen äußerlich behauptet werden.

Bezüglich der Konfliktentschlossenheit ist die Zündung von aktivierten Produktionsbeispielen nicht eine Eigenschaft des Algorithmus von Rete. Jedoch ist es eine Haupteigenschaft von Motoren dieser Gebrauch Netze von Rete. Einige der durch Netze von Rete angebotenen Optimierungen sind nur in Drehbüchern nützlich, wo der Motor vielfache Zyklen der Match-Entschlossenheitstat durchführt.

Existenzielle und universale Quantifizierungen

Bedingte Tests werden meistens verwendet, um Auswahlen durchzuführen, und schließt sich auf individuellen Tupeln an. Jedoch, durch das Einführen von zusätzlichen Beta-Knotentypen, ist es für Netze von Rete möglich, Quantifizierungen durchzuführen. Existenzielle Quantifizierung schließt Prüfung für die Existenz von mindestens einem Satz ein, WMEs im Arbeitsgedächtnis zu vergleichen. Universale Quantifizierung schließt Prüfung ein, dass ein kompletter Satz von WMEs im Arbeitsgedächtnis eine gegebene Bedingung entspricht. Eine Schwankung der universalen Quantifizierung könnte das prüfen eine gegebene Zahl von WMEs, der von einer Reihe von WMEs gezogen ist, entspricht gegebenen Kriterien. Das könnte sein, in Bezug auf entweder für eine genaue Zahl oder für eine minimale Zahl von Matchs zu prüfen.

Quantifizierung wird in Motoren von Rete nicht allgemein durchgeführt, und, wo sie unterstützt wird, bestehen mehrere Schwankungen. Eine Variante der existenziellen als Ablehnung gekennzeichneten Quantifizierung ist weit, obwohl nicht allgemein, unterstützt, und in Samendokumenten beschrieben wird. Existenziell verneinte Bedingungen und Verbindungen schließen den Gebrauch von Spezialbeta-Knoten ein, die für das Nichtsein prüfen, WMEs oder Sätze von WMEs zu vergleichen. Diese Knoten pflanzen WME-Listen nur fort, wenn kein Match gefunden wird. Die genaue Durchführung der Ablehnung ändert sich. In einer Annäherung unterstützt der Knoten eine einfache Zählung auf jeder WME-Liste, die es von seinem linken Eingang erhält. Die Zählung gibt die Zahl von Matchs an, die mit vom richtigen Eingang erhaltenem WMEs gefunden sind. Der Knoten pflanzt nur WME-Listen fort, deren Zählung Null ist. In einer anderen Annäherung erhält der Knoten ein zusätzliches Gedächtnis auf jeder vom linken Eingang erhaltenen WME-Liste aufrecht. Diese Erinnerungen sind eine Form des Beta-Gedächtnisses, und versorgen WME-Listen für jedes Match mit auf dem richtigen Eingang erhaltenem WMEs. Wenn eine WME-Liste keine WME-Listen in seinem Gedächtnis hat, wird sie unten das Netz fortgepflanzt. In dieser Annäherung aktivieren Ablehnungsknoten allgemein weitere Beta-Knoten direkt, anstatt ihre Produktion in einem zusätzlichen Beta-Gedächtnis zu versorgen. Ablehnungsknoten stellen eine Form der 'Ablehnung als Misserfolg' zur Verfügung.

Wenn Änderungen mit dem Arbeitsgedächtnis vorgenommen werden, kann eine WME-Liste, die vorher keinen WMEs verglichen hat, jetzt kürzlich behaupteten WMEs vergleichen. In diesem Fall müssen die fortgepflanzte WME-Liste und alle seine verlängerten Kopien von Beta-Erinnerungen weiter unten das Netz zurückgenommen werden. Die zweite Annäherung, die oben beschrieben ist, wird häufig verwendet, um effiziente Mechanismen für die Eliminierung von WME-Listen zu unterstützen. Wenn WME-Listen entfernt werden, werden irgendwelche entsprechenden Produktionsbeispiele ausgeschaltet und von der Tagesordnung entfernt.

Existenzielle Quantifizierung kann durch das Kombinieren von zwei Ablehnungsbeta-Knoten durchgeführt werden. Das vertritt die Semantik der doppelten Ablehnung (z.B, "WENN NICHT NICHT jedes Zusammenbringen WMEs, dann..."). Das ist eine von mehreren Produktionssystemen genommene einheitliche Methode.

Das Speicherindexieren

Der Rete Algorithmus beauftragt keine spezifische Annäherung an das Indexieren des Arbeitsgedächtnisses. Jedoch stellen modernste Produktionssysteme Indexieren-Mechanismen zur Verfügung. In einigen Fällen werden nur Beta-Erinnerungen mit einem Inhaltsverzeichnis versehen, während in anderen das Indexieren sowohl für das Alpha als auch für die Beta-Erinnerungen verwendet wird. Eine gute Indexieren-Strategie ist ein Hauptfaktor im Entscheiden der gesamten Leistung eines Produktionssystems besonders, wenn sie Regel-Sätze durchführt, die auf hoch kombinatorisches Muster hinauslaufen, das zusammenpasst (d. h. sich der intensive Gebrauch des Betas Knoten anschließt), oder, für einige Motoren, wenn man Regel-Sätze durchführt, die eine bedeutende Anzahl von WME Wiedertraktionen während vielfacher Zyklen der Match-Entschlossenheitstat durchführen. Erinnerungen werden häufig mit Kombinationen von Hash-Tabellen durchgeführt, und Kuddelmuddel-Werte werden verwendet, um bedingte Verbindungslinien auf Teilmengen von WME-Listen und WMEs, aber nicht auf dem kompletten Inhalt von Erinnerungen durchzuführen. Das vermindert abwechselnd häufig bedeutsam die Anzahl von durch das Netz von Rete durchgeführten Einschätzungen.

Eliminierung von WMEs und WME-Listen

Wenn ein WME vom Arbeitsgedächtnis zurückgenommen wird, muss er von jedem Alpha-Gedächtnis entfernt werden, in dem er versorgt wird. Außerdem müssen WME Listen, die den WME enthalten, von Beta-Erinnerungen entfernt werden, und aktivierte Produktionsbeispiele für diese WME-Listen müssen ausgeschaltet und von der Tagesordnung entfernt werden. Mehrere Durchführungsschwankungen bestehen einschließlich der baumbasierten und Rückkampf-basierten Eliminierung. Das Speicherindexieren kann in einigen Fällen verwendet werden, um Eliminierung zu optimieren.

Das Berühren ORed Bedingungen

Als das Definieren der Produktion in einer Regel untergegangen ist, ist es üblich, Bedingungen zu erlauben, mit ODER verbindend gruppiert zu werden. In vielen Produktionssystemen wird das durch die Interpretation einer einzelnen Produktion behandelt, die vielfache ORed Muster als die Entsprechung von der vielfachen Produktion enthält. Das resultierende Netz von Rete enthält Sätze von Endknoten, die zusammen einzelne Produktion vertreten. Diese Annäherung weist jede Form des Kurzschließens der ORed Bedingungen zurück. Es kann auch in einigen Fällen führen, um Produktionsbeispiele zu kopieren, die auf der Tagesordnung aktivieren werden, wo derselbe Satz von WMEs vielfache innere Produktion vergleicht. Einige Motoren stellen Tagesordnungsdubletteneliminierung zur Verfügung, um dieses Problem zu behandeln.

Diagramm

Das folgende Diagramm illustriert die grundlegende Topografie von Rete, und zeigt die Vereinigungen zwischen verschiedenen Knotentypen und Erinnerungen.

  • Die meisten Durchführungen verwenden Typ-Knoten, um das erste Niveau der Auswahl auf dem N-Tupel Arbeitsspeicherelemente durchzuführen. Typ-Knoten können als spezialisierte ausgesuchte Knoten betrachtet werden. Sie unterscheiden zwischen verschiedenen Tupel-Beziehungstypen.
  • Das Diagramm illustriert den Gebrauch von Spezialknotentypen wie verneinte Verbindungsknoten nicht. Einige Motoren führen mehrere verschiedene Knotenspezialisierungen durch, um Funktionalität zu erweitern und Optimierung zu maximieren.
  • Das Diagramm stellt eine logische Ansicht von Rete zur Verfügung. Durchführungen können sich im physischen Detail unterscheiden. Insbesondere das Diagramm zeigt Scheineingänge, die richtige Aktivierungen an der Spitze von Beta-Knotenzweigen zur Verfügung stellen. Motoren können andere Annäherungen wie Adapter durchführen, die Alpha-Erinnerungen erlauben, richtige Aktivierungen direkt durchzuführen.
  • Das Diagramm illustriert alle knotenteilenden Möglichkeiten nicht.

Für eine ausführlichere und ganze Beschreibung des Algorithmus von Rete, sieh Kapitel 2 der Produktion, die für das Große Lernen von Systemen durch Robert Doorenbos Zusammenpasst (sieh Verbindung unten).

Verschiedene Rücksichten

Obwohl nicht definiert durch den Algorithmus von Rete einige Motoren erweiterte Funktionalität zur Verfügung stellen, um größere Kontrolle der Wahrheitswartung zu unterstützen. Zum Beispiel, wenn ein Match für eine Produktion gefunden wird, kann das auf die Behauptung von neuen WMEs hinauslaufen, die abwechselnd die Bedingungen für eine andere Produktion vergleichen. Wenn eine nachfolgende Änderung zum Arbeitsgedächtnis das erste Match veranlasst, ungültig zu werden, kann es sein, dass das andeutet, dass das zweite Match auch ungültig ist. Der Rete Algorithmus definiert keinen Mechanismus, diese logischen Wahrheitsabhängigkeiten automatisch zu definieren und zu behandeln. Einige Motoren unterstützen jedoch zusätzliche Funktionalität, in der Wahrheitsabhängigkeiten automatisch aufrechterhalten werden können. In diesem Fall kann die Wiedertraktion eines WME zur automatischen Wiedertraktion von zusätzlichem WMEs führen, um logische Wahrheitsbehauptungen aufrechtzuerhalten.

Der Rete Algorithmus definiert keine Annäherung an die Rechtfertigung. Rechtfertigung bezieht sich auf Mechanismen, die allgemein im Experten und den Entscheidungssystemen erforderlich sind, in denen, an seinem einfachsten, das System berichtet, dass jede der inneren Entscheidungen gepflegt hat, zu einem Endschluss zu gelangen. Zum Beispiel könnte ein Expertensystem einen Beschluss rechtfertigen, dass ein Tier ein Elefant ist, indem es berichtet, dass es groß, grau ist, hat große Ohren, einen Stamm und Stoßzähne. Einige Motoren stellen eingebaute Rechtfertigungssysteme in Verbindung mit ihrer Durchführung des Algorithmus von Rete zur Verfügung.

Dieser Artikel stellt keine erschöpfende Beschreibung jeder möglichen Schwankung oder Erweiterung des Algorithmus von Rete zur Verfügung. Andere Rücksichten und Neuerungen bestehen. Zum Beispiel können Motoren spezialisierte Unterstützung innerhalb des Netzes von Rete zur Verfügung stellen, um Muster vergleichende Regel anzuwenden, die auf spezifische Datentypen und Quellen wie Programmatic-Gegenstände, XML Daten oder Verwandtschaftsdatentische in einer Prozession geht. Ein anderes Beispiel betrifft zusätzliche zeitstampfende Möglichkeiten, die durch viele Motoren für jeden WME das Eingehen in ein Netz von Rete und den Gebrauch dieser Zeitstempel in Verbindung mit Konfliktentschlossenheitsstrategien zur Verfügung gestellt sind. Motoren stellen bedeutende Schwankung in der Weise aus, wie sie programmatic Zugang zum Motor und seinem Arbeitsgedächtnis erlauben, und das grundlegende Modell von Rete erweitern können, um Formen der Parallele und verteilten Verarbeitung zu unterstützen.

Optimierung und Leistung

Mehrere Optimierungen für Rete sind identifiziert und in der akademischen Literatur beschrieben worden. Mehrere von diesen gelten jedoch nur in sehr spezifischen Drehbüchern, und haben deshalb häufig wenig oder keine Anwendung in einem Mehrzweckregel-Motor. Außerdem sind alternative Algorithmen wie VERGNÜGEN und SPRÜNGE formuliert worden, der zusätzliche Leistungsverbesserungen zur Verfügung stellen kann. Es gibt zurzeit sehr wenige kommerzielle oder offene Quellbeispiele von Produktionssystemen, die diese alternativen Algorithmen unterstützen.

Der Rete Algorithmus wird zu Drehbüchern orientiert, wo das Vorwärtsanketten und "inferencing" verwendet werden, um neue Tatsachen von vorhandenen Tatsachen zu berechnen, oder Tatsachen zu filtern und zu verwerfen, um einen Beschluss zu erreichen. Es wird auch als ein vernünftig effizienter Mechanismus ausgenutzt, um hoch kombinatorische Einschätzungen von Tatsachen durchzuführen, wo die große Anzahl von Verbindungslinien zwischen Tatsache-Tupeln durchgeführt werden muss. Andere Annäherungen an die leistende Regel-Einschätzung, wie der Gebrauch von Entscheidungsbäumen oder die Durchführung von folgenden Motoren, können für einfache Drehbücher passender sein, und sollten als mögliche Alternativen betrachtet werden.

Rete II

In den 1980er Jahren hat Charles L. Forgy einen Nachfolger des Algorithmus von Rete genannt Rete II entwickelt. Verschieden vom ursprünglichen Rete (der öffentliches Gebiet ist) wurde dieser Algorithmus nicht bekannt gegeben. Rete II fordert bessere Leistung für kompliziertere Probleme (sogar Größenordnungen), und wird in CLIPS/R2 offiziell durchgeführt.

Rete II kann durch zwei Gebiete der Verbesserung charakterisiert werden; spezifische Optimierungen in Zusammenhang mit der allgemeinen Leistung des Netzes von Rete (einschließlich des Gebrauches von hashed Erinnerungen, um Leistung mit größeren Sätzen von Daten zu vergrößern), und die Einschließung eines rückwärts gerichteten Anketten-Algorithmus, der geschneidert ist, um oben auf dem Netz von Rete zu laufen. Rückwärts gerichtetes Anketten allein kann für die am meisten äußersten Änderungen in Abrisspunkten in Zusammenhang mit Rete gegen Rete II verantwortlich sein.

Jess (mindestens Versionen 5.0 und später) fügt auch einen rückwärts gerichteten Anketten-Algorithmus oben auf dem Netz von Rete hinzu, aber, wie man sagen kann, führt es Rete II teilweise nicht völlig durch auf Grund dessen, dass keine volle Spezifizierung öffentlich verfügbar ist.

Wiederzelt

2010 hat Dr Charles Forgy eine neue Generation des Algorithmus von Rete entwickelt. In einem Abrisspunkt von InfoWorld wurde der Algorithmus 500mal schneller gehalten als der ursprüngliche Algorithmus von Rete und 10mal schneller als sein Vorgänger, Rete III. Dieser Algorithmus wird jetzt von der Funkelnden Logik, die Gesellschaft lizenziert, der sich Charles als Kapitalanleger und der strategische Berater als der Interferenzmotor des SMARTS Produktes angeschlossen hat.

Siehe auch

  • Handlungsauswahl-Mechanismus
  • Expertensystem
  • Interferenzmotor
  • OPS5
  • Produktionssystem
  • Charles Forgy, "Eine Netzmatch-Routine für Produktionssysteme." Arbeitspapier, 1974.
  • Charles Forgy, "Auf der effizienten Durchführung von Produktionssystemen." Doktorarbeit, Universität von Carnegie-Mellon, 1979.
  • Charles Forgy, "Rete: Ein Schneller Algorithmus für die Vielen Gestaltet Gegenstand-Muster-Match-Problem", Künstliche Intelligenz, 19, Seiten 17-37, 1982/viel

Außenverbindungen


Weg-Schauproblem / William Emerson (Mathematiker)
Impressum & Datenschutz