DE69819543T2 - Verfahren und gerät zur bearbeitung einer anfrage gemäss einer booleanregel - Google Patents

Verfahren und gerät zur bearbeitung einer anfrage gemäss einer booleanregel Download PDF

Info

Publication number
DE69819543T2
DE69819543T2 DE69819543T DE69819543T DE69819543T2 DE 69819543 T2 DE69819543 T2 DE 69819543T2 DE 69819543 T DE69819543 T DE 69819543T DE 69819543 T DE69819543 T DE 69819543T DE 69819543 T2 DE69819543 T2 DE 69819543T2
Authority
DE
Germany
Prior art keywords
variables
terms
rule
output signal
input signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69819543T
Other languages
English (en)
Other versions
DE69819543D1 (de
Inventor
J rgen Hans SKOVGAARD
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baan Development BV
Original Assignee
Baan Development BV
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Baan Development BV filed Critical Baan Development BV
Publication of DE69819543D1 publication Critical patent/DE69819543D1/de
Application granted granted Critical
Publication of DE69819543T2 publication Critical patent/DE69819543T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Electrical Discharge Machining, Electrochemical Machining, And Combined Machining (AREA)
  • Numerical Control (AREA)
  • Logic Circuits (AREA)
  • Communication Control (AREA)

Description

  • Erfindungsgebiet
  • Die Erfindung betrifft ein Verfahren zum Verarbeiten einer Anfrage an eine Boolesche Regel mit Variablen durch die Verwendung eines Eingangssignals mit Elementen, einer gespeicherten Regelbasis mit Elementen, die in Termen angeordnet sind, und eines Ausgangssignals mit Elementen, wobei die Elemente in der Regelbasis in der Lage sind, logische Zustände WAHR oder UNWAHR für die Variablen darzustellen, für ein Element in der Regelbasis und ein Element in dem Eingangssignal, die beide eine gegebene Variable darstellen, Vergleichen der Zustände des Eingangssignals und der Zustände der Terme in der Regelbasis mittels logischer Operationen und Aktualisieren des Ausgangssignals mit dem Ergebnis der logischen Operationen.
  • Hintergrund der Erfindung
  • Spezielle Anwendungen zum Verarbeiten einer Anfrage an eine Regel sind Konfigurationssysteme.
  • Allgemeine Konfigurationsprobleme haben drei Grundbestandteile: Variablen, Werte und Regeln. Das Ziel ist, alle Zuweisungen der Werte zu den Variablen zu finden, sodass alle Zuweisungen den Regeln nach gültig sind. Dies wird ein Einschränkung-Erfüllungsproblem genannt, das auf dem Konfigurationsgebiet allgegenwärtig ist. In Konfigurationssystemen stellen Variable wählbare Objekte dar, die nach der Auswahl eines Benutzers in einem Produkt enthalten sein können, wenn die Einschränkungen/Regeln erfüllt werden. Andere für Regeln oft benutzte Begriffe sind z. B. 'Einschränkungen' und 'Beziehungen'.
  • Das Konfigurationsproblem ist gelöst, wenn der Satz aller wählbaren Objekte vollständig in zwei disjunktive Untermengen geteilt ist, die Objekte, die in der Konfiguration enthalten sind, bzw. Objekte darstellen, die von der Konfiguration ausgeschlossen sind, ohne irgendeine der Regeln zwischen den wählbaren Objekten zu verletzen.
  • Ein wählbares Objekt ist etwas, was eingeschlossen oder ausgeschlossen werden kann. Es kann ein physikalisches Objekt (z. B. ein Auto oder eine bestimmte Art von Maschine), ein Attribut (z. B. die Farbe Rot oder die Textur eines Teppichs) oder etwas abstraktes (z. B. eine bestimmte Zahl von Reisen zwischen Wohnung und Arbeit oder eine besondere Art von Ver- trag sein
  • Eine Regel umfasst ein oder mehr wählbare Objekte. Der Zweck der Regel ist, die Wahl von Objekten einzuschränken, um einige Forderungen zu befolgen. Eine Regel kann auf einer physikalischen Beschränkung (z. B. wenn ein Fahrzeug einen großen Motor benötigt, um eine große Zahl von ausgewählten elektrischen Zuberhörteilen zu unterstützen) oder einer willkürlichen Entscheidung basieren (z. B. wenn die Verkaufsleitung in einer Autofirma entscheidet, dass alle Autos mit einem besonders großen Motor nur in roter Farbe hergestellt werden, um ihnen ein sportlicheres Aussehen zu geben). Oft wird der Begriff 'Einschränkung' benutzt, um auf eine Regel zu verweisen, die einschränkt, wie Elemente kombiniert werden können.
  • Die Regel wird typischerweise in einem zweckdienlichen Format in einer Regelbasis, d. h. in einer Art von Tabelle oder Datenbank, gespeichert. Zugang zu der Regelbasis wird mittels einer Konfigurationsmaschine erlangt. Die Konfigurationsmaschine ist verantwortlich, zu prüfen, ob vom Benutzer getroffene Auswahlen gemäß der Regel gültig sind, und dies dem Benutzer mitzuteilen. Die Konfigurationsmaschine kann weiter im Stande sein, weiteres Wissen aus der Regel herzuleiten, d. h. logische Schlüsse über Werte von Objekten zu ziehen, über die der Benutzer noch nicht entschieden hat.
  • Die Konfigurationsmaschine kann auf verschiedene Weise implementiert werden, jedoch wird eine typische Anregung aus den Gebieten der Forschung erhalten, die die Gebiete Programmierung mit Einschränkungslogik, Einschränkungs-Synthese, Relationale Algebra, Satzlogik, Ganzzahl-Programmierung, Graphentheone, Prädikative Rechnung usw. umfassen.
  • Die Charakteristik eines Suchproblems hat sich als "NP-hard" erwiesen. Das heißt, seine Laufzeit-Komplexität ist exponentiell, was bedeutet, dass die Ausführungszeiten der Algorithmen für nicht triviale Probleme exponentiell zu der Größe des Problems sind. Dies ist eine sehr unglückliche Eigenschaft des Problems, die das große Interesse an den Algorithmen ausgelöst hat.
  • Typischerweise ist in Konfigurationssystemen eine große Zahl von Variablen inbegriffen, und die Regelbasis sollte jedes Mal konsultiert werden, wenn ein Benutzer eine Wahl trifft, um den Benutzer während des Konfigurationsprozesses zu unterstützen und ihm zu helfen. Des Weiteren erwarten heutige Benutzer sehr schnelle Antwortzeiten, und wenn verschiedene Arten von Computerprogrammen (z. B. ein Programm zum Durchführen einer Konfiguration) benutzt werden, kümmern sie sich nicht um das zugrunde liegende Konfigurationsproblem oder irgendwelche anderen technischen Aspekte.
  • Stand der Technik
  • Diese Erfindung bezieht sich auf das Europäische Patent EP 0 456 675 . EP 0 456 675 offenbart ein Verfahren und eine Vorrichtung zur Steigerung des Informationsgehalts eines Eingangssignals durch die Verwendung von gespeicherter Regelinformation, eines Eingangssignals und eines Ausgangssignals. Die Regelinformation wird durch Umwandeln einer Booleschen Regel mit einer Anzahl von Variablen in eine Vielzahl von Termen erhalten, die alle möglichen Kombinationen der Variablen darstellen, d. h., Kombinationen von Binärwerten, die den Variablen zugewiesen sind, sodass die Boolesche Regel nicht verletzt wird. Dies ist auch als die Positiv-Indexform bekannt. Andere offenbarte Darstellungen sind die Negativ-Indexform (Kombinationen der Variablen, wo die Regel verletzt wird) und Matrixform (alle Kombinationen der Variablen plus für jede Kombination eine Angabe, ob die Regel verletzt wird oder nicht).
  • Für jeden Term in der Regelbasis werden die den Variablen zugewiesenen Binärwerte mit Zuweisungen zu Variablen in dem Eingangssignal verglichen, um so ein Ausgangssignal bereitzustellen. Das Eingangs- und Ausgangssignal kann zwei mögliche Zustände darstellen, z. B. "Wahr' und 'Unwahr', 'Tautologie' (undefinierter Zustand) und 'Widerspruch' (unzulässiger Zustand).
  • Terme, die Variablen enthaften, die in einem möglichen Zustand in dem Eingangssignal sind, werden identifiziert. Wenn all diese Terme den gleichen Wert für eine einzelnen Variable haben, wird bestimmt, dass die Variable diesen Wert in dem Eingangssignal hat. Dadurch ist es möglich, Information aus der Regelbasis herzuleiten oder wiederzugewinnen.
  • Dadurch werden ein Verfahren und eine Vorrichtung bereitgestellt, die es ermöglichen, Information über Zuweisungen in der Regel enthaltener Variablen herzuleiten, ohne eine zeitraubende Suche in Suchbäumen nach der Booleschen Regel durchführen zu müssen. Bei der Verwendung eines Suchbaums zum Herleiten von Information ist der Rechenaufwand zum Absuchen des Baums exponentiell zu der Zahl von zulässigen Kombinationen von Variablen in der Booleschen Regel, wogegen der Rechenaufwand zum Abtasten der Terme in z. B. einer Positiv-Indexform für die gleiche Regel linear zu der Zahl von zulässigen Kombinationen von Variablen in der gleichen Booleschen Regel ist. Ein beträchtliche Verminderung des Rechenaufwands wird somit erreicht, besonders wenn die Regel eine größe Zahl von Variab len enthält.
  • Das in EP 0 456 675 offenbarte Verfahren verbraucht jedoch Speicher zum Speichern der Regelbasis, der exponentiell zu der Zahl von Variablen in der Regelbasis ist. Im Allgemeinen benötigt das Verfahren Speicher von N/2*(2^N) Termen, wo N die Zahl von Variablen in der Formel ist. Dies bedeutet, dass eine Regel wie: A => B oder C oder D oder E oder F oder G oder H oder I oder J oder K oder L, oder M oder N oder 0 oder Pin 32768 Termen resultiert, was 64 kB 16-Wörter im Speicher belegt. Besonders wenn eine große Zahl von Variablen in der Regelbasis enthalten ist, kann dieses Verfahren einen unannehmbar großen Rechenaufwand hinsichtlich des Untersuchens aller Terme jedes Mal, wenn die Regelbasis zu Rate gezogen wird, zur Folge haben. Außerdem ist der Speicherverbrauch unannehmbar.
  • Auf dem Gebiet von 'Programmieren mit Einschränkungslogik', auch bekannt als 'Boolesche Vereinheitlichung', ist eine Anzahl von Verfahren zum Umwandeln einer Anzahl von Booleschen Regeln in eine Anzahl von Termen (auch 'Most General Unifier' oder MGU genannt), vorgeschlagen worden, die angeben, ob bestimmte Kombinationen von Booleschen Variablen in den Booleschen Regeln nach den Booleschen Regeln gültig sind oder nicht. Solche Verfahren werden z. B. in 'Boolean Unification, an efficient algorithm' von Antoine Rauzy, 1989, LaBri, Universite de Bordeaux und in 'Constraint Logic Programming', herausgegeben von Frederic Benhamod und Alain Colmerauer, Cambridge, MIT, Seiten 237–251 'Using Enumerative Methods for Boolean Unification', Antoine Rauzy, beschrieben.
  • Diese Verfahren sind alle mit dem Kombinieren der Booleschen Regeln in eine gemeinsame Darstellung befasst, die im Speicher eines Computers gespeichert werden kann, und wobei eine Anfrage in der Form einer Kombination aller Variablen in der gemeinsamen Darstellung verifiziert werden kann. Diese Verfahren sind besonders für den Gebrauch in 'Constraint Logic Programming'-Sprachen wir die PROLOG-Sprache entwickelt. In 'Constraint Logic Programming'-Sprachen werden Boolesche Regeln oder Terme nacheinander erzeugt, und das Objekt muss daher eine Darstellung einer neuen Regel einer bestehenden Darstellung hinzufügen, ohne eine völlig neue Darstellung jedes Mal erzeugen zu müssen, wenn eine neue Regel erzeugt wird.
  • Diese Verfahren haben jedoch auch das Problem des exponentiellen Speicherverbrauchs, der der Fähigkeit geopfert wird, ständig in der Lage zu sein, neue Regeln hinzuzufügen. Dadurch ist es möglich, schnelle Abtastzeiten der Regeln zu erreichen, d. h. eine schnelle Verifizierung einer Anfrage gegen die Regeln. Des Weiteren sind diese Verfahren nicht mit dem Verifizieren von Anfragen in der Form einer Kombination von nur einigen der Variablen in der gemeinsamen Darstellung befasst. Es ist somit nicht ausreichend, nur eine Teilkenntnis aller Variablen bereitzustellen.
  • Der Stand der Technik wirft daher das Problem auf, dass Darstellungen von Booleschen Regeln, die in der Form von Termen von Variablen gespeichert werden können, einen unannehmbar großen Speicherbedarf haben.
  • Zusammenfassung der Erfindung
  • Es ist daher eine Aufgabe der Erfindung, die Menge an Speicher zu reduzieren, die benötigt wird, um die Terme, die eine Boolesche Regel darstellen, zu speichern.
  • Dies wird erreicht, wenn das im Anfangsparagraph erwähnte Verfahren dadurch gekennzeichnet ist, dass die Elemente in der Regelbasis in der Lage sind, einen weiteren Zustand darzustellen, der anzeigt, dass eine Variable sowohl den Zustand Wahr als auch Unwahr annehmen kann.
  • Folglich ist es möglich, eine Anfrage an eine Regelbasis sehr schnell auszuführen und weiter das Ergebnis der Anfrage an die Regelbasis sehr schnell als ein Ausgangssignal bereitzustellen, während es möglich ist, die Regelbasis in einer sehr effizienten Darstellung in einem Computer zu speichern.
  • Für die oben eingebrachte Formel ist es möglich, die Darstellung der Regel zu komprimieren, sodass sie nur 32 16-Bit Wörter im Speicher belegt, und so, dass sie etwa 2000 Mal schneller in Laufzeit auf einem Computer abgetastet werden.
  • Des Weiteren wird ein Computersystem mit einem Speicher zum Verarbeiten einer Anfrage an eine Boolesche Regel mit Variablen bereitgestellt.
  • Querverweise
  • Es wird auf die folgenden Patentanmeldungen verwiesen:
    • (1) A Method and a Computer System for Configuring a Set of Objects, PCT-Veröffentlichung Nummer WO 99/13413;
    • (2) A Method and a Computer System for Configuring a Set of Objects, PCT-Veröffentlichung Nummer WO 99/13410;
    • (3) A Method and a Computer System For Interactive Configuration, PCT-Veröffentlichung Nummer WO 99/13412;
    • (4) A Method of Enabling Invalid Choices in Interactive Configuration Systems, PCT-Veröffentlichung Nummer WO 99/13411.
  • Kurzbeschreibung der Zeichnungen
  • Die Erfindung wird unten in Verbindung mit einer bevorzugten Ausführung und mit Verweis auf die Zeichnungen ausführlicher beschrieben. Inhalt der Zeichnungen:
  • 1 zeigt ein Flussdiagramm für ein Verfahren zum Erzeugen einer komprimierten Regeldarstellung.
  • 2 zeigt einen Parse-Baum für die Formel: (X oder Y) => Z.
  • 3 zeigt vier Zustandsvektoren und gibt das Abtasten von komprimierten und unkomprimierten Termen nach der Erfindung an.
  • 4 zeigt die Gesamtstruktur einer bevorzugten Ausführung der vorliegenden Erfindung.
  • 5 zeigt ein Flussdiagramm für ein Verfahren zu Erzeugen eines lokalen Eingabezustandsvektors aus einem globalen Eingabezustandsvektor.
  • 6 zeigt ein Flussdiagramm für ein Verfahren zum Abtasten von unkomprimierten Termen.
  • 7 zeigt ein Flussdiagramm für ein Verfahren zum Abtasten von komprimierten Termen.
  • 8 zeigt ein Flussdiagramm für ein Verfahren zum Extrahieren von Information.
  • Ausführliche Beschreibung einer bevorzugten Ausführung
  • Im Europäischen Patent EP 0 456 675 wird eine Boolesche Formel durch die Positiv-Indexform dieser Formel dargestellt. Dies wird mittels der folgenden Formel und der Tabelle 1 veranschaulicht.
  • Beispiel 1: Für die Formel A oder !B => !Czu lesen als 'wenn A oder nicht B, dann nicht C', mit den Booleschen Variablen A, B und C, wobei die Positiv-Indexform in Tabelle 1 angegeben wird.
  • Figure 00070001
    Tabelle 1
  • Die fünf Terme in Tabelle 1 stellen genau alle Kombinationen der Variablen dar, wo die Formel gültig (nicht verletzt) ist. In einem Computer könnte der Inhalt von Tabelle 1 bequem durch ein Bit pro Variable pro Term im Speicher dargestellt werden.
  • Nach einem ersten Aspekt der Erfindung kann diese Boolesche Regeldarstellung vom Gebrauch der zwei Zustände Wahr und Unwahr in die drei Zustände Wahr, Unwahr und Unbedeutend geändert werden. Der Unbedeutend-Zustand stellt Tautologie dar, die einschließt, dass ein Unbedeutend-Zustand sowohl den Wert Wahr als auch den Wert Unwahr annehmen kann, ohne die dargestellte Regel zu verletzen. Der Unbedeutend-Zustand wird durch einen (*) in der Darstellung der Positiv-Indexform einer Formel angezeigt.
  • Die Formel A oder !B => !Ckann dadurch wie in Tabelle 2 angegeben dargestellt werden.
  • Figure 00070002
    Tabelle 2
  • Verglichen mit Tabelle 1 umfasst Tabelle 2 zwei Reihen weniger als Tabelle 1. Aus Tabelle 2 ist klar, dass die erste Reihe auf die Terme 1 und 4 in Tabelle 1 erweitert werden kann, und dass die letzte Reihe auf die Terme 3 und 5 in Tabelle 1 erweitert werden kann. Hierdurch wird eine komprimierte Regeldarstellung eingeführt.
  • Nach einem zweiten Aspekt der Endung kann die komprimierte Positiv-Indexform benutzt werden, um eine schnellere Ausführungsgeschwindigkeit zu erreichen und weniger Speicher auf einem Computer zu verbrauchen. Ein Term, der ein Unbedeutend (*) enthält, kann mit einer Zweibit-Darstellung für jede Variable dargestellt werden. Die für die komprimierte Darstellung benutzten drei Symbole (0, 1, *) werden in Tabelle 3 zusammen mit der Binärzuweisung der Bits S1 und S2 in der Zweibit-Darstellung gezeigt.
  • Figure 00080001
    Tabelle 3
  • Die Aufgabe des Auswählens der spezifischen Bitkombinationen besteht darin, es möglich zu machen, den Regelabtastalgorithmus mittels einfacher Und/Oder-Operationen zu implementieren. Die Bitkombinationen können so gewählt werden, dass diejenigen Operationen, die vermutlich am häufigsten ausgeführt werden, die am schnellsten auszuführenden Operationen sind.
  • Die komprimierte Positiv-Indexform in Tabelle 2 kann bequem durch 5 Bytes im Speicher dargestellt werden, d. h. zwei Bytes pro komprimierten Term und ein Byte pro unkomprimierten Term. Für Regeln mit einer größeren Zahl von Variablen können signifikante Speichereinsparungen erzielt werden.
  • Beispiel 2: Für die Regel: A oder B oder C oder D oder E oder F oder G oder H oder I oder J => Kwird die Positiv-Indexform in Tabelle 4 angegeben:
  • Figure 00090001
    Tabelle 4
  • Die unkomprimierten Terme in Tabelle 4 benötigen zwei Bytes mal 1025 Terme gleich 2050 Bytes. Die komprimierte Termendarstellung wird in Tabelle 5 angegeben.
  • Figure 00090002
    Tabelle 5
  • Diese komprimierte Darstellung benötigt zwei Bytes mal zwei Bytes pro Term mal zwei Terme gleich acht Bytes.
  • Für diese Regel wird eine signifikante Einsparung im Speicherverbrauch erreicht, selbst wenn die komprimierte Termendarstellung doppelt so viel Speicher pro Term benutzt, d. h. zwei Bits pro Variable.
  • Die Erzeugung von komprimierten Termen ist aus dem Gebiet des digitalen Entwurfs wohl bekannt. Karnaugh-Karten sind ein Verfahren, und ein Verfahren wie das Quine-McCluskey-Verfahren (1965) kann in dem Buch 'Digital Design' von Morris Mano gefunden werden. Das Quine McCluskey-Verfahren erzeugt einen sich überschneidenen Satz von Termen.
  • Wir verwenden jedoch ein Verfahren von Antoine Rauzy "Boolean Unification, an efficient algorithm", 1989, JaBri, Universite de Bordeux. Dieses Verfahren erzeugt einen sich nicht überschneidenden Satz von Termen. Boolesche Vereinheitlichung wird auch in "Constraint Logic Programming", herausgegeben von Frederic Benhamod und Alain Colmerauer, Cambridge, MIT, Seiten 237–251 "Using Enumerative Methods for Boolean Unification", Antoine Rauzy, beschrieben. Man sollte beachten, dass Boolesche Vereinheitlichung sich mit dem Gebiet des Erzeugens einer einzelnen Darstellung von Booleschen Regeln befasst, die in linearer Zeit im Gegensatz zu z. B. Suchbäumen, die abgesucht werden, mehr oder weniger intelligent mit einem exponentiellen Zeitverbrauch untersucht werden können. Der Ausdruck 'Constraint Logic Programming' ist auch als 'Boolean Unification' bekannt.
  • 1 zeigt ein Flussdiagramm für ein Verfahren zum Erzeugen einer komprimierten Regeldarstellung. In Schritt 1 beginnt das Verfahren mit einer symbolischen Booleschen Formel, die Gegenstand einer komprimierten Darstellung ist. In Schritt 2 umfasst ein Initialisierungsprozess das Zuweisen der Variablen ActiveList und ResuItList zu dem leeren Satz und T zu dem leeren Satz. Nach dem Initialisieren wird eine Variable Q in der Formel f, die momentan nicht in dem Term T ist, in Schritt 3 ausgewählt. Wenn mehrere Variablen möglich sind, wird die oberste in dem zugehörigen Parse-Baum (s. 2) ausgewählt, d. h. die von den wenigsten Operatoren beherrschte Variable wird ausgewählt. In Fall von Verbindungen wird eine Variable zufällig gewählt. In Schritt 4 werden die zwei Terme T1 und T2 erzeugt, wo T1 T mit Q addiert ist und T2 T mit dem negierten Q addiert ist. Jeder Term stellt jeweils eine Seite des Parse-Baums dar. Außerdem wird ein Zähler i initialisiert. Dann wird eine Schleife betreten, und der erste Schritt 5 der Schleife erhöht den Zähler, d. h. i wird gleich i + 1 gesetzt. Der nächste Schritt 6 der Schleife berechnet den Wahrheitswert der Funktion f in Bezug auf den bekannten variablen Wert in T1 oder T2, der der Wert von f(Ti) ist. Der Wahrheitswert wird mittels eines Rechners berechnet, der die in Tabelle 6 gegebenen Umschreibregeln verwendet. Das Symbol A kann sowohl eine Variable als auch eine Unterformel darstellen.
    Regel Nr. Regeln
    R1 unwahr und A :=> unwahr
    R2 unwahr oder A :=> A
    R3 unwahr => A :=> wahr
    R4 A => unwahr :=> nicht A
    R5 unwahr <=> A :=> nicht A
    R6 nicht unwahr :=> wahr
    R7 unwahr x oder A :=> A
    R8 wahr und A :=> A
    R9 wahr oder A :=> wahr
    R10 wahr => A :=> A
    R11 A => wahr :=> wahr
    R12 wahr <=> A :=> A
    R13 nicht wahr :=> unwahr
    R14 wahr x oder A :=> nicht A
    Tabelle 6
  • Die Umschreibregeln werden direkt aus der Booleschen Algebra abgeleitet. Wenn alle Variablen bekannt sind, ist es leicht, den Wahrheitswert der Formel f zu bestimmen, kann jedoch mit nur einer Teilzuweisung des Wahrheitswerts in einigen Fällen unbestimmt sein.
  • Eine Regel muss nur einmal komprimiert werden, da die Regeldarstellung gespeichert werden kann.
  • 2 zeigt den Parse-Baum für die Formel: (X oder Y) => Z. Der oberste Knoten des Baums entspricht der '=>' Oder-Implikation in der Formel. Der andere Knoten entspricht dem Oder-Operator. X, Y und Z sind die Variablen des Parse-Baums.
  • Beispiel 3: Für die Formel: (X oder Y) => Zwo Z gleich Wahr (Z := wahr), ist die Formel (X oder Y) => Wahrnach R11 ist die Formel "Wahr", d. h. der Wahrheitswert ist Wahr, ungeachtet der Zuweisung von X und Y. Für einen anderen Term T = !XY ist die Formel (Unwahr oder Wahr) => Znach R9 "Wahr => Z" und nach R10 "Z", und der Wahrheitswert kann daher in diesem Fall nicht bestimmt werden. In dem Fall, wo der Wahrheitswert nicht bestimmt werden kann, ist das Ergebnis der Berechnung in Schritt 6'unbekannt', und dann wird in Schritt 7 Ti zu der ActiveList zur weiteren Verarbeitung in der Schleife, die die Schritte 3 bis 11 umfasst, hinzugefügt. In dem Fall, wo der Wahrheitswert der Formel in Schritt 6 als 'Wahr" bestimmt wird, wird der Term T in Schritt 8 zu der ResuItList als ein gültiger komprimierter Term hinzugefügt. In dem Fall, wo der Wahrheitswert der Formel in Schritt 6 als 'Unwahr' bestimmt wird, oder Ti entweder der ResuItList in Schritt 8 oder der ActiveList in Schritt 7 hinzugefügt wird, wird in Schritt 9 geprüft, ob der Zähler i gleich 2 ist. Wenn sowohl T1 als auch T2 berechnet wurden, wird in Schritt 10 geprüft, ob die ActiveList leer ist. Andernfalls, wenn T1 und T2 nicht berechnet wurden, wird die Schleife in Schritt 5 fortgesetzt, wo der Zähler i inkrementiert wird. In Schritt 10 wird geprüft, ob die ActiveList leer ist. Wenn sie leer ist, wird die Verarbeitung beendet, andernfalls wird ein Term T weiterer Verarbeitung unterzogen, indem T aus der ActiveList genommen und die Schleife in Schritt 3 fortgesetzt wird.
  • Wenn in Schritt 10 die ActiveList leer ist, enthält die Ergebnisliste einen Satz von Termen, der den positiven Index der Formel in komprimierter Form darstellt. Die Terme werden mittels Tabelle 7 in die Indexform übersetzt.
    Term Variable Komprimierter Postiv-Index
    A 1
    !A 0
    'Im Term nicht vorkommend, aber in Formel'
    Tabelle 7
  • Im Allgemeinen verbraucht diese komprimierte Formeldarstellung Speicher in der Größe von N mal 0 Bits, wo N die Zahl von Variablen ist und 0 die Zahl von Operatoren ist.
  • Beispiele von Kompression:
    Beispiel 4: In diesem Beispiel ist die Formel (X oder Y) => Z
  • Gegenstand einer komprimierten Termendarstellung. Die aufeinanderfolgenden Aktualisierungen der ResuItList und der ActiveList werden in Tabelle 8 unten gezeigt.
    ActiveList (AL) ResuItList (RL)
    [] []
    [{Z}, {!Z}) []
    [{!Z}] [(Z}]
    [{Y, !Z}, {!Z, !Z}]] [(Z}]
    [{!Y, !Z}]] [(Z}]
    [{X, !Y, !Z}, {!X, !Y, !Z}] [(Z}]
    [{!X, !Y, !Z}] [(Z}]
    [] [{!X, !Y, !Z}, {Z}]
    Tabelle 8
  • Die komprimierte Positiv-Indexform wird daher wie in Tabelle 9 gezeigt angegeben.
  • Figure 00130001
    Tabelle 9
  • Beispiel 5: In diesem Beispiel ist die Formel X => (Y oder Z)
  • Gegenstand einer komprimierten Termendarstellung. Die aufeinanderfolgenden Aktualisierrungen der ResuItList und der ActiveList sind wie in Tabelle 10 unten gezeigt.
    ActiveList (AL) ResuItList (RL)
    [] []
    [{X}], {!X}] []
    [{X, Y}, {X, !Y}] [{!X}]
    [{X, !Y}] [{!X}, {X, Y}]
    [{X, !Y, Z}, {X, !Y, !Z}] [{!X}, {X, Y}]
    [] [{!X}, {X, Y}, {X, !Y, Z}]
    Tabelle 10
  • Die komprimierte Positiv-Indexform wird daher in Tabelle 11 gegeben.
  • Figure 00130002
    Tabelle 11
  • Um die Speichernutzung zu optimieren, werden die Terme, die keine Unbedeutend (*) haben, in einer Liste getrennt von denen gehalten, die Unbdeutend (*) haben.
  • Eine Boolesche Formel wird künftig als eine Struktur mit drei Elementen dargestellt Formel = (VL, PIL, CPIL)wo VL die Variablenliste ist, PIL eine unkomprimierte Positiv-Index-Liste ist, und CPIL eine komprimierte Positiv-Index-Liste ist, die eine Liste von Paaren {S1, S2} enthält.
  • Beispiel 5 (fortgesetzt): Die Boolesche Regel: X => (Y oder Z)erinnernd ergeben der Inhalt der ResuItList in Tabelle 10 und die in Tabelle 3 und 7 gegebenen Übersetzungen die Datendarstellung der Formel Formel = ([X,Y,Z], [101], [{001, 111} {111, 011}])
  • Beispiel 2 (fortgesetzt): Die Boolesche Regel A oder B oder C oder D oder E oder F oder G oder H oder 1 oder J => Kerinnernd ergibt die Termendarstellung in Tabelle 5 die Datendarstellung der Formel: Formel = ([A, B, C, D, E, F, G, N, I. J, K], [000000 00000], [{11111111110, 11111111111}])
  • Somit ist klar, dass diese Darstellung sehr effizient ist.
  • 3 zeigt vier Zustandsvektoren und gibt das erfindungsgemäße Abtasten von komprimierten und unkomprimierten Termen an. Die Gesamtstruktur des Abtastalgorithmus ist in vier Stufen geteilt. In Stufe eins wird eine Anfrage an eine Regel vorbereitet. Die Anfrage ist in der Form eines Zustandsvektors, und die Regel ist in der Form einer Formel, die durch die komprimierten und unkomprimierten Terme dargestellt wird. Das heißt, ein lokaler Eingabezustandsvektor (ISV) 303 mit Elementen 304 wird durch Extrahieren von Information aus dem globalen Zustandsvektor 301 mit Elementen 302 erzeugt. Die Information wird so extrahiert, dass nur die in der Formel enthaltenen Variablen extrahiert werden. Dies minimiert den Rechenaufwand, der in der Verarbeitung der Anfrage an die Regel benötigt wird. Die Verarbeitung umfasst zwei Stufen: Abtasten von komprimierten und unkomprimierten Termen.
  • In Stufe zwei 305 wird der lokale Eingangszustandsvektor über alle unkomprimierten Terme der Formel abgetastet, um auf eine 'Übereinstimmung' oder keine 'Übereinstimmung' zu prüfen, und die relevanten Elemente 307 des lokalen Ausgangszustandsvektors (OSV) 306 werden mit dem Ergebnis der umkomprimierten Abtastung aktualisiert.
  • In Stufe drei 310 wird der lokale Eingangszustandsvektor (ISL) 303 über alle komprimierten Terme der Formel abgetastet, um auf eine 'Übereinstimmung' oder keine 'Übereinstimmung' zu prüfen. Die durch das Abtasten rückgewonnene Information ist im lokalen Ausgangszustandsvektor (OSV) enthalten. In Stufe vier wird der Inhalt des lokalen Ausgangszustandsvektors in den globalen Ausgangszustandsvektor 308 mit Elementen 309 übertragen.
  • Eine Anfrage in der Form eines Eingangszustandsvektors umfasst Information über bekannte Aspekte eines Elements, z. B. den Zustand von Sensoren oder Konfigurationsauswahlen, aber im Allgemeinen werden andere Elemente des Zustandsvektors unbekannt sein. Die Information kann in Elementen eines Zustandsvektors mit variablen Werten enthalten sein. Die Anfrageverarbeitung in Stufe zwei und vier tastet eine Boolesche Formel mit der Kenntnis der momentanen Zuweisungen von in dem Zustandsvektor gefundenen Variablen ab. Eine Aufgabe der Erfindung ist, einige oder alle der unbekannten Elemente zu bestimmen, wo die Regel dies ermöglicht. Das Ergebnis der Anfrage wird im Ausgangszustandsvektor aktualisiert.
  • Wenn ein Widerspruch zwischen der Anfrage und der Regel erkannt wird, d. h. die Formel verletzt wird, dann endet der Algorithmus, und wenn die Formel gültig ist, wird festgestellt, ob irgendwelche weiteren Variablen hergeleitet werden können, d. h. einen Wert in dem Zustandsvektor zuweisen. Der Zustandsvektor kann physikalisch jedes Datenbehältnis wie eine Datenbank oder ein Satz von Objekten mit zugehörigen Werten über einen Satz von Booleschen Items, die in der Formel vorkommen, sein.
  • Der Eingangszustandsvektor und der Ausgangszustandsvektorumfassen die variablen Werte, die in der Formel vorkommen. Jede Variable in dem Zustandsvektor wird in der Form von einer von vier möglichen Zweibit-Kombinationen gespeichert.
  • Figure 00150001
    Tabelle 12
  • Tabelle 12 zeigt die möglichen variablen Werte der zwei Bits S1 und S2 in dem Zustandsvektor.
  • Man sollte beachten, dass dies die gleiche Konvention ist wie die, die zur Darstellung der komprimierten Terme für die Zustände 'Wahr', 'Unwahr' und 'Tautologie' (unbedeutend) benutzt wird. Erfindungsgemäß können jedoch die Bitdarstellungen der Zustände vertauscht werden, z. B. kann 'Wahr' durch die Bitwerte S1 = 1, S2 = 1 dargestellt werden, 'Unwahr' kann durch die Bitwerte S1 = 0, S2 = 0 dargestellt werden, 'Tautologie' (unbedeutend) kann durch die Bitwerte S1 = 1, S2 = 0 dargestellt werden, und 'Widerspruch' kann durch die Bitwerte S1 = 0, S2 = 1 dargestellt werden. In einer bevorzugten Ausführung sind die Bitdarstellungen der Zustände im Anfragezustandsvektor, der Regelbasis und des Antwortzustandsvektors die gleichen. Erfindungsgemäß können jedoch andere Kombinationen implementiert werden. Um die erfindungsgemäßen Vorteile zu erlangen, müssen geeignete Modifikationen der offenbarten Algorithmen vorgenommen werden. Dies liegt jedoch in den Fähigkeiten einer in der Technik erfahrenen Person.
  • Der Abtastprozess kann als das Betrachten der Terme der Formel einer nach dem anderen gesehen werden. Wenn es eine Übereinstimmung zwischen den in dem Eingangszustandsvektor gebundenen Variablen und den Termen (d. h. die Regeldarstellung) gibt, können die ungebundenen Variablen den in dem Term dargestellten Wert haben. Gebundene Variable können die symbolischen Werte'Wahr' oder'Unwahr' annehmen, während ungebundene Variable den symbolischen Wert 'Tautologie' oder 'Unbedeutend' annehmen können.
  • Die folgende Tabelle bestimmt, ob eine Übereinstimmung zwischen einem Regelterm und und einer Eingangszustandsvektorvariablen besteht oder nicht. Eine Übereinstimmung zwischen einem Term und dem Eingangszustandsvektor wird erkannt, wenn alle Variablen dieses Terms mit dem Eingangszustandsvektor übereinstimmen.
  • Figure 00160001
    Tabelle 13
  • Tabelle 13 zeigt, welche Kombinationen von '0' ('Unwahr'), '1' ('Wahr') und '*' ('Unbedeutend'/ 'Tautologie') in 'Übereinstimmung' oder 'Nicht-Übereinstimmung' resultieren.
  • Betrachtet man die tatsächlich gewählte Bitdarstellung, müssen beide Bits unterschiedlich sein, um eine 'Nicht-Übereinstimmung' zu erkennen. Wenn andere Bitdarstellungen der Zustände benutzt werden, können andere logische Beziehungen der Bits gefunden werden.
  • Wenn eine Übereinstimmung erkannt wurde, wird die Kenntnis über den übereinstimmenden Term in einem Ausgangszustandsvektor mittels der folgenden Aktualisierungstabelle gespeichert.
  • Figure 00170001
    Tabelle 14
  • Tabelle 14 zeigt die Aktualisierung des Ausgangszustandsvektors als Reaktion auf die Termvariable und den vorherigen Ausgangszustandsvektor.
  • Betrachtet man die in Tabelle 12 gezeigte gewählte Bitdarstellung und die ausgegebene Aktualisierung in Tabelle 14, so ist es jetzt möglich, den Ausgangszustandsvektor durch eine einfache Boolesche Oder-Operation zu aktualisieren.
  • Beispiel 5 (fortgesetzt): Man erinnere die Regel X => (Y oder Z)nun mit einer Anfrage, wo externe Zuweisungen in dem Zustandsvektor gemacht wurden.
  • Die Zuweisung ist, dass Z auf Unwahr, X auf Wahr gesetzt ist, und es keine Kenntnis über Y, d. h. Tautologie, gibt. Der Eingangszustandsvektor ist [XYZ] = [1*0]und die Termendarstellung ist wie in Tabelle 11 angegeben.
  • Figure 00170002
  • Figure 00180001
    Tabelle 15
  • Tabelle 15 zeigt den Eingangszustandsvektor, die Darstellung der Terme 1, 2 und 3 und die drei aufeinanderfolgenden Aktualisierungen des Ausgangszustandsvektors. Der Ausgangszustandsvektor wird durch Vorgabe auf 'Widerspruch' für alle Elemente in dem Ausgangszustandsvektor initialisiert. Weil zwischen dem Eingangszustandsvektor und Term 1 keine Übereinstimmung gefunden wird, wird daher der Ausgangszustandsvektor in Schritt 1 nicht aktualisiert. In Schritt 2 wird eine Übereinstimmung erkannt, und der Ausgangszustandsvektor wird daher gemäß Tabelle 14 aktualisiert. In Schritt 3 wird auch keine Übereinstimmung gefunden, und der Ausgangszustandsvektor bleibt unverändert. 'Übereinstimmung'/'Nicht-Übereinstimmung' wird mittels Tabelle 13 ermittelt.
  • Betrachtet man nun den Ausgangszustandsvektor und beseitigt die Elemente, die im Eingangszustandsvektor gebunden waren, so ist zu sehen, dass Y nach den Regeltermen wahr sein muss. Dies bedeutet, dass Y den Wert Wahr annehmen und jetzt mit diesem Wert in den Ausgangszustandsvektor übertragen werden kann.
  • Die bitweise Bestimmung, ob es eine Übereinstimmung gibt oder nicht, und das Aktualisieren der Ausgangsvariablen können mit den vier Operationen "Und, Oder, Nicht, Xoder" durchgeführt werden, wenn die in Tabelle 3 und 12 gegebenen Darstellungen benutzt werden. Ein Computer führt diese Grundoperationen im Allgemeinen sehr schnell aus. Wenn die Signalkomponenten S1 und S2 mit z. B. zwei Wörtern dargestellt werden, kann ein 32-Bit Computer einen Termübereinstimmungsprozess in zwei Grundoperationen für Formeln mit weniger als 32 Variablen ausführen. In Konfigurationssystemen sind Regeln mit weniger als 32 Variablen die gebräuchlichsten Regeln.
  • 4 zeigt die Gesamtstruktur einer bevorzugten Ausführung der vorliegenden Erfindung. Die Struktur ist in vier Stufen 414, 415, 416 und 417 geteilt. Das in der bevorzugten Ausführung benutzte detaillierte Verfahren wird in jeder dieser vier Stufen präsentiert. Beginn 413 und Ende 418 geben an, wo das Verfahren begonnen wird und wo keine weitere Verarbei tung stattfindet. Stufe eins 414 entspricht der Global-in-Lokal-Eingangszustandsvektorumwandlung in 3, und die Stufe vier entspricht der Lokal-in-Global-Ausgangszustandsvektorumwandlung. Beschreibung der Variablen im Abtastalgorithmus:
    StateVector ist ein Vektor, wo alle Variablen durch ihren momentanen Wert dargestellt werden. Der Wert von StateVector [A] ist der momentane Wahrheitswert von A (Wahr, Unwahr, Ungebunden).
    TV ist eine Bitmaske, die die Wahr-Variablen im Eingangszustandsvektor mit einer binären '1' angibt.
    BV ist eine Bitmaske, die die gebundenen Variablen im Eingangszustandsvektor mit einer binären '1' angibt.
    ISV ist der lokale Eingangszustandsvektor.
    OSV ist der lokale Ausgangszustandsvektor.
    CH ist eine Bitmaske, die die geänderten Variablen im Eingangszustandsvektor mit einer binären '1' angibt.

    |X| bedeutet die Länge von X, z. B. |X| = |{a, b, s, d}| = 4. Formel = (VL, PIL, CPIL), wo
    VL eine Variablenliste ist,
    PIL eine Positiv-Indexliste ist, und
    CPIL = [{S1, S2}] eine komprimierte Positiv-Indexliste von Paaren {S1, S2} ist.
  • 5 zeigt ein Flussdiagramm eines Verfahrens zum Erzeugen eines lokalen Eingangszustandsvektors aus einem globalen Eingangszustandsvektor. Der Beginn 519 ist ähnlich dem Beginn 413 von 4. Zuerst wird in Schritt 520 ein Zähler i auf null initialisiert, um die Variablen in der Formel abzuzählen. Dann wird eine Schleife betreten, und der erste Schritt 521 inkrementiert den Zähler i auf i + 1. Der Zähler wird als ein Index in der Formelvariablenliste VL benutzt, um die Variable zu erlangen, die wiederum als ein Index in StateVector benutzt wird, um den tatsächlichen Wert der Variablen entweder Wahr, Unwahr oder Ungebunden zu extrahieren. In Schritt 522 wird der variable Wert des Elements Nummer i in Formula.VL als entweder Wahr (T), Unwahr (F) oder Ungebunden (UB) erkannt. Wenn das Ergebnis von Schritt 522 wahr ist, wird Schritt 523 betreten, wenn das Ergebnis ungebunden ist, wird Schritt 524 betreten, und wenn das Ergebnis unwahr ist, wird der Schritt 525 betreten. In Schritt 523 werden die Bits S1 und S2 der Variablen Nummer i mit S1 := 0 und S2 := 1 ak tualisiert. In Schritt 524 werden die Bits S1 und S2 der Variablen Nummer i mit S1 := 1 und S2 := 1 aktualisiert. In Schritt 525 werden die Bits S1 und S2 der Variablen Nummer i mit S1 := 1 und S2 := 0 aktualisiert. Die Schleife wird wiederholt, bis der Wahrheitswert aller Variabblen in der Formel in den lokalen Eingangszustandsvektor (ISV) übertragen ist. Dies wird in Schritt 526 geprüft. Wenn der Zähler i die Länge der Formelvariablenliste Formula.VL erreicht hat, wird die Schleife beendet, ansonsten wird die Schleife in Schritt 521 mit einer Zählererhöhung fortgesetzt. Wenn die Schleife beendet ist, fährt das Verfahren mit dem Abtasten von unkomprimierten Termen über Schritt A, 527 fort.
  • 6 zeigt ein Flussdiagramm eines Verfahrens zum Abtasten unkomprimierter Terme. Das Verfahren geht über Schritt A, 527 weiter. In Schritt 627 wird die Initialisierung von Variablen bezüglich des Abtastens von unkomprimierten Termen durchgeführt. Der logische Ausgangszustandsvektor OSV wird durch Setzen der zwei Bits S1 und S2 auf '0' auf 'Widerspruch' initialisiert. Das heißt, OSV[i].S1 := 0, OSV[i].S2 := 0, die allen Elementen entsprechen, werden auf 0 gesetzt. Die gebundenen Variablen im lokalen Eingangszustandsvektor ISV werden mit einer Bitmaske BV durch eine binäre '1' angegeben, das heißt, BV:= nicht (ISV.S1 und ISV.S2). Die Wahr-Variablen des lokalen Eingangszustandsvektors werden auch durch eine Bitmaske TV:= BV und ISV.S2 angegeben. Schließlich wird die Variable AnyMatch auf unwahr, AnyMatch:= Unwahr, gesetzt. In Schritt 628 wird der Zähler i auf null, i:= 0, gesetzt. Der Zähler wird benutzt, um die unkomprimierten Terme in der Positiv-Indexliste PIL der Formel zu zählen. Schritt 629 erhöht den Zähler i und ist der erste Schritt einer Schleife. Die Schleife wird in Schritt 630 beendet, wenn alle PIL-Terme abgetastet sind, wobei hier geprüft wird, ob der Zähler i die Länge der PIL-Liste der Formel erreicht hat, d. h., ob i = |Formula.PIL|. Die Erfassung, ob es eine Übereinstimmung gibt oder nicht, wird in Schritt 631 durchgeführt, wo der Wahrheitswert der Anweisung TV = Formula.PIL[i] und BVgeprüft wird. Wenn die Anweisung unwahr ist, wird die Schleife mit einer Zählererhöhung in Schritt 629 fortgesetzt, ansonsten wird der lokale Ausgangszustandsvektor zusammen mit der Variablen AnyMatch aktualisiert, bevor die Schleife in Schritt 629 fortgesetzt wird. Die Aktualisierung ist wie folgt: OSV.S1 := OSV.S1 oder nicht (Formula.PIL[i] OSV.S2 := OSV.S2 oder Formula.PIL[i] AnyMatch := Wahr
  • Wenn keine Übereinstimmung vorhanden ist, wird OSV nicht aktualisiert, und ein Widerspruch wird festgestellt. Wenn die Schleife, wie in Schritt 630 erkannt, beendet ist, fährt das Verfahren mit dem Abtasten der komprimierten Terme über Schritt B, 633, fort.
  • 7 zeigt ein Flussdiagramm eines Verfahrens zum Abtasten komprimierter Terme. Das Verfahren von 6 geht über Schritt B, 633, werter. In Schritt 733 wird der Zähler i auf null, i := 0, gesetzt. Der Zähler wird benutzt, um die komprimierten Terme in der komprimierten Positiv-Indexliste CPIL der Formel zu zählen. Schritt 734 erhöht den Zähler i und ist der erste Schritt einer Schleife. Die Schleife wird in Schritt 735 beendet, wenn alle CPIL-Terme abgetastet sind, wobei hier geprüft wird, ob der Zähler i die Länge der Formeln-CPIL-Liste erreicht hat, d. h. ob i = |Formula:CPIL| ist. Das Erfassen, ob es eine Übereinstimmung gibt oder nicht, wird in Schritt 736 durchgeführt, wo der Wahrheitswert der Anweisung 0 = {(Formula.CPIL[i].S1 Xoder ISV.S1) und (Formula.CPIL[i].S2 Xoder ISV.S2)}geprüft wird. Wenn diese Anweisung unwahr ist, wird die Schleife mit einer Zählererhöhung in Schritt 734 fortgesetzt, ansonsten wird der lokale Ausgangszustandsvektor zusammen mit der Variablen AnyMatch aktulisiert, bevor die Schleife in Schritt 629 fortgesetzt wird. Die Aktualisierung ist wie folgt: OSV.S1 := OSV.S1 oder Formula.CPIL[i].S1 OSV.S2 := OSV.S2 oder Formula.CPIL[i].S2 AnyMatch := Wahr
  • Wenn keine Übereinstimmung vorhanden ist, wird OSV nicht aktualisiert, und ein Widerspruch wird erkannt. Wenn die Schleife beendet wird, wie in Schritt 735 ermittelt, fährt das Verfahren mit einer Informationsextraktion über Schritt C, 738 fort.
  • 8 zeigt ein Flussdiagramm eines Verfahrens zum Extrahieren von Information. Das Verfahren von 7 fährt über Schritt C, 738 fort. Wenn in Schritt 838 für entweder die komprimierten oder die unkomprimierten Terme keine Übereinstimmung ermittelt wird, steht die Anfrage in der Form des Eingangszustandsvektors im Widerspruch zu der Regeldarstellung und damit der Regel. Dieses Ergebnis wird in Schritt 839 bereitgestellt, wenn die Variable AnyMatch Unwahr ist. Alternativ wird die Ermittlung durch Berechnen des Wahrheitswerts der Anweisung : 0 = (OSV.S1 oder OSV.S2) durchgeführt.
  • Die Variable, die infolge des Abtastprozesses geändert wurde, wird durch Vergleichen des lokalen Eingangszustandsvektors (ISV) mit dem Ausgangszustandsvektor und Entfernen aller durch BV bezeichneten gebundenen Variablen in dem Änderungsvektor CV extrahiert. Das heißt, eine Wahr-Variable könnte einer ungebundenen Variablen entsprechen. Die geänderten Variablen werden in Schritt 840 in dem Vektor CH mittels der Anweisung CH:= (ISV.S1 Xoder OSV.S1) oder (ISV.S2 Xoder OSV.S2) und nicht (BV) angegeben.
  • Wenn der Änderungsvektor nur Nullen enthält, hat das Abtasten keine neue Information erbracht, und der Algorithmus kann dies dann mitteilen. Das heißt, die Anfrage ist den Regeln nach gültig. In Schritt 841 wird geprüft, ob CH gleich null ist, und wenn CH null ist, wird in Schritt 842 gefolgert, dass nichts hergeleitet wird, und das Verfahren endet. Das Verfahren endet, und es hat Variablen hergeleitet, die mitgeteilt werden. In Schritt 841 wird der Zähler i am Anfang der Schleife erhöht. Diese Schleife wird wiederholt, bis der Wahrheitswert aller hergeleiteten Variablen im lokalen Ausgangszustandsvektor (OSV) in den StateVector SV übertragen wurden, wobei hier in Schritt 844 geprüft wird, ob der Zähler i die Länge der Formeln-Variablenliste VL erreicht hat. Das heißt, ob i<|Formula.VL| ist. Wenn das Ergebnis nein ist, endet das Verfahren in Schritt 849, ansonsten fährt das Verfahren in Schritt 845 fort. In Schritt 845 wird geprüft, ob der Wert von Element i im Vektor CH Wahr ist. Wenn der Wert des Elements Wahr ist, wird in Schritt 846 geprüft, ob Bit S1 im Element i des lokalen Ausgangszustandsvektors Wahr ist, d. h., ob OSV[i].S1 = 0 ist. Wenn es Wahr ist, wird in Schritt 847 StateVector[Formula.VL[i]] auf Wahr gesetzt, ansonsten wird StateVector[Formula.VL[i]] auf Unwahr gesetzt. Wenn Schritt 847 oder Schritt 848 ausgeführt wird, geht die Schleife mit einer Zählererhöhung in Schritt 843 weiter. Desgleichen geht die Schleife weiter, wenn das Ergenbis von Schritt 845 Unwahr ist.
  • Beispiel 5 (fortgesetzt II). Man erinnere die Regel X => (Y oder Z)wo die Formeldarstellung {[X,Y,Z], [101], [{111,011}, {001,111}]} ist.
  • Des Werteren ist bekannt, dass X Wahr zugewiesen und Z Unwahr zugewiesen ist.
  • Beginn bei Stufe eins: Erzeugen des lokalen Eingangszustandsvektors (X) StateVector[1] = Wahr (Y) StateVector[2] = Ungebunden (Z) StateVector[3] = Unwahr isv = {011, 110}, osv = {000000}, N = [100], BV = [101]
  • Stufe 2: Unkomprimierte Terme abtasten
    Übereinstimmung ? (Formula.PIL[i] und BV) Xoder N PIL[1] : (101 und 101) Xoder 100 = 101 Xoder 101 = 001 (keine Übereinstimmung) isv = {011, 110}, osv = {000, 000}, TV = [100], BV = [101]
  • Stufe drei: Komprimierte Terme abtasten Übereinstimmung ? ((Formula.CPIL[1].s1 Xoder isv.s1) und (Formula.CPIL[1].s2 Xoder isv.s2)) [{111, 011}, {001, 111} CPIL[1] : (111 Xoder 001] und (011 Xoder 110) = 100 und 101 = 100 (keine Übereinstimmung) Fortsetzen CPIL[2] : (oo1 Xoder 011) und (111 Xoder 110) = 010 und 001 = 000
  • (Übereinstimmung) osv.s1 := osv.s1 oder Formula.CPIL[2].s1 = 000 oder 001 = 001 osv.s2 := osv.s2 oder Formula.CPIL[2].s2 = 000 oder 111 = 111 isv = {011, 110}, osv = {001, 111}, TV = [100], BV = [101]
  • Stufe vier: Information aus Abtastung Extrahieren CH = ((isv.s1 Xoder osv.s1) oder (isv.s2 Xoder osv.s2)) und !BV = (011 Xoder 001) oder (110 Xoder 111) und !101 = (010 oder 001) und 010 = 011 und 010 = 010 Lokaler StateVector[2] = {0, 1} = Wahr
  • Daher ist Y gleich Wahr, wie erwartet.
  • Beispiel 6: Dieses Beispiel ist aus dem Gebiet der Konfiguration genommen.
  • Die Beziehungen zwischen den auswählbaren Elementen für ein Auto, die Regel oder die Einschränkung können sein: Model[Turbo] oder Model[Cabriolet] => MetalicPaints und Trim[Leather] und CruiseControl
  • Anstatt die obigen Terme zu verwenden, kürzen wir diese auf besser lesbare Variablennamen ab:
    Model[Turbo] = A
    Model[Capriolet] = B
    MetalicPaints = C
    Trim[Leather] = D
    CruiseControl = E
  • Die obige Einschränkung kürzt sich auf die folgende Formel ab: A oder B => C und D und E
  • Wir können nun den schnellen Booleschen Abtastalgorithmus beginnen. Ganz links ist der Punkt, bei dem die ActiveList und die ResuItList gezeigt werden. p4_5 gibt den Punkt zwischen Schritt 4 und Schritt 5 an, desgleichen gibt p9_10 den Punkt zwischen Schritt 9 und Schritt 10 an. Für jede Iteration wird gezeigt, welche der Terme T, T1 und T2 zugewiesen werden.
  • Es wird auf 1 'Erzeugen einer komprimierten Regeldarstellung' verwiesen:
  • Figure 00240001
  • Figure 00250001
  • Das Ergebnis kann nun in die in Tabelle 16 angegebene Zweibit-Darstellung übersetzt werden:
  • Figure 00260001
    Tabelle 6
  • Was in der folgenden Darstellung resultiert Formel = ([A,B.C.D.E], [11111, 10111, 01111], [{11111, 00111}])
  • Auf 5 'Erzeugen eines lokalen Eingangszustandsvektors' verweisend:
  • Nun kann in der Formel A oder B => C und D und E ein Benutzer B = Unwahr und E = Wahr gewählt haben, was der Wahl des Verwerfens des Cabriolet-Modlls, aber der Wahl der Geschwindigkeitsregelung entspricht.
  • Zu Anfang haben wir von oben die folgenden Datenstrukturen: Formula.VariableList = [A, B, C, C .D, E] Formula.PositiveIndexList = [11111, 10111, 01111] Formula.CompressedPositiveIndexList = [{11111, 00111}]
  • Am Punkt A (nach der ersten Schleife) ist InputStateVector zugewiesen worden. isv.s1 = 11110 isv.s2 = 10111
  • Nach A werden OutputStateVector, BoundVariable, TrueVariable und AnyMatch initialisiert auf
    Figure 00260002
    TV = BV und isv.s2 = 01001 und 10111 = 00001 AnyMatch = Unwahr
  • Auf 6 'Abtasten von unkomprimierten Termen' veweisend:
  • Das Folgende zeigt 631 und 632 bei jeder Iteration der Schleife 629 bis 632.
  • Figure 00270001
  • Bei B wird dem Ausgangszustandsvektor somit zugewiesen: osv.s1 = 01000 osv.s2 = 10111
  • Auf 7 'Abtasten von komrpimierten Termen' verweisend:
  • Die Schleife von 734 bis 737 wird nur einmal ausgeführt, da die komprimierte Positiv-Indexliste nur ein Element enthält.
  • Figure 00270002
  • Figure 00280001
  • Nun wird, weil AnyMatch Wahr zugewiesen wurde, die Prüfung in (38) passiert, und der Algorithmus geht zu (40), wo CH initialisiert wird.
  • Auf 8 'Extrahieren von Information' verweisend:
  • Figure 00280002
  • Nach der Schleife von 844 bis 848 werden keine Elemente des Zustandsvektors geändert (entweder auf Wahr oder Unwahr hergeleitet). Jedoch wird verifiziert, dass der Zustandsvektor nicht zu Widersprüchen führt.
  • Erfindungsgemäß wird ein Verfahren bereitgestellt, das eine schnelle Verarbeitung einer Anfrage an eine Regel erlaubt, sodass verifiziert wird, ob die Anfrage nach den Regeln gültig ist.
  • Außerdem wird ein Verfahren bereitgestellt, das es erlaubt, die Darstellung einer Regel, die Gegenstand einer Anfrage ist, zu komprimieren, um zu verzieren, ob die Anfrage der Regel nach gültig ist.
  • Weiterhin wird ein Verfahren bereitgestellt, das das Herleiten von Information aus der Regelbasis erlaubt, sodass unbekannte Information in der Anfrage vielleicht, aber nicht unbedingt bestimmt werden kann.
  • Man sollte beachten, dass, obwohl die Positiv-Indexform als ein Beispiel benutzt wurde, in der Beschreibung andere Darstellungen der Regelbasis möglich sind. Andere Darstellungen können die Negativ-Indexform (Kombinationen der Variablen, wo die Regel verletzt wird) und Matrixform sein (alle Kombinationen der Variablen plus einer Angabe, ob die Regel verletzt wird oder nicht). Geeignete Modifikationen der offenbarten Algorithmen müssen vorgenommen werden, um die erfindungsgemäßen Vorteile zu nutzen. Dies liegt in dem Vermögen einer in der Technik erfahrenen Person.
  • Die Erfindung kann als ein Computerprogamm oder als Teil eines Computerprogramms ausgeführt werden, das in den Speicher eines Computers geladen und von diesem ausgeführt werden kann. Das Computerprogramm kann mittels jedem Datenspeicher- oder Datenübertragungsmedium verteilt werden. Das Speichermedium kann ein Magnetband, eine optische Platte, eine CD (CD oder CD-ROM), eine Minidisk, Floppydisk, ferroelektrischer Speicher, elektrisch löschbarer, programmierbarer Nurlesespeicher (EEPROM), Flash-Speicher, EPROM, Nurlesespeicher (ROM), statischer Direktzugriffsspeicher (SRAM), dynamischer Direktzugriftsspeicher (DRAM), ferromagnetischer Speicher, optischer Speicher, ladungsgekoppelte Elemente, Smart-Cards usw. sein. Das Übertragungsmedium kann ein Netzwerk, z. B. ein lokales Netzwerk (LAN), ein Weitbereichsnetzwerk (WAN) oder eine Kombination davon, z. B. das Internet, sein. Das Netzwerk kann draht- oder drahtlose Übertragungsstrecken umfassen. Über das Netzwerk kann eine Softwareausführung oder ein Teil davon durch Übertragen eines Programms über das Netzwerk verteilt werden.
  • Des Weiteren sollte betont werden, dass die Erfindung auf keinen Fall auf die beschriebene bevorzugte Ausführung begrenzt ist.

Claims (14)

  1. Verfahren zum Verarbeiten einer Anfrage an eine Boolesche Regel mit Variablen durch die Verwendung eines Eingangssignals mit Elementen, die Zustände der Variablen darstellen, einer gespeicherten Regelbasis mit Elementen, die in Termen angeordnet sind, und eines Ausgangssignals mit Elementen, die Zustände der Variablen darstellen; wobei die Elemente in der Regelbasis in der Lage sind, die Booleschen Zustände "WAHR" oder "FALSCH" für die Variablen darzustellen, Vergleichen der Zustände des Eingangssignals und der Zustände der Terme in der Regelbasis mittels logischer Operationen für ein Element in der Regelbasis und ein Element in dem Eingangssignal, die beide eine bestimmte Variable darstellen; und Aktualisieren des Ausgangssignals mit dem Ergebnis der logischen Operationen, dadurch gekennzeichnet, dass: die Elemente in der Regelbasis in der Lage sind, einen weiteren Zustand darzustellen, der anzeigt, dass eine Variable sowohl den Zustand "WAHR" als auch "FALSCH" annehmen kann.
  2. Verfahren nach Anspruch 1, wobei das Eingangssignal, das Ausgangssignal und die Terme in der Regelbasis einen gemeinsamen Satz von Zuständen aufweisen und jeder Zustand in dem gemeinsamen Satz mit den gleichen Bitwerten in dem Eingangssignal, dem Ausgangssignal und den Termen kodiert ist.
  3. Verfahren nach einem der Ansprüche 1–2, wobei die Elemente des Eingangssignals und die Terme einen der Zustände "WAHR", "FALSCH" oder "TAUTOLOGIE" darstellen.
  4. Verfahren nach Anspruch 1, wobei die Elemente des Ausgangssignals einen der Zustände "WAHR", "FALSCH", "TAUTOLOGIE" oder "WIDERSPRUCH" darstellen.
  5. Verfahren nach den Ansprüchen 3–4, wobei die Zustände in dem Eingangssignal, dem Ausgangssignal und der Regelbasis die folgenden Zwei-Bit-Werte haben:
    Figure 00310001
  6. Verfahren nach den Ansprüchen 1–5, wobei die Regelbasis des Weiteren einen Satz von Termen mit Binärelementen umfasst und wobei jeder Term in dem Satz von Termen eine einzelne Kombination von Zuständen für die Variablen darstellt.
  7. Verfahren nach den Ansprüchen 1–6, wobei die Terme nur Kombinationen, die die Boolesche Regel nicht verletzen, nur Kombinationen, die die Boolesche Regel verletzen, oder alle Kombinationen zuzüglich einer Anzeige dahingehend darstellen, ob ein Term die Boolesche Regel verletzt oder nicht.
  8. Verfahren nach den Ansprüchen 1–7, wobei das Verfahren des Weiteren den Schritt des Erzeugens des Eingangssignals als einen Teilsatz von Variablen aus einem globalen Eingangssignal umfasst und wobei der Teilsatz von Variablen als die Variablen bestimmt wird, die in der Regel eingeschlossen sind.
  9. Verfahren nach den Ansprüchen 1–8, wobei das Verfahren des Weiteren den Schritt des Erzeugens eines globalen Ausgangssignals mit Variablen umfasst, wobei einige der Variablen mit Variablen-Zuständen von dem Ausgangssignal aktualisiert sind.
  10. Verfahren nach den Ansprüchen 1–9, wobei alle Variablen in dem Ausgangssignal mit der symbolischen Darstellung 'WIDERSPRUCH" initialisiert werden.
  11. Verfahren nach den Ansprüchen 1–10, wobei eine Übereinstimmung erfasst wird, indem die Elemente des Eingangssignals jeweils mit den Elementen der Terme in der Regelbasis verglichen werden, und, wenn Elemente in dem Eingangssignal eine gültige Kombination darstellen, eine Übereinstimmung erfasst wird.
  12. Verfahren nach Anspruch 11, das des Weiteren die folgende Informations-Wiedergewinnungsstrategie umfasst: wenn keine Übereinstimmung erfasst wird, enthält das Ausgangssignal Widerspruchs-Informationen; wenn keine Variablen in dem Ausgangssignal verändert sind, wird nichts deduziert; ansonsten wird das Ausgangssignal mit den symbolischen Darstellungen "WAHR" oder "FALSCH" aktualisiert; die wiedergewonnenen Informationen werden einem Benutzer mittels einer Benutzerschnittstelle angezeigt.
  13. Computersystem, das eine Einrichtung zum Ausführen eines Programms aufweist, wobei das Programm, wenn es ausgeführt wird, den Computer das Verfahren nach den Ansprüchen 1–12 ausführen lässt.
  14. Computerlesbares-Medium, das ein darauf aufgezeichnetes Programm aufweist, wobei das Programm, wenn es ausgeführt wird, den Computer das Verfahren nach den Ansprüchen 1–12 ausführen lässt.
DE69819543T 1997-09-09 1998-09-09 Verfahren und gerät zur bearbeitung einer anfrage gemäss einer booleanregel Expired - Fee Related DE69819543T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DK102997 1997-09-09
DK102997 1997-09-09
PCT/DK1998/000383 WO1999013401A2 (en) 1997-09-09 1998-09-09 Method and apparatus for processing a request to a boolean rule

Publications (2)

Publication Number Publication Date
DE69819543D1 DE69819543D1 (de) 2003-12-11
DE69819543T2 true DE69819543T2 (de) 2004-05-13

Family

ID=8100194

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69819543T Expired - Fee Related DE69819543T2 (de) 1997-09-09 1998-09-09 Verfahren und gerät zur bearbeitung einer anfrage gemäss einer booleanregel

Country Status (7)

Country Link
US (1) US20020013775A1 (de)
EP (1) EP1019811B1 (de)
JP (1) JP2001516098A (de)
AT (1) ATE253750T1 (de)
AU (1) AU9062498A (de)
DE (1) DE69819543T2 (de)
WO (1) WO1999013401A2 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7140013B2 (en) * 2000-06-01 2006-11-21 Aduva, Inc. Component upgrading with dependency conflict resolution, knowledge based and rules
US6725452B1 (en) * 2000-06-01 2004-04-20 Aduoa, Inc. Method for resolving dependency conflicts among multiple operative entities within a computing environment
US7814052B2 (en) * 2006-11-03 2010-10-12 Salesforce.Com, Inc. Implementing formulas for custom fields in an on-demand database
US8832144B2 (en) * 2011-07-11 2014-09-09 International Business Machines Corporation Search optimization in a computing environment
US10318702B2 (en) 2016-01-19 2019-06-11 Ford Motor Company Multi-valued decision diagram reversible restriction
CN113366465A (zh) 2019-01-31 2021-09-07 奥普塔姆软件股份有限公司 近似匹配

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IL93220A0 (en) * 1989-02-03 1990-11-05 Bang & Olufsen As Signal processing apparatus and method

Also Published As

Publication number Publication date
DE69819543D1 (de) 2003-12-11
JP2001516098A (ja) 2001-09-25
AU9062498A (en) 1999-03-29
ATE253750T1 (de) 2003-11-15
EP1019811B1 (de) 2003-11-05
US20020013775A1 (en) 2002-01-31
WO1999013401A2 (en) 1999-03-18
WO1999013401A3 (en) 1999-05-06
EP1019811A2 (de) 2000-07-19

Similar Documents

Publication Publication Date Title
DE69229521T2 (de) Datenbankauffindungssystem
DE68927086T2 (de) Datenvereinheitlichungssystem und -methode
DE69710458T2 (de) Verfahren und system für die berechnung von semantischen logischen formen von syntaxbäumen
DE69701623T2 (de) Ein globales registersystem und verfahren basiert auf objektorientierter programmierung
DE3650417T2 (de) Informationsaufzeichnungs- und Wiederauffindungssystem.
DE69919144T2 (de) Verfahren und gerät zum analysieren von statusbasiertem modell
DE19617381C2 (de) Objektumwandlungsvorrichtung von einem flachen Objektraum in einen Klassen-strukturierten Raum
DE69712411T2 (de) Verfahren und System um Datenstrukturen zu vereinigen
DE69130766T2 (de) Intelligentes hilfssystem
DE60130475T2 (de) Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE10255128A1 (de) Computer-implementierte PDF-Dokumentenverwaltung
DE69328164T2 (de) Systemverwaltungsverfahren und -vorrichtung.
DE20321797U1 (de) Vorrichtung zum automatischen Erzeugen einer allgemeinen Extraktionsfunktion, die aus einem Eingabesignal berechenbar ist, z.B. einem Audiosignal, um daraus einen vorbestimmten globalen charakteristischen Wert seines Inhalts zu erzeugen, z.B. einen Deskriptor
DE112019000972T5 (de) Verfahren und Systeme für vereinfachte grafische Abbildungen von bipartiten Graphen
DE69232452T2 (de) Expertensystem mit einem Wissenserfassungsunterstützungssystem
EP3889806B1 (de) Bitsequenzbasiertes datenklassifikationssystem
DE69521435T2 (de) Verfahren und einrichtung zum extrahieren von information aus einer datenbank
DE112020003431T5 (de) Automatisches umwandeln eines programms, das in einer prozeduralen programmiersprache geschrieben ist, in einen datenflussgraphen, sowie zugehörige systeme und verfahren
DE69819543T2 (de) Verfahren und gerät zur bearbeitung einer anfrage gemäss einer booleanregel
DE69127798T2 (de) Verfahren und Gerät zum Organisieren und Analysieren von Zeitsteuerungsinformationen
DE69805818T2 (de) Verfahren und rechnersystem zum zusammenstellen einer menge von objekten
DE69829854T2 (de) Verfahren und Gerät zur Erzeugung virtueller Szenen
DE602005002846T2 (de) Verfahren zur Datenverarbeitung und assoziiertes Softwareprogramm
EP1068580B1 (de) Verfahren zum vergleich elektrischer schaltungen

Legal Events

Date Code Title Description
8339 Ceased/non-payment of the annual fee