DE69333422T2 - Auffindung von Zeichenketten in einer Datenbank von Zeichenketten - Google Patents

Auffindung von Zeichenketten in einer Datenbank von Zeichenketten Download PDF

Info

Publication number
DE69333422T2
DE69333422T2 DE69333422T DE69333422T DE69333422T2 DE 69333422 T2 DE69333422 T2 DE 69333422T2 DE 69333422 T DE69333422 T DE 69333422T DE 69333422 T DE69333422 T DE 69333422T DE 69333422 T2 DE69333422 T2 DE 69333422T2
Authority
DE
Germany
Prior art keywords
original
string
strings
index
finding
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 - Lifetime
Application number
DE69333422T
Other languages
English (en)
Other versions
DE69333422D1 (de
Inventor
Andrea Califano
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69333422D1 publication Critical patent/DE69333422D1/de
Publication of DE69333422T2 publication Critical patent/DE69333422T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/10Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • Y10S707/967Peer-to-peer
    • Y10S707/968Partitioning

Description

  • 1. GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das Gebiet der Suche nach Zeichenketten (Zeichenfolgen) in einer Datenbank. Insbesondere werden gemäß der Erfindung Zeichenketten in einer Datenbank gefunden, die einer vorgegebenen Referenz-Zeichenkette ähnlich oder identisch sind.
  • 2. BESCHREIBUNG DES STANDS DER TECHNIK
  • Es gibt zahlreiche herkömmliche Verfahren, um eine in einer Datenbank mit vielen Zeichenketten vorkommende bestimmte Zeichenfolge, die auch als Referenz-Zeichenfolge oder Referenz-Zeichenkette bezeichnet wird, zu finden. (Ein Zeichen ist ein Symbol wie beispielsweise ein Buchstabe, ein Wort, ein Klang, ein Bitmuster oder eine andere Beschreibungsform, die im vorliegenden Fall in einer Folge anderer Zeichen auftreten kann.) Einige dieser Verfahren sind zur Ausführung spezieller Tasks entwickelt worden, z. B. zum Auffinden einer genauen oder ähnlichen Folge spezieller Zeichen wie z. B. von Nukleotiden (oder Aminosäuren) in einer langen Kette von Nukleotiden (oder Aminosäuren), aus denen ein DNA-Molekül (oder Proteinmolekül) besteht. (Zwei Zeichenfolgen sind einander ähnlich, wenn sie durch Insertion, Deletion oder Änderung einer Anzahl von Zeichen identisch gemacht werden können, die kleiner als eine vorgegebene Anzahl von Zeichen in einer der Zeichenfolgen ist.) Einige dieser herkömmlichen Vergleichsverfahren sind: der Needlemann-Wunsch-Algorithmus oder die ursprünglichen Wilbur-Lipman-Algorithmen FASTA, FASTP und BLAST.
  • Der Needlemann-Wunsch-Algorithmus ist ein dynamisches Programmierverfahren. Alle in den beiden zu vergleichenden Zeichenfolgen enthaltenen Zeichen werden paarweise untersucht, um alle Zuordnungsmöglichkeiten zwischen den beiden Zeichenketten zu berechnen. Den Deletionen, Insertionen und Änderungen wird ein Aufwandswert zugewiesen. Dann wird diejenige Zuordnung gewählt, welche den geringsten Wert des Gesamtaufwands aufweist. Da die erforderliche Rechenleistung dem Produkt der Längen beider zu vergleichender Zeichenfolgen proportional ist, ist dieses Verfahren sehr aufwändig.
  • Der Wilbur-Lipman-Algorithmus vergleicht zusammenhängende Tupel geringer Länge in der Original-Zeichenkette und in der Referenz-Zeichenkette miteinander. Die Tupel werden mittels einer Referenztabelle, die anhand der Referenz-Zeichenkette erstellt wurde, für die beiden Zeichenketten verglichen. Für jeden Vergleich wird eine Bewertungszahl berechnet und dann die beste Bewertungszahl gewählt. Deshalb wird jedes Mal eine neue Referenztabelle erstellt, wenn eine neue Referenz-Zeichenfolge mit der Datenbank verglichen werden soll. Da der gesamte Satz Original-Zeichenketten mit der Referenztabelle verglichen werden muss, verdoppelt sich die zum Vergleich mit einer Datenbank von insgesamt 2N Nukleotiden oder Aminosäuren erforderliche Rechenleistung gegenüber dem Vergleich mit einer Datenbank von lediglich N Nukleotiden oder Aminosäuren. Mit anderen Worten, die Anzahl der Vergleiche mit der Referenztabelle ist mindestens gleich der Gesamtanzahl der in allen Original-Zeichenketten vorhandenen Nukleotide (Aminosäuren).
  • Die Algorithmen FASTP und FASTA stellen Verbesserungen des ursprünglichen WILBUR-LIPMAN-Verfahrens dar. Durch eine Austauschmatrix zur Bewertung der Vergleichsoperationen wird eine höhere Empfindlichkeit erreicht. Während der Evolution oft vorkommende Mutationen (Deletionen, Insertionen und Nukleotidaustausch) erhalten eine höhere Bewertungszahl als seltener vorkommende Mutationen. Hierbei handelt es sich jedoch immer noch um einen sequenziellen Ansatz.
  • Das BLAST-Verfahren unternimmt erst dann einen kompletten Vergleich zwischen der Original- und der Referenz-Zeichenkette, wenn diese in einem sehr schnell durchzuführenden Vortest eine Mindestähnlichkeit aufweisen. Bei diesem Test wird heuristisch ermittelt, ob die Länge des MSP (maximal segment pair, größtes Segmentpaar) einen bestimmten Schwellenwert überschreitet. Das MSP ist dasjenige Paar identischer Teilzeichenketten in der Referenz-Zeichenkette und der Original-Zeichenkette, welches die beste Mutations-Bewertungszahl aufweist. Wenn dieser Test erfolgreich bestanden wurde, erfolgt mittels der Algorithmen vom Typ FASTP-FASTA eine umfassendere und aufwändigere Ähnlichkeitsanalyse. Hierdurch wird der Rechenaufwand verringert und gleichzeitig in Kauf genommen, dass einige Übereinstimmungstreffer unberücksichtigt bleiben, welche die Ausgangskriterien nicht erfüllen. Etwa 20% der durch den Needleman-Wunsch-Algorithmus gefundenen Übereinstimmungen werden durch BLAST nicht erfasst. Außerdem bleibt dieser Ansatz in seinem Wesen sequenziell, da für jede Zeichenkette aus der Menge der Original-Zeichenketten eine Berechnung durchgeführt werden muss.
  • p3. BESCHREIBUNG DER PROBLEME NACH DEM STAND DER TECHNIK
  • Mit den derzeitigen Verfahren war es möglich, zwei Zeichenketten (wobei es sich bei den Zeichen speziell um Nukleotide oder Aminosäuren handelt) eins zu eins, d. h. sequenziell, ohne großen Aufwand miteinander zu vergleichen. Beim Stand der Technik ist es jedoch oft schwierig, alle oder zumindest die meisten möglichen Übereinstimmungen einer Referenz-Zeichenfolge in einer Datenbank mit Original- Zeichenketten zu finden, ohne Berechnungen an allen oder fast allen Zeichen der Original-Zeichenfolgen durchzuführen. Beim gegenwärtigen Stand der Computertechnik lassen sich diese Aufgaben in sehr großen Datenbanken nur mit einem unvertretbar hohen Zeitaufwand ausführen.
  • Deshalb besteht seit langem ein Bedarf an einem indexierten Verfahren zur Ermittlung einer annähernden oder genauen Übereinstimmung zwischen einer Referenz-Zeichenkette und einer Zeichenfolge in einer oder mehreren Original-Zeichenketten in sehr großen Datenbanken. Außerdem wird gefordert, die Lage dieser ähnlichen oder identischen Zeichenfolgen in den Original-Zeichenketten und den Grad ihrer Übereinstimmung mit einer Referenz-Zeichenkette schnell und mit geringem Aufwand zu ermitteln. Insbesondere besteht auf dem Gebiet der Genomkartierung seit langem der Wunsch nach einem Verfahren, welches mittels der neuesten Rechentechnik Übereinstimmungen zwischen den Nukleotidsequenzen in einer Datenbank mit bis zu 4 Milliarden Nukleotiden nachweisen kann.
  • Die Verfahren nach dem Stand der Technik sind nicht in der Lage, die Lage von Zeichenfolgen in Original-Zeichenketten großer Datenbanken schnell und ohne großen Aufwand zu ermitteln, wenn sie nach einer Übereinstimmung mit einer Referenz-Zeichenkette suchen. Das liegt daran, dass die Verfahren nach dem Stand der Technik bei der Vergleichsprozedur die gesamte Datenbank der Original-Zeichenketten durchsuchen müssen. Die Verfahren nach dem Stand der Technik müssen auf der Suche nach passenden Zeichenketten die gesamte Datenbank durchsuchen, da sie nicht in der Lage sind, ein Indexierungsverfahren bereitzustellen, welches nur diejenigen Original-Zeichenketten schnell und genau ausfindig macht, in denen mögliche passende Zeichenfolgen enthalten sind.
  • ZIELE DER ERFINDUNG
  • Ein Ziel der vorliegenden Erfindung besteht in der Bereitstellung eines verbesserten Verfahrens zum Auffinden von Zeichenfolgen, die einer Referenz-Zeichenfolge in einer oder mehreren Original-Zeichenketten in einer Datenbank mit einer oder mehreren Original-Zeichenketten identisch oder ähnlich sind.
  • Ein weiteres Ziel der vorliegenden Erfindung besteht in der Bereitstellung eines verbesserten Verfahrens zum Auffinden von Zeichenfolgen mittels Indexierungs- und Hashverfahren, die einer Referenz-Zeichenfolge in Original-Zeichenketten in einer Datenbank mit einer oder mehreren Original-Zeichenketten identisch oder ähnlich sind.
  • Ein weiteres Ziel der vorliegenden Erfindung besteht in der Bereitstellung eines verbesserten Verfahrens zum Auffinden von Nukleotidsequenzen (oder Aminosäuresequenzen), die mit einer Referenz-Nukleotidsequenz (oder Referenz-Aminosäuresequenz) in einer Datenbank identisch oder dieser ähnlich sind, welche eine Vielzahl von Original-Nukleotidketten (oder Original-Aminosäureketten) enthält, welche ein DNA-Molekül (oder ein Proteinmolekül) darstellen.
  • Ferner besteht ein Ziel der vorliegenden Erfindung in der Bereitstellung eines verbesserten Verfahrens zur Spracherkennung durch Auffinden von Phonemfolgen, die einer Referenz-Phonemfolge in einer Datenbank mit Original-Sprachphonemfolgen ähnlich sind.
  • Ein weiteres Ziel der vorliegenden Erfindung besteht in der Bereitstellung eines verbesserten Verfahrens zur Musikerkennung durch Auffinden von Notenfolgen, die einer Referenz-Notenfolge in einer Datenbank mit Original-Notenfolgen ähnlich sind.
  • ÜBERBLICK ÜBER DIE ERFINDUNG
  • Die Erfindung gemäß den beiliegenden Ansprüchen stellt ein Verfahren und ein System bereit, welches in der Lage ist, das vorkommen einer Zeichenfolge in einer oder mehreren Original-Zeichenketten in einer Datenbank mit Original-Zeichenketten zu finden, das einer anderen als Referenz-Zeichenfolge bezeichneten Zeichenfolge identisch oder ähnlich ist. Die Erfindung weist eine hohe Wahrscheinlichkeit auf, alle Fälle der Zeichenfolgen in den Original-Zeichenketten schnell und präzise aufzufinden, die mit der Referenz-Zeichenfolge ganz (identisch) oder fast genau übereinstimmen.
  • Für jede Original-Zeichenkette wird eine große Anzahl von Indizes erzeugt und zum Speichern eines die Original-Zeichenkette kennzeichnenden Datensatzes in einer Referenztabelle verwendet. Während der Erkennungsphase wird aus einer Referenz-Zeichenkette eine große Anzahl von Indizes gebildet. Diese dienen dazu, die Daten aus der Referenztabelle abzurufen und den Nachweis einer oder mehrerer Original-Zeichenketten abzuspeichern. Auf diese Weise kann die Verarbeitung zum großen Teil vor der Erkennungsphase stattfinden und somit die Erkennungszeit stark verkürzt werden.
  • Zur Bildung von Indizes bildet das Verfahren zuerst „Tupel". Hierzu werden aus einer Original-Zeichenfolge in der Datenbank zuerst eine Anzahl aus zusammenhängenden Zeichen bestehender Original-Teilzeichenfolgen ausgewählt. Die Länge jeder Original-Teilzeichenfolge dieses Satzes beträgt nur wenige Zeichen, mindestens jedoch ein Zeichen. Die Länge aller Teilzeichenfolgen des Satzes kann eine fest vorgegebene Anzahl von Zeichen betragen. Die Länge einiger oder aller Teilzeichenfolgen des Satzes kann jedoch eine unterschiedliche Anzahl von Zeichen betragen. Unter Verwendung dieses Satzes von Original-Teilzeichenketten wird ein Satz von Tupeln gebildet. Mindestens ein Tupel dieses Satzes wird durch Zusammenfügen mindestens zweier verschiedener, nicht zusammenhängender Teilzeichenfolgen des Satzes gebildet. (Andere Teilzeichenfolgen dieses Tupels oder in dem Satz von Tupeln können zusammenhängend oder nicht zusammenhängend sein.) Diese Tupel werden auch als „j-Tupel" bezeichnet, wobei j die Anzahl der Original-Zeichenfolgen bedeutet, aus denen das Tupel gebildet wird. Die aus einer Original-Zeichenkette gebildeten Tupel heißen Originaltupel.
  • Dann wird ein eindeutiger Index erzeugt und auf Basis der Werte der in dem Tupel enthaltenen Zeichen jedem Tupel zugewiesen. Die den Originaltupeln zugewiesenen Indizes heißen Originalindizes. Üblicherweise werden die Originalindizes mittels eines Algorithmus aus den Werten der in den j-Tupeln enthaltenen Zeichen erzeugt und haben die Form eines Wertes wie zum Beispiel einer Zahl (normalerweise einer ganzen Zahl). Jeder Originalindex ist einer eindeutigen Zelle in einer Speicher-Referenzstruktur zugeordnet, üblicherweise einer Matrix. Der Index dient zur Identifizierung und/oder für den Zugriff auf eine zugehörige eindeutige Zelle in der Referenzstruktur. In der zum Index gehörenden Zelle der Referenzstruktur ist ein Datensatz gespeichert, der eine Original-Zeichenkette beschreibt, aus welcher das Tupel (und der Originalindex) erzeugt wurde. Eine Zelle ist in der Lage, entweder eine fest vorgegebene oder eine beliebige Anzahl dieser Datensätze zu speichern. Zum Beispiel kann ein in der Zelle gespeicherter Datensatz einen Verweis auf die Original-Zeichenkette enthalten. Dieser Verweis, der hier auch als Zeiger bezeichnet wird, stellt ein Mittel zur Kennzeichnung einer der Original-Zeichenketten dar. Man beachte, dass ein Verweis als Zeiger (die Speicheradresse) eines bestimmten Zeichens der Original-Zeichenkette oder als Index in einer Zeigertabelle oder nach einem anderen in der Technik bekannten Verfahren realisiert werden kann. Der Zeiger (Verweis) zeigt diejenige Original-Zeichenkette in der Datenbank an, von welcher das durch den Originalindex eindeutig definierte Originaltupel abgeleitet wurde. Die Referenzstruktur kann auch weitere als Verschiebungswert bezeichnete Daten enthalten, welche die Position des (zur Erzeugung des Indexes verwendeten) Tupels in der Original-Zeichenkette angibt. Zu diesen Positionsdaten können gehören: 1. eine Verschiebung von einer bestimmten Position (Zeichen) der Original-Zeichenkette zum ersten Zeichen der ersten Original-Teilzeichenkette, die zur Bildung des Tupels dient oder 2. eine Verschiebung, die gleich der mittleren Position des ersten Zeichens aller Original-Teilzeichenketten ist, welche das Tupel bilden oder 3. eine andere Verschiebung, die aus der Position mehrerer Zeichen in einer oder mehreren Original-Teilzeichenketten berechnet werden kann.
  • Nach der Verarbeitung aller gewünschten Original-Zeichenketten wird die Referenz-Zeichenfolge mit den Original-Zeichenketten verglichen. Hierzu werden mittels der oben beschriebenen oder einer ähnlichen Prozedur aus einer Referenz-Zeichenfolge Referenztupel und deren eindeutig kennzeichnende Referenzindizes gebildet.
  • Die Referenzindizes werden unter Verwendung der oben beschriebenen Referenzstruktur mit den Originalindizes verglichen. Ein Referenzindex dient dazu, auf eine Zelle in der Referenzstruktur zu zeigen. Wenn dieser Referenzindex auf eine Zelle zeigt, welche einen oder mehrere Datensätze für Original-Zeichenketten enthält, erhält man eine oder mehrere passende Übereinstimmungen. Wenn der Referenzindex auf eine Zelle ohne Daten zeigt, erhält man keine Übereinstimmung.
  • Für jede in der durch den Referenzindex indexierten Zelle gespeicherten Datensatz wird ein Zählwert in einer zweiten Datenstruktur mit der Bezeichnung Nachweis-Sammeltabelle EIT (Evidence Integration Table) gespeichert, die zur Erfassung der Anzahl der Übereinstimmungen für eine bestimmte Original- Zeichenkette dient. Üblicherweise ist dies eine Hash-Tabelle. In dieser zweiten Struktur adressierte Zellen entsprechen Hypothesen über Original-Zeichenketten, die mit der Referenz-Zeichenkette übereinstimmen. Die Zellen enthalten auch einen Wert, der anzeigt, wie oft eine Hypothese gezählt wurde. Zum Beispiel entsprechen die Zählwerteinträge in einer Zählzelle in dieser zweiten Struktur den Zählwerten bestimmter Zeichenketten in der Ausgangs-Datenbank. Je ähnlicher die Referenz-Zeichenfolge einer Zeichenfolge in einer Original-Zeichenkette in der Datenbank ist, desto höher ist die Wahrscheinlichkeit, dass zwischen den Referenzindizes der Referenz-Zeichenfolge und den Originalindizes der Original-Zeichenkette mehr Übereinstimmungen vorkommen. Die Zählzellen in der zweiten Speicherstruktur, welche Original-Zeichenketten entsprechen, die den Referenz-Zeichenketten ähnlich oder identisch sind, weisen eine relativ hohe Anzahl von Zählwerten auf. Umgekehrt ist die Wahrscheinlichkeit der Übereinstimmung zwischen den Referenzindizes und den Originalindizes, die jedem aus der Original-Zeichenkette gebildeten Tupel eindeutig zugeordnet sind, umso geringer, je weniger die Referenz-Zeichenfolge mit den Zeichenfolgen in der Original-Zeichenkette übereinstimmt. Zählzellen in der EIT, die diesen Fällen entsprechen, enthalten nur wenige oder überhaupt keine Zählwerte. Deshalb weist die Anzahl der Zählwerte in jeder Zählzelle der EIT eine direkte Korrelation zum Übereinstimmungsgrad zwischen der durch die Zelle dargestellten Original-Zeichenkette und der Referenz-Zeichenfolge auf.
  • Und schließlich dienen die Daten der EIT dazu, die Position derjenigen Zeichenfolgen in einer Original-Zeichenkette in der Datenbank anzugeben, die der Referenz-Zeichenfolge (genau oder annähernd) entsprechen. Zuerst werden Zellen der EIT mit einem Wert ausgewählt, der oberhalb eines vorgegebenen Schwellenwertes liegt. Dann werden mit einem oder mehreren zugehörigen Zeigern eine oder mehrere Original-Zeichenketten in der Datenbank gesucht. Und schließlich wird die übereinstimmende Zeichenfolge der Original-Zeichenkette mittels der zu dem ausgewählten Index bzw. zu den ausgewählten Indizes gehörenden Verschiebungswerte gefunden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Ablaufdiagramm des Gesamtverfahrens der Erfindung.
  • 2 zeigt eine Original-Zeichenkette und eine an der Position pi der Original-Zeichenkette beginnende Teilzeichenkette mit der Länge von l Zeichen.
  • 3 zeigt die bevorzugte Ausführungsart einer Referenzstruktur.
  • 4 zeigt eine alternative Ausführungsart einer Referenzstruktur.
  • 5 zeigt die bevorzugte Ausführungsart einer Nachweis-Sammeltabelle (EIT).
  • 6 ist ein Ablaufdiagramm eines Computerprogramms, das Originaltupel und Originalindizes erzeugt und die zugehörigen Datensätze in der Referenzstruktur speichert.
  • 7 ist ein Ablaufdiagramm des Computerprogramms, das Referenztupel und Referenzindizes erzeugt, die Referenzindizes mit den Originalindizes vergleicht und die EIT aktualisiert.
  • 8 ist eine Tabelle der verwendeten Symbole.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Das vorliegende Verfahren ist dazu vorgesehen, in Mehrzweckcomputern angewendet zu werden, die zur Ausführung der durch das Verfahren benötigten Hash- und Referenzfunktionen in der Lage sind. Der Computer benötigt auch ausreichend Speicherkapazität, um alle Zeichen der Original-Zeichenketten und die durch das Verfahren verwendeten Datenstrukturen zu speichern.
  • Das allgemeine Verfahren der Erfindung ist im Blockschaltbild von 1 gezeigt. Das Verfahren beginnt in Block 10 durch Auswählen einer Original-Zeichenkette 10 aus einer Datenbank. Dann wird die Zeichenkette in Block 15 in Teilzeichenketten mit zusammenhängenden Zeichen aufgeteilt, von denen mindestens zwei nicht zusammenhängend zusammengefügt sind, um in Block 20 Originaltupel zu bilden. Die Originaltupel dienen der Erzeugung von Originalindizes in Block 25, die dann in Block 30 zur Speicherung von Daten in einer Zelle der Referenzstruktur dienen, welche zum Index und zur Original-Zeichenkette gehören. Diese Prozedur wird in Block 32 für jede zu untersuchende Original-Zeichenkette der Datenbank wiederholt. Auf ähnliche Weise werden aus der Referenz-Zeichenfolge die Referenzindizes erzeugt. Insbesondere wird die Referenz-Zeichenfolge in Block 35 in Teilzeichenfolgen von zusammenhängenden Zeichen aufgeteilt, von denen mindestens zwei in Block 40 nicht zusammenhängend zusammengefügt werden, um Referenztupel zu bilden. Mittels desselben Verfahrens wie bei der Erzeugung von Originalindizes aus Originaltupeln werden in Block 45 Referenzindizes aus Referenztupeln erzeugt. Dann werden die Referenzindizes in Block 50 mit den Originalindizes verglichen. Die Anzahl der mit den Originalindizes übereinstimmenden Referenzindizes wird in Block 55 in einer Nachweis-Sammeltabelle (EIT) erfasst. Das Vergleichen und Erfassen kann so lange wiederholt werden, bis alle (oder ein Teil) der Referenzindizes mit den Originalindizes verglichen worden sind. Die Werte der gespeicherten Zahlen für die Übereinstimmung zwischen den Originalindizes und den Referenzindizes werden dann in Block 60 dazu verwendet, um diejenigen Original-Zeichenketten herauszufinden, die der Referenz-Zeichenkette am ähnlichsten sind. Weitere zum Originalindex gehörende Daten dienen in Block 65 zur Suche nach der Position derjenigen Zeichenfolge in der Original-Zeichenkette, welche fast oder ganz genau mit der Referenz-Zeichenfolge übereinstimmt. In Block 70 werden auf dieselbe Weise weitere Referenz-Zeichenketten verarbeitet und mit den Original-Zeichenketten verglichen.
  • Das Verfahren beginnt zunächst mit einer Datenbank mit Original-Zeichenketten X mit unterschiedlicher (oder gleicher) Zeichenanzahl. Üblicherweise sind diese Zeichenfolgen in einer zur Speicherung von Zeichenfolgen geeigneten Weise an einem Speicherplatz im Computerspeicher gespeichert. Zum Beispiel wird, wenn in der Datenbank eine große Anzahl von Proteinketten dargestellt werden soll, jedem der möglichen Aminosäurezeichen im Protein ein alphanumerisches Zeichen zugewiesen. Bei diesen Zeichen kann es sich um ASCII-Zeichen handeln. Jede Proteinkette wird dann durch eine ASCII-Zeichenkette in aufeinander folgenden Speicherplätzen des Computers dargestellt. Der Beginn einer Proteinkette kann durch einen Zeiger angezeigt werden, der auf das erste ASCII-Zeichen der Zeichenkette zeigt, und das Ende der Proteinkette kann durch einen Begrenzer wie etwa das Zeichen „0" angezeigt werden. Allgemein wird die Menge X der Original-Zeichenketten in der Datenbank durch X ≡ {χi; i = 1, ..., Nχ} dargestellt.
  • Anschließend wird jede Original-Zeichenkette χ in der Datenbank X in zwei oder mehrere Original-Teilzeichenketten mit zusammenhängenden Zeichen μ aufgeteilt. Zur Veranschaulichung zeigt 2 eine Original-Zeichenkette χ 200, in der jedes Zeichen 205 durch τ bezeichnet wird. Das Zeichen τi 207 bezeichnet das Zeichen τ an der Position i 220 der Original-Zeichenkette χ 200. 2 zeigt ferner, dass durch
    Figure 00130001
    eine Original-Teilzeichenkette zusammenhängender und aufeinander folgender Zeichen 210 aus der Original-Zeichenkette bezeichnet wird, die bei dem Zeichen an der Position 220 (pi) beginnt und eine Länge von l Zeichen 225 hat. Durch Aufteilen der Original-Zeichenkette wird eine Gruppe von Original-Teilzeichenketten 210 gebildet. Diese wird durch
    Figure 00130002
    dargestellt. Jede Original-Teilzeichenkette beginnt an einer Position pk der Original-Zeichenkette und hat jeweils eine Länge lk. Zum Beispiel ist die Original-Teilzeichenkette μ(5,14) eine Teilzeichenkette aus der Original-Zeichenkette, die an der fünften Position der Original-Zeichenkette beginnt und die folgenden 13 Zeichen der Original-Zeichenkette enthält, wodurch die Teilzeichenkette eine Länge von 14 Zeichen hat. In manchen Fällen ist die Länge lk einiger oder aller Original-Teilzeichenketten gleich der Länge anderer Original-Teilzeichenketten in dieser Gruppe. Eine Original-Teilzeichenkette muss eine Länge von mindestens einem Zeichen haben.
  • Eine Gruppe von K jeweils mit ξk bezeichneten Originaltupeln wird durch Zusammenfügen von j Original-Teilzeichenketten gebildet, wobei j gleich zwei oder größer ist. Mindestens eines der Tupel in dieser Gruppe wird durch Zusammenfügen von mindestens zwei nicht zusammenhängenden Original-Teilzeichenketten miteinander gebildet. An dieses Tupel können weitere zusammenhängende Teilzeichenketten angehängt werden. Andere Tupel in dieser Gruppe können auch durch Zusammenfügen zusammenhängender Teilzeichenketten miteinander gebildet werden (siehe Block 20 in 1). Dabei ist zu beachten, dass zwei Zeichenfolgen als zusammenhängend anzusehen sind, wenn das erste Zeichen der zweiten Teilzeichenkette auf das letzte Zeichen der ersten Teilzeichenkette in der Original-Zeichenkette folgt.
  • Ein durch eine Anzahl j von Original-Teilzeichenketten gebildetes Originaltupel wird als Original-j-Tupel bezeichnet. Ein j-Tupel der Länge L wird durch das Symbol ξ(j,L) dargestellt. Die Original-Teilzeichenketten im j-Tupel werden hier durch
    Figure 00140001
    beschrieben. Man beachte, dass die Länge der Original-Teilzeichenketten in manchen Fällen gleich sein kann.
  • Tupel können mittels einer Vielzahl von Algorithmen durch Aneinanderreihung von Teilzeichenketten gebildet werden, diese Algorithmen bilden jedoch im Wesentlichen zwei Gruppen, nämlich probabilistische und deterministische Algorithmen. Die mittels probabilistischer Algorithmen erzeugten Tupel unterliegen eher dem Zufall, d. h. bei Anwendung desselben Algorithmus auf dieselbe Gruppe von Original-Teilzeichenketten erhält man wahrscheinlich jedes Mal einen anderen Satz von Tupeln. Ein deterministischer Algorithmus hingegen erzeugt jedes Mal aus einer bestimmten Gruppe von Original-Teilzeichenketten denselben Satz von Tupeln.
  • Zum Beispiel wird ein probabilistischer Algorithmus dazu eingesetzt, um aus einer Gruppe von 17 Teilzeichenketten mit einer Länge von je zwei Zeichen einen Satz von Dreiertupeln (ein Tupel wird durch Zusammenfügen von 3 Teilzeichenketten gebildet) zu erzeugen. Der Algorithmus wählt zufällig eine der 17 Teilzeichenketten aus, dann eine der 16 restlichen Teilzeichenketten, dann eine der 15 restlichen Teilzeichenketten und fügt die drei ausgewählten Teilzeichenketten zusammen, um das erste Dreiertupel des Satzes zu bilden. Die Prozedur wird dann beliebig oft wiederholt, z. B. 100 Mal, bis 100 Dreiertupel gebildet sind. Sehr wahrscheinlich unterscheidet sich der erste Satz von 100 Dreiertupeln, die auf diese Weise aus einer Original-Zeichenkette (Teilzeichenketten) gebildet wurden, vom nächsten Satz von 100 Dreiertupeln, die wiederum mittels desselben Algorithmus aus derselben Original-Teilzeichenkette gebildet wurden. Ungeachtet dessen bildet diese Art von Algorithmus einen Satz von j-Tupeln, die durch die vorliegende Erfindung verwendet werden können.
  • Beim vorliegenden Verfahren stellt der deterministische Algorithmus den bevorzugten Algorithmus zur Erzeugung von Tupeln dar. Zum Beispiel wird ein deterministischer Algorithmus zur Erzeugung von Dreiertupeln aus 17 Original-Teilzeichenketten der Länge 2 verwendet, indem er die am 1., 5. und 9. Zeichen der Original-Zeichenkette beginnenden Teilzeichenketten an die am 3., 7, und 11. Zeichen der Original-Zeichenkette beginnenden Teilzeichenketten anfügt. Dieser einfache Algorithmus erzeugt einen Satz von Dreiertupeln, die jedes Mal wieder entstehen, wenn der Algorithmus auf dieselbe Original-Zeichenkette und dieselben Original-Teilzeichenketten angewendet wird. Anhand der vorliegenden Beschreibung kann ein Fachmann eine große Anzahl deterministischer Algorithmen dieser Art entwickeln, die verschieden lange Teilzeichenketten, unterschiedlich viele (zwei oder mehr) zu einem Tupel verknüpfte Teilzeichenketten und verschiedene Verfahren zur Verknüpfung der Teilzeichenketten miteinander verwenden. Die Verwendung dieser vielen Varianten wird in der vorliegenden Erfindung dargelegt.
  • Es gibt jedoch einen besonders bevorzugten deterministischen Algorithmus zur Erzeugung von Tupeln für die vorliegende Erfindung, der im Folgenden beschrieben wird. Dieser besonders bevorzugte Algorithmus, der sich durch die begrenzte Anzahl von Tupeln zur Erreichung eines bestimmten Genauigkeitsgrades auszeichnet, wird im Folgenden allgemein beschrieben:
  • Für jede Zeichenfolge der Länge LS, jedes gewünschte j-Tupel der Länge L und jede Ordnung j des Tupels ist eine Reihe von ganzen Zahlen, d. h. Teilzeichenkettenlängen (l1, l2, ..., lj), so zu ermitteln, dass Σlm = L (mit m = 1 bis j) ist.
  • Dann sind alle j-Tupel eines Satzes k zu bilden, der beschrieben wird durch
    Figure 00160001
    wobei für jedes Glied k aus dem Satz von j-Tupeln die ersten Zeichenpositionen (p1, p2, ..., pj) der durch Aufteilung aus der Original-Zeichenkette gebildeten und das Tupel bildenden Teilzeichenkette so ausgewählt werden, dass sie den folgenden Regeln genügen:
    • 1. ∀ a und b, sodass 1 ≤ a < b ≤ j und pa < pb
    • 2. ∀ a, sodass 1 ≤ a ≤ j und pa + la ≤ j
    • 3. ∀ a und b, sodass 1 ≤ b ≤ j und λ – / ab < pb – pa < λ + / ab,
    wobei λ – / ab und λ + / ab eine Anzahl a priori festgelegter unterer und oberer Schwellenwerte sind.
  • Die bevorzugten Regeln zur deterministischen Erzeugung von Tupeln können alternativ wie folgt beschrieben werden:
    • 1. Gleichung 1 besagt, dass für die Startposition pa einer der das Tupel bildenden Zeichenketten die das j-te Tupel bildenden nachfolgenden Teilzeichenketten nur eine Startposition größer als pa haben können, d. h. dass die nachfolgenden Teilzeichenketten des Tupels vom Beginn der Original-Zeichenkette an gerechnet später beginnen müssen. Hierdurch werden die Tupel in ihrer Reihenfolge erzeugt.
    • 2. Gleichung 2 besagt, keine Teilzeichenkette an einer Position beginnen kann, von der aus die Teilzeichenkette über die Gesamtlänge der Original-Zeichenkette hinausragen würde.
    • 3. Gleichung 3 besagt, dass sich beim Vorliegen zweier a priori festgelegter Schwellenwerte λ – / ab und λ + / ab, die als minimaler und maximaler Kohärenzradius bezeichnet werden, die Startpositionen pa und pb zweier aufeinander folgender Teilzeichenketten nicht um mehr als λ + / ab und um weniger als λ – / ab unterscheiden können. Gleichung 3 hat die größte Bedeutung für die Begrenzung der Anzahl der durch diesen Algorithmus erzeugten Tupel.
  • Dieser besonders bevorzugte deterministische Algorithmus wird durch ein Beispiel veranschaulicht. Eine Original-Zeichenkette hat eine Länge von 18 Zeichen, d. h. Ls = 18. Aus einem Satz von 17 Original-Teilzeichenketten mit einer Länge von je 2 Zeichen wird ein Satz von Dreiertupeln gebildet. Alle Tupel des erzeugten Satzes von Originaltupeln haben eine Länge von 6 Zeichen (L = 6) und werden durch Zusammenfügen von 3 Teilzeichenketten gebildet (j = 3). Man beachte, dass es 17 Teilzeichenketten gibt, da die Gruppe der Teilzeichenketten so gebildet wird, dass die erste Teilzeichenkette beginnend an der Zeichenposition p = 1, die zweite Teilzeichenkette beginnend bei p = 2 usw. erzeugt wird, bis die letzte Teilzeichenkette beginnend bei p = 17 erzeugt wird. Mit anderen Worten, die Gruppe M der Original-Teilzeichenketten besteht aus den folgenden 17 Teilzeichenketten: μ(1,2) μ(2,2), ..., μ(17,2). Legt man alle möglichen geordneten Kombinationen von 3 zusammenhängenden bzw. nicht zusammenhängenden Teilzeichenketten diesem Satz von 17 Teilzeichenketten zugrunde, kann man 680 Dreiertupel erzeugen. Mit anderen Worten,
  • Figure 00170001
  • Wenn man jedoch die drei obigen Regeln anwendet, wird durch Definieren der Kohärenzradien zu λ – / 12 = λ – / 23 = 0, λ – / 12 = λ – / 23 = 3, λ – / 13 = 0 und λ – / 13 = 20 ein deterministischer Satz von 42 Dreiertupeln erzeugt. Wendet man die Kriterien dieser 3 Regeln an, wäre ein Dreiertupel ξ (3,6) / gut = μ(5,2) + μ(7,2) + μ(8,2) zugelassen, wohingegen das Tupel ξ (3,6) / schlecht = μ(5,2) + μ(9,2) + μ(10,2) nicht zugelassen wäre, schlecht da p2 – p1 = 4 ≤ λ12 = 3 ist. Durch geeignete Auswahl der Werte für die Kohärenzradien kann die Gesamtzahl der erzeugten Tupel und Indizes nach Belieben gewählt werden.
  • Im nächsten Schritt, der in Kasten 25 von 1 gezeigt ist, werden für jedes der aus einer Original-Zeichenkette gebildete Tupel eindeutige Originalindizes erzeugt. Gemäß der Beschreibung der vorliegenden Erfindung kann ein erfahrener Programmierer eine Vielzahl von Verfahren entwickeln, die man zur Erzeugung von Originalindizes für jedes dieser Originaltupel einsetzen kann. Bei diesen Verfahren werden üblicherweise Zuordnungsverfahren, Hash-Tabellen oder Algorithmen zum Umwandeln jedes Originaltupels in einen Originalindex verwendet, der eindeutig anzeigt, von welchem Tupel er stammt.
  • Bei der bevorzugten Ausführungsart werden eindeutige Indizes γ dadurch erzeugt, indem man zuerst jedem möglichen Zeichenwert in der Original-Zeichenkette einen Wert, z. B. einen numerischen Wert, zuweist. Dadurch entsteht aus der Original-Zeichenkette und somit auch aus den Teilzeichenketten und den Tupeln eine Folge numerischer Werte, welche ihre jeweiligen Zeichen darstellen. Im Allgemeinen wird für jedes Zeichen τ eine eindeutige Zahl τj zwischen 0 und nτ (0 ≤ τj ≤ nτ) gewählt. Zum Beispiel werden in einer aus Nukleotiden bestehenden DNA-Sequenz den vier möglichen Nukleotidzeichen (A, C, G, T) die numerischen Werte 0, 1, 2 bzw. 3 zugewiesen. Bei einem anderen Beispiel einer Aminosäuresequenz in einem Protein werden den 20 möglichen Aminosäurezeichen die numerischen Werte 0 bis 19 zugewiesen.
  • Dann wird ein Algorithmus zur Indexerzeugung festgelegt, der die Folge numerischer werte (Zeichen) in einen eindeutigen Index umwandelt. Als Beispiel wird ein Algorithmus zur Indexerzeugung vorgestellt, der nicht als Einschränkung anzusehen ist. Anhand der vorliegenden Erfindung kann ein Fachmann viele andere Algorithmen entwickeln. Ein bevorzugter zur Indexerzeugung eingesetzter Algorithmus ist: γ = Σn(i–1)τ τi, (mit i = 1 bis L).
  • Bei dem DNA-Beispiel nimmt der Algorithmus zur Indexerzeugung die Form γ = Σ4 (i–1) / ττi an (mit i = 1 bis L).
  • Beim Proteinbeispiel nimmt der Algorithmus zur Indexerzeugung die Form γ = Σ20 (i–1) / ττi an (mit i = 1 bis L).
  • Beim DNA-Beispiel würde dann ein j-Tupel wie „AATCGT" in die Zahlenfolge „003123" umgesetzt und den eindeutigen Index 40 × 0 + 41 × 0 + 42 × 3 + 43 × 1 + 44 × 2 + 45 × 3 = 3696 haben.
  • Durch den Algorithmus zur Indexerzeugung wird für jedes Originaltupel im Satz der Originaltupel, die aus den Original-Teilzeichenketten (siehe Kasten 20 in 1) des ausgewählten zu bearbeitenden Originaltupels ξ (j,L) / k gebildet wurden, ein eindeutiger Originalindex erzeugt. Mit demselben Algorithmus und demselben Verfahren werden eindeutige Originalindizes erzeugt, die zu den Originaltupeln jeder anderen ausgewählten Original-Teilzeichenkette in der Datenbank gehören.
  • Kasten 30 in 1 beschreibt, wie die zu jedem Originaltupel gehörenden Daten im Computerspeicher (üblicherweise in einem Massenspeicher wie zum Beispiel einer Festplatte) gespeichert werden, damit später mittels des zu dem Tupel gehörenden eindeutigen Originalindexes darauf zugegriffen werden kann.
  • 3 zeigt eine Matrix einer in der bevorzugten Ausführungsart verwendeten ersten Daten-Referenzstruktur 300, in der die zu jedem Originaltupel gehörenden Daten gespeichert werden. In der Technik sind auch andere Indexverfahren zur Speicherung von Daten für den späteren Zugriff bekannt und werden in die Erfindung einbezogen. Hierzu gehören Vektoren mit Zeigern, die auf Listen von Datensätzen zeigen.
  • Die in 3 gezeigte Daten-Referenzstruktur 300 besteht aus einer Matrix mit einer Vielzahl üblicher Zellen 310. Die Matrix der Daten-Referenzstruktur 300 hat mindestens nL Zellen, wobei L die Länge des längsten verwendeten Tupels und n = nτ die Anzahl der möglichen Zeichenwerte in den Original-Zeichenketten ist. (Im Falle der DNA ist für numerische Darstellungen von vier möglichen Nukleotiden n = 4.) Dadurch wird sichergestellt, dass jedem erzeugten Originalindex mindestens eine Zelle eindeutig zugeordnet ist. Man beachte, dass es bei der vorliegenden Ausführungsart auch viele Zellen gibt, die zu keinem erzeugten Originalindex gehören. Wenn einem erzeugten Index eine Zelle zugeordnet wurde, wird ein Datensatz 314, üblicherweise ρ, in die Zelle eingefügt oder an sie angehängt, welcher die Original-Zeichenkette und das Tupel charakterisiert, aus denen der Index 312, üblicherweise γ, erzeugt wurde. Eine Zelle 310 kann mehrere Datensätze 314 und 326 enthalten. Dieser Datensatz enthält zumindest einen Zeiger 315, der auf die Original-Zeichenkette in der Datenbank zeigt, aus welcher das Tupel erzeugt wurde. Vorzugsweise enthält der Datensatz außerdem auch noch Daten 320 zur Position des Originaltupels in der Original-Zeichenkette. Vorzugsweise enthält die Zelle außerdem auch noch weitere Daten über das Tupel und die Position der zur Erzeugung des Tupels aneinander gehängten Teilzeichenketten. (Nähere Beschreibung siehe unten.) Bei der bevorzugten Ausführungsart bleiben Zellen, die zu keinem erzeugten Index gehören, leer.
  • Bei einer besonders bevorzugten Ausführungsart enthält die Zelle 310 außerdem auch noch Platz für mehr als einen Datensatz über mehr als eine Original-Zeichenkette, die identische erzeugte Indizes haben kann. Mit anderen Worten, die Zelle enthält eine Liste 328 mit mehreren Datensätzen, die jeweils einen Zeiger enthalten (315 und 325). Jeder Datensatz 326 in der Zellenliste 328, der einen Zeiger 325 enthält, kann außerdem noch Positionsdaten 330 für den Zeiger 325 enthalten. Wenn mehr als eine Original-Zeichenkette denselben Index erzeugt, werden die Daten für jede den identischen Index 312 erzeugende Original-Zeichenkette an die Liste 328 der Datensätze in der Einzelzelle 310 angehängt, welche dem gemeinsamen Index 312 zugeordnet ist. Die Liste 328 kann statisch oder dynamisch sein. Eine statische Liste enthält Speicherplatz zur Speicherung von Daten, die sich auf eine fest vorgegebene Anzahl von Original-Zeichenketten beziehen, und lässt alle Daten verloren gehen, die den reservierten Speicherplatz überschreiten. Eine dynamische Liste wird erweitert, um Daten über jede Original-Zeichenkette zu speichern, die einen gemeinsamen Index erzeugt.
  • Obwohl die Referenzstruktur 300 vom Matrixtyp für eine kleine Anzahl möglicher Indizes ausreicht, wird bei Anwendungen mit einer großen Anzahl von Indizes eine große Anzahl von Zellen 310 der Referenzstruktur benötigt. Ferner beinhalten die meisten dieser Zellen 310 bei vielen Anwendungen keine Daten, da sie keinem erzeugten Index 312 zugeordnet sind. In diesen Fällen werden in der Technik bekannte Verfahren für den Umgang mit leeren Matrizen eingesetzt. Zu diesen Verfahren gehören Hash-Tabellen.
  • In der Technik sind viele Ausführungsarten mit Hash-Tabellen bekannt, die in der vorliegenden Erfindung inbegriffen sind. 4 zeigt jedoch als Beispiel eine erste Referenzstruktur, die als bestimmter Typ einer Hash-Tabelle realisiert wurde. Dieses Beispiel beschreibt eine relativ kleine Matrix von n Zellen 0 bis n. Jeder erzeugte Index wird mit einer Primzahl wie zum Beispiel 7 multipliziert und aus diesem Wert durch Modulo n der Wert 405 erhalten. Dann wird der erzeugte Hash-Index 412 der Zelle 410 zugewiesen, deren Identifizierungszahl mit dem Wert der Modulo-Operation übereinstimmt. Der zu diesem Index gehörende Datensatz 414 wird dann in der gewählten Zelle gespeichert. Das Verfahren geht davon aus, dass es in der Hashtabelle genügend Zellen 410 gibt, die jedem erzeugten Index eindeutig zugewiesen werden können. Wenn ein erzeugter Index einer Zelle zugeordnet wird, die bereits einem anderen davon verschiedenen Index zugewiesen wurde, wird dieser Index erneut gehasht und neu zugeordnet. Zum Beispiel wird der Modulo-Wert mit 7 multipliziert und erneut der Modulo-Operation unterzogen. Als Ergebnis soll eine Zahl entstehen, die eine andere Zelle kennzeichnet. Dies wird so lange wiederholt, bis eine leere Zelle gefunden wurde.
  • Im Folgenden werden die in der Zelle der ersten Referenzstruktur gespeicherten Daten beschrieben. Der Datensatz ρ dient dazu, auf einen bestimmten Speicherplatz in einer zweiten Speicherstruktur zuzugreifen, die als Nachweis-Sammeltabelle (Evidence Integration Table, EIT) bezeichnet wird. Ein Datensatz enthält mindestens einen auf die Original-Zeichenkette zeigenden Zeiger α 415 zur Berechnung des Indexes der Zelle 412. Die bevorzugte Ausführungsart speichert einen Zeiger 415 und einen Verschiebungswert 420. Der Verschiebungswert δ 420 liefert Daten zur Position der Original-Teilzeichenketten in der Original-Zeichenkette, welche ein der Zelle der Referenzstruktur zugeordnetes j-Tupel gebildet hat.
  • Bei Bedarf können in den Zellen auch noch weitere Daten gespeichert werden. Das können andere Datensätze 426 sein, die wiederum Daten zu weiteren Zeigern 425 und Verschiebungswerten 430 enthalten. Diese Datensätze 426 können je nach Bedarf dynamisch in die Zelle eingefügt oder an diese angehängt werden. Es können aber auch noch weitere Daten hinzugefügt werden. Zum Beispiel kann die Zelle 410 Daten zum Abstand zwischen den ein j-Tupel bildenden Teilzeichenketten enthalten.
  • Verweise/Zeiger sind in der Rechentechnik bekannt, und in der vorliegenden Erfindung sind alle Zeiger inbegriffen, die an einem Speicherplatz, wie zum Beispiel in der Zelle einer Referenzstruktur, gespeichert und zum Auffinden einer in diesem Speicher gespeicherten Zeichenfolge, die eine Original-Zeichenkette darstellt, verwendet werden können. Ein Verweis/Zeiger kann die Adresse des Speicherplatzes sein, der dasjenige erste (oder ein anderes) Zeichen der Original-Zeichenkette enthält, auf welches gezeigt wird. Alternativ kann der bevorzugte Verweis/Zeiger lediglich eine (ganze) Zahl sein, die einem Index einer Original-Zeichenkette in einer Datenbank von (ganzzahligen) nummerierten Zeichenketten entspricht.
  • Der Verschiebungswert beschreibt die mittlere oder genaue Position einer Original-Zeichenkette, in welcher sich die Teilzeichenketten befinden, die zur Erstellung eines Tupels dienten. Zur Abschätzung der Position dieser Teilzeichenketten gibt es viele Wege. Zum Beispiel kann dies ein Verschiebungswert δk für ein von der Original-Zeichenkette χi abgeleitetes Tupel ξ (j,L) / k sein. Dieser Verschiebungswert δi kann der in Zeichen gemessene Abstand (Differenz) zwischen einem bestimmten Zeichen, wie zum Beispiel dem ersten Zeichen τi der Original-Zeichenkette χi, und einem anderen bestimmten Zeichen, wie zum Beispiel dem ersten (oder zweiten, dritten usw.) Zeichen der ersten Teilzeichenkette, sein, welche zur Erzeugung des Tupels (Index) verwendet wurde, das durch die Zelle in der Speicherstruktur eindeutig gekennzeichnet wird. Bei der besonders bevorzugten Ausführungsart wird der in Zeichen gemessene Mittelwert der Abstände zwischen einem Anfang der Original-Zeichenkette und dem Anfang jeder der Teilzeichenketten zur Erzeugung des Tupels verwendet. Dieser Mittelwert wird als δkmitt bezeichnet. Dann hat ein j-Tupel einen Mittelwert δkmitt, der durch Mittelung der in Zeichen gemessenen Abstände zwischen dem ersten Zeichen der Original-Zeichenkette und dem ersten Zeichen in jeder der j Teilzeichenketten berechnet wird.
  • Nachdem die Originaltupel und die zugehörigen Originalindizes für die betreffenden Original-Zeichenketten erzeugt und die Datensätze für jeden erzeugten Originalindex in seiner entsprechenden Zelle in der ersten Referenzstruktur gespeichert wurden, werden Referenztupel und deren zugehörige eindeutige Referenzindizes erzeugt. Hierzu siehe Kasten 35, 40 und 45 in 1. Dies wird erreicht durch: 1. Aufteilen einer bestimmten Referenz-Zeichenkette in zwei oder mehr Referenz-Teilzeichenketten aus zusammenhängenden Zeichen, 2. Bilden mindestens eines Referenztupels durch Zusammenfügen von mindestens zwei nicht zusammenhängenden Referenz-Teilzeichenketten und 3. Erzeugen eines Referenzindexes mittels desselben Indexgenerators, der zur Erzeugung der Indizes in der Referenzstruktur verwendet wurde.
  • Eine Referenz-Zeichenkette χref ist eine Zeichenfolge, die mit den Original-Zeichenketten in der Datenbank verglichen wird, um festzustellen, ob die Referenz-Zeichenkette genau oder ungefähr mit einem Teil (einer Teilzeichenfolge) einer oder mehrerer Original-Zeichenketten in der Datenbank übereinstimmt.
  • Um gemäß Kasten 35 in 1 die Referenztupel ξref, d. h. die aus dieser Referenz-Zeichenkette gebildeten Tupel, zu bilden, wird die Referenz-Zeichenkette zuerst in Teilzeichenketten aus zusammenhängenden Zeichen aufgeteilt, die als Referenz-Teilzeichenketten bezeichnet werden. Diese Aufteilung erfolgt nach einem der oben bei der Aufgliederung in Original- Teilzeichenketten erörterten Verfahren. Man beachte, dass die Aufgliederung von Referenz-Zeichenketten in Teilzeichenketten auch mit vielen anderen Verfahren als bei der Aufgliederung der Original-Zeichenketten in Teilzeichenketten erfolgen kann. Bei der bevorzugten Ausführungsart jedoch werden sowohl die Original-Zeichenketten als auch die Referenz-Zeichenketten nach demselben Verfahren aufgegliedert. Hierzu siehe Kasten 40 in 1. Die Referenztupel ξref werden nun durch Zusammenfügen von mindestens zwei nicht zusammenhängenden Referenz-Teilzeichenketten gebildet. Dieses Zusammenfügen von Referenz-Teilzeichenketten erfolgt nach einem der oben für das Zusammenfügen von Original-Teilzeichenketten zur Bildung von Originaltupeln erörterten Verfahren. Die Referenz-Teilzeichenketten brauchen jedoch nicht in genau derselben Weise zusammengefügt werden wie die Original-Teilzeichenketten zu Originaltupeln.
  • Nun werden gemäß Kasten 45 in 1 aus den Referenztupeln die Referenzindizes γref gebildet. Wie zuvor erhält jedes Referenztupel einen eindeutigen Referenzindex. Der eindeutige Referenzindex für jedes Referenztupel sollte möglichst mittels genau desselben Algorithmus zur Indexerzeugung erzeugt werden wie bei der oben beschriebenen Erzeugung der Originalindizes aus den Originaltupeln.
  • Auch der Referenz-Verschiebungswert Δ wird berechnet, um die Position der Referenz-Teilzeichenketten in der Referenz-Zeichenkette zu ermitteln, die zur Erzeugung des Referenztupels verwendet wurden. Zur Erzeugung des Positionswertes für die Referenz-Teilzeichenketten kann jedes allgemeine Verfahren, wie zum Beispiel die oben zur Erzeugung des Verschiebungswertes für Original-Zeichenketten eingesetzten Verfahren, verwendet werden. Auch hier sollte das zur Ermittlung des Verschiebungswertes für die Referenztupel verwendete Verfahren möglichst genau dasselbe Verfahren sein, welches zur Ermittlung des Verschiebungswertes für Originaltupel verwendet wurde.
  • Nachdem die Referenzindizes erzeugt worden sind, werden sie mit den Originalindizes verglichen, um Übereinstimmungen festzustellen (siehe Kasten 50 in 1). In der vorliegenden Erfindung sind alle in der Technik bekannten Verfahren zum Vergleichen von zwei Indizes (Zahlen) oder von zwei Indexlisten (Zahlenlisten) inbegriffen, mit denen eine Übereinstimmung zwischen den Indizes festgestellt werden kann. Als bevorzugtes Verfahren zum Vergleichen der Indizes mit den Originalindizes wird jedoch die Referenzstruktur verwendet. Hierzu wird jeder Referenzindex zum Zugriff auf diejenige Zelle (üblicherweise die Zelle 310 in 3 oder Zelle 410 in 4) in der Referenzstruktur verwendet, die einem Originalindex (üblicherweise 312 oder 412) zugeordnet ist, der gleich dem Referenzindex ist. Liegen in der Zelle, auf die zugegriffen wurde, ein oder mehrere Datensätze (328 oder 428) vor, kommt es zur Übereinstimmung zwischen dem Referenzindex (350 oder 450) und einem oder mehreren Originalindizes (üblicherweise 312 oder 412) (Tupel), welche der Zelle, auf die zugegriffen wurde (üblicherweise 310 oder 410), zugeordnet sind. Befindet sich in der Zelle kein Datensatz, kommt es nicht zur Übereinstimmung und für dieses Referenztupel erfolgt keine weitere Verarbeitung.
  • In Kasten 55 in 1 wird in einem zweiten Speicherbereich mit der Bezeichnung Nachweis-Sammeltabelle EIT (Evidence Integration Table) jede Übereinstimmung zwischen einem Referenzindex und einem Originalindex erfasst. In 5 wird auf die als Zählzellen bezeichneten Zellen 510 in der EIT 500 mittels eines Zählindexes 512 zugegriffen, der anhand eines Teils oder des gesamten Datensatzes (314 oder 414) in der Zelle (310 oder 410) der Referenzstruktur erzeugt wird, welche dem mit dem Originalindex übereinstimmenden Referenzindex zugeordnet ist. Im Allgemeinen braucht nur der Verweis/Zeiger (315 oder 415) im Datensatz als Zählindex oder zu dessen Berechnung verwendet zu werden. Vorzugsweise werden insbesondere der Verweis/Zeiger und der Verschiebungswert (320 oder 420) des Datensatzes und der Verschiebungswert des Referenztupels Δ zur Berechnung eines Zählindexes 512 verwendet. Besonders bevorzugt zur Erzeugung eines Zählindexes 512 für den Zugriff auf eine Zelle 510 in der Zähltabelle 500 ist die Verwendung des Verweises/Zeigers (315 oder 415) und eine Optimierung der Differenz zwischen dem im Datensatz (320 oder 420) gefundenen Verschiebungswert sowie dem Verschiebungswert des Referenztupels Δ.
  • Der Zählindex 512 der bevorzugten Ausführungsart wird aus dem Verweis/Zeiger (315 oder 415) α und der Vergleichsdifferenz (berechnet als Differenz zwischen dem Verschiebungswert δ des Datensatzes ρ minus dem Referenz-Verschiebungswert Δ) berechnet. Die Vergleichsdifferenz D0 entspricht dem in Zeichen gemessenen Abstand zwischen einem bestimmten Zeichen in der Original-Zeichenkette, z. B. dem ersten Zeichen der Original-Zeichenkette, und einem bestimmten Zeichen der Referenz-Zeichenkette, z. B. dem ersten Zeichen der Referenz-Zeichenkette, sodass die übereinstimmenden Zeichenfolgen in der Original-Zeichenkette und der Referenz-Zeichenkette zur Deckung gebracht werden, wenn die Zeichenketten um den Abstand der Vergleichsdifferenz verschoben werden. Mit anderen Worten, die Vergleichsdifferenz (durch D0 = δmitt – Δkmitt berechnet) stellt den in Zeichen gemessenen Abstand dar, um den die Original-Zeichenkette gegenüber der Referenz-Zeichenkette verschoben werden muss, um diejenigen übereinstimmenden Zeichenfolgen zur Deckung zu bringen, von denen die entsprechenden übereinstimmenden Originaltupel und Referenztupel (Indizes) abgeleitet wurden.
  • Nachdem die Vergleichsdifferenz D0 ermittelt worden ist, wird mittels eines Algorithmus der Zählindex 512 erzeugt. Es gibt in der Technik viele Verfahren zur Erzeugung solcher Indizes, die in der Erfindung inbegriffen sind. Das bevorzugte Verfahren besteht jedoch darin, den Wert des Verweises/Zeigers 315 oder 415 α im Datensatz (328 oder 428) mit einer bestimmten Konstanten zu multiplizieren, die gleich der größtmöglichen Vergleichsdifferenz ist, und dazu dann den Wert der Vergleichsdifferenz zu addieren. Die Konstante wird so gewählt, dass der Algorithmus einen eindeutigen Zählindex für jede mögliche Kombination von Zeiger und Vergleichsdifferenz erzeugt, die aus den Datensätzen in der Referenzstruktur erzeugt werden kann. Dabei ist zu beachten, dass man aus dem Zählindex die Werte für den Verweis/Zeiger und die Vergleichsdifferenz ermitteln kann, indem man den Algorithmus umkehrt. Jede Zelle in der EIT bezeichnet eindeutig eine Original-Zeichenkette mit einer bestimmten Vergleichsdifferenz gegenüber der Referenz-Zeichenkette.
  • Die Zählzellen 510 in der EIT 500, auf die durch die Zählindizes zugegriffen wird, dienen jedes Mal der Speicherung der „Zählwerte" 515 für eine Original-Zeichenkette mit einer bestimmten Vergleichsdifferenz, wenn mittels der Referenzstruktur und des Referenzindexes in der oben beschriebenen Weise eine entsprechende Übereinstimmung festgestellt wird. Der Wert „c" 515 in jeder Zählzelle 510 der EIT 500 wird jedes Mal aktualisiert, wenn für diese Zelle ein Zählindex erzeugt wird. Kommt es zur Übereinstimmung, d. h. wenn eine Zelle in der Referenzstruktur mindestens einen Datensatz enthält, wird aus dem Verweis/Zeiger im Datensatz und der berechneten Vergleichsdifferenz ein Zählindex 512 erzeugt. Auf die dem Verweis/Zeiger und der Vergleichsdifferenz zugeordnete eindeutige Zählzelle wird durch den Zählindex zugegriffen und ihr Wert c um einen bestimmten Betrag, normalerweise um den ganzzahligen Wert 1, erhöht. Demzufolge stellt der Wert c 515 in jeder Zählzelle 510 einen direkten Hinweis darauf dar, wie oft eine Original-Zeichenkette und eine Referenz-Zeichenkette identische Indizes und denselben Wert der Vergleichsdifferenz erzeugt haben.
  • Daher zeigt bei der bevorzugten Ausführungsart der vorliegenden Erfindung eine Zelle in der EIT mit einem hohen Wert c an, dass die entsprechende Original-Zeichenkette der Referenz-Zeichenkette mit hoher Wahrscheinlichkeit ähnlich oder identisch ist, wenn sie um die Vergleichsdifferenz verschoben wird.
  • In der Technik sind viele Strukturen bekannt, die als Ausführungsarten für die EIT dienen können, z. B. eine Matrix, ein Vektor oder eine Hash-Tabelle. Matrizen und deren eindimensionale Untereinheit, also Vektoren, müssen bei großen Datenbanken, die die bevorzugte Ausführungsart verwenden, ziemlich groß sein, da für jede mögliche Kombination von Zeiger und Vergleichsdifferenz eine eindeutige Zählzelle benötigt wird. Bei einer typischen Anwendung der vorliegenden Erfindung wird auf die meisten dieser Zellen nicht zugegriffen, da es sehr unwahrscheinlich ist, dass alle diese Zählzellen 510 einer Übereinstimmung zwischen einem Originaltupel und einem Referenztupel (Index) zugeordnet sind. Infolgedessen wird die Matrix (der Vektor) nur in geringem Maße gefüllt und ein großer Teil der Speicherkapazität vergeudet. Die vorliegende Ausführungsart bedient sich einer Hash-Tabelle, um die Anforderungen an das Speichervolumen zu verringern. Hash-Tabellen-Verfahren sind in der Technik bekannt und wurden oben anhand von Beispielen erörtert. Die Hash-Tabelle kann statisch oder dynamisch sein. Eine statische Hash-Tabelle hat eine fest vorgegebene Anzahl von Zählzellen. Eine dynamische Hash-Tabelle hingegen beginnt ohne oder mit nur wenigen Zählzellen und legt beim Auftreten von Übereinstimmungen noch mehr Zählzellen fest und fügt sie zur Tabelle hinzu. Die bevorzugte Ausführungsart verwendet eine dynamische Hash-Tabelle.
  • In Kasten 60 in 1 werden alle Zellen in der EIT mit einem Wert c, der einen vorgegebenen Schwellenwert übersteigt, als Hinweis auf übereinstimmende Original-Zeichenketten ausgewählt. Dann kann eine dem Wert c direkt proportionale Ähnlichkeitsbewertung berechnet werden.
  • Durch Umkehrung des Wertes des Zählindexes der Zelle in Kasten 65 in 1 können wie oben erläutert der Verweis/Zeiger auf die Original-Zeichenketten und deren zugehörige Vergleichsdifferenzen genau ermittelt werden.
  • Zwischen einer Zeichenfolge in einer Original-Zeichenkette χ0 und einer Zeichenfolge in einer Referenz-Zeichenkette χ 0 / ref kann es grundsätzlich zu zwei unterschiedlichen Übereinstimmungen kommen, und zwar zu genauen und zu ungefähren Übereinstimmungen.
  • Zu genauen Übereinstimmungen kommt es, wenn jedes Zeichen einer Zeichenfolge in einer Referenz-Zeichenkette χ 0 / ref denselben Wert und dieselbe Reihenfolge aufweist wie jedes Zeichen einer Zeichenfolge in einer Original-Zeichenkette χ0. Bei einer genauen Übereinstimmung findet jedes Referenztupel (Index) mindestens einen Verweis/Zeiger auf die identische Original-Zeichenkette in der Zelle, welche es bezeichnet. Infolgedessen ist der Wert „c" in der der identischen Original-Zeichenkette entsprechenden Zählzelle sehr groß und mindestens gleich der Anzahl der anhand der übereinstimmenden Zeichen erzeugten Referenztupel.
  • Zu annähernden Übereinstimmungen kommt es, wenn die Original-Zeichenkette χ0 durch Insertion, Deletion oder Änderung von nur wenigen Zeichen genau mit der Referenz-Zeichenkette in Übereinstimmung gebracht werden kann. Bei annähernden Übereinstimmungen ist es unwahrscheinlich, dass jedes Referenztupel (Index) einen Verweis/Zeiger auf die ähnliche Original-Zeichenkette in der Zelle findet, welche es bezeichnet. Eine größere Ähnlichkeit zwischen der Original-Zeichenkette und der Referenz-Zeichenkette führt jedoch zu einer größeren Anzahl genauer Übereinstimmungen und folglich einer größeren Anzahl von Zählschritten für die Original-Zeichenkette in der EIT. Daher kann man einen Ähnlichkeitsgrad zwischen jeder Original-Zeichenkette und der Referenz-Zeichenkette ermitteln, wenn man die Anzahl der Zählschritte in der EIT vergleicht, welche den verschiedenen Original-Zeichenketten beim Vergleich mit einer vorgegebenen Referenz-Zeichenkette zugewiesen werden. Diejenigen Original-Zeichenketten, die in der EIT eine größere Anzahl von Zählschritten erhalten haben (nach dem Vergleich aller Referenztupel), sind der Referenz-Zeichenkette ähnlicher als die Original-Zeichenketten mit einer geringeren Anzahl von Zählschritten.
  • Schließlich wird in der Datenbank gemäß Kasten 60 und 65 in 1 nach den ermittelten genau und ungefähr übereinstimmenden Original-Zeichenketten gesucht. Hierzu werden diejenigen Zellen in der EIT ausgewählt, deren „c"-Werte einen bestimmten Schwellenwert übersteigen. Dann wird der Zählindex dieser ausgewählten Zellen umgekehrt, um die Position (oder andere Ortsbestimmung) der Original-Zeichenkette, welche diesen Zählwert verursacht hat, und den Verschiebungswert (falls vorhanden) zu ermitteln, mittels dessen die Referenz-Zeichenkette und die Original-Zeichenketten zur Deckung gebracht werden, um die übereinstimmenden Zeichenfolgen zur Deckung zu bringen. Ferner kann man anhand des Datensatzes in derjenigen Zelle der Referenztabelle, welche den Zählschritt verursacht hat, nach den mit der Original-Zeichenkette übereinstimmenden Zeichenfolgen suchen. Wenn mehrere Referenz-Zeichenketten verglichen werden müssen (siehe Kasten 70), startet der Prozess wieder in Kasten 35.
  • BEISPIEL 1
  • Im Folgenden wird zur Veranschaulichung ein Beispiel einer Zeichenkettensuche vorgestellt, welches das vorliegende Verfahren anwendet und keine Einschränkung der Erfindung bedeutet. Diese Veranschaulichung bezieht sich auf Anwendungen bei Zeichenketten-Erkennungsverfahren wie zum Beispiel in Wörterverzeichnissen und Rechtschreibprüfungen.
  • Die Original-Zeichenkette ist „HOTEL" und die Referenz-Zeichenkette „HOSTEL". Die Länge der für beide Zeichenketten gewählten Teilzeichenketten beträgt ein Zeichen und die Länge der Tupel drei Zeichen. Deshalb sind
    die Original-Teilzeichenketten: H, O, T, E und L, und
    die Referenz-Teilzeichenketten: H, O, S, T, E und L.
  • Der zur Erzeugung der Tupel (sowohl Originaltupel als auch Referenztupel) verwendete deterministische Algorithmus besteht in der Auswahl aller möglichen eindeutigen geordneten Kombinationen von drei Teilzeichenketten. Somit sind
    die Originaltupel: HOT, HOE, HOL, HTE, HTL, HEL, OTE, OTL und TEL, und
    die Referenztupel: HOS, HOT, HOE, HOL, HST, HSE, HSL, HTE, HTL, HEL, OST, OSE, OSL, OTE, OTL, STE, STL und TEL.
  • Aus Gründen der Vereinfachung werden aus den Tupeln keine numerischen Indizes gebildet. In den Zellen der Referenztabelle werden Datensätze abgelegt. Zur Vereinfachung enthält ein Datensatz nur einen Zeiger, der auf die Startposition der Original-Zeichenkette HOTEL in der Datenbank zeigt.
  • Aus dem Vergleich jedes Referenztupels (Indexes) mit den Originaltupeln ergeben sich 9 Übereinstimmungen. Diese Ergebnisse werden in der EIT gespeichert. In diesem Fall zeigen die 9 Übereinstimmungen einen hohen Korrelationsgrad. Eine Referenz-Zeichenkette wie zum Beispiel „SOLID" würde keine Übereinstimmungen ergeben.
  • Die Gesamtzahl von 9 Übereinstimmungen mit dem Wort HOTEL bedeutet eine große Ähnlichkeit. Man beachte, dass man bei Verwendung zusammenhängender Folgen von je drei Zeichen nur eine Übereinstimmung bei TEL erhielte. Jede anschließende Änderung eines Buchstabens (z. B. E zu A) würde im Falle zusammenhängender Zeichenfolgen gar keine und im Falle nicht zusammenhängender Zeichenfolgen drei Übereinstimmungen ergeben.
  • 6 und 7 sind Ablaufdiagramme des Computerprogramms, das durch die vorliegende Erfindung zum Erzeugen und Speichern von Originaltupeln (Indizes) und später zum Suchen derjenigen Original-Zeichenketten verwendet wird, welche diesen Tupeln (Indizes) zugeordnet sind, die mit einer Referenz-Zeichenkette übereinstimmen. 6 ist ein Ablaufdiagramm des Computerdiagramms, welches Originaltupel, Originalindizes und die zugehörigen Datensätze erzeugt. 7 ist ein Ablaufdiagramm des Computerprogramms, welches Referenztupel und Referenzindizes erzeugt, die Referenzindizes mit den Originalindizes vergleicht und die EIT aktualisiert.
  • In Kasten 610 in 6 befinden sich in einer Computer-Datenbank X eine oder mehrere Zeichenfolgen beliebiger Länge L, welche Original-Zeichenketten χ darstellen. Jeder Original-Zeichenkette ist ein Verweiswert α zugeordnet, der ein Zeiger oder der Index für einen Zeiger sein kann. In Kasten 615 werden im Speicher auch minimale und maximale Kohärenzradien gespeichert. In Kasten 620 startet die äußere Schleife einer Reihe verschachtelter Schleifen, die auf Basis der oben angegebenen Regeln aus einer Original-Zeichenkette Originaltupel erzeugt. Beim ersten Mal wird in Kasten 620 das erste Zeichen der betreffenden Original-Zeichenkette ausgewählt. In Kasten 625 wird die Regel 2 angewendet, um festzustellen, ob die Länge der hier startenden Teilzeichenkette die Länge der Original-Zeichenkette überschreitet. Wenn dies der Fall ist, wird das Programm für diese Original-Zeichenkette beendet. Wenn es nicht der Fall ist, geht das Programm weiter zu Kasten 630, wo die Startposition der zweiten Teilzeichenkette ausgewählt wird. Diese Position startet vom Anfang der Zeichenkette aus gesehen ein Zeichen später als das vorhergehende Startzeichen, in diesem Fall also an Position 2. Die Regel 1 ist so lange eingehalten, wie nachfolgende Zeichenketten vom Anfang der Zeichenkette aus gesehen später als vorhergehende Zeichenketten starten. In diesem Kasten wird die zweite Ebene der verschachtelten Schleifen gestartet. In Kasten 635 wird die Regel 2 auf die zweite ausgewählte Zeichenkette angewendet. Sobald die Regel verletzt wird, springt die Verarbeitung wieder zu Kasten 620 oder zur äußeren verschachtelten Schleife zurück. Wenn die Regel eingehalten wird, erfolgt die Verarbeitung weiterhin in der zweiten Ebene der verschachtelten Schleifen und in Kasten 640 werden die Bedingungen der Regel 3 angewendet. Sobald die Regel 3 verletzt wird, wird für die zweite Teilzeichenkette (immer noch innerhalb der zweiten Ebene der verschachtelten Schleifen) eine andere Startposition gewählt und der Prozess beginnt von vorn. Der Prozess wird so lange in Kasten 645 und 650 wiederholt, bis die Startposition der letzten Original-Teilzeichenkette erreicht ist. Insbesondere bezeichnen Kasten 645 und 650 eine beliebige Anzahl von untergeordneten Schleifen, die zur Erzeugung aller möglichen Kombinationen von j-Tupeln dienen, welche die Regeln für eine bestimmte Anzahl j von Teilzeichenketten im j-Tupel erfüllen. Man beachte, dass bei Verwendung von lediglich zwei Teilzeichenketten, d. h. j = 2, Kasten 645 und 650 entfallen können. Sobald Tupel durch das Starten der letzten Teilzeichenkette in der Original-Zeichenkette erzeugt werden, geht die Prozedur weiter zu Kasten 655. wenn die ausgewählte Zeichenkette in Kasten 660 die Regel 2 verletzt, geht die Verarbeitung über die nächstäußere Schleife an Kasten 650 über. Wenn über alle Schleifen das Ende der Zeichenkette erreicht wurde, geht die Verarbeitung so lange an die äußeren Schleifen über, bis die Ebene der äußersten Schleife in Kasten 620 erreicht ist, und verlässt dann in Kasten 625 das Programm. Bei der j-ten Teilzeichenkette werden die Bedingungen von Regel 2 und 3 ebenso wie oben beschrieben in Kasten 660 und 665 überprüft und bearbeitet. In Kasten 670 werden alle in den Schleifen ausgewählten j Teilzeichenketten, die die drei Regeln erfüllen, aneinander gefügt, um ein Tupel zu bilden. Der eindeutige Originalindex für das in Kasten 670 gebildete Tupel wird in Kasten 675 mittels der oben beschriebenen Verfahren erzeugt. In Kasten 680 wird wie oben beschrieben der Verschiebungswert für das j-Tupel und in Kasten 685 der Datensatz berechnet. In Kasten 690 wird die Liste der zu dem erzeugten j-Tupel gehörenden Datensätze aus der Referenztabelle abgerufen. Wenn der neue Datensatz dort noch nicht vorhanden ist, wird er an die Liste angehängt und die Liste in der Referenztabelle gespeichert. Die Verarbeitung wird in Kasten 655 fortgesetzt, um auf dieser Ebene der verschachtelten Schleifen das nächste Tupel zu erzeugen. Die gesamte Prozedur des Ablaufdiagramms von 6 wird für jede Original-Zeichenkette der Datenbank wiederholt.
  • In Kasten 710 in 7 wird in der Datenbank eine zu untersuchende Referenz-Zeichenkette gespeichert. In Kasten 715 werden eine EIT-Struktur erzeugt und die minimalen und maximalen Kohärenzradien gewählt. In Kasten 720 bis 775 werden in derselben Weise, wie oben bei den Original-Zeichenketten in 6 beschrieben, aus der Referenz-Zeichenkette Referenztupel und Referenzindizes erzeugt. In Kasten 780 werden wie oben beschrieben die Referenz-Verschiebungswerte Δ berechnet. In Kasten 790 wird der erzeugte Referenzindex dazu verwendet, auf einen Datensatz bzw. eine Liste in einer Zelle der Referenzstruktur zuzugreifen, welche durch einen Wert bezeichnet wird, der gleich dem erzeugten Referenzindex ist. In Kasten 795 wird überprüft, ob der Datensatz bzw. die Liste leer ist. Wenn dies der Fall ist, wird die Verarbeitung in Kasten 755 mit der Erzeugung des nächsten Referenzindexes fortgesetzt. Wenn die Zelle hingegen einen Datensatz bzw. eine Liste enthält, wird in Kasten 800 der erste Datensatz der Liste ausgewählt. In Kasten 805 wird wie oben beschrieben ein Zählindex (EIT) berechnet. Dann wird wie oben beschrieben in Kasten 810 mittels des Zählindexes auf eine Zelle in der EIT zugegriffen. Wenn keine Zelle vorhanden ist, wird in Kasten 815 eine Zelle erzeugt und in dieser Zelle ein Wert c = 0 gespeichert. Wenn eine Zelle vorhanden ist, wird in Kasten 820 der Wert c um 1 erhöht. Der Prozess wird in Kasten 825 und 830 so lange wiederholt, bis alle Datensätze in der Liste gezählt wurden. Wenn keine weiteren Datensätze mehr vorliegen, geht die Verarbeitung weiter zu Kasten 755, um das nächste Referenztupel zu erzeugen.
  • Man beachte, dass man abgesehen von der Beschreibung der vorliegenden Erfindung viele Varianten dieses Algorithmus entwickeln kann, die in der Erfindung inbegriffen sind.
  • BEISPIEL 2
  • Die besonders bevorzugte Ausführungsart der vorliegenden Erfindung findet speziell Anwendung in der Genomforschung an lebenden Organismen und insbesondere in der menschlichen Genomforschung, um die Positionen und Funktionen der Nukleotidsequenzen sowie weitere biologische Informationen auf den DNA-Strängen zu ermitteln. Mittels dieses Verfahrens können diese Informationen schneller und genauer ermittelt werden als es nach dem Stand der Technik vor Verwendung der Verfahren bisher möglich war. Im Folgenden wird ein Beispiel angegeben, das keine Einschränkung der Erfindung darstellen soll.
  • Obwohl noch nicht das gesamte menschliche Genom entschlüsselt worden ist, können bereits Datenbanken käuflich erworben werden, welche Teilsequenzen von DNA-Strängen enthalten, die in Nukleotid-Sequenzen aufgespalten sind. Diese Daten können leicht in einer Computer-Datenbank gespeichert und für die Daten Verweis-/Zeigeradressen bereitgestellt werden. Mittels Algorithmen wie die oben erörterten werden diese DNA-Original-Sequenzen in zusammenhängende Teilsequenzen oder Nukleotide aufgegliedert, welche die drei oben beschriebenen Regeln erfüllen. Auf Basis dieser zusammenhängenden Teilsequenzen wird ein Satz von mindestens einem Originaltupel gebildet. Mindestens ein Originaltupel dieses Satzes wird durch Zusammenfügen von mindestens zwei nicht zusammenhängenden Teilsequenzen oder Nukleotidzeichen erzeugt. Man beachte, dass an dieses Tupel weitere zusammenhängende Teilsequenzen von Nukleotidzeichen angehängt werden können. Dann wird ein der DNA-Original-Sequenz zugehöriger eindeutiger Originalindex erzeugt (siehe oben gezeigtes Beispiel). Dann wird eine Referenz-Nukleotidsequenz ausgewählt. Die aus Nukleotidzeichen bestehenden Referenztupel werden wie oben erläutert erzeugt. Auch hier muss durch Zusammenfügen von mindestens zwei zusammenhängenden Referenz-Teilsequenzen mindestens ein Referenztupel erzeugt werden. Mittels desselben Algorithmus zur Indexerzeugung, mittels dessen die Originalindizes erzeugt wurden, wird ein eindeutiger Referenzindex erzeugt (siehe obiges Beispiel). Die Referenzindizes und die Originalindizes werden genau so wie beim allgemeinen Verfahren unter Verwendung der Referenztabelle miteinander verglichen. Die besonders bevorzugte Referenztabelle ist eine Matrix. Ebenso wie oben werden die Übereinstimmungen in einer zweiten Speicherstruktur EIT erfasst. Die besonders bevorzugte EIT ist eine dynamische Hash-Tabelle. Die DNA-Original-Sequenzen werden mittels der c-Werte der EIT ausgewählt, deren Wert einen vorgegebenen Schwellenwert überschreitet.
  • Das Verfahren ist beim Vergleich der Referenz-Sequenzen der Nukleotide beim Genom von E. coli erfolgreich getestet worden, das etwa 4 Millionen Nukleotide enthält.
  • Die vorliegende Erfindung besitzt viele weitere Anwendungen, einschließlich des Vergleichs von Aminosäuresequenzen in Proteinen, der Erkennung von Buchstaben-Zeichenketten, der Spracherkennung und der Musikerkennung, ist aber nicht darauf beschränkt.
  • BEISPIEL 3
  • Die Anwendung des Verfahrens auf den Vergleich von Aminosäuresequenzen mit einer aus Aminosäurezeichen bestehenden Original-Proteinsequenz ähnelt dem DNA-Beispiel und ist zum Teil bereits beschrieben worden. Aus Aminosäurezeichen bestehende Original-Proteinsequenzen können entweder als Datenbanken käuflich erworben oder von Hand in den Computerspeicher eingegeben werden. Den 20 möglichen Aminosäurezeichen werden wie oben angegeben stellvertretend alphanumerische Zeichen zugewiesen, um sie eindeutig zu kennzeichnen. Diese Zeichen erhalten einen eindeutigen Zahlenwert, sodass die aus Aminosäurezeichen bestehenden Sequenzen in Zahlenketten umgewandelt werden können. Ebenso wie oben werden Original- und Referenztupel und -indizes erzeugt und miteinander verglichen. Desgleichen werden wie oben die Zahlenwerte der Übereinstimmungen in einer EIT erfasst und die übereinstimmenden Original-Sequenzen ermittelt, indem auf diejenigen Zählzellen zugegriffen wird, deren c-Werte einen vorgegebenen Schwellenwert überschreiten.
  • BEISPIEL 4
  • Die Erkennung von Buchstaben-Zeichenketten erfolgt auf fast dieselbe Weise. Jedem Buchstaben wird ein eindeutiger Zahlenwert zugewiesen. Die Buchstaben-Zeichenketten werden in Zahlenfolgen umgewandelt, die mittels des allgemeinen Verfahrens verarbeitet werden, um die Original- und Referenztupel und -indizes zu erzeugen. Die Indizes werden ebenso wie oben miteinander verglichen, zur Deckung gebracht und erfasst. Die Original-Buchstaben-Zeichenketten werden aus der Datenbank ermittelt, indem man nach denjenigen c-Werten in der EIT sucht, die einen vorgegebenen Schwellenwert überschreiten.
  • BEISPIEL 5
  • Die Spracherkennung verläuft ebenso. Zuerst wird die Sprache mittels in der Technik bekannter Verfahren in Phoneme umgewandelt. Aus den Sprachmustern werden dann aus Phonemzeichen bestehende Zeichenketten. Jedem Phonemzeichen wird ein eindeutiger Zahlenwert zugewiesen, und die Original- und Referenz-Phonemzeichenketten werden in Zahlenketten umgewandelt. Dann wird wie oben das allgemeine Verfahren angewendet.
  • BEISPIEL 6
  • Unter Verwendung der vorliegenden Erfindung kann auch eine Musikerkennung durchgeführt werden. Ein Lied oder eine Musikaufzeichnung besteht aus einer Folge von Notenzeichen. Jeder Note wird ein Zahlenwert oder ein alphanumerischer Wert zugewiesen. Zum Beispiel werden die Noten der C-Dur-Tonleiter als „CDEFGAHC" dargestellt. Vorzeichen (B und Kreuz), Pausen und Notenlängen (Viertel- und Achtelnoten usw.) können durch zusätzliche alphanumerische Werte bezeichnet werden. Ausgehend von bekannten Verfahren können weitere Umwandlungsverfahren entwickelt werden. Dann wird aus dem Lied oder der Musikaufzeichnung eine Folge alphanumerischer Zeichen, die unter Anwendung der obigen Beschreibung in eine Zahlenfolge umgewandelt werden können. Dann wird das allgemeine Verfahren angewendet, um eine Referenz-Notenfolge mit Original-Notenfolgen in der Datenbank zu vergleichen.

Claims (31)

  1. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank, welches die folgenden Schritte umfasst: Erzeugen eines oder mehrerer Originaltupel für jede der Original-Zeichenketten (200) in der Datenbank durch: a. Aufgliedern (15) jeder Original-Zeichenkette (200) in zwei oder mehr Original-Teilzeichenketten (210) von zusammenhängenden Zeichen; b. Zusammenfügen von zwei oder mehr nicht zusammenhängenden Original-Teilzeichenketten der Original-Zeichenkette (200), um ein oder mehr der Original-Zeichenkette (200) zugeordnete Originaltupel zu bilden; Erzeugen (25) eines eindeutigen Originalindexes (312, 412) für jedes aus einer Original-Zeichenkette erzeugte Originaltupel, wobei der Originalindex (312, 412) derjenigen Original-Zeichenkette zugeordnet ist (30), aus welcher das Originaltupel erzeugt wurde; Erzeugen eines oder mehrerer Referenztupel aus der Referenz-Zeichenkette durch: c. Aufgliedern (35) der Referenz-Zeichenkette in zwei oder mehr Referenz-Teilzeichenketten von zusammenhängenden Zeichen; d. Zusammenfügen (40) von mindestens zwei nicht zusammenhängenden Referenz-Teilzeichenketten, um mindestens ein Referenztupel zu bilden; Erzeugen (45) eines eindeutigen Referenzindexes (350, 450) für jedes Referenztupel in derselben Weise, wie der Originalindex (312, 412) erzeugt wurde; Vergleichen (50) mindestens eines Referenzindexes (350, 450) mit mindestens einem Originalindex (312, 412); Erfassen (55) der Übereinstimmungen zwischen dem Referenzindex (350, 450) und dem Originalindex (312, 412); Auswählen (60) einer Original-Zeichenkette (200) aus der Datenbank anhand der Anzahl der Übereinstimmungen zwischen einem oder mehreren Originalindizes (312, 412) und einem oder mehreren Referenzindezes (350, 450).
  2. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem alle Original-Teilzeichenketten (210) eine fest vorgegebene Länge (225) aufweisen.
  3. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem die Original-Teilzeichenketten (210) unterschiedlich lang (225) sind.
  4. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem die gebildeten Originaltupel eine fest vorgegebene Länge (225) aufweisen.
  5. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem die gebildeten Originaltupel unterschiedlich lang (225) sind.
  6. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem die Originaltupel unter Anwendung der folgenden Regeln gebildet werden: Jede das Tupel bildende nachfolgende Teilzeichenkette hat eine in Zeichen gemessene Startposition (220), die von einem Anfangszeichen der Original-Zeichenkette weiter entfernt ist als die Startposition (220) aller vorangehenden das Tupel bildenden Teilzeichenketten; keine Teilzeichenkette kann zur Bildung eines Tupels verwendet werden, wenn die Teilzeichenkette infolge ihrer Startposition (220) und ihrer in Zeichen gemessenen Länge (225) die Länge (225) der Original-Zeichenkette überschreitet; die Startzeichen zweier aufeinander folgender Teilzeichenketten in einer Original-Zeichenkette müssen zwischen einem minimalen und einem maximalen Kohärenzradius der beiden liegen, wobei die Abstandsradien in Zeichen gemessen werden.
  7. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem der Originalindex (312, 412) und der Referenzindex (350, 450) mittels desselben Algorithmus erzeugt werden.
  8. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem der Originalindex (312, 412) und der Referenzindex (350, 450) Zahlen sind.
  9. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 1, bei welchem der Originalindex (312, 412) und der Referenzindex (350, 450) ganze Zahlen sind.
  10. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach einem der Ansprüche 1 bis 9, welches ferner die folgenden Schritte umfasst: Verwenden (30) des Originalindexes (312, 412) zum Zeigen auf eine Zelle (310, 410) in einer ersten Speicher-Referenzstruktur und zum Speichern (30) eines zu einer Original-Zeichenkette gehörenden Datensatzes (314, 414) in der Zelle (310, 410), Vergleichen (50) mindestens eines Referenzindexes (350, 450) mit mindestens einem Originalindex (312, 412) unter Verwendung der Speicher-Referenzstruktur; Speichern (55) der erfassten Ergebnisse in einer zweiten Speicher-Referenzstruktur (500).
  11. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die im Datensatz (314, 414) enthaltenen Daten ein Zeiger (315, 415) sind, der zum Suchen derjenigen Original-Zeichenkette in der Datenbank dient, die das Tupel enthält, aus welchem der Originalindex (312, 412) abgeleitet wurde.
  12. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem der Datensatz (314, 414) einen Verschiebungswert (320, 420) enthält, der zur Ermittlung der Position der mit der Referenz-Zeichenkette der Original-Zeichenkette übereinstimmenden Zeichenfolge dient.
  13. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 11, bei welchem die Zelle (310, 410) eine Liste (328, 428) von Datensätzen (314, 414) enthält, in welchen wiederum ein Verweis auf eine Original-Zeichenkette enthalten ist.
  14. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 11, bei welchem die Zelle (310, 410) eine Liste (328, 428) von Datensätzen (314, 414) enthält, in welchen wiederum ein Verweis auf eine Original-Zeichenkette und ein zugehöriger Verschiebungswert (320, 420) enthalten ist.
  15. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 12, bei welchem der Verschiebungswert (320, 420) anhand der in Zeichen gemessenen Position von mindestens einer Teilzeichenkette der Original-Zeichenkette berechnet wird, welche zur Bildung des Tupels des Originalindexes (312, 412) dient.
  16. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 12, bei welchem der Verschiebungswert (320, 420) gleich dem in Zeichen gemessenen Abstand zwischen dem Mittelwert der Position jeder zur Bildung des Tupels verwendeten Original-Teilzeichenkette und einem bestimmten Zeichen in der Original-Zeichenkette ist.
  17. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die Übereinstimmung zwischen der Original-Zeichenkette und der Referenz-Zeichenkette genau ist.
  18. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die Übereinstimmung zwischen der Original-Zeichenkette und der Referenz-Zeichenkette ungefähr ist.
  19. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die Daten in der zweiten Speicherstruktur (500) einen Wert beinhalten, der den Grad der Übereinstimmung zwischen der Original-Zeichenkette und der Referenz-Zeichenkette anzeigt.
  20. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die erste Referenzstruktur (300) eine Datenstruktur ist, die solche Strukturen wie einen Vektor, eine Matrix und eine Hash-Tabelle beinhaltet.
  21. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 20, bei welchem die erste Referenzstruktur (300) eine Matrix ist.
  22. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die zweite Referenzstruktur (500) eine statische Datenstruktur ist, die solche Strukturen wie einen Vektor, eine Matrix und eine Hash-Tabelle beinhaltet.
  23. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die zweite Referenzstruktur (500) eine dynamische Datenstruktur ist, die solche Strukturen wie einen Vektor, eine Matrix und eine Hash-Tabelle beinhaltet.
  24. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 23, bei welchem die zweite Referenzstruktur (500) eine dynamische Hash-Tabelle ist.
  25. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach Anspruch 10, bei welchem die zweite Referenzstruktur (500) jedes Mal aktualisiert wird, wenn ein Referenzindex (350, 450) mit einem Originalindex (312, 412) übereinstimmt.
  26. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach einem der Ansprüche 1 bis 25, bei welchem die Referenz-Zeichenketten Nukleotid-Sequenzen darstellen und die Original-Zeichenketten (200) DNA-Sequenzen darstellen.
  27. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach einem der Ansprüche 1 bis 25, bei welchem die Referenz-Zeichenketten Aminosäuresequenzen und die Original-Zeichenketten (200) Proteinsequenzen darstellen.
  28. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach einem der Ansprüche 1 bis 25, bei welchem die Referenz-Zeichenketten Buchstaben-Zeichenketten und die Original-Zeichenketten (200) ebenfalls Buchstaben-Zeichenketten darstellen.
  29. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach einem der Ansprüche 1 bis 25, bei welchem die Referenz-Zeichenketten Phonemfolgen und die Original-Zeichenketten (200) ebenfalls Phonemfolgen darstellen.
  30. Verfahren zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank nach einem der Ansprüche 1 bis 25, bei welchem die Referenz-Zeichenketten Notenfolgen und die Original-Zeichenketten (200) ebenfalls Notenfolgen darstellen.
  31. Computersystem zum Auffinden einer Referenz-Zeichenkette in einer oder mehreren Original-Zeichenketten (200) in einer Datenbank, welches Folgendes umfasst: eine Datenbank mit einem Satz Original-Zeichenketten (200); Mittel zum Erzeugen mindestens eines Originaltupels für jede der Original-Zeichenketten (200) in der Datenbank, wobei das Tupel gebildet wird durch: a. Aufgliedern jeder Original-Zeichenkette in zwei oder mehr zusammenhängende Original-Teilzeichenketten (210); b. Bilden mindestens eines zu jeder Original-Zeichenkette gehörenden Originaltupels durch Zusammenfügen von mindestens zwei nicht zusammenhängenden Teilzeichenketten der Original-Zeichenkette; einen eindeutigen Originalindex (312, 412) für jedes Originaltupel, der durch einen Index-Algorithmus aus der Original-Zeichenkette gebildet wurde, wobei der Originalindex (312, 412) derjenigen Original-Zeichenkette zugeordnet ist, aus welcher das Originaltupel erzeugt wurde; eine erste Speicher-Referenzstruktur (300) mit Zellen (310, 410), wobei auf die Zellen (310, 410) durch den Originalindex (312, 412) zugegriffen wird und die Zellen (310, 410) Daten enthalten, welche zu derjenigen Original-Zeichenkette gehören, aus der das Originaltupel gebildet wurde; ein oder mehrere Referenztupel, die aus der Referenz-Zeichenkette gebildet wurden durch: c. Aufgliedern der Referenz-Zeichenkette in zwei oder mehr nicht zusammenhängende Referenz-Teilzeichenketten; d. Bilden mindestens eines Referenztupels durch Zusammenfügen von mindestens zwei Referenz-Teilzeichenketten; einen eindeutigen Referenzindex (350, 450) für jedes mittels des Index-Algorithmus erzeugte Referenztupel, wobei der Referenzindex (350, 450) mit mindestens einem Originalindex (312, 412) verglichen wird; eine zweite Speicher-Referenzstruktur (500) zum Erfassen der Übereinstimmungen zwischen dem Referenzindex (350, 450) und dem Originalindex (312, 412) einer Original-Zeichenkette in der Datenbank, wobei die Original-Zeichenkette anhand der Anzahl der Übereinstimmungen zwischen einem oder mehreren Originalindizes (312, 412) und einem oder mehreren Referenzindizes (350, 450) ausgewählt wird.
DE69333422T 1992-07-31 1993-05-24 Auffindung von Zeichenketten in einer Datenbank von Zeichenketten Expired - Lifetime DE69333422T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US92320392A 1992-07-31 1992-07-31
US923203 1992-07-31

Publications (2)

Publication Number Publication Date
DE69333422D1 DE69333422D1 (de) 2004-04-01
DE69333422T2 true DE69333422T2 (de) 2004-12-16

Family

ID=25448300

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69333422T Expired - Lifetime DE69333422T2 (de) 1992-07-31 1993-05-24 Auffindung von Zeichenketten in einer Datenbank von Zeichenketten

Country Status (5)

Country Link
US (1) US5577249A (de)
EP (1) EP0583559B1 (de)
JP (1) JP2673091B2 (de)
AT (1) ATE260486T1 (de)
DE (1) DE69333422T2 (de)

Families Citing this family (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793370A (ja) * 1993-09-27 1995-04-07 Hitachi Device Eng Co Ltd 遺伝子データベース検索システム
US5970454A (en) * 1993-12-16 1999-10-19 British Telecommunications Public Limited Company Synthesizing speech by converting phonemes to digital waveforms
US5778371A (en) * 1994-09-13 1998-07-07 Kabushiki Kaisha Toshiba Code string processing system and method using intervals
EP0702311A1 (de) * 1994-09-14 1996-03-20 Kabushiki Kaisha Toshiba Datenverarbeitungssystem, Datenwiederauffindungssystem, Datenverarbeitungsverfahren und Datenwiederauffindungsverfahren
US8094949B1 (en) 1994-10-21 2012-01-10 Digimarc Corporation Music methods and systems
US6560349B1 (en) 1994-10-21 2003-05-06 Digimarc Corporation Audio monitoring using steganographic information
US5864812A (en) * 1994-12-06 1999-01-26 Matsushita Electric Industrial Co., Ltd. Speech synthesizing method and apparatus for combining natural speech segments and synthesized speech segments
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
US6505160B1 (en) 1995-07-27 2003-01-07 Digimarc Corporation Connected audio and other media objects
US6829368B2 (en) 2000-01-26 2004-12-07 Digimarc Corporation Establishing and interacting with on-line media collections using identifiers in media signals
US7562392B1 (en) 1999-05-19 2009-07-14 Digimarc Corporation Methods of interacting with audio and ambient music
US5799301A (en) * 1995-08-10 1998-08-25 International Business Machines Corporation Apparatus and method for performing adaptive similarity searching in a sequence database
US5668988A (en) * 1995-09-08 1997-09-16 International Business Machines Corporation Method for mining path traversal patterns in a web environment by converting an original log sequence into a set of traversal sub-sequences
US5909677A (en) * 1996-06-18 1999-06-01 Digital Equipment Corporation Method for determining the resemblance of documents
JP3148692B2 (ja) * 1996-09-04 2001-03-19 株式会社エイ・ティ・アール音声翻訳通信研究所 類似検索装置
JP3283193B2 (ja) * 1996-09-27 2002-05-20 日立ソフトウエアエンジニアリング株式会社 配列データ類似度演算装置
US6373971B1 (en) 1997-06-12 2002-04-16 International Business Machines Corporation Method and apparatus for pattern discovery in protein sequences
US6108666A (en) * 1997-06-12 2000-08-22 International Business Machines Corporation Method and apparatus for pattern discovery in 1-dimensional event streams
US7689532B1 (en) 2000-07-20 2010-03-30 Digimarc Corporation Using embedded data with file sharing
US6223186B1 (en) 1998-05-04 2001-04-24 Incyte Pharmaceuticals, Inc. System and method for a precompiled database for biomolecular sequence information
US6178531B1 (en) 1998-12-18 2001-01-23 Ncr Corporation Method and apparatus for remotely testing token ring local area networks
US6507788B1 (en) 1999-02-25 2003-01-14 Société de Conseils de Recherches et D'Applications Scientifiques (S.C.R.A.S.) Rational selection of putative peptides from identified nucleotide, or peptide sequences, of unknown function
AU777693B2 (en) * 1999-03-05 2004-10-28 Canon Kabushiki Kaisha Database annotation and retrieval
US8095796B2 (en) 1999-05-19 2012-01-10 Digimarc Corporation Content identifiers
US7302574B2 (en) 1999-05-19 2007-11-27 Digimarc Corporation Content identifiers triggering corresponding responses through collaborative processing
US6941317B1 (en) 1999-09-14 2005-09-06 Eragen Biosciences, Inc. Graphical user interface for display and analysis of biological sequence data
WO2001024040A1 (en) * 1999-09-30 2001-04-05 Hnc Software, Inc. Webstation: configurable web-based workstation for reason driven data analysis
US7418431B1 (en) * 1999-09-30 2008-08-26 Fair Isaac Corporation Webstation: configurable web-based workstation for reason driven data analysis
US6882970B1 (en) 1999-10-28 2005-04-19 Canon Kabushiki Kaisha Language recognition using sequence frequency
US7310600B1 (en) 1999-10-28 2007-12-18 Canon Kabushiki Kaisha Language recognition using a similarity measure
DE60036486T2 (de) * 1999-10-28 2008-06-12 Canon K.K. Methode und apparat zum prüfen von musterübereinstimmungen
US6694324B1 (en) * 1999-12-16 2004-02-17 Ncr Corporation Determination of records with a specified number of largest or smallest values in a parallel database system
US6633817B1 (en) 1999-12-29 2003-10-14 Incyte Genomics, Inc. Sequence database search with sequence search trees
US6470345B1 (en) 2000-01-04 2002-10-22 International Business Machines Corporation Replacement of substrings in file/directory pathnames with numeric tokens
US20050026199A1 (en) * 2000-01-21 2005-02-03 Shaw Sandy C. Method for identifying biomarkers using Fractal Genomics Modeling
US20050158736A1 (en) * 2000-01-21 2005-07-21 Shaw Sandy C. Method for studying cellular chronomics and causal relationships of genes using fractal genomics modeling
US7366719B2 (en) 2000-01-21 2008-04-29 Health Discovery Corporation Method for the manipulation, storage, modeling, visualization and quantification of datasets
US6920451B2 (en) * 2000-01-21 2005-07-19 Health Discovery Corporation Method for the manipulation, storage, modeling, visualization and quantification of datasets
US20050079524A1 (en) * 2000-01-21 2005-04-14 Shaw Sandy C. Method for identifying biomarkers using Fractal Genomics Modeling
EP1152349A1 (de) * 2000-05-06 2001-11-07 Deutsches Krebsforschungszentrum Stiftung des öffentlichen Rechts Verfahren zur Sequenzausrichtung
WO2001086577A2 (en) * 2000-05-10 2001-11-15 E. I. Du Pont De Nemours And Company Method of discovering patterns in symbol sequences
US20010042204A1 (en) * 2000-05-11 2001-11-15 David Blaker Hash-ordered databases and methods, systems and computer program products for use of a hash-ordered database
GB0011798D0 (en) * 2000-05-16 2000-07-05 Canon Kk Database annotation and retrieval
AU2001266948A1 (en) * 2000-06-14 2001-12-24 Douglas M. Blair Apparatus and method for providing sequence database comparison
GB0015233D0 (en) 2000-06-21 2000-08-16 Canon Kk Indexing method and apparatus
US7853664B1 (en) 2000-07-31 2010-12-14 Landmark Digital Services Llc Method and system for purchasing pre-recorded music
GB0023930D0 (en) 2000-09-29 2000-11-15 Canon Kk Database annotation and retrieval
US7778817B1 (en) * 2000-09-30 2010-08-17 Intel Corporation Method and apparatus for determining text passage similarity
JP4299963B2 (ja) * 2000-10-02 2009-07-22 ヒューレット・パッカード・カンパニー 意味的まとまりに基づいて文書を分割する装置および方法
GB0027178D0 (en) 2000-11-07 2000-12-27 Canon Kk Speech processing system
GB0028277D0 (en) 2000-11-20 2001-01-03 Canon Kk Speech processing system
US20020072982A1 (en) * 2000-12-12 2002-06-13 Shazam Entertainment Ltd. Method and system for interacting with a user in an experiential environment
US20020120403A1 (en) * 2000-12-21 2002-08-29 Wen-Hsuang Yao Method, system, and program of searching for a pair of fragments from two data sequences
AU2002232817A1 (en) 2000-12-21 2002-07-01 Digimarc Corporation Methods, apparatus and programs for generating and utilizing content signatures
US7359889B2 (en) 2001-03-02 2008-04-15 Landmark Digital Services Llc Method and apparatus for automatically creating database for use in automated media recognition system
US7046819B2 (en) 2001-04-25 2006-05-16 Digimarc Corporation Encoded reference signal for digital watermarks
US7076731B2 (en) * 2001-06-02 2006-07-11 Microsoft Corporation Spelling correction system and method for phrasal strings using dictionary looping
JP3881224B2 (ja) * 2001-11-30 2007-02-14 セレスター・レキシコ・サイエンシズ株式会社 配列情報処理装置、配列情報処理方法、プログラム、および、記録媒体
US7209932B2 (en) * 2002-03-25 2007-04-24 International Business Machines Corporation Method, system, and program for allocating tasks to a plurality of processors
US7366645B2 (en) * 2002-05-06 2008-04-29 Jezekiel Ben-Arie Method of recognition of human motion, vector sequences and speech
US20040024760A1 (en) * 2002-07-31 2004-02-05 Phonetic Research Ltd. System, method and computer program product for matching textual strings using language-biased normalisation, phonetic representation and correlation functions
US7472114B1 (en) 2002-09-18 2008-12-30 Symantec Corporation Method and apparatus to define the scope of a search for information from a tabular data source
US7886359B2 (en) 2002-09-18 2011-02-08 Symantec Corporation Method and apparatus to report policy violations in messages
US7673344B1 (en) 2002-09-18 2010-03-02 Symantec Corporation Mechanism to search information content for preselected data
US8041719B2 (en) * 2003-05-06 2011-10-18 Symantec Corporation Personal computing device-based mechanism to detect preselected data
US8661498B2 (en) 2002-09-18 2014-02-25 Symantec Corporation Secure and scalable detection of preselected data embedded in electronically transmitted messages
CA2499508A1 (en) * 2002-09-18 2004-04-01 Vontu, Inc. Detection of preselected data
US8225371B2 (en) 2002-09-18 2012-07-17 Symantec Corporation Method and apparatus for creating an information security policy based on a pre-configured template
US7047254B2 (en) * 2002-10-31 2006-05-16 Hewlett-Packard Development Company, L.P. Method and apparatus for providing aggregate object identifiers
US7296011B2 (en) * 2003-06-20 2007-11-13 Microsoft Corporation Efficient fuzzy match for evaluating data records
US7203680B2 (en) * 2003-10-01 2007-04-10 International Business Machines Corporation System and method for encoding and detecting extensible patterns
US9489687B2 (en) * 2003-12-04 2016-11-08 Black Duck Software, Inc. Methods and systems for managing software development
US7552093B2 (en) * 2003-12-04 2009-06-23 Black Duck Software, Inc. Resolving license dependencies for aggregations of legally-protectable content
US20060116966A1 (en) * 2003-12-04 2006-06-01 Pedersen Palle M Methods and systems for verifying protectable content
US8700533B2 (en) * 2003-12-04 2014-04-15 Black Duck Software, Inc. Authenticating licenses for legally-protectable content based on license profiles and content identifiers
CA2548496A1 (en) * 2003-12-05 2005-06-23 Council Of Scientific And Industrial Research A computer based versatile method for identifying protein coding dna sequences useful as drug targets
US8548170B2 (en) 2003-12-10 2013-10-01 Mcafee, Inc. Document de-registration
GB0400974D0 (en) * 2004-01-16 2004-02-18 Solexa Ltd Multiple inexact matching
US20060184549A1 (en) * 2005-02-14 2006-08-17 Rowney Kevin T Method and apparatus for modifying messages based on the presence of pre-selected data
US8011003B2 (en) * 2005-02-14 2011-08-30 Symantec Corporation Method and apparatus for handling messages containing pre-selected data
US7797245B2 (en) * 2005-03-18 2010-09-14 Black Duck Software, Inc. Methods and systems for identifying an area of interest in protectable content
US20060235845A1 (en) * 2005-04-15 2006-10-19 Argentar David R Identifying patterns of symbols in sequences of symbols using a binary array representation of the sequence
US7403943B2 (en) * 2005-04-15 2008-07-22 E. I. Du Pont De Nemours And Company Pattern discovery using PINA and PIBA arrays
US7424472B2 (en) * 2005-05-27 2008-09-09 Microsoft Corporation Search query dominant location detection
US8010538B2 (en) * 2006-05-08 2011-08-30 Black Duck Software, Inc. Methods and systems for reporting regions of interest in content files
US7739587B2 (en) * 2006-06-12 2010-06-15 Xerox Corporation Methods and apparatuses for finding rectangles and application to segmentation of grid-shaped tables
WO2008031054A2 (en) * 2006-09-07 2008-03-13 Black Lab Security Systems, Inc. Creating and using a specific user unique id for security login authentication
US8010803B2 (en) 2006-10-12 2011-08-30 Black Duck Software, Inc. Methods and apparatus for automated export compliance
US7681045B2 (en) * 2006-10-12 2010-03-16 Black Duck Software, Inc. Software algorithm identification
US20080104502A1 (en) * 2006-10-26 2008-05-01 Yahoo! Inc. System and method for providing a change profile of a web page
US8745183B2 (en) * 2006-10-26 2014-06-03 Yahoo! Inc. System and method for adaptively refreshing a web page
US20080104257A1 (en) * 2006-10-26 2008-05-01 Yahoo! Inc. System and method using a refresh policy for incremental updating of web pages
US8065739B1 (en) 2008-03-28 2011-11-22 Symantec Corporation Detecting policy violations in information content containing data in a character-based language
US7996374B1 (en) 2008-03-28 2011-08-09 Symantec Corporation Method and apparatus for automatically correlating related incidents of policy violations
US7996373B1 (en) 2008-03-28 2011-08-09 Symantec Corporation Method and apparatus for detecting policy violations in a data repository having an arbitrary data schema
US20090265340A1 (en) * 2008-04-07 2009-10-22 Bob Barcklay Proximity search for point-of-interest names combining inexact string match with an expanding radius search
US9253154B2 (en) 2008-08-12 2016-02-02 Mcafee, Inc. Configuration management for a capture/registration system
US8826443B1 (en) 2008-09-18 2014-09-02 Symantec Corporation Selective removal of protected content from web requests sent to an interactive website
US9390167B2 (en) 2010-07-29 2016-07-12 Soundhound, Inc. System and methods for continuous audio matching
US9135396B1 (en) 2008-12-22 2015-09-15 Amazon Technologies, Inc. Method and system for determining sets of variant items
US8613040B2 (en) * 2008-12-22 2013-12-17 Symantec Corporation Adaptive data loss prevention policies
US8731843B2 (en) * 2009-02-03 2014-05-20 Complete Genomics, Inc. Oligomer sequences mapping
WO2010091021A2 (en) * 2009-02-03 2010-08-12 Complete Genomics, Inc. Oligomer sequences mapping
EP2393944A4 (de) * 2009-02-03 2013-11-27 Complete Genomics Inc Indexierung einer referenzsequenz für oligomersequenz-mapping
US8473442B1 (en) 2009-02-25 2013-06-25 Mcafee, Inc. System and method for intelligent state management
US8935752B1 (en) 2009-03-23 2015-01-13 Symantec Corporation System and method for identity consolidation
US8447722B1 (en) 2009-03-25 2013-05-21 Mcafee, Inc. System and method for data mining and security policy management
EP2511843B1 (de) * 2009-04-29 2016-12-21 Complete Genomics, Inc. Verfahren und System zum Aufrufen von Variationen in einer Polynukleotidprobensequenz in Bezug auf eine Referenzpolynukleotidsequenz
US9137206B2 (en) * 2009-11-20 2015-09-15 International Business Machines Corporation Service registry for saving and restoring a faceted selection
US8745094B2 (en) 2010-03-01 2014-06-03 Protegrity Corporation Distributed tokenization using several substitution steps
US8650195B2 (en) * 2010-03-26 2014-02-11 Palle M Pedersen Region based information retrieval system
WO2011137368A2 (en) 2010-04-30 2011-11-03 Life Technologies Corporation Systems and methods for analyzing nucleic acid sequences
KR101582436B1 (ko) * 2010-05-04 2016-01-04 샤잠 엔터테인먼트 리미티드 미디어의 동기화 방법 및 시스템
GB2494587A (en) * 2010-05-20 2013-03-13 Real Time Genomics Inc Method and system for sequence correlation
US9268903B2 (en) 2010-07-06 2016-02-23 Life Technologies Corporation Systems and methods for sequence data alignment quality assessment
US9047371B2 (en) 2010-07-29 2015-06-02 Soundhound, Inc. System and method for matching a query against a broadcast stream
US9262397B2 (en) * 2010-10-08 2016-02-16 Microsoft Technology Licensing, Llc General purpose correction of grammatical and word usage errors
US8806615B2 (en) 2010-11-04 2014-08-12 Mcafee, Inc. System and method for protecting specified data combinations
JP5884293B2 (ja) * 2011-04-28 2016-03-15 富士通株式会社 類似文字コード群検索支援方法、類似候補抽出方法、類似候補抽出プログラムおよび類似候補抽出装置
US9035163B1 (en) 2011-05-10 2015-05-19 Soundbound, Inc. System and method for targeting content based on identified audio and multimedia
US9407463B2 (en) * 2011-07-11 2016-08-02 Aol Inc. Systems and methods for providing a spam database and identifying spam communications
US8954458B2 (en) 2011-07-11 2015-02-10 Aol Inc. Systems and methods for providing a content item database and identifying content items
US8855997B2 (en) 2011-07-28 2014-10-07 Microsoft Corporation Linguistic error detection
US20130246431A1 (en) 2011-12-27 2013-09-19 Mcafee, Inc. System and method for providing data protection workflows in a network environment
US9648011B1 (en) * 2012-02-10 2017-05-09 Protegrity Corporation Tokenization-driven password generation
US9547679B2 (en) 2012-03-29 2017-01-17 Spotify Ab Demographic and media preference prediction using media content data analysis
US9158754B2 (en) 2012-03-29 2015-10-13 The Echo Nest Corporation Named entity extraction from a block of text
US9406072B2 (en) 2012-03-29 2016-08-02 Spotify Ab Demographic and media preference prediction using media content data analysis
US10957310B1 (en) 2012-07-23 2021-03-23 Soundhound, Inc. Integrated programming framework for speech and text understanding with meaning parsing
WO2015027245A1 (en) 2013-08-23 2015-02-26 Complete Genomics, Inc. Long fragment de novo assembly using short reads
US9977801B2 (en) 2013-11-21 2018-05-22 Sap Se Paged column dictionary
US9977802B2 (en) * 2013-11-21 2018-05-22 Sap Se Large string access and storage
US9507849B2 (en) 2013-11-28 2016-11-29 Soundhound, Inc. Method for combining a query and a communication command in a natural language computer system
GB201322057D0 (en) * 2013-12-13 2014-01-29 Qatar Foundation Descriptive and prescriptive data cleaning
US10235377B2 (en) 2013-12-23 2019-03-19 Sap Se Adaptive dictionary compression/decompression for column-store databases
US9292488B2 (en) 2014-02-01 2016-03-22 Soundhound, Inc. Method for embedding voice mail in a spoken utterance using a natural language processing computer system
US11295730B1 (en) 2014-02-27 2022-04-05 Soundhound, Inc. Using phonetic variants in a local context to improve natural language understanding
US9564123B1 (en) 2014-05-12 2017-02-07 Soundhound, Inc. Method and system for building an integrated user profile
US9798823B2 (en) 2015-11-17 2017-10-24 Spotify Ab System, methods and computer products for determining affinity to a content creator
CN107203567A (zh) * 2016-03-18 2017-09-26 伊姆西公司 用于搜索字串的方法和设备
CN109766893A (zh) * 2019-01-09 2019-05-17 北京数衍科技有限公司 适于购物小票的图片文字识别方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4753878A (en) * 1981-10-01 1988-06-28 Amb Systems Corp. Microorganism identification technique
US4922414A (en) * 1982-12-17 1990-05-01 Symbolics Inc. Symbolic language data processing system
US4670890A (en) * 1983-03-04 1987-06-02 Research Corporation Method of and/or apparatus for encoding and decoding sequential information in data handling systems
JPS6017564A (ja) * 1983-07-08 1985-01-29 Brother Ind Ltd 電子辞書
US4760523A (en) * 1984-06-29 1988-07-26 Trw Inc. Fast search processor
US4675829A (en) * 1984-07-27 1987-06-23 Intellicorp Corporation Method and apparatus for building knowledge-based systems
US4899128A (en) * 1985-12-11 1990-02-06 Yeda Research And Development Co., Ltd. Method and apparatus for comparing strings using hash values
US4908773A (en) * 1987-04-06 1990-03-13 Genex Corporation Computer designed stabilized proteins and method for producing same
US4811218A (en) * 1986-06-02 1989-03-07 Applied Biosystems, Inc. Real time scanning electrophoresis apparatus for DNA sequencing
US4853871A (en) * 1987-04-06 1989-08-01 Genex Corporation Computer-based method for designing stablized proteins
US4930071A (en) * 1987-06-19 1990-05-29 Intellicorp, Inc. Method for integrating a knowledge-based system with an arbitrary database system
US4939666A (en) * 1987-09-02 1990-07-03 Genex Corporation Incremental macromolecule construction methods
US4876541A (en) * 1987-10-15 1989-10-24 Data Compression Corporation Stem for dynamically compressing and decompressing electronic data
US4935877A (en) * 1988-05-20 1990-06-19 Koza John R Non-linear genetic algorithms for solving problems
US5008818A (en) * 1989-04-24 1991-04-16 Alexander K. Bocast Method and apparatus for reconstructing a token from a token fragment
US5276616A (en) * 1989-10-16 1994-01-04 Sharp Kabushiki Kaisha Apparatus for automatically generating index
US5051745A (en) * 1990-08-21 1991-09-24 Pkware, Inc. String searcher, and compressor using same
US5276741A (en) * 1991-05-16 1994-01-04 Trw Financial Systems & Services, Inc. Fuzzy string matcher

Also Published As

Publication number Publication date
EP0583559A1 (de) 1994-02-23
JP2673091B2 (ja) 1997-11-05
ATE260486T1 (de) 2004-03-15
EP0583559B1 (de) 2004-02-25
JPH0698770A (ja) 1994-04-12
DE69333422D1 (de) 2004-04-01
US5577249A (en) 1996-11-19

Similar Documents

Publication Publication Date Title
DE69333422T2 (de) Auffindung von Zeichenketten in einer Datenbank von Zeichenketten
DE69912410T2 (de) Schnelles zeichenkettensuchen und -indizieren
DE69731142T2 (de) System zum Wiederauffinden von Dokumenten
DE60004687T2 (de) Verfahren zur thematischen klassifikation von dokumenten, modul zur thematischen klassifikation und ein derartiges modul beinhaltende suchmaschine
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE69926305T2 (de) Rechnerlesbarer Speicher zum Speichern einer Datenbank und Indizes
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE10085387T5 (de) Verfahren und Vorrichtung zur Adresssuche längster Übereinstimmung
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker
DE2905328A1 (de) Verfahren und vorrichtung zur assoziativen informationswiedergewinnung
DE102005032744A1 (de) Indexextraktion von Dokumenten
DE102005032734A1 (de) Indexextraktion von Dokumenten
WO1999017226A1 (de) Verfahren zum hinzufügen bzw. entfernen einer adresse in einem teilbesetzten, nicht-balancierten binären baum
DE19810843A1 (de) Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung
DE112020000554T5 (de) Verfahren zum zugreifen auf datensätze eines stammdatenverwaltungssystems
DE10028624B4 (de) Verfahren und Vorrichtung zur Dokumentenbeschaffung
DE2513566A1 (de) Binaere referenzmatrix
DE112013006764T5 (de) Suchvorrichtung
DE102013210914B4 (de) Datenverarbeitungsverfahren, Datenabfrageverfahren in Datenbank und entsprechende Einheit
DE10048478C2 (de) Verfahren zum Zugriff auf eine Speichereinheit bei der Suche nach Teilzeichenfolgen
DE60001585T2 (de) Datenverarbeitungseinrichtung und -verfahren
DE10057634C2 (de) Verfahren zur Verarbeitung von Text in einer Rechnereinheit und Rechnereinheit
DE102005032733A1 (de) Indexextraktion von Dokumenten
DE102016002116A1 (de) Mehrstufiges Indexierungsverfahren für Audio-Fingerabdruck-Bibliotheksdaten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)