DE69128053T2 - Wörterbuch-Suchsystem - Google Patents
Wörterbuch-SuchsystemInfo
- Publication number
- DE69128053T2 DE69128053T2 DE69128053T DE69128053T DE69128053T2 DE 69128053 T2 DE69128053 T2 DE 69128053T2 DE 69128053 T DE69128053 T DE 69128053T DE 69128053 T DE69128053 T DE 69128053T DE 69128053 T2 DE69128053 T2 DE 69128053T2
- Authority
- DE
- Germany
- Prior art keywords
- directory
- character
- reference number
- character string
- read
- 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
Links
- 238000000034 method Methods 0.000 claims description 143
- 238000001514 detection method Methods 0.000 claims description 82
- 238000012545 processing Methods 0.000 claims description 4
- 238000013144 data compression Methods 0.000 description 13
- 230000004044 response Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/242—Dictionaries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
- Machine Translation (AREA)
Description
- Die vorliegende Erfindung betrifft im allgemeinen Verzeichnissuchssysteme, und im besonderen ein Verzeichnissuchsystem, das für eine Universalcodierung wie z. B. eine Ziv-Lempel-Codierung des Inkremental-Parsing-Typs verwendet wird.
- In letzter Zeit sind verschiedene Arten von Daten, die Zeichencodes, Vektorinformationen und Bildinformationen enthalten, in einem Computer verarbeitet worden, und die Menge der Daten, die verarbeitet wird, nimmt rapide zu.
- Wenn solch eine große Menge von Daten gespeichert und übertragen wird, ist es wünschenswert, die Datenmenge durch Weglassen von redundanten Teilen der Daten zu komprimieren. Aus diesem Grund besteht der Wunsch, ein Verfahren zum effektiven Komprimieren der Daten ungeachtet der Art von Daten zu realisieren.
- Die Universalcodierung erfordert keine vorbestimmte Codetabelle, die im voraus erstellt werden muß. Daher kann die Universalcodierung auf die Komprimierung der oben beschriebenen verschiedenen Arten von Daten angewendet werden.
- In dieser Beschreibung werden die Daten, die ein Wort ausmachen, als ein "Zeichen" bezeichnet, und die Daten, die einer Vielzahl von konsekutiven Wörtern entsprechen, werden als "Zeichenstring" bezeichnet.
- Die Ziv-Lempel-Codierung ist eine typische Universalcodierung, die zum Beispiel beschrieben ist in Seijki Munakata, "Ziv-Lempel Data Compression Algorithms", Information Processing, Bd. 26, Nr. 1, 1989, und Algorithmen des Universaltyps und des Inkremental-Parsing-Typs sind vorgeschlagen worden. Zusätzlich ist auch eine LZSS-Codierung als Abwandlung des Algorithmus des Universaltyps vorgeschlagen worden und ist beschrieben in Timothy C. Bell, "Better OPM/L Text Compression", IEEE Transactions on Communications, Bd. COM-34, Nr. 12, Dezember 1986. Des weiteren ist eine LZW-Codierung als Abwandlung des Algorithmus des Inkremental-Parsing-Typs vorgeschlagen worden und ist beschrieben in Terry A. Welch, "A Technique for High Performance Data Compression", Computer, Juni 1984.
- Von den oben beschriebenen Codierverfahren wird die LZW-Codierung bei der Dateikomprimierung für Speichervorrichtungen und dergleichen verwendet, da eine Hochgeschwindigkeitsverarbeitung ausgeführt werden kann und der LZW- Codierungsalgorithmus einfach ist.
- Gemäß dem Algorithmus des Inkremental-Parsing-Typs wird ein Eingangszeichenstring in Stringkomponenten zerlegt, die jeweilig durch Hinzufügen eines Erweiterungszeichens zu einem Teilstring, der schon in einem Verzeichnis registriert ist, gebildet werden. Der Eingangszeichenstring wird codiert, indem die Stringkomponenten durch eine Referenznummer, die einem Teilstring entspricht, der in dem Verzeichnis registriert ist, und ein Erweiterungszeichen beschrieben werden. Die oben beschriebene Stringkomponente wird in dem Verzeichnis als neuer Teilstring registriert und für den Codierungsprozeß verwendet, der danach ausgeführt wird.
- Gemäß der LZW-Codierung wird das Erweiterungszeichen zu den folgenden Teilstrings hinzugefügt. Der Einfachheit halber wird angenommen, daß der Eingangszeichenstring aus drei Arten von Zeichen "a", "b" und "c" besteht und "ababcbababaaaaa..." lautet, wie in FIG. 1A gezeigt. In diesem Fall werden die Referenznummern "1", "2" und "3" jeweilig den drei Arten von Zeichen "a", "b" und "c" zugeordnet und in dem Verzeichnis vor dem Beginn des Codierprozesses registriert.
- Zuerst wird das erste Zeichen "a" des Eingangszeichenstrings gelesen, und dieses Zeichen "a" wird aus dem Verzeichnis herausgesucht. Die Referenznummer "1", die diesem gelesenen Zeichen "a" entspricht, wird dann als Code ω angesehen, der dem betrachteten (oder uncodierten) Zeichenstring entspricht.
- Danach werden die zweiten und folgenden Zeichen des Eingangszeichenstrings sukzessive gelesen, und jedes Zeichen wird als Erweiterungszeichen K angesehen. Ein Teilstring (ωK), der als Kombination (ωK) aus dem oben beschriebenen Code ω und dem Erweiterungszeichen K beschrieben ist, wird dann aus dem Verzeichnis herausgesucht. Wenn der Teilstring (ωK) aus dem Verzeichnis herausgesucht ist, wird die Referenznummer, die dem Teustring (ωK) entspricht, als neuer Code ω angesehen, und der oben beschriebene Prozeß wird durch Lesen des nächsten Zeichens des Eingangszeichenstrings wiederholt. Im folgenden wird die Kombination (ωK) als eine Beschreibung des Teilstrings (ωK) bezeichnet.
- Der zu codierende Zeichenstring wird sukzessive immer um ein Zeichen auf die oben beschriebene Weise erweitert, und der erweiterte Zeichenstring wird sukzessive aus dem Verzeichnis herausgesucht. Als Resultat wird der längste Teilstring, der mit dem betrachteten Zeichenstring von dem Eingangszeichenstring übereinstimmt, aus dem Verzeichnis herausgesucht, indem die registrierten Zeichenstrings sukzessive herausgesucht werden. Die Referenznummer, die dem längsten Zeichenstring entspricht, der mit dem betrachteten Zeichenstring übereinstimmt, wird als Code ω ausgegeben. Zusätzlich wird der Teilstring, bei dem das Erweiterungswort K zu dem Teilstring (ω) hinzugefügt ist, der der Referenznummer ω entspricht, durch die Kombination (ωK) aus der Referenznummer ω und dem Erweiterungszeichen K beschrieben, und diesem Teilstring wird eine Referenznummer zugeordnet und in dem Verzeichnis als neuer Teilstring registriert.
- Deshalb wird der in FIG. 1A gezeigte Eingangszeichenstring in die Teilstrings zerlegt, die durch die Unterstreichungen gekennzeichnet sind, und in die Codes "1", "2", "4", codiert, die in FIG. 1B gezeigt sind und den Teilstrings entsprechen. FIG. 1C zeigt die entsprechende Beziehung des Eingangszeichenstrings und der Teilstrings, die in dem Verzeichnis registriert sind. Zusätzlich zeigt die folgende Tabelle 1 ein Beispiel des Verzeichnisses, das gebildet wird. Tabelle 1
- Das Verzeichnis, das während der LZW-Codierung gebildet wird, hat eine Baumstruktur, wie in FIG. 2 gezeigt, und die Elemente des Verzeichnisses entsprechen Knoten des Baumes. In FIG. 2 kennzeichnen die Zahlen in Klammern, die an jedem Knoten angegeben sind, die Referenznummer des entsprechenden Elementes des Verzeichnisses.
- Falls die registrierten Elemente des Verzeichnisses sukzessive herausgesucht werden, wenn der Teilstring während des Codierprozesses herausgesucht wird, würde der Prozeß zuviel Zeit erfordern. Aus diesem Grund wird das Hashing- Verfahren verwendet, um die Elemente aus dem Verzeichnis mit hoher Geschwindigkeit herauszusuchen.
- Gemäß dem Hashing-Verfahren wird eine Hashing-Funktion unter Verwendung eines Elementes x von einem Satz S definiert, der aus Zeichenstrings gebildet ist. Die Hashing- Funktion wird verwendet, um eine Adresse einer Speicherstelle des Elementes x zu erhalten, und das Element x ist an der Adresse gespeichert, die unter Verwendung der Hashing- Funktion erhalten wird. Die Adresse, die aus der Hashing- Funktion erhalten wird, wird als Hashing-Adresse bezeichnet.
- Zum Beispiel werden die Referenznummer ω und das Erweiterungszeichen K, die oben beschrieben sind, in Binärzahlen beschrieben, und die Kombination (ωK) aus diesen Binärzahlen wird als Hashing-Adresse betrachtet. Das Verzeichnis erfordert jedoch in diesem Fall eine extrem große Speicherkapazität.
- Aus diesem Grund wurde ein offenes Hashing-(oder Chaining)-Verfahren vorgeschlagen. Das offene Hashing-Verfahren verwendet einen Teil der Hashing-Adresse und bildet Listen aus Elementen, die einen Wert haben, der mit dem Teil der Hashing-Adresse identisch ist. Gemäß diesem offenen Hashing-Verfahren wird ein Wiederauffindungsteil unter Verwendung der Hashing-Adresse herausgesucht, wie in FIG. 3 gezeigt, um die entsprechende Liste zu bezeichnen. Zusätzlich speichert jede Liste Identifikationsinformationen, die jedem Element entsprechen, und einen Zeiger, der eine Speicherstelle eines nächsten Elementes kennzeichnet, wodurch es möglich wird, die Elemente aus dem Verzeichnis sukzessive heraus zusuchen.
- Falls zum Beispiel die Referenznummer ω als Hashing- Adresse angesehen wird, ist eine Startadresse einer Liste, die Teilstrings speichert, bei denen ein Erweiterungszeichen zu dem Teilstring hinzugefügt ist, der der Referenznummer ω entspricht, an dieser Hashing-Adresse gespeichert, und Teilstrings, die Knoten entsprechen, die "Kinder (oder Söhne)" des Knotens sind, der der Ref erenznummer ω entspricht, werden sukzessive in der entsprechenden Liste gespeichert. In diesem Fall ist ein Erweiterungszeichen K von jedem Element in der Liste als entsprechende Identifikations informationen gespeichert.
- FIG. 4 zeigt ein Flußdiagramm zum Erläutern einer Codieroperation unter Verwendung des offenen Hashing-Verfahrens zum Heraussuchen der Elemente aus dem Verzeichnis. Das Verzeichnis wird initialisiert, wie oben beschrieben, um wenigstens das erste Zeichen des Eingangszeichenstrings zu enthalten, und eine Variable n wird für die Referenznummer eingesetzt, die dem Teilstring zugeordnet ist, der als nächster zu registrieren ist. Zum Beispiel sind die Referenznummern "1", "2" und "3", die jeweilig den Zeichen "a", "b" und "c" zugeordnet sind, in dem Verzeichnis als Hashing-Adressen gespeichert, und ein Zahlenwert "4" wird für die Variable n eingesetzt.
- Als nächstes wird eine maximale Anzahl von Teilstrings, die in dem Verzeichnis registriert werden kann, durch Nmax bezeichnet, und Folgen "Index", "List" und "Ext", die jeweilig Nmax Komponenten umfassen, werden definiert. Ein Anfangswert "0" wird für alle Komponenten dieser Folgen "Index", "List" und "Ext" gesetzt. Die Folge "Index" entspricht dem Wiederauffindungsteil, der in FIG. 3 gezeigt ist, und die Folgen "List" und "Ext" entsprechen den Listen. Daher wird eine Nummer, die die Komponente der Folge "List" bezeichnet, die der Kopf der Liste wird, der einem Knoten mit der Referenznummer i entspricht, bei der i-ten Komponente "Index[i]" der Folge "Index" gesetzt. Zusätzlich wird das Erweiterungszeichen K des Elementes des Verzeichnisses, das durch die Referenznummer i bezeichnet ist, bei der i-ten Komponente "Ext[i]" der Folge "Ext" gesetzt. Ein Zeiger, der das Element kennzeichnet, das dem "Bruder" des Elementes mit der Referenznummer i entspricht, wird bei der i-ten Komponente "List[i]" der Folge "List" gesetzt.
- Als nächstes wird das erste Zeichen K gelesen, und der Codierprozeß wird gestartet, indem die Referenznummer, die diesem Zeichen K entspricht, als Variable i gesetzt wird.
- Zuerst wird bei Schritt 701 das nächste Zeichen des Eingangszeichenstrings gelesen, und bei Schritt 702 wird bestimmt, ob ein nächstes zu lesendes Zeichen existiert oder nicht. Wenn das Bestimmungsresultat bei Schritt 702 JA lautet, startet ein Suchprozeß bezüglich des Verzeichnisses.
- In diesem Fall wird bei Schritt 703 die Variable i in einer anderen Variable ω gesichert und eine Variable j auf einen Anfangswert "0" gesetzt. Bei Schritt 704 wird die Nummer der Komponente der Folge "List" gesetzt, die durch den Wert der Komponente "Index[i]" bezeichnet ist, der der Variable i entspricht.
- Bei Schritt 705 wird bestimmt, ob die Variable i gleich "0" ist oder nicht. Wenn der Zahlenwert der Variable i nicht "0" ist und das Bestimmungsresultat bei Schritt 705 NEIN lautet, wird ein Suchprozeß hinsichtlich der entsprechenden Liste unter Verwendung des Elementes gestartet, das in dieser Liste als in Frage kommend enthalten ist.
- In diesem Fall wird bei Schritt 706 bestimmt, ob die Komponente "Ext[i]", die das Erweiterungszeichen des entsprechenden Elementes bezeichnet, gleich dem Erweiterungszeichen K ist oder nicht. Wenn das Bestimmungsresultat bei Schritt 706 NEIN lautet, wird bei Schritt 707 der Zeiger des nächsten Elementes, das bei der Komponente "List[i]" gesetzt ist, als neue Variable i gesetzt, und der Prozeß kehrt zu Schritt 705 zurück. Die Suche hinsichtlich der entsprechenden Liste erfolgt durch Wiederholen der Schritte 705 bis 707 auf die obige Weise.
- Wenn andererseits das Bestimmungsresultat bei Schritt 706 JA lautet, wird bestimmt, daß ein Teilstring, der mit dem Eingangszeichenstring übereinstimmt, in dem Verzeichnis registriert ist. Daher kehrt in diesem Fall der Prozeß zu Schritt 701 zurück, um das nächste Zeichen zu lesen, und der Zeichenstring, zu dem dieses nächste Zeichen hinzugefügt ist, wird codiert.
- Wenn der Wert der Komponente "List[i]" oder "Index[i]", der der Variable i entspricht, "0" ist, lautet das Bestimmungsresultat bei Schritt S705 JA.
- Wenn der Wert der Komponente "Index[i]" "0" ist, ist das Element, das dem "Kind" des Knotens der Variable i entspricht, noch nicht registriert, und das bedeutet, daß die entsprechende Liste undefiniert ist. Wenn andererseits der Wert der Komponente "List[i]" "0" ist, bedeutet dies, daß der gewünschte Teilstring in der entsprechenden Liste nicht gespeichert ist.
- In jedem Fall bezeichnet die Referenznummer, die bei Schritt 703 in der Variable ω gesichert wurde, den Teilstring, der in dem Verzeichnis registriert ist und eine längste Übereinstimmung mit dem Eingangszeichenstring darstellt. Bei Schritt 708 wird ein Code ausgegeben, der dieser Referenznummer ω entspricht, und ein Registrierungsprozeß bezüglich eines neuen Teilstrings ausgeführt.
- Zuerst wird bei Schritt 709 der Wert der Variable n in die Variable i eingesetzt und die Variable n inkrementiert. Zusätzlich wird bei Schritt 709 das Erweiterungszeichen K bei der Komponente "Ext[i]" gesetzt, die der Variable i entspricht.
- Als nächstes wird bei Schritt 710 bestimmt, ob der Wert der Variable j "0" ist oder nicht. Wenn das Bestimmungsresultat bei Schritt 710 JA lautet, wird bei Schritt 711 die Variable i bei der Komponente "Index[ω]" gesetzt und die Liste definiert, die der Referenznummer ω entspricht. Wenn das Bestimmungsresultat bei Schritt 710 andererseits NEIN lautet, wird bei Schritt 712 die Variable i bei der Komponente "List[i]" gesetzt und ein neues "Geschwister" (oder ein neuer "Bruder") zu der entsprechenden Liste hinzugefügt.
- Wenn der oben beschriebene Registrierungsprozeß endet, wird bei Schritt 713 die Referenznummer, die dem Erweiterungszeichen K entspricht, in die Variable i eingesetzt, und der Prozeß kehrt zu dem Schritt 701 zurück, um den oben beschriebenen Prozeß zu wiederholen. Das Bestimmungsresultat bei Schritt 702 lautet NEIN, wenn keine weiteren Zeichen zu lesen sind. Wenn das Bestimmungsresultat bei Schritt 702 NEIN lautet, wird bei Schritt 714 ein Code ausgegeben, der der Variable ω zu dieser Zeit entspricht, und der Prozeß endet.
- Während des Listensuchprozesses des oben beschriebenen herkömmlichen Verfahrens werden drei Prozesse sukzessive ausgeführt. Die drei Prozesse sind der Verbindungsbestimmungsprozeß bei dem bestimmt wird, ob eine entsprechende Liste existiert oder nicht und ob ein nächstes Element in der Liste existiert oder nicht, der Übereinstimmungsdetektionsprozeß, bei dem ein in Frage kommendes Zeichen detektiert wird, das mit dem Eingangserweiterungszeichen übereinstimmt, und der Leseprozeß, bei dem der nächste Zeiger gesetzt wird und Informationen aus dem Verzeichnis gelesen werden. Wenn jedoch die sukzessive Verarbeitung der Liste durch Software ausgeführt wird, erfordert es Zeit, um die Teilstrings herauszusuchen, und die Geschwindigkeit des Codierprozesses liegt in der Größenordnung von zig kb/s. Aus diesem Grund besteht ein Problem darin, daß der Codierprozeß nicht in Echtzeit ausgeführt werden kann, um zu der Übertragungsgeschwindigkeit der Daten zu einer Magnetbandeinheit oder einer Magnetplatteneinheit zu passen, da die Datenübertragungsgeschwindigkeit in der Größenordnung von mehreren hundert kb/s bis mehreren Mb/s liegt.
- Falls andererseits das Datenkomprimierungssystem unter Verwendung von unabhängigen Elementen für jeden Schritt des oben beschriebenen Codierprozesses gebildet wird, wird es möglich, den Codierprozeß mit hoher Geschwindigkeit auszuführen, aber hier bestehen Probleme darin, daß das Ausmaß der Schaltung groß und das System teuer wird.
- Der Einfachheit halber wurde das herkömmliche Verfahren für den Fall beschrieben, bei dem die zu codierende Zeichenfolge aus drei Arten von Zeichen besteht. In der tatsächlichen Praxis ist jedoch der zu codierende Zeichenstring aus einer großen Anzahl von Arten von Zeichen gebildet. Daher wird während des normalen Verzeichnissuchprozesses die längste Zeit dafür benötigt, eine Liste zu finden, die einer gewissen Referenznummer entspricht, und die Elemente, die dem "Geschwister" entsprechen, sukzessive herauszusuchen, um zu detektieren, daß keine Übereinstimmung oder kein Verbindungselement existiert.
- Daher ist es eine allgemeine Aufgabe der vorliegenden Erfindung, ein neues und nützliches Verzeichnissuchsystem vorzusehen, bei dem die oben beschriebenen Probleme eliminiert sind.
- Gemäß einem ersten Aspekt der vorliegenden Erfindung ist ein Verzeichnissuchsystem vorgesehen, zum Heraussuchen eines Zeichenstrings, der durch eine Eingangsreferenznummer beschrieben ist, und zum Heraussuchen von Zeichen aus einer Vielzahl von untereinander verschiedenen Zeichenstrings, die in einem Verzeichnis in Entsprechung zu Referenznummern, die den Zeichenstrings zugeordnet sind, registriert sind, dadurch gekennzeichnet, daß das Verzeichnissuchsystem ein Verzeichnis umfaßt, das einen Indexteil und einen Listenteil enthält, welcher Indexteil in Entsprechung zu den Referenznummern eine Referenznummer speichert, die einem neuen Zeichenstring zugeordnet ist, der erhalten wird, indem ein Zeichen zu dem Zeichenstring hinzugefügt wird, dem die Eingangsreferenznummer zugeordnet ist, welcher Listenteil in Entsprechung zu den Referenznummern eine Referenznummer speichert, die einem der Zeichenstrings zugeordnet ist, die ein letztes Zeichen haben, das sich von jenem des Zeichenstrings unterscheidet, dem die Eingangsreferenznummer zugeordnet ist, und das hinzugefügte Zeichen; ein Lesemittel, das mit dem Verzeichnis gekoppelt ist, zum Lesen zuerst von Informationen aus dem Indexteil durch Spezifizieren der Eingangsreferenznummer und zum Lesen danach von Informationen aus dem Listenteil durch Spezifizieren der Referenznummer, die aus dem Verzeichnis gelesen wurde; ein Detektionsmittel, das mit dem Verzeichnis gekoppelt ist, zum Detektieren jedes Zeichens, das mit den Eingangszeichen übereinstimmt, von den Zeichen, die aus dem Verzeichnis gelesen wurden, und zum Ausgeben eines Resultats dieser Detektion als Suchresultat; und ein Bestimmungsmittel, das mit dem Verzeichnis gekoppelt ist, zum Bestimmen dessen, ob eine Referenznummer in einer Ausgabe des Verzeichnisses enthalten ist oder nicht, und zum Ausgeben eines Resultats dieser Detektion als Suchresultat, welches Lesemittel, welches Detektionsmittel und welches Bestimmungsmittel unabhängig voneinander arbeiten.
- Gemäß einem zweiten Aspekt der vorliegenden Erfindung ist ein Verzeichnissuchsystem vorgesehen, zum Heraussuchen eines Zeichenstrings, der durch eine Eingangsreferenznummer beschrieben ist, und zum Heraussuchen von Zeichen aus einer Vielzahl von untereinander verschiedenen Zeichenstrings, die in einem Verzeichnis in Entsprechung zu Referenznummern, die den Zeichenstrings zugeordnet sind, registriert sind, dadurch gekennzeichnet, daß das Verzeichnissuchsystem ein Verzeichnis umfaßt, das einen Indexteil und einen Listenteil enthält, welcher Indexteil in Entsprechung zu den Referenznummern Identifikationsinformationen speichert, die einem von in Frage kommenden Zeichenstrings entsprechen, die erhalten werden, indem ein Zeichen zu dem Zeichenstring hinzugefügt wird, dem die Eingangsreferenznummer zugeordnet ist, und Zeiger, die Speicherstellen von anderen in Frage kommenden Zeichenstrings kennzeichnen, welcher Listenteil Identifikationsinformationen speichert, die einem von in Frage kommenden Zeichenstrings entsprechen, die ein letztes Zeichen haben, das sich von jenem des Zeichenstrings unter scheidet, dem die Eingangsreferenznummer zugeordnet ist, und Zeiger, die Speicherstellen von anderen in Frage kommenden Zeichenstrings kennzeichnen; ein Lesemittel, das mit dem Verzeichnis gekoppelt ist, zum Lesen zuerst des Zeigers und der Identifikationsinformationen aus dem Indexteil auf der Basis der Eingangsreferenznummer und zum Lesen danach des Zeigers und der Identifikationsinformationen aus dem Listenteil durch Spezifizieren des Listenteils durch den Zeiger, der aus dem Verzeichnis gelesen wurde; ein Detektionsmittel, das mit dem Verzeichnis gekoppelt ist und ein Komparatormittel enthält, zum Vergleichen jeder Identifikationsinformation, die aus dem Verzeichnis gelesen wurde, mit den Eingangszeichen, zum Detektieren jedes Zeichens, das mit den Eingangszeichen übereinstimmt, von dem in Frage kommenden zeichenstring, der aus dem Verzeichnis gelesen wurde, und zum Ausgeben eines Resultats dieser Detektion als Suchresultat; und ein Bestimmungsmittel, das mit dem Verzeichnis gekoppelt ist, zum Bestimmen dessen, ob ein ungelesener in Frage kommender Zeichenstring in dem Verzeichnis existiert oder nicht, auf der Basis des Zeigers, der aus dem Verzeichnis gelesen wurde, und zum Ausgeben eines Resultats dieser Detektion als Suchresultat, welches Lesemittel, welches Detektionsmittel und welches Bestimmungsmittel unabhängig voneinander arbeiten.
- Gemäß dem Verzeichnissuchsystem der vorliegenden Erfindung ist es möglich, die Verzeichnissuchoperation mit hoher Geschwindigkeit auszuführen und deshalb den Codierprozeß mit hoher Geschwindigkeit auszuführen, da das Lesemittel, das Detektionsmittel und das Bestimmungsmittel jeweilig unabhängig arbeitet und keine Notwendigkeit besteht, auf das Ende eines vorhergehenden Prozesses zu warten.
- Andere Aufgaben und weitere Merkmale der vorliegenden Erfindung gehen aus der folgenden eingehenden Beschreibung, die als Beispiel dient, in Verbindung mit den beiliegenden Zeichnungen hervor.
- FIG. 1A bis 1C sind jeweils Diagramme zum Erläutern einer LZW-Codierung;
- FIG. 2 ist ein Diagramm zum Erläutern einer Baumstruktur eines Verzeichnisses;
- FIG. 3 ist ein Diagramm zum Erläutern eines offenen Hashing-Verfahrens;
- FIG. 4 ist ein Flußdiagramm zum Erläutern einer herkömmlichen Codierung unter Verwendung des offenen Hashing- Verfahrens zur Verzeichnissuche;
- FIG. 5 ist ein Systemblockdiagramm zum Erläutern eines Operationsprinzips einer ersten Ausführungsform eines Verzeichnissuchsystems gemäß der vorliegenden Erfindung;
- FIG. 6 ist ein Systemblockdiagramm, das einen wesentlichen Teil eines Datenkomprimierungssystems zeigt, das mit der ersten Ausführungsform angewendet wird;
- FIG. 7 zeigt eine Datenstruktur von Daten, die in einem Verzeichnis der ersten Ausführungsform gespeichert sind;
- FIG. 8 ist ein Systemblockdiagramm zum Erläutern eines Operationsprinzips einer zweiten Ausführungsform des Verzeichnissuchsystems gemäß der vorliegenden Erfindung;
- FIG. 9 ist ein Systemblockdiagramm, das einen wesentlichen Teil eines Datenkomprimierungssystems zeigt, das mit der zweiten Ausführungsform angewendet wird; und
- FIG. 10 zeigt eine Datenstruktur von Daten, die in einem Verzeichnis der zweiten Ausführungsform gespeichert sind.
- FIG. 5 zeigt einen wesentlichen Teil einer ersten Ausführungsform eines Verzeichnissuchsystems gemäß der vorliegenden Erfindung. Das Verzeichnissuchsystem enthält im allgemeinen ein Lesemittel 121, ein Verzeichnis 110, das aus einem Index 111 und einer Liste 112 gebildet ist, ein Detektionsmittel 122 und ein Bestimmungsmittel 123.
- Das Verzeichnissuchsystem sucht einen Zeichenstring, der durch eine Referenznummer beschrieben ist, und ein Zeichen aus dem Verzeichnis 110 heraus, das untereinander verschiedene Zeichenstrings in Entsprechung zu Referenznummern registriert, die den Zeichenstrings zugeordnet sind. Der Index 111 speichert die Referenznummer, die einem der Zeichenstrings zugeordnet ist, die durch Hinzufügen eines Zeichens zu den Zeichenstrings erhalten wurden, denen die Referenznummern zugeordnet sind, und das Zeichen, das zu dem einen Zeichenstring hinzugefügt ist. Die Liste 112 speichert die Referenznummer, die einem der Zeichenstrings zugeordnet ist, die ein letztes Zeichen haben, das sich von jenem der Zeichenstrings unterscheidet, denen die Referenznummern zugeordnet sind, und das Zeichen, das zu dem einen Zeichenstring hinzugefügt ist.
- Das Lesemittel 121 liest zuerst Informationen aus dem Index durch Spezifizieren der Eingangsreferenznummer. Danach liest das Lesemittel 121 die Informationen aus der Liste durch Spezifizieren der Referenznummer, die aus dem Verzeichnis 110 gelesen wurde.
- Das Detektionsmittel 122 detektiert das Zeichen, das mit dem Eingangszeichen übereinstimmt, von den Zeichen, die aus dem Verzeichnis 110 gelesen werden. Das Detektionsmittel 122 gibt dieses Resultat der Detektion als Suchresultat aus.
- Das Bestimmungsmittel 123 bestimmt, ob die Referenznummer in der Ausgabe des Verzeichnisses 110 enthalten ist oder nicht. Das Bestimmungsmittel 123 gibt dieses Resultat der Bestimmung als Suchresultat aus.
- Diese Ausführungsform ist dadurch gekennzeichnet, daß das Lesemittel 121, das Detektionsmittel 122 und das Bestimmungsmittel 123 unabhängig voneinander arbeiten.
- Der Index 111 des Verzeichnisses 110 speichert in Entsprechung zu den Referenznummern einen der Zeichenstrings, die durch Hinzufügen eines Zeichens zu den Zeichenstrings erhalten werden, denen die Referenznummern zugeordnet sind, und das Zeichen, das zu dem einen Zeichenstring hinzugefügt ist. Mit anderen Worten, der Index 111 speichert die Referenznummer, die dem Zeichenstring zugeordnet ist, der einem der Knoten entspricht, die als "Kinder" mit den Knoten des Baumes des Verzeichnisses verbunden sind, die den Referenznummern entsprechen, und das Zeichen, das zu diesem Zeichenstring hinzugefügt ist. Zusätzlich speichert die Liste 112 des Verzeichnisses 110 in Entsprechung zu den Referenznummern einen der Zeichenstrings, die ein letztes Zeichen haben, das sich von jenem der Zeichenstrings unterscheidet, denen die Referenznummern zugeordnet sind, und das Zeichen, das zu dem einen Zeichenstring hinzugefügt ist. Das heißt, die Liste 112 speichert die Referenznummer, die dem Zeichenstring zugeordnet ist, der einem der Knoten entspricht, die einem "Geschwister" des Knotens des Baumes des Verzeichnisses entsprechen, das den Referenznummern entspricht, und das Zeichen, das zu diesem Zeichenstring hinzugefügt ist.
- Zuerst spezifiziert das Lesemittel 121 die Eingangsreferenznummer und liest die Informationen aus dem Index 111. Danach spezifiziert das Lesemittel 121 die Referenznummer, die aus dem Verzeichnis 110 gelesen wurde, und liest die Informationen aus der Liste 112. Daher werden die Informationen aus der Liste auf der Basis der Referenznummer gelesen, die aus dem Verzeichnis 110 gelesen wurde, und die Knoten, die als "Kinder" mit dem Knoten verbunden sind, der der Referenznummer entspricht, werden sukzessive gesucht.
- Die verwendete Referenznummer ist die Referenznummer, die dem Teil des Eingangszeichenstrings ohne das letzte Zeichen zugeordnet ist, und das letzte Zeichen wird dem Detektionsmittel 122 eingegeben.
- Wenn das Detektionsmittel 122 von den aus dem Verzeichnis 110 gelesenen Zeichen ein Zeichen detektiert, das mit dem Eingangszeichen übereinstimmt, gibt das Detektionsmittel 122 ein Suchresultat aus, das angibt, daß ein entsprechender Zeichenstring aus dem Verzeichnis 110 detektiert wurde.
- Wenn andererseits keine entsprechende Referenznummer in dem Index 111 gespeichert ist oder wenn keine entsprechende Referenznummer in der Liste 112 gespeichert ist, bestimmt das Bestimmungsmittel 123, daß keine Referenznummer enthalten ist. In diesem Fall gibt das Bestimmungsmittel 123 ein Suchresultat aus, das angibt, daß kein entsprechender Zeichenstring in dem Verzeichnis 110 registriert ist.
- Da das Lesemittel 121, das Detektionsmittel 122 und das Bestimmungsmittel 123 unabhängig voneinander arbeiten, werden der Leseprozeß zum Lesen von Informationen aus dem Verzeichnis, der Übereinstimmungsdetektionsprozeß und der Verbindungsbestimmungsprozeß unabhängig voneinander ausgeführt. Aus diesem Grund besteht bei dieser Ausführungsform anders als bei dem herkömmlichen Verfahren, bei dem der Leseprozeß, der Übereinstimmungsdetektionsprozeß und der Verbindungsbestimmungsprozeß sukzessive ausgeführt werden, keine Notwendigkeit, vor dem Ausführen eines Prozesses auf das Ende eines vorhergehenden Prozesses zu warten. Als Resultat ist es möglich, gemäß dieser Ausführungsform den Verzeichnissuchprozeß mit hoher Geschwindigkeit auszuführen.
- In der ersten Ausführungsform kann das Lesemittel 121 Informationen in vorbestimmten Zeitabständen aus dem Verzeichnis 110 lesen, und der Übereinstimmungsdetektionsprozeß des Detektionsmittels 122 und der Verbindungsbestimmungsprozeß des Bestimmungsmittels 123 können parallel zu dem, das heißt, gleichzeitig mit dem Leseprozeß des Lesemittels 121 ausgeführt werden.
- In diesem Fall führt das Lesemittel 121 den Leseprozeß immer dann durch, wenn es erforderlich ist, die Informationen aus dem Verzeichnis 110 zu lesen. Normalerweise sind die Zeiten, die benötigt werden, um den Übereinstimmungsdetektionsprozeß des Detektionsmittels 122 und den Verbindungsbestimmungsprozeß des Bestimmungsmittels 123 auszuführen, kurz im Vergleich zu der Zeit, die benötigt wird, um den Leseprozeß des Lesemittels 121 auszuführen. Daher ist es möglich, den Suchprozeß als Pipeline-Prozeß auszuführen, indem die Lese-, Übereinstimmungsdetektions- und Verbindungsbestimmungsprozesse parallel, das heißt, gleichzeitig ausgeführt werden. Als Resultat ist es möglich, die Zeichenstrings mit hoher Geschwindigkeit aus dem Verzeichnis 110 herauszusuchen.
- Als nächstes erfolgt unter Bezugnahme auf FIG. 6 eine detailliertere Beschreibung der ersten Ausführungsform. FIG. 6 zeigt einen wesentlichen Teil eines Datenkomprimierungssystems, das mit der ersten Ausführungsform angewendet wird. Die entsprechenden Beziehungen der in FIG. 5 und 6 gezeigten Elemente sind wie folgt.
- Ein in FIG. 6 gezeigtes Verzeichnis 230 entspricht dem in FIG. 5 gezeigten Verzeichnis 110. Ein Indexteil 231 und ein Listenteil 232 von FIG. 6 entsprechen jeweilig dem Index 111 und der Liste 112, die in FIG. 5 gezeigt sind. Ein Adressenregister 241, ein Zeichenregister 242a, ein Flipflop 245 und eine Zeitsteuerschaltung 246, die in FIG. 6 gezeigt sind, entsprechen dem in FIG. 5 gezeigten Lesemittel 121.
- Ein Zeichenregister 242b und eine Komparatorschaltung 243, die in FIG. 6 gezeigt sind, entsprechen dem in FIG. 5 gezeigten Detektionsmittel 122. Ferner entspricht eine in FIG. 6 gezeigte NOR-Schaltung 244 dem Bestimmungsmittel 123 von FIG. 5.
- In FIG. 6 enthält das Datenkomprimierungssystem eine Mikroprozessoreinheit (MPU) 201, einen Eingabeportteil 202, das Verzeichnis 230, eine Verzeichnissuchschaltung 240 und einen Ausgabeportteil 205. Die MPU 210, der Eingabeportteil 202, das Verzeichnis 230, die Verzeichnissuchschaltung 240 und der Ausgabeportteil 205 sind über einen Bus 206 miteinander gekoppelt.
- Ein Eingangszeichenstring, der über den Eingabeportteil 202 eingegeben wird, wird in der MPU 201 einer LZW-Codierung unterzogen. Die codierten Daten von der MPU 201 werden über den Ausgabeportteil 205 zu einer Magnetplatteneinheit (nicht gezeigt) oder dergleichen übertragen und darin gespeichert. Die Verzeichnissuchschaltung 240 führt den Suchprozeß bezüglich des Verzeichnisses 230 aus, wenn die codierten Daten in die Magnetplatteneinheit oder dergleichen gespeichert werden.
- Das Verzeichnis 230 besteht aus ²Nmax Zonen, und Adressen "1" bis "²Nmax" sind jeder der ²Nmax Zonen zugeordnet. Von den ²Nmax Zonen sind die Zonen, die durch Adressen mit einem höchstwertigen Bit (MSB) spezifiziert sind, das "0" ist, dem Indexteil 231 zugeteilt, und die Zonen, die durch Adressen mit einem MSB spezifiziert sind, das "1" ist, sind dem Listenteil 232 zugeteilt. Jede Zone der Index- und Listenteile 231 und 232 entspricht einer Referenznummer, die durch einen niedrigeren Abschnitt der Adressen ohne das MSB beschrieben ist. Zusätzlich ist jede Zone der Index- und Listenteile 231 und 232 aus einem Zeigerteil und einem Zeichenteil gebildet, wie in FIG. 7 gezeigt, und die Zeigerund Zeichenteile werden gleichzeitig gelesen. Wenn zum Beispiel jede Zone eine Kapazität von zwei Wörtern hat, wird das obere Wort als Zeigerteil verwendet und das untere Wort als Zeichenteil verwendet.
- Der Zeigerteil von jeder Zone des Indexteils 231 speichert eine Referenznummer, die einem Teilstring entspricht, der von den Teilstrings, bei denen ein Zeichen zu den Zeichenstrings hinzugefügt ist, denen entsprechende Referenznummern zugeordnet sind, zuerst erscheint. Der Zeichenteil von jeder Zone des Indexteils 231 speichert das Erweiterungszeichen, das zu dem Teilstring hinzugefügt ist, der der Referenznummer entspricht, die in dem Zeigerteil der Zone gespeichert ist.
- Der Zeigerteil von jeder Zone des Listenteils 232 speichert eine Referenznummer, die einem Teilstring entspricht, der von den Teilstrings als nächster erscheint, bei denen sich das letzte Zeichen von jenem der Zeichenstrings unter scheidet, denen entsprechende Referenznummern zugeordnet sind. Der Zeichenteil von jeder Zone des Listenteils 232 speichert das Erweiterungszeichen, das zu dem Teilstring hinzugefügt ist, der der Referenznummer entspricht, die in dem Zeigerteil der Zone gespeichert ist.
- Ein Anfangswert "0" wird in jeder Zone des Indexteils 231 und des Listenteils 232 gesetzt, bevor der Codierungsprozeß startet.
- Die Verzeichnissuchschaltung 240 enthält das Adressenregister 241, die Zeichenregister 242a und 242b, die Komparatorschaltung 243, die NOR-Schaltung 244, das Flipflop 245 und die Zeitsteuerschaltung 246.
- Von den Daten, die über den Bus 206 empfangen werden, wird das obere Wort, das heißt, die Referenznummer, die aus dem Zeigerteil von jeder Zone des Indexteils 231 oder des Listenteils 232 des Verzeichnisses 230 gelesen wird, dem Adressenregister 241 eingegeben. Zusätzlich wird das untere Wort, das heißt, das Zeichen, das aus dem Zeichenteil von jeder Zone des Indexteils 231 oder des Listenteils 232 des Verzeichnisses 230 gelesen wird, dem Zeichenregister 242a eingegeben. Andererseits wird ein Zeichen innerhalb des Zeichenstrings, der über den Eingabeportteil 202 eingegeben wird, in dem Zeichenregister 242b durch die MPU 201 sukzessive gesetzt.
- Die Ausgabe des Adressenregisters 241 wird dem Verzeichnis 230 als unterer Teil der Adresse eingegeben, und die Ausgabe des Flipflops 245 wird dem Verzeichnis 230 als MSB der Adresse eingegeben.
- Die Komparatorschaltung 243 vergleicht die Zeichen, die in den Zeichenregistern 242a und 242b gespeichert sind, und gibt ein logisches Signal "1" aus, wenn die zwei verglichenen Zeichen übereinstimmen. Dieses logische Ausgangssignal der Komparatorschaltung 243 wird der MPU 201 gemeldet.
- Die Ausgabe des Adressenregisters 241 wird auch der NOR-Schaltung 244 eingegeben. Die NOR-Schaltung 244 gibt ein logisches Signal "1" aus, wenn die Referenznummer, die in dem Adressenregister 241 gespeichert ist, den Anfangswert "0" hat, und dieses logische Ausgangssignal der NOR-Schaltung 244 wird der MPU 201 gemeldet.
- Die Zeitsteuerschaltung 246 gibt ein Lesesignal aus, das einen Leseprozeß zum Lesen von Informationen aus dem Verzeichnis 230 in Abhängigkeit von einer Instruktion von der MPU 201 anweist. Ferner gibt die Zeitsteuerschaltung 246 ein Ladesignal zum Steuern der Zeitlagen aus, zu denen die Daten in dem Adressenregister 241 und dem Zeichenregister 242a gespeichert werden.
- Als nächstes erfolgt eine Beschreibung der Suchoperation der Verzeichnissuchschaltung 240, die bezüglich des Verzeichnisses 230 ausgeführt wird.
- Zuerst gibt die MPU 201 dem Zeichenregister 242b der Verzeichnissuchschaltung 240 ein Zeichen ein, das über den Eingabeportteil 202 neu eingegeben wurde. Zusätzlich gibt die MPU 201 dem Adressenregister 241 die Referenznummer ω ein, die dem Zeichenstring entspricht, der durch Hinzufügen des oben beschriebenen Zeichens zu codieren ist, und sie weist der Zeitsteuerschaltung 246 den Start der Suchoperation an.
- Wenn zum Beispiel der in FIG. 1A gezeigte Zeichenstring über den Eingabeportteil 202 sukzessive eingegeben wird, erhält die MPU 201 zuerst die Hashing-Adresse (zum Beispiel "1"), die dem ersten Zeichen "a" entspricht, und gibt diese Hashing-Adresse dem Adressenregister 241 ein. Zusätzlich liest die MPU 201 das nächste Zeichen "b" und gibt dieses Zeichen "b" dem Zeichenregister 242b ein. Ferner weist die MPU 201 der Zeitsteuerschaltung 246 den Start der Suchoperation an.
- Als Reaktion auf die Suchstartinstruktion von der MPU 201 setzt die Zeitsteuerschaltung 246 zuerst das logische Ausgangssignal des Flipflops 245 auf "0" zurück und gibt danach dem Verzeichnis 230 ein Lesesignal ein, um den Leseprozeß zu starten.
- Die entsprechende Referenznummer und das Zeichen werden aus der Zone des Indexteils 231 des Verzeichnisses 230, die der Referenznummer entspricht, als Reaktion auf das Lesesignal gelesen. Die Referenznummer und das Zeichen, die gelesen werden, werden über den Bus 206 der Verzeichnissuchschaltung 240 eingegeben, und die Referenznummer wird dem Adressenregister 241 eingegeben, während das Zeichen dem Zeichenregister 242a eingegeben wird.
- Nach dem Ausgeben des Lesesignals gibt die Zeitsteuerschaltung 246 dem Adressenregister 241 und dem Zeichenregister 242a nach einer vorbestimmten Zeit τ das Ladesignal ein. Diese vorbestimmte Zeit (Lesezykluszeit) τ ist die Zeit, die benötigt wird, um die Daten aus dem Verzeichnis 230 zu lesen, ab der Zeit, wenn das Lesesignal von der Zeitsteuerschaltung 246 ausgegeben wird.
- Das Adressenregister 241 speichert als Reaktion auf das Ladesignal die Referenznummer. Andererseits speichert das Zeichenregister 242a als Reaktion auf das Ladesignal das Zeichen.
- Danach setzt die Zeitsteuerschaltung 246 ein logisches Signal "1" in dem Flipflop 245 und gibt ein Lesesignal aus. Zusätzlich gibt die Zeitsteuerschaltung 246 ein Ladesignal aus, nachdem die Lesezykluszeit T ab der Zeit, zu der das Lesesignal ausgegeben wird, abläuft. Wenn dann von der MPU 201 keine Instruktion empfangen wird, wiederholt die Zeitsteuerschaltung 246 die oben beschriebene Operation und wiederholt den Leseprozeß bei jeder Lesezykluszeit τ. Jedoch ist es unnötig, die Operation des Setzens des logischen Signals "1" in dem Flipflop 245 zu wiederholen.
- Durch Setzen des logischen Signals "1" in dem Flipflop 245 wird das MSB der Adresse von "0" auf "1" verändert. Daher wird danach der Leseprozeß hinsichtlich des Listenteils 232 bei jeder oben beschriebenen Zykluszeit τ ausgeführt.
- Unter Verwendung der Referenznummer, die aus dem Verzeichnis 230 gelesen wurde, um die nächste Leseadresse zu spezifizieren, wird das Erweiterungszeichen, das zu dem Teilstring hinzugefügt ist, der in dem Baum des Verzeichnisses 230 als "Kind" mit dem Teilstring verbunden ist, der der Referenznummer ω entspricht, sukzessive gelesen und in dem Zeichenregister 242a gespeichert. Dieser Prozeß ist dem sukzessiven Lesen des Teilstrings äquivalent, der dem "Kind" des Teilstrings entspricht, der der Referenznummer ω entspricht.
- Die Komparatorschaltung 243 vergleicht das Zeichen, das zuvor gelesen und in dem Zeichenregister 242a gespeichert wurde, und das Erweiterungszeichen K, das in dem Zeichenregister 242b gespeichert ist, parallel zu dem oben beschriebenen Leseprozeß. Daher vergleicht die Komparatorschaltung 243 sukzessive jedes Mal, wenn ein neues Zeichen aus dem Verzeichnis 230 gelesen wird, das Zeichen, das aus dem Verzeichnis 230 gelesen wurde, mit dem Erweiterungszeichen K und führt der MPU 201 ein logisches Signal "1" zu, wenn die zwei verglichenen Zeichen übereinstimmen. Deshalb wird der Übereinstimmungsdetektionsprozeß der Komparatorschaltung 243, der dem herkömmlichen Übereinstimmungsdetektionsprozeß entspricht, parallel zu dem Leseprozeß ausgeführt.
- Aus diesem Grund bestimmt die MPU 201, wenn das logische Signal "1" von der Komparatorschaltung 243 empfangen wird, daß ein Teilstring, bei dem das Erweiterungszeichen K zu dem Teilstring hinzugefügt ist, der der Referenznummer ω entspricht, herausgesucht ist. In diesem Fall liest die MPU 201 das nächste Zeichen des Eingangszeichenstrings und speichert dieses Zeichen in dem Zeichenregister 242b und weist die Zeitsteuerschaltung 246 an, die Suchoperation zu starten. Als Resultat wird die Suche eines Teilstrings, bei dem ein weiteres Zeichen zu dem herausgesuchten Teilstring hinzugefügt ist, ähnlich gestartet.
- In dem oben beschriebenen Fall ist die Referenznummer, die in dem Adressenregister 241 gespeichert wird, die Referenznummer, die dem herausgesuchten Teilstring entspricht. Daher braucht die MPU 201 die entsprechende Referenznummer in dem Adressenregister 241 nicht wieder zu speichern.
- Andererseits wird auch der Logikoperationsprozeß der NOR-Schaltung 244 unabhängig von dem Leseprozeß ausgeführt. Daher wird der Logikoperationsprozeß bezüglich der zuvor gelesenen Referenznummer parallel zu dem Leseprozeß ausgeführt. Wenn die aus dem Verzeichnis 230 gelesene Referenznummer den Anfangswert "0" hat, gibt die NOR-Schaltung 244 der MPU 201 ein logisches Signal "1" ein.
- Wenn die Referenznummer, die aus dem Verzeichnis 230 gelesen wird, den Anfangswert "0" hat, bedeutet dies, daß kein entsprechender Teilstring in dem Verzeichnis 230 registriert ist. Durch Bestimmen dessen, ob die aus dem Verzeichnis 230 gelesene Referenznummer den Anfangswert "0" hat oder nicht, ist es möglich, mit der NOR-Schaltung 244 den Verbindungsbestimmungsprozeß, der dem herkömmlichen Schritt 705 entspricht, parallel zu dem oben beschriebenen Leseprozeß auszuführen.
- Wenn daher das logische Ausgangssignal der NOR-Schaltung 244 "1" wird, weist die MPU 201 die Zeitsteuerschaltung 246 an, die Suchoperation abzubrechen. Zusätzlich gibt die MPU 201 über den Ausgabeportteil 205 als Code die Referenznummer ω aus, die dem Teilstring entspricht, der zuletzt herausgesucht wurde, und führt den Prozeß des Registrierens des neuen Teilstrings in dem Verzeichnis 230 aus.
- Zum Beispiel führt die MPU 201 dem Verzeichnis 230 eine Adresse zu, und diese Adresse wird erhalten, indem die Ausgabe des Flipflops 245 innerhalb der Verzeichnissuchschaltung 240 als MSB zu der oben beschriebenen Referenznummer ω hinzugefügt wird. Daher werden eine neue Referenznummer und das Erweiterungszeichen K in dem Verzeichnis 230 gespeichert.
- Wenn das logische Ausgangssignal des Flipflops 245 auf "0" zurückgesetzt wird, werden die neue Referenznummer und das Erweiterungszeichen K an der entsprechenden Adresse des Indexteils 231 innerhalb des Verzeichnisses 230 gespeichert. Die neue Referenznummer und das Erweiterungszeichen K werden als Elemente registriert, die den "Kindern" des Elementes mit der Referenznummer entsprechen, die in dem Adressenregister 241 gespeichert ist. Wenn andererseits das logische Ausgangssignal des Flipflops 245 auf "1" gesetzt wird, werden die neue Referenznummer und das Erweiterungszeichen K an der entsprechenden Adresse des Listenteils 232 gespeichert. In diesem Fall werden die neue Referenznummer und das Erweiterungszeichen K als Elemente registriert, die dem "Geschwister" neben der Referenznummer entsprechen, die in dem Adressenregister 241 gespeichert ist.
- Der Eingangszeichenstring wird auf die oben beschriebene Weise sukzessive codiert, und die neuen Teilstrings werden in dem Verzeichnis 230 registriert.
- Die folgende Tabelle 2 zeigt den Indexteil 231 und den Listenteil 232 des Verzeichnisses 230, die erhalten werden, indem diese Ausführungsform auf das in FIG. 2 gezeigte Verzeichnis angewendet wird. In Tabelle 2 geben die Zahlen, die links von jeder Spalte stehen, die Referenznummer an, und "Erweiterungszeichen" bezeichnet das Erweiterungszeichen. Tabelle 2
- Die Verzeichnissuchschaltung 240 ist, wie oben beschrieben, aus dem Adressenregister 241, den zwei Zeichenregistern 242a und 242b, der Komparatorschaltung 243 und der NOR-Schaltung 244 gebildet. Und die Zeitsteuerschaltung 246 wird verwendet, um den Leseprozeß bei jeder Lesezykluszeit τ hinsichtlich des Verzeichnisses 230 auszuführen.
- Die Komparatorschaltung 243 und die NOR-Schaltung 244 arbeiten unabhängig von dem Leseprozeß, der bezüglich des Verzeichnisses 230 ausgeführt wird. Daher werden der Vergleichsprozeß der Komparatorschaltung 243 und der Logikoperationsprozeß der NOR-Schaltung 244 für den zuvor gelesenen Teilstring unter der Steuerung der Zeitsteuerschaltung 246 parallel zu dem Leseprozeß ausgeführt, der für den nächsten Teilstring erfolgt.
- Da der Verbindungsbestimmungsprozeß, der Übereinstimmungsdetektionsprozeß und der Leseprozeß durch unabhängige Schaltungen (das heißt, durch die NOR-Schaltung 244, die Komparatorschaltung 243 und die Zeitsteuerschaltung 246) ausgeführt werden, können diese Prozesse durch Pipeline- Verarbeitung erfolgen. In diesem Fall ist die Zeit, die benötigt wird, um eine Suche aus der Liste vorzunehmen, die Lesezykluszeit τ aus dem Verzeichnis 230.
- Deshalb ist es möglich, die Zeichenstrings aus dem Verzeichnis 230 mit hoher Geschwindigkeit unter Verwendung der in FIG. 6 gezeigten einfachen Schaltung herauszusuchen. Aus diesem Grund ist es möglich, die Zeit zu reduzieren, die erforderlich ist, um den Suchprozeß hinsichtlich des Verzeichnisses 230 auszuführen, den Codierprozeß mit hoher Geschwindigkeit auszuführen, wobei die Codiergeschwindigkeit ungefähr die Übertragungsgeschwindigkeit der Daten zu der Magnetplatteneinheit oder dergleichen erreicht, und die Übertragung der codierten Daten zu der Magnetplatteneinheit oder dergleichen in Echtzeit vorzunehmen.
- Die Verzeichnissuchschaltung 240 hat, wie in FIG. 6 gezeigt, eine einfache Schaltungskonstruktion und wird die Hardware des Datenkomprimierungssystems nicht sehr erweitern. Zusätzlich braucht die MPU 201 nur zu arbeiten, wenn die Komparatorschaltung 243 und die NOR-Schaltung 244 das logische Signal "1" ausgeben, und braucht nicht mit einer besonders hohen Geschwindigkeit zu arbeiten.
- Die obige Beschreibung betrifft den Fall, wenn diese Ausführungsform auf das Datenkomprimierungssystem angewendet wird. Jedoch ist diese Ausführungsform, das heißt, die vorliegende Erfindung, auf irgendein System anwendbar, bei dem das offene Hashing-Verfahren verwendet wird, um Informationen aus einem Verzeichnis herauszusuchen, das eine Baumstruktur hat.
- Als nächstes erfolgt unter Bezugnahme auf FIG. 8 eine Beschreibung eines Operationsprinzips einer zweiten Ausführungsform des Verzeichnissuchsystems gemäß der vorliegenden Erfindung. In FIG. 8 sind jene Teile, die im wesentlichen dieselben wie jene entsprechenden Teile in FIG. 5 sind, mit denselben Bezugszeichen versehen, und eine Beschreibung von ihnen wird weggelassen.
- In dieser Ausführungsform wird ein Zeichenstring, der durch eine Eingangsreferenznummer und ein Zeichen beschrieben ist, aus einem Verzeichnis 110 herausgesucht, in dem untereinander verschiedene Zeichenstrings in Entsprechung zu ihnen zugeordneten Referenznummern registriert sind. Das Verzeichnis 110 enthält einen Index 111 und eine Vielzahl von Listen 112. Der Index 111 speichert Identifikationsinformationen bezüglich wenigstens eines von in Frage kommenden Zeichenstrings, die durch Hinzufügen eines Zeichens zu dem Zeichenstring erhalten werden, dem die entsprechende Referenznummer zugeordnet ist, und einen Zeiger, der die Speicherstellen von anderen in Frage kommenden Zeichenstrings kennzeichnet. Die Listen 112 speichern Identifikationsinformationen bezüglich wenigstens eines von in Frage kommenden Zeichenstrings, bei denen das letzte Zeichen anders ist, und einen Zeiger, der die Speicherstellen von anderen in Frage kommenden Zeichenstrings kennzeichnet.
- Zuerst weist das Lesemittel 121 das Verzeichnis 110 an, den Zeiger und die Identifikationsinformationen auszugeben, die in dem Index 111 auf der Basis der Eingangsreferenznummer gespeichert sind. Danach spezifiziert das Lesemittel 121 die Liste 112, auf die durch den Zeiger hingewiesen wird, der von dem Index 111 des Verzeichnisses 110 ausgegeben wird, und weist das Verzeichnis 110 an, den Zeiger und die Identifikationsinformationen auszugeben, die in der Liste 112 gespeichert sind.
- Das Detektionsmittel 122 enthält eine Vielzahl von Komparatormitteln 124 zum Vergleichen der Identifikationsinformationen, die aus dem Verzeichnis 110 gelesen werden, und des Eingangszeichens. Das Detektionsmittel 122 detektiert einen entsprechenden Zeichenstring von den in Frage kommenden Zeichenstrings, die aus dem Verzeichnis 110 gelesen werden, und gibt den detektierten Zeichenstring als Suchresultat aus.
- Das Bestimmungsmittel 123 bestimmt auf der Basis des Zeigers, der aus dem Verzeichnis 110 gelesen wird, ob ein in Frage kommender Zeichenstring, der noch nicht gelesen ist, existiert oder nicht. Das Bestimmungsmittel 123 gibt ein Bestimmungsresultat als Suchresultat aus.
- Ähnlich wie in dem Fall der ersten Ausführungsform arbeiten das Lesemittel 121, das Detektionsmittel 122 und das Bestimmungsmittel 123 unabhängig voneinander.
- Der Index 111 des Verzeichnisses 110 speichert in Entsprechung zu den Referenznummern die Identifikationsinformationen bezüglich wenigstens eines der in Frage kommenden Zeichenstrings, die durch Hinzufügen eines Zeichens zu den Zeichenstrings erhalten werden, die den Ref erenznummern entsprechen, und den Zeiger, der die Speicherstellen von anderen in Frage kommenden Zeichenstrings kennzeichnet. Zusätzlich speichert jede Liste 112 die Identifikationsinformationen bezüglich des einen der in Frage kommenden Zeichenstrings, bei denen sich das letzte Zeichen voneinander unterscheidet, und den Zeiger, der auf die Speicherstellen von anderen in Frage kommenden Zeichenstrings hinweist.
- Der Index 111 entspricht dem Indexteil, der durch das offene Hashing-Verfahren verwendet wird, und jede Liste 112 entspricht der Liste, die durch das offene Hashing-Verfahren verwendet wird. Zusätzlich sind die Verbindungsbeziehungen des Indexes 111 und der Listen 112 durch die Zeiger gekennzeichnet, die in dem Index 111 und den Listen 112 gespeichert sind. Die Referenznummer, die dem in Frage kommenden Zeichenstring zugeordnet ist, und das letzte Zeichen des Zeichenstrings können als Identifikationsinformationen gespeichert werden.
- Zuerst weist das Lesemittel 121 das Verzeichnis 110 an, den Zeiger und die Identifikationsinformationen bezüglich wenigstens eines der in Frage kommenden Zeichenstrings, die in dem Index 111 gespeichert sind, auf der Basis der Eingangsreferenznummer auszugeben. Danach weist das Lesemittel 121 das Verzeichnis 110 an, den Zeiger und die Identifikationsinformationen auszugeben, die in der Liste 112 gespeichert sind, die durch den Zeiger gekennzeichnet ist, der von dem Index 111 des Verzeichnisses 110 ausgegeben wurde. Daher werden die in Frage kommenden Zeichenstrings sukzessive aus den Listen 112 gelesen, wobei wenigstens immer ein in Frage kommender Zeichenstring gelesen wird, welche Listen 112 mit dem Index 111 durch den Zeiger verbunden sind, der von dem Index 111 ausgegeben wird.
- Die Identifikationsinformationen, die aus dem Verzeichnis 110 gelesen werden, werden mit dem Eingangszeichen in dem entsprechenden Komparatormittel 124 des Detektionsmittels 122 verglichen. Das Detektionsmittel 122 detektiert den entsprechenden Zeichenstring auf der Basis der Resultate der Vergleiche, die in dem Komparatormittel 124 vorgenommen werden. Wenn zum Beispiel die Referenznummer des in Frage kommenden Zeichenstrings und das letzte Zeichen als Identifikationsinformationen gespeichert sind, vergleicht das Komparatormittel 124 das Eingangszeichen mit dem letzten Zeichen, das in jeder Identifikationsinformation enthalten ist. Wenn die zwei verglichenen Zeichen übereinstimmen, gibt das Detektionsmittel 123 ein Suchresultat aus, das angibt, daß der entsprechende Zeichenstring detektiert ist.
- Auf der Basis des Zeigers, der aus dem Verzeichnis 110 gelesen wird, bestimmt das Bestimmungsmittel 123, ob ein in Frage kommender Zeichenstring existiert oder nicht, der aus dem Verzeichnis 110 noch nicht gelesen wurde. Wenn zum Beispiel die Speicherstelle der als nächste zu verbindenden Liste nicht durch einen Zeiger gekennzeichnet ist, bestimmt das Bestimmungsmittel 123, daß kein in Frage kommender Zeichenstring vorhanden ist, der noch nicht aus dem Verzeichnis 110 gelesen ist, und das Resultat dieser Bestimmung wird als Suchresultat ausgegeben.
- Gemäß dieser Ausführungsform ist wenigstens ein in Frage kommender Zeichenstring jeweilig in dem Index 111 und in den Listen 112 des Verzeichnisses 110 gespeichert, und das Detektionsmittel 122 ist mit der Vielzahl von Komparatormitteln 124 versehen. Aus diesem Grund ist es möglich, in Frage kommende Zeichenstrings jeweilig aus dem Index 111 und aus den Listen 112 des Verzeichnisses 110 gleichzeitig zu lesen und den Übereinstimmungsdetektionsprozeß für die in Frage kommenden Zeichenstrings auszuführen, die aus dem Verzeichnis 110 gelesen wurden. Da das Lesemittel 121, das Detektionsmittel 122 und das Bestimmungsmittel 123 unabhängig voneinander arbeiten, ist es zusätzlich unnötig, auf das Ende eines vorherigen Prozesses zu warten, wie im Fall des herkömmlichen Verfahrens, und die Verzeichnissuchoperation kann mit hoher Geschwindigkeit ausgeführt werden.
- Das Lesemittel 121 kann den Leseprozeß hinsichtlich des Verzeichnisses 110 in vorbestimmten Zeitabständen starten. In diesem Fall können der Übereinstimmungsdetektionsprozeß des Detektionsmittels 122 und der Verbindungsbestimmungsprozeß des Bestimmungsmittels 123 parallel zu dem Leseprozeß des Lesemittels 121 ausgeführt werden. Zum Beispiel führt das Lesemittel 121 den Leseprozeß immer dann aus, wenn Informationen aus dem Verzeichnis 110 gelesen werden müssen. Normalerweise sind die Zeiten, die benötigt werden, um den Übereinstimmungsdetektionsprozeß des Detektionsmittels 122 und den Verbindungsbestimmungsprozeß des Bestimmungsmittels 123 auszuführen, kurz im Vergleich zu der Zeit, die benötigt wird, um den Leseprozeß des Lesemittels 121 auszuführen. Daher ist es möglich, den Suchprozeß als Pipeline-Prozeß auszuführen, indem die Lese-, Übereinstimmungsdetektions- und Verbindungsbestimmungsprozesse parallel, das heißt, gleichzeitig erfolgen. Als Resultat ist es möglich, die Zeichenstrings aus dem Verzeichnis 110 mit hoher Geschwindigkeit herauszusuchen.
- Als nächstes erfolgt unter Bezugnahme auf FIG. 9 eine detailliertere Beschreibung der zweiten Ausführungsform FIG. 9 zeigt einen wesentlichen Teil eines Datenkomprimierungssystems, das mit der zweiten Ausführungsform angewendet wird. In FIG. 9 sind jene Teile, die im wesentlichen dieselben wie jene entsprechenden Teile in FIG. 6 sind, mit denselben Bezugszeichen versehen, und eine Beschreibung von ihnen wird weggelassen. Die entsprechenden Beziehungen der in FIG. 8 und 9 gezeigten Elemente sind wie folgt.
- Ein Verzeichnis 230, das in FIG. 9 gezeigt ist, entspricht dem in FIG. 8 gezeigten Verzeichnis 110. Ein Indexteil 231 und ein Listenteil 232, die in FIG. 9 gezeigt sind, entsprechen jeweilig dem Index 111 und den Listen 112, die in FIG. 8 gezeigt sind. Ein Halteteil von in Frage kommenden Elementen 341 und eine Zeitsteuerschaltung 344, die in FIG. 9 gezeigt sind, entsprechen dem in FIG. 8 gezeigten Lesemittel 121. Komparatorschaltungen 362a und 362b, die in FIG. 9 gezeigt sind, entsprechen den in FIG. 8 gezeigten Komparatormitteln 124. Ein Erweiterungszeichenregister 361 und die Komparatorschaltungen 362a und 362b entsprechen dem in FIG. 8 gezeigten Detektionsmittel 122. Eine NOR-Schaltung 343 entspricht dem Bestimmungsmittel 123.
- Das Datenkomprimierungssystem in FIG. 9 enthält eine Mikroprozessoreinheit (MPU) 201, einen Eingabeportteil 202, das Verzeichnis 230, eine Verzeichnissuchschaltung 240 und einen Ausgabeportteil 205. Die MPU 210, der Eingabeportteil 202, das Verzeichnis 230, die Verzeichnissuchschaltung 240 und der Ausgabeportteil 205 sind über einen Bus 206 miteinander gekoppelt.
- Ein Eingangszeichenstring, der über den Eingabeportteil 202 eingegeben wird, wird in der MPU 201 einer LZW-Codierung unterzogen. Die codierten Daten von der MPU 201 werden über den Ausgabeportteil 205 zu einer Magnetplatteneinheit (nicht gezeigt) oder dergleichen übertragen und darin gespeichert.
- Die untereinander verschiedenen Teilstrings, die in den Zeichenstrings enthalten sind, die bis jetzt eingegeben wurden, sind in dem Verzeichnis 230 registriert. Der Teilstring, der die längste Übereinstimmung mit dem Eingangszeichenstring darstellt, wird aus dem Verzeichnis 230 herausgesucht, und der Eingangszeichenstring wird unter Verwendung der Referenznummer codiert, die dem herausgesuchten Teilstring entspricht.
- Wenn der LZW-Codierungsprozeß ausgeführt wird, gibt die MPU 201 der Verzeichnissuchschaltung 240 die Identifikationsinformationen bezüglich des betrachteten Teils des Eingangszeichenstrings ein. Auf der Basis dieser Identifikationsinformationen sucht die Verzeichnissuchschaltung 240 den entsprechenden Teilstring aus dem Verzeichnis 230 heraus. Gemäß der LZW-Codierung ist der Teilstring durch die Referenznummer ω und das Erweiterungszeichen K beschrieben. Daher kann der betrachtete Teil des Eingangszeichenstrings durch die Referenznummer ω, die dem Teilstring entspricht, der bislang herausgesucht wurde, und das letzte Zeichen K beschrieben sein, das zu diesem Teilstring als Erweiterungszeichen hinzugefügt ist. Die MPU 201 kann somit die Referenznummer ω und das Erweiterungszeichen K der Verzeichnissuchschaltung 240 als Identifikationsinformationen eingeben.
- Zusätzlich liest die Verzeichnissuchschaltung 240 von den Teilstrings, die in dem Verzeichnis 230 registriert sind, als in Frage kommende Elemente sukzessive die Teilstrings, die durch Hinzufügen eines verschiedenen Zeichens zu jedem der Teilstrings registriert sind, die der Referenznummer ω entsprechen. Die Verzeichnissuchschaltung 240 sucht den entsprechenden Teilstring aus diesen in Frage kommenden Elementen heraus.
- Das Verzeichnis 230 ist gebildet aus dem Indexteil 231, der dem Index entspricht, der durch das offene Hashing- Verfahren verwendet wird, und dem Listenteil 232, der einer Kollektion von Listen entspricht, die durch das offene Hashing-Verfahren verwendet werden.
- FIG. 10 zeigt die Struktur des Indexteils 231 und des Listenteils 232 für einen Fall, wenn zwei in Frage kommende Elemente auf einmal aus dem Verzeichnis 230 gelesen werden.
- Der Indexteil 231 ist, wie in FIG. 10 gezeigt, aus Speicherzonen gebildet, die jeweilig den Referenznummern entsprechen. Jede Speicherzone des Indexteils 231 enthält einen Zeigerteil zum Speichern eines Zeigers, der auf eine Adresse der verbundenen Liste in dem Verzeichnis 230 hinweist, einen Identifikationsinformationsteil zum Speichern von Identifikationsinformationen, die zwei in Frage kommenden Elementen entsprechen, und einen Flag-Teil zum Speichern eines Flags, das die Anzahl von Identifikationsinformationen angibt, die in dem Identifikationsinformationsteil gespeichert sind. Ferner gibt der Indexteil 231 die Daten von jedem der Teile der entsprechenden Speicherzone in Abhängigkeit von einer Leseinstruktion, die die Referenznummer spezifiziert, gleichzeitig an den Bus 206 aus.
- Die entsprechenden Referenznummern ω&sub1; und ω&sub2; und die letzten Zeichen K&sub1; und K&sub2; der zwei in Frage kommenden Elemente sind als die Identifikationsinformationen der in Frage kommenden Elemente in dem Identifikationsinformationsteil der Speicherzone gespeichert, die der Referenznummer ω entspricht. Zum Beispiel ist, wie in FIG. 10 gezeigt, der Identifikationsinformationsspeicherteil aus zwei Referenznummerteilen R1 und R2 und zwei Zeichenteilen C1 und C2 gebildet, und die Referenznummern ω&sub1; und ω&sub2; werden in den zwei Referenznummerteilen R1 und R2 gespeichert, während die Zeichen K&sub1; und K&sub2; in den zwei Zeichenteilen C1 und C2 gespeichert werden. Eines der zwei in Frage kommenden Elemente, die oben beschrieben sind, wird im folgenden als erstes in Frage kommendes Element bezeichnet und das andere wird als zweites in Frage kommendes Element bezeichnet.
- Wenn nur die Identifikationsinformationen, die dem ersten in Frage kommenden Element entsprechen, in dem Identifikationsinformationsteil gespeichert sind, wird das Flag auf einen logischen Wert "1" gesetzt, und andernfalls wird das Flag auf einen logischen Wert "0" zurückgesetzt.
- Andererseits ist der Listenteil 232 aus einer Vielzahl von Listen gebildet, und jede Liste enthält Teile, ähnlich wie im Fall von jeder Zone des Indexteils 231. Mit anderen Worten, jede Liste enthält einen Zeigerteil, einen Identifikationsinformationsteil und einen Flag-Teil. Ferner gibt der Listenteil 232 die Daten von jedem der Teile der spezifizierten Liste in Abhängigkeit von der Leseinstruktion gleichzeitig an den Bus 206 aus.
- Der Zeigerteil von jeder Liste des Listenteils 232 speichert einen Zeiger, der auf die Adresse von einer anderen Liste in dem Verzeichnis 230 hinweist, welche andere Liste mit der entsprechenden Liste verbunden ist. Ferner enthält der Identifikationsinformationsteil der Liste des Listenteils 232 zwei Referenznummerteile und zwei Zeichenteile, und die Referenznummern, die den zwei in Frage kommenden Elementen entsprechen, und deren letzte Zeichen sind jeweilig in den Referenznummerteilen und den Zeichenteilen gespeichert, ähnlich wie im Fall des Identifikationsinformationsteils des Indexteils 231. Zum Beispiel sind in der Liste, die mit der Speicherzone verbunden ist, die der Referenznummer ω des Indexteils 231 entspricht, eine Referenznummer ω&sub3; und ein Zeichen K&sub3; als Identifikationsinformationen des ersten in Frage kommenden Elementes gespeichert und eine Referenznummer ω&sub4; und ein Zeichen K&sub4; als Identifikationsinformationen des zweiten in Frage kommenden Elementes gespeichert.
- Ein Anfangswert "0" wird in jeder Zone des Indexteils 231 und des Listenteils 232 gesetzt, bevor der Codierprozeß startet.
- Die Verzeichnissuchschaltung 240 enthält den Halteteil von in Frage kommenden Elementen 341 zum Halten von Informationen bezüglich des in Frage kommenden Elementes, das aus dem Verzeichnis 230 gelesen wird, den Übereinstimmungsdetektionsteil 342 zum Detektieren des Elementes von den in Frage kommenden Eingangselementen, das ein letztes Zeichen hat, das mit dem Erweiterungszeichen K übereinstimmt, die NOR- Schaltung 343 und die Zeitsteuerschaltung 344 zum Steuern der Operationszeitlagen von jedem der Teile der Verzeichnissuchschaltung 240.
- Die Daten, die von dem Indexteil 231 und dem Listenteil 232 des Verzeichnisses 230 ausgegeben werden, werden dem Halteteil von in Frage kommenden Elementen 341 über den Bus 206 eingegeben. Der Halteteil von in Frage kommenden Elemen ten 341 enthält zwei Adressenregister 351a und 351b, zwei Register von in Frage kommenden Zeichen 352a und 352b, zwei Referenznummernregister 353a und 353b und ein Flag-Register 354.
- Von den Daten, die über den Bus 206 eingegeben werden, wird der Zeigerteil dem Adressenregister 351a eingegeben und wird der Flag-Teil dem Flag-Register 354 eingegeben. Zusätzlich werden die Referenznummer und das Zeichen des ersten in Frage kommenden Elementes in dem Identifikationsinformationsteil jeweilig dem Referenznummernregister 353a und dem Register von in Frage kommenden Zeichen 352a eingegeben. Andererseits werden die Referenznummer und das Zeichen des zweiten in Frage kommenden Elementes in dem Identifikationsinformationsteil jeweilig dem Referenznummernregister 353b und dem Register von in Frage kommenden Zeichen 352b eingegeben.
- Die Register des Halteteils von in Frage kommenden Elementen 341 speichern die ankommenden Daten als Reaktion auf ein Ladesignal, das von der Zeitsteuerschaltung 344 empfangen wird.
- Eine Ausgabe des Adressenregisters 351a wird dem Adressenregister 351b und der NOR-Schaltung 343 eingegeben und auch dem Verzeichnis 230 als Leseadresse eingegeben.
- Der Übereinstimmungsdetektionsteil 342 enthält ein Erweiterungszeichenregister 361 zum Speichern des Erweite rungszeichens K und zwei Komparatorschaltungen 362a und 362b. Die Komparatorschaltungen 362a und 362b vergleichen jeweilig das Erweiterungszeichen K, das in dem Erweiterungszeichenregister 361 gespeichert ist, mit den jeweiligen in Frage kommenden Zeichen, die in den zwei Registern von in Frage kommenden Zeichen 352a und 352b gespeichert sind. Die Komparatorschaltungen 362a und 362b geben jeweils ein logisches Signal "1" aus, wenn die zwei verglichenen Zeichen übereinstimmen.
- Der Übereinstimmungsdetektionsteil 342 empfängt das Flag, das in dem Flag-Register 354 des Halteteils von in Frage kommenden Elementen 354 gespeichert ist. Der Übereinstimmungsdetektionsteil 342 bestimmt auf der Basis des Flags und der Resultate der Vergleiche, die in den zwei Komparatorschaltungen 362a und 362b vorgenommen wurden, ob der entsprechende Teilstring detektiert ist oder nicht. Das Resultat dieser Bestimmung, die in dem Übereinstimmungsdetektionsteil 342 vorgenommen wird, wird der MPU 201 gemeldet.
- Wenn zum Beispiel der logische Wert "0" in dem Flag Register 354 gesetzt ist, gibt der Übereinstimmungsdetektionsteil 342 die Vergleichsresultate der Komparatorschaltungen 362a und 362b aus wie sie sind. Wenn andererseits der logische Wert "1" in dem Flag-Register 354 gesetzt ist, sieht der Übereinstimmungsdetektionsteil 342 das Vergleichsresultat der Komparatorschaltung 352b als ungültig an und setzt die Ausgabe der Komparatorschaltung 362b auf "0" zurück, bevor dieselbe ausgegeben wird.
- Die Ausgabe des Adressenregisters 351a wird der NOR- Schaltung 343 eingegeben, und eine Ausgabe dieser NOR-Schaltung 343 wird der MPU 201 eingegeben.
- Die Zeitsteuerschaltung 344 gibt ein Lesesignal aus, das hinsichtlich des Verzeichnisses 230 die Ausgabe der Daten anweist, die in der Speicherzone gespeichert sind, die durch die Leseadresse spezifiziert ist. Die Zeitsteuerschaltung 344 gibt auch ein Ladesignal zum Steuern der Zeitlagen aus, zu denen die Daten in jedem der Register innerhalb des Halteteils von in Frage kommenden Elementen 341 gespeichert werden.
- Als nächstes erfolgt eine Beschreibung der Suchoperation der Verzeichnissuchschaltung 240 zum Vornehmen einer Suche aus dem Verzeichnis 230.
- Zuerst gibt die MPU 201 ein Zeichen, das über den Eingabeportteil 202 neu eingegeben ist, dem Erweiterungszeichenregister 361 der Verzeichnissuchschaltung 240 ein. Zusätzlich gibt die MPU 201 die Referenznummer ω des betrachteten Zeichenstrings dem Adressenregister 351a ein und weist den Start einer Suchoperation an, bei der ein Teilstring, der durch die Referenznummer ω und das Erweiterungszeichen K beschrieben ist, aus dem Verzeichnis 230 herausgesucht wird.
- Zum Beispiel wird eine Referenznummer (zum Beispiel "1"), die einem Zeichen "a" zugeordnet ist, als Hashing- Adresse erhalten, die dem ersten Zeichen "a" des Eingangszeichenstrings entspricht, der in FIG. 1A gezeigt ist, und diese Hashing-Adresse wird dem Adressenregister 351a eingegeben. Zusätzlich wird das nächste Zeichen "b" gelesen, und dieses Zeichen "b" wird dem Erweiterungszeichenregister 361 als Erweiterungszeichen K eingegeben. Dann weist die MPU 201 der Zeitsteuerschaltung 344 der Verzeichnissuchschaltung 240 den Start der Suchoperation an.
- Die Zeitsteuerschaltung 344 gibt dem Verzeichnis 230 als Reaktion auf die oben beschriebene Suchstartinstruktion ein Lesesignal ein. Als Resultat wird ein Leseprozeß unter Verwendung der Referenznummer gestartet, die in dem Adressenregister 351a als Leseadresse des Verzeichnisses 230 gespeichert ist, und die Daten, die in der entsprechenden Speicherzone des Indexteils 231 gespeichert sind, werden über den Bus 206 der Verzeichnissuchschaltung 240 eingegeben.
- Die Zeitsteuerschaltung 344 gibt jedem der Register innerhalb des Halteteils von in Frage kommenden Elementen 341 ein Ladesignal ein, nachdem eine vorbestimmte Zeit (Lesezykluszeit) τ ab der Zeit abgelaufen ist, zu der das Lesesignal ausgegeben wird. Diese vorbestimmte Zeit τ ist die Zeit, die erforderlich ist, um den Leseprozeß auszuführen, bei dem die Daten aus dem Verzeichnis 230 gelesen werden.
- Daher wird der Zeiger, der aus dem Zeigerteil der entsprechenden Speicherzone des Indexteils 231 gelesen wird, in dem Adressenregister 351a gespeichert, und dieser Zeiger wird die nächste Leseadresse. Zusätzlich wird der Zeiger, der für den unmittelbar vorausgehenden Leseprozeß verwendet wurde, in dem Adressenregister 351b gespeichert.
- Danach gibt die Zeitsteuerschaltung 344 das Lesesignal aus, wenn von der MPU 201 nichts anderes angewiesen wird. Dann gibt die Zeitsteuerschaltung 344 das Ladesignal nach der Lesezykluszeit τ aus. Diese Operation der Zeitsteuerschaltung wird wiederholt.
- Der Leseprozeß, bei dem die in Frage kommenden Elemente aus dem Verzeichnis 230 gelesen werden, wird bei jeder Lesezykluszeit τ ausgeführt, und die in Frage kommenden Elemente werden sukzessive zuerst aus dem Indexteil 231 und als nächstes aus dem Listenteil 232 gelesen.
- Der Übereinstimmungsdetektionsteil 342 arbeitet unabhängig von dem Halteteil von in Frage kommenden Elementen 341. Aus diesem Grund vergleichen die Komparatorschaltungen 362a und 362b des Übereinstimmungsdetektionsteils 342 jeweilig das Erweiterungszeichen K mit den jeweiligen Zeichen, die zuvor gelesen und in den Registern von in Frage kommenden Zeichen 352a und 352b gespeichert wurden, parallel zu dem oben beschriebenen Leseprozeß.
- Der Übereinstimmungsdetektionsteil 342 gibt, wie oben beschrieben, als Übereinstimmungsdetektionsresultat die Ausgaben der Komparatorschaltungen 362a und 362b in Abhängigkeit von dem Flag aus, das in dem Flag-Register 354 gespeichert ist. Daher führt die MPU 201 einen Unterbrechungsprozeß aus, der im folgenden beschrieben wird, wenn das Übereinstimmungsdetektionsresultat, das von der Komparatorschaltung 362a oder 362b empfangen wird, den logischen Wert "1" hat.
- Wenn das Übereinstimmungsdetektionsresultat von der Komparatorschaltung 362b zum Beispiel den logischen Wert "1" hat, bestimmt die MPU 201, daß der Zeichenstring, der zu codieren ist, mit dem zweiten in Frage kommenden Element übereinstimmt, das durch die Referenznummer bezeichnet ist, die in dem Referenznummernregister 353b gespeichert ist. In diesem Fall liest die MPU 201 die entsprechende Referenznummer aus dem Referenznummernregister 353b und gibt diese Referenznummer dem Adressenregister 351a ein. Ferner liest die MPU 201 das nächste Zeichen des Eingangszeichenstrings und gibt dieses Zeichen dem Erweiterungszeichenregister 361 als das neue Erweiterungszeichen K ein.
- Danach weist die MPU 201 der Verzeichnissuchschaltung 240 den Start der Suchoperation an.
- Wenn das Erweiterungszeichen K durch ein Bitmuster beschrieben ist, das zum Beispiel mit dem Anfangswert "0" identisch ist, kann wenigstens eine der Komparatorschaltungen 362a und 362b das logische Signal "1" ausgeben, welches die Übereinstimmung angibt, selbst wenn kein entsprechendes Element in dem Verzeichnis 230 registriert ist. Wenn jedoch das Flag angibt, daß nur das erste in Frage kommende Element gespeichert ist, wird das Übereinstimmungsdetektionsresultat bezüglich des zweiten in Frage kommenden Elementes ungültig gemacht, und das logische Ausgangssignal der Komparatorschaltung 362b wird auf "0" zurückgesetzt, bevor es ausgegeben wird. Daher ist es möglich zu verhindern, daß ein undefiniertes Element irrtümlicherweise herausgesucht wird. Wenn zusätzlich auch das erste in Frage kommende Element undefiniert ist, werden die logischen Ausgangssignale der zwei Komparatorschaltungen 362a und 362b beide "1". In diesem Fall bestimmt die MPU 201 zum Beispiel zu Beginn des oben beschriebenen Unterbrechungsprozesses, ob beide Übereinstimmungsdetektionsresultate "1" sind oder nicht, und die MPU 201 kann erkennen, daß kein entsprechender Teilstring detektiert wurde, wenn beide Übereinstimmungsdetektionsresultate "1" sind.
- Ähnlich wie im Fall des Übereinstimmungsdetektionsteils 342 arbeitet die NOR-Schaltung 343 unabhängig von dem Halteteil von in Frage kommenden Elementen 341. Somit bestimmt die NOR-Schaltung 343, ob eine verbundene Liste existiert oder nicht, parallel zu dem Leseprozeß, indem bestimmt wird, ob ein gültiger Zeiger, der nicht der Anfangswert "0" ist, in dem Adressenregister 351a gespeichert ist oder nicht.
- Wenn die NOR-Schaltung 343 deshalb ein logisches Signal "1" ausgibt und bestimmt wird, daß keine verbundene Liste existiert, weist die MPU 201 die Verzeichnissuchschaltung 240 an, die Suchoperation abzubrechen, und führt den folgenden Unterbrechungsprozeß aus.
- Zuerst gibt die MPU 201 als Code die Referenznummer ω aus, die dem letzten herausgesuchten Teilstring entspricht. Als nächstes liest die MPU 201 die Daten, die in dem Adressenregister 351 und dem Flag-Register 354 gespeichert sind, und führt einen Registrierungsprozeß für den neuen Teilstring aus, in Abhängigkeit von dem Flag, das in dem Flag- Register 354 gespeichert ist.
- Zum Beispiel bestimmt die MPU 201, daß kein in Frage kommendes Element in der Speicherzone des Verzeichnisses 230 gespeichert ist, die durch die Adresse bezeichnet ist, die in dem Adressenregister 351 gespeichert ist, wenn das oben beschriebene Flag den logischen Wert "0" hat. In diesem Fall ordnet die MPU 201 dem Teilstring, der durch Hinzufügen des Erweiterungszeichens K zu der Referenznummer ω erhalten wird, eine neue Referenznummer ωn zu. Ferner speichert die MPU 201 die Referenznummer ωn und das Erweiterungszeichen K als Identifikationsinformationen des ersten in Frage kommenden Elementes in dem Identifikationsinformationsteil der Speicherzone des Verzeichnisses 230, die durch die oben beschriebene Adresse bezeichnet ist.
- Wenn das Flag andererseits den logischen Wert "1" hat, bestimmt die MPU 201, daß nur das erste in Frage kommende Element in der Speicherzone des Verzeichnisses 230 gespeichert ist, die durch die oben beschriebene Adresse bezeichnet ist. Daher speichert die MPU 201 in diesem Fall die Referenznummer ωn und das Erweiterungszeichen K als das zweite in Frage kommende Element in den Identifikationsinformationsteil der entsprechenden Speicherzone. Zusätzlich wird eine Adresse einer ungenutzten Zone des Listenteils 232 als Zeiger in den Zeigerteil der entsprechenden Speicherzone gespeichert.
- Danach wird die Codieroperation fortgesetzt, indem das Erweiterungszeichen K als Kopfteil des betrachteten Zeichenstrings genommen wird und das nächste Zeichen des Eingangszeichenstrings als neues Erweiterungszeichen K genommen wird.
- Der Zeiger, der auf die verbundene Liste hinweist, und die Identifikationsinformationen der zwei in Frage kommenden Elemente werden, wie oben beschrieben, in den jeweiligen Speicherzonen des Indexteils 231 und des Listenteils 232 des Verzeichnisses 230 gespeichert. Ferner nehmen in dem Übereinstimmungsdetektionsteil 342 der Verzeichnissuchschaltung 230 die zwei Komparatorschaltungen 362a und 362b die Übereinstimmungsdetektion der zwei in Frage kommenden Elemente bezüglich des betrachteten Zeichenstrings vor.
- Deshalb ist es möglich, zwei in Frage kommende Elemente aus dem Verzeichnis 230 in einem Leseprozeß gleichzeitig zu lesen und die Übereinstimmungsdetektion der zwei in Frage kommenden Elemente bezüglich des betrachteten Zeichenstrings vorzunehmen.
- Des weiteren werden die Listen sukzessive durchsucht, indem das Lesesignal von der Zeitsteuerschaltung 344 dem Verzeichnis 230 bei jeder Lesezykluszeit τ zugeführt wird und indem der gelesene Zeiger dem Verzeichnis 230 als nächste Leseadresse zugeführt wird. Ferner werden der Übereinstimmungsdetektionsprozeß und der Verbindungsbestimmungsprozeß parallel zu dem Leseprozeß ausgeführt, indem der Übereinstimmungsdetektionsteil 342 und die NOR-Schaltung 343 unabhangig arbeiten.
- Daher ist es möglich, nach den verbundenen Listen zu suchen, ohne die Steuerung der MPU 201 zu erfordern, und der Leseprozeß kann mit dem Übereinstimmungsdetektionsprozeß und dem Verbindungsbestimmungsprozeß in der Form eines Pipeline- Prozesses ausgeführt werden. In diesem Fall können der Leseprozeß bezüglich der zwei in Frage kommenden Elemente und der Übereinstimmungsdetektionsprozeß in der oben beschriebenen Lesezykluszeit τ ausgeführt werden. Anders als beim herkömmlichen Verfahren, das die Steuerung der MPU für alle Prozesse benötigt, ist es daher möglich, die Zeit, die erforderlich ist, um nach den verbundenen Listen zu suchen, beträchtlich zu reduzieren.
- Deshalb ist es möglich, die Zeichenstrings aus dem Verzeichnis 230 mit hoher Geschwindigkeit unter Verwendung der einfachen Schaltung herauszusuchen, die in FIG. 9 gezeigt ist. Aus diesem Grund ist es möglich, die Zeit zu reduzieren, die benötigt wird, um den Suchprozeß bezüglich des Verzeichnisses 230 auszuführen, den Codierprozeß mit hoher Geschwindigkeit auszuführen, die Codiergeschwindigkeit ungefähr die Übertragungsgeschwindigkeit der Daten zu der Magnetplatteneinheit oder dergleichen erreichen zu lassen und die codierten Daten zu der Magnetplatteneinheit oder dergleichen in Echtzeit zu übertragen.
- Die Verzeichnissuchschaltung 240 hat, wie in FIG. 9 gezeigt, eine einfache Schaltungskonstruktion. und wird die Hardware des Datenkomprimierungssystems nicht sehr erweitern. Des weiteren braucht die MPU 201 in Abhängigkeit von den Ausgaben des Übereinstimmungsdetektionsteils 342 und der NOR-Schaltung 343 bloß den oben beschriebenen Unterbrechungsprozeß auszuführen und braucht nicht mit besonders hoher Geschwindigkeit zu arbeiten.
- Die obige Beschreibung betrifft den Fall, wenn diese Ausführungsform auf das Datenkomprimierungssystem angewendet wird. Jedoch ist diese Ausführungsform, das heißt, die vorliegende Erfindung, auf irgendein System anwendbar, bei dem das offene Hashing-Verfahren verwendet wird, um Informationen aus einem Verzeichnis herauszusuchen, das eine Baumstruktur hat.
- Weiterhin ist die Anzahl von in Frage kommenden Elementen, die in jeder Speicherzone des Indexteils 231 und des Listenteils 232 des Verzeichnisses 230 gespeichert sind, nicht auf jene der Ausführungsform begrenzt, und es ist natürlich möglich, drei oder mehr in Frage kommende Elemente zu speichern. In diesem Fall ist der Identifikationsinformationsteil durch Vorsehen einer Anzahl von Referenznummerteilen und einer Anzahl von Zeichenteilen gebildet, deren Anzahlen jeweilig der Anzahl der gespeicherten in Frage kommenden Elemente entsprechen. Ferner kann eine Binärzahl, die die Anzahl von gespeicherten in Frage kommenden Elemente bezeichnet, als Flag verwendet werden.
- Des weiteren ist die vorliegende Erfindung nicht auf diese Ausführungsformen begrenzt, sondern verschiedene Veränderungen und Abwandlungen können vorgenommen werden, ohne den Schutzumfang der vorliegenden Erfindung zu verlassen.
Claims (11)
1. Verzeichnissuchsystem zum Heraussuchen eines
Zeichenstrings, der durch eine Eingangsreferenznummer
beschrieben ist, und zum Heraussuchen von Zeichen aus einer Vielzahl
von untereinander verschiedenen Zeichenstrings, die in einem
Verzeichnis in Entsprechung zu Referenznummern, die den
Zeichenstrings zugeordnet sind, registriert sind, dadurch
gekennzeichnet, daß das Verzeichnissuchsystem umfaßt:
ein Verzeichnis (110), das einen Indexteil (111)
und einen Listenteil (112) enthält, welcher Indexteil (111)
in Entsprechung zu den Referenznummern eine Referenznummer
speichert, die einem neuen Zeichenstring zugeordnet ist, der
erhalten wird, indem ein Zeichen zu dem Zeichenstring
hinzugefügt wird, dem die Eingangsreferenznummer zugeordnet ist,
welcher Listenteil (112) in Entsprechung zu den
Referenznummern eine Referenznummer speichert, die einem der
Zeichenstrings zugeordnet ist, die ein letztes Zeichen haben, das
sich von jenem des Zeichenstrings unterscheidet, dem die
Eingangsreferenznummer zugeordnet ist, und das hinzugefügte
Zeichen;
ein Lesemittel (121), das mit dem Verzeichnis
gekoppelt ist, zum Lesen zuerst von Informationen aus dem
Indexteil durch Spezifizieren der Eingangsreferenznummer und
zum Lesen danach von Informationen aus dem Listenteil durch
Spezifizieren der Referenznummer, die aus dem Verzeichnis
gelesen wurde;
ein Detektionsmittel (122), das mit dem
Verzeichnis gekoppelt ist, zum Detektieren jedes Zeichens, das mit
den Eingangszeichen übereinstimmt, von den Zeichen, die aus
dem Verzeichnis gelesen wurden, und zum Ausgeben eines
Resultats dieser Detektion als Suchresultat; und
ein Bestimmungsmittel (123), das mit dem
Verzeichnis gekoppelt ist, zum Bestimmen dessen, ob eine
Referenznummer in einer Ausgabe des Verzeichnisses enthalten ist
oder nicht, und zum Ausgeben eines Resultats dieser
Detektion als Suchresultat,
welches Lesemittel, welches Detektionsmittel und
welches Bestimmungsmittel unabhängig voneinander arbeiten.
2. Verzeichnissuchsystem nach Anspruch 1, dadurch
gekennzeichnet, daß das Lesemittel (121) einen Leseprozeß
ausführt, bei dem Informationen aus dem Verzeichnis (110) in
vorbestimmten Zeitabständen gelesen werden, und das
Detektionsmittel (122) und das Bestimmungsmittel (123) jeweilig
Detektions- und Bestimmungsprozesse parallel zu dem
Leseprozeß des Lesemittels ausführen.
3. Verzeichnissuchsystem nach Anspruch 2, dadurch
gekennzeichnet, daß die Prozesse des Lesemittels (121), des
Detektionsmittels (122) und des Bestimmungsmittels (123) als
Pipeline-Prozeß ausgeführt werden.
4. Verzeichnissuchsystem nach irgendeinem der
Ansprüche 1 bis 3, dadurch gekennzeichnet, daß das Suchresultat,
das von dem Detektionsmittel (122) ausgegeben wird, angibt,
daß ein Zeichenstring, der dem Eingangszeichenstring
entspricht, in dem Verzeichnis (110) gefunden ist, wenn die
Zeichen, die aus dem Verzeichnis gelesen wurden, mit den
Eingangszeichen übereinstimmen.
5. Verzeichnissuchsystem nach irgendeinem der
Ansprüche 1 bis 4, dadurch gekennzeichnet, daß das Suchresultat,
das von dem Bestimmungsmittel (123) ausgegeben wird, angibt,
daß kein Zeichenstring, der dem Eingangszeichenstring
entspricht, in dem Verzeichnis (110) registriert ist, wenn
wenigstens einer des Indexteils und des Listenteils keine
Referenznummer speichert, die der Eingangsreferenznummer
entspricht.
6. Verzeichnissuchsystem zum Heraussuchen eines
Zeichenstrings, der durch eine Eingangsreferenznummer
beschrieben ist, und zum Heraussuchen von Zeichen aus einer Vielzahl
von untereinander verschiedenen Zeichenstrings, die in einem
Verzeichnis in Entsprechung zu Referenznummern, die den
Zeichenstrings zugeordnet sind, registriert sind, dadurch
gekennzeichnet, daß das Verzeichnissuchsystem umfaßt:
ein Verzeichnis (110), das einen Indexteil (111)
und einen Listenteil (112) enthält, welcher Indexteil (111)
in Entsprechung zu den Referenznummern
Identifikationsinformationen speichert, die einem von in Frage kommenden
Zeichenstrings entsprechen, die erhalten werden, indem ein
Zeichen zu dem Zeichenstring hinzugefügt wird, dem die
Eingangsreferenznummer zugeordnet ist, und Zeiger, die
Speicherstellen von anderen in Frage kommenden
Zeichenstrings kennzeichnen, welcher Listenteil (112)
Identifikationsinformationen speichert, die einem von in Frage kommenden
Zeichenstrings entsprechen, die ein letztes Zeichen haben,
das sich von jenem des Zeichenstrings unterscheidet, dem die
Eingangsreferenznummer zugeordnet ist, und Zeiger, die
Speicherstellen von anderen in Frage kommenden
Zeichenstrings kennzeichnen;
ein Lesemittel (121), das mit dem Verzeichnis
gekoppelt ist, zum Lesen zuerst des Zeigers und der
Identifikationsinformationen aus dem Indexteil auf der Basis der
Eingangsreferenznummer und zum Lesen danach des Zeigers und
der Identifikationsinformationen aus dem Listenteil durch
Spezifizieren des Listenteils durch den Zeiger, der aus dem
Verzeichnis gelesen wurde;
ein Detektionsmittel (122), das mit dem
Verzeichnis gekoppelt ist und ein Komparatormittel (124) enthält,
zum Vergleichen jeder Identifikationsinformation, die aus
dem Verzeichnis gelesen wurde, mit den Eingangszeichen, zum
Detektieren jedes Zeichens, das mit den Eingangszeichen
übereinstimmt, von dem in Frage kommenden Zeichenstring, der
aus dem Verzeichnis gelesen wurde, und zum Ausgeben eines
Resultats dieser Detektion als Suchresultat; und
ein Bestimmungsmittel (123), das mit dem
Verzeichnis gekoppelt ist, zum Bestimmen dessen, ob ein ungelesener
in Frage kommender Zeichenstring in dem Verzeichnis
existiert oder nicht, auf der Basis des Zeigers, der aus dem
Verzeichnis gelesen wurde, und zum Ausgeben eines Resultats
dieser Detektion als Suchresultat,
welches Lesemittel, welches Detektionsmittel und
welches Bestimmungsmittel unabhängig voneinander arbeiten.
7. Verzeichnissuchsystem nach Anspruch 6, dadurch
gekennzeichnet, daß das Lesemittel (121) einen Leseprozeß
ausführt, bei dem Informationen aus dem Verzeichnis (110) in
vorbestimmten Zeitabständen gelesen werden, und das
Detektionsmittel (122) und das Bestimmungsmittel (123) jeweilig
Detektions- und Bestimmungsprozesse parallel zu dem
Leseprozeß des Lesemittels ausführen.
8. Verzeichnissuchsystem nach Anspruch 7, dadurch
gekennzeichnet, daß die Prozesse des Lesemittels (121), des
Detektionsmittels (122) und des Bestimmungsmittels (123) in
Form einer Pipeline-Verarbeitung ausgeführt werden.
9. Verzeichnissuchsystem nach irgendeinem der
Ansprüche 6 bis 8, dadurch gekennzeichnet, daß die
Identifikationsinformationen die Referenznummer des in Frage kommenden
Zeichenstrings und das letzte Zeichen des in Frage kommenden
Zeichenstrings enthalten.
10. Verzeichnissuchsystem nach irgendeinem der
Ansprüche 6 bis 9, dadurch gekennzeichnet, daß der Listenteil
(112) eine Vielzahl von Listen (112) enthält, die jeweilig
wenigstens einen in Frage kommenden Zeichenstring speichern,
und das Komparatormittel (124) eine Vielzahl von
Komparatoren
(124) enthält, zum gleichzeitigen Vornehmen der
Übereinstimmungsdetektion für jeden der in Frage kommenden
Zeichenstrings, die aus den Listen gelesen wurden.
11. Verzeichnissuchsystem nach Anspruch 10, dadurch
gekennzeichnet, daß die Listen (112) des Listenteils (112)
innerhalb des Verzeichnisses (110) jeweilig Listen
entsprechen, die durch ein offenes Hashing-Verfahren verwendet
werden.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2209566A JP2772124B2 (ja) | 1990-08-06 | 1990-08-06 | 辞書検索方式 |
JP2211295A JP2772125B2 (ja) | 1990-08-08 | 1990-08-08 | 辞書検索方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69128053D1 DE69128053D1 (de) | 1997-12-04 |
DE69128053T2 true DE69128053T2 (de) | 1998-02-26 |
Family
ID=26517534
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69128053T Expired - Fee Related DE69128053T2 (de) | 1990-08-06 | 1991-08-05 | Wörterbuch-Suchsystem |
Country Status (3)
Country | Link |
---|---|
US (1) | US5136289A (de) |
EP (1) | EP0470798B1 (de) |
DE (1) | DE69128053T2 (de) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5245614A (en) * | 1991-04-29 | 1993-09-14 | Codex Corporation | Vocabulary memory allocation for adaptive data compression of frame-multiplexed traffic |
US5485526A (en) * | 1992-06-02 | 1996-01-16 | Hewlett-Packard Corporation | Memory circuit for lossless data compression/decompression dictionary storage |
US5424732A (en) * | 1992-12-04 | 1995-06-13 | International Business Machines Corporation | Transmission compatibility using custom compression method and hardware |
US5392036A (en) * | 1993-10-28 | 1995-02-21 | Mitan Software International (1989) Ltd. | Efficient optimal data recopression method and apparatus |
JP3278297B2 (ja) * | 1994-07-20 | 2002-04-30 | 富士通株式会社 | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 |
US5778371A (en) * | 1994-09-13 | 1998-07-07 | Kabushiki Kaisha Toshiba | Code string processing system and method using intervals |
US7190284B1 (en) | 1994-11-16 | 2007-03-13 | Dye Thomas A | Selective lossless, lossy, or no compression of data based on address range, data type, and/or requesting agent |
US5715446A (en) * | 1995-05-22 | 1998-02-03 | Matsushita Electric Industrial Co., Ltd. | Information searching apparatus for searching text to retrieve character streams agreeing with a key word |
US5774588A (en) * | 1995-06-07 | 1998-06-30 | United Parcel Service Of America, Inc. | Method and system for comparing strings with entries of a lexicon |
JP3273119B2 (ja) * | 1995-09-29 | 2002-04-08 | 京セラ株式会社 | データ圧縮・伸長装置 |
US5805086A (en) * | 1995-10-10 | 1998-09-08 | International Business Machines Corporation | Method and system for compressing data that facilitates high-speed data decompression |
US5778255A (en) * | 1995-10-10 | 1998-07-07 | International Business Machines Corporation | Method and system in a data processing system for decompressing multiple compressed bytes in a single machine cycle |
US5926811A (en) * | 1996-03-15 | 1999-07-20 | Lexis-Nexis | Statistical thesaurus, method of forming same, and use thereof in query expansion in automated text searching |
US5903651A (en) * | 1996-05-14 | 1999-05-11 | Valicert, Inc. | Apparatus and method for demonstrating and confirming the status of a digital certificates and other data |
US6901509B1 (en) | 1996-05-14 | 2005-05-31 | Tumbleweed Communications Corp. | Apparatus and method for demonstrating and confirming the status of a digital certificates and other data |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
JP4242970B2 (ja) * | 1998-07-09 | 2009-03-25 | 富士通株式会社 | データ圧縮方法及びデータ圧縮装置 |
JP3566111B2 (ja) * | 1998-11-30 | 2004-09-15 | 松下電器産業株式会社 | 記号辞書作成方法及び記号辞書検索方法 |
US7039637B2 (en) * | 1998-12-31 | 2006-05-02 | International Business Machines Corporation | System and method for evaluating characters in an inputted search string against a character table bank comprising a predetermined number of columns that correspond to a plurality of pre-determined candidate character sets in order to provide enhanced full text search |
US7031002B1 (en) | 1998-12-31 | 2006-04-18 | International Business Machines Corporation | System and method for using character set matching to enhance print quality |
US7129860B2 (en) * | 1999-01-29 | 2006-10-31 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US6208273B1 (en) * | 1999-01-29 | 2001-03-27 | Interactive Silicon, Inc. | System and method for performing scalable embedded parallel data compression |
US6822589B1 (en) | 1999-01-29 | 2004-11-23 | Quickshift, Inc. | System and method for performing scalable embedded parallel data decompression |
US7191114B1 (en) | 1999-08-27 | 2007-03-13 | International Business Machines Corporation | System and method for evaluating character sets to determine a best match encoding a message |
JP4114600B2 (ja) * | 2003-12-02 | 2008-07-09 | 日本電気株式会社 | 可変長文字列検索装置及び可変長文字列検索方法並びにプログラム |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4814746A (en) * | 1983-06-01 | 1989-03-21 | International Business Machines Corporation | Data compression method |
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
GB2172127B (en) * | 1985-03-06 | 1988-10-12 | Ferranti Plc | Data compression system |
US4881075A (en) * | 1987-10-15 | 1989-11-14 | Digital Equipment Corporation | Method and apparatus for adaptive data compression |
US4876541A (en) * | 1987-10-15 | 1989-10-24 | Data Compression Corporation | Stem for dynamically compressing and decompressing electronic data |
US5058137A (en) * | 1989-07-31 | 1991-10-15 | North American Philips Corporation | Lempel-Ziv decoder |
US5049881A (en) * | 1990-06-18 | 1991-09-17 | Intersecting Concepts, Inc. | Apparatus and method for very high data rate-compression incorporating lossless data compression and expansion utilizing a hashing technique |
-
1991
- 1991-08-05 DE DE69128053T patent/DE69128053T2/de not_active Expired - Fee Related
- 1991-08-05 EP EP91307188A patent/EP0470798B1/de not_active Expired - Lifetime
- 1991-08-06 US US07/740,912 patent/US5136289A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5136289A (en) | 1992-08-04 |
EP0470798A2 (de) | 1992-02-12 |
DE69128053D1 (de) | 1997-12-04 |
EP0470798A3 (en) | 1993-04-07 |
EP0470798B1 (de) | 1997-10-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69128053T2 (de) | Wörterbuch-Suchsystem | |
DE69508796T2 (de) | Lzw datenkomprimierung mit einem assoziativspeicer | |
DE68924138T2 (de) | Daten-kompressions/dekompressionsanordnung. | |
DE3852341T2 (de) | Zeichenverarbeitungssystem mit Funktion zur Prüfung von Rechtschreibung. | |
DE69704362T2 (de) | Datenkompressions-/dekompressionssystem anhand sofortiger zeichenfolgensucheverschachtelter wörterbuchaktualisierung | |
DE68907812T2 (de) | Verfahren und Vorrichtung zur Kodierung, Dekodierung und Übertragung von Daten in komprimierter Form. | |
DE69421966T2 (de) | Verfahren und System zum Suchen komprimierter Daten | |
DE60318722T2 (de) | Eine programmierbare regelverarbeitungsvorrichtung für hochgeschwindigkeits-kontextsuchen und -erkennung von mustern in daten | |
DE3750492T2 (de) | Datenbanksystem für Parallelprozessor. | |
DE69032693T2 (de) | Suchverfahren zum Identifizieren des nächstgleichen Datensatzes eines Datenbankverzeichnisses | |
DE69413347T2 (de) | Auf die Bytegrenze ausgerichtete Datenkomprimierung | |
DE69033517T2 (de) | Suchvorgang innerhalb einer Datenbasis durch komprimierte Präfixassoziation | |
DE3689357T2 (de) | Digitaler Lese-/Schreibspeicher. | |
DE69318064T2 (de) | Verfahren und Vorrichtung zur Verwaltung von mehreren Wörterbüchern zur Datenkomprimierung mit Inhaltsadressierung | |
DE69130715T2 (de) | Verfahren und Gerät zur Übertragung von Daten zwischen heterogenen Datenbanksystemen | |
DE69026764T2 (de) | Verfahren zur Datenübertragung mit hoher Geschwindigkeit | |
DE69229521T2 (de) | Datenbankauffindungssystem | |
DE3854481T2 (de) | Datenverarbeitungsverfahren in einem dezentralisierten Verarbeitungssystem. | |
DE69132356T2 (de) | Verfahren und Gerät zur Zeigerkompression in strukturierten Datenbanken | |
DE602004010922T2 (de) | Speicher und stromeffizienter mechanismus für schnelles tabellennachschlagen | |
DE69535118T2 (de) | Verfahren zur Datenkomprimierung und -dekomprimierung und zugehöriges Datenkomprimierungs- und -dekomprimierungsgerät | |
DE3650156T2 (de) | Auf regeln basiertes datenwiederauffindverfahren und anordnung. | |
DE3545125C2 (de) | ||
DE69123660T2 (de) | Datenkompressionsmethode und Gerät | |
DE2346525A1 (de) | Virtuelle speichereinrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |