DE19532371A1 - Verwendung eines genetischen Algorithmus zur Optimierung von Speicherplatz - Google Patents

Verwendung eines genetischen Algorithmus zur Optimierung von Speicherplatz

Info

Publication number
DE19532371A1
DE19532371A1 DE19532371A DE19532371A DE19532371A1 DE 19532371 A1 DE19532371 A1 DE 19532371A1 DE 19532371 A DE19532371 A DE 19532371A DE 19532371 A DE19532371 A DE 19532371A DE 19532371 A1 DE19532371 A1 DE 19532371A1
Authority
DE
Germany
Prior art keywords
tree
individuals
individual
selecting
sub
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.)
Granted
Application number
DE19532371A
Other languages
English (en)
Other versions
DE19532371C2 (de
Inventor
Shane Konsella
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19532371A1 publication Critical patent/DE19532371A1/de
Application granted granted Critical
Publication of DE19532371C2 publication Critical patent/DE19532371C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/12Computing arrangements based on biological models using genetic models
    • G06N3/126Evolutionary algorithms, e.g. genetic algorithms or genetic programming
    • 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/99931Database or file accessing

Description

Die vorliegende Erfindung bezieht sich im allgemeinen auf einen genetischen Algorithmus und insbesondere auf die Ver­ wendung eines genetischen Algorithmus, um den Computerspei­ cherplatz, der spärliche und redundante Daten enthält, zu optimieren, während ein Hochgeschwindigkeitszugriff auf die optimierte Datenstruktur beibehalten wird.
Der natürliche Auswahlprozeß schafft ein mächtiges Werkzeug zur Problemlösung. Dies wird durch die Natur und ihre ver­ schiedenen Beispiele der biologischen Arten gezeigt, die in verschiedenen Umgebungen überleben und sich weiter ent­ wickeln. In der Natur geben komplexe Kombinationen von Ei­ genschaften bestimmten biologischen Populationen die Fähig­ keit sich anzupassen, zu überleben und sich in ihren Umge­ bungen fortzupflanzen. Ähnlich beeindruckend ist die kom­ plexe, relativ schnelle und robuste Anpassung und das rela­ tiv gute Zwischenverhalten, das bei der Population von In­ dividuen in der Natur als Reaktion auf Änderungen der Um­ gebung auftritt. Die Verfahren der Natur zum Anpassen bio­ logischer Populationen an ihre Umgebung und die Verfahren der Natur zum Anpassen dieser Populationen an nachfolgende Änderungen in ihren Umgebungen (einschließlich des Überle­ bens und der Reproduktion der Geeignetsten) schafft ein nützliches Modell. Dieses Modell kann verwendet werden, um Verfahren zu entwickeln, um eine große Anzahl von komplexen Problemen zu lösen, von denen im allgemeinen ausgegangen wird, daß sie zur Lösung "Intelligenz" erfordern.
In der Natur ist ein Gen die grundsätzliche Funktionalein­ heit, durch die die Erbinformationen von den Eltern an den Nachwuchs weitergegeben werden. Gene erscheinen an bestimm­ ten Orten (genannt Genorte) entlang der Moleküle der DNA (Deoxyribonucleinsäure). Die DNA ist ein langes, gewindear­ tiges biologisches Molekül, das die Fähigkeit hat, Erbinfor­ mationen zu tragen, und das die Fähigkeit hat, als ein Mo­ dell zur Erzeugung von Kopien von sich selbst zu dienen. Al­ le bekannten Lebensformen auf diesem Planeten, einschließ­ lich der Bakterien, Pilze, Pflanzen, Tiere und Menschen, ba­ sieren auf dem DNA-Molekül.
Die genetische Codierung des DNA-Moleküls besteht aus langen Bändern (Sequenzen) von vier möglichen Genwerten, die an den verschiedenen Genorten entlang des DNA-Moleküls auftreten können. Für die DNA beziehen sich die vier möglichen Genwer­ te auf vier Basen, die Adenin, Guanin, Cytosin und Thymin heißen (normalerweise durch A, G, C bzw. T abgekürzt). Folg­ lich besteht der genetische Code in der DNA aus langen Bän­ dern, wie zum Beispiel CTCGACGGTCTC.
Ein Chromosom besteht aus zahlreichen Genorten mit einem be­ stimmten Wert (als "Allel" bezeichnet) an jeden Genort. Der Chromosomensatz für einen Menschen besteht aus 23 Chromoso­ menpaaren. Die Chromosomen zusammen schaffen die Informa­ tionen und Befehle, die notwendig sind, um einen einzelnen Menschen aufzubauen und zu beschreiben und enthalten etwa 3,000,000,000 Gene. Diese 3 Milliarden Gene bilden das so­ genannte "Geonom" für einen bestimmten Menschen. Vollstän­ dige Geonome der etwa 5 Milliarden lebenden Menschen bilden zusammen den Pool der genetischen Informationen für die menschliche Rasse. Es ist bekannt, daß bestimmte Genwerte, die an bestimmten Orten in bestimmten Chromosomen auftreten, bestimmte Eigenschaften des Einzelnen steuern, die Eigen­ schaften wie zum Beispiel die Augenfarbe, die Anfälligkeit gegenüber bestimmten Krankheiten, etc. einschließen.
Organismen, die aus den DNA-Informationen erzeugt wurden, verbringen ihr Leben mit dem Versuch, mit ihrer Umgebung zu­ rechtzukommen. Einige Organismen tun sich im Ringen mit oder gegen ihre Umgebung leichter als andere. Genauer gesagt überleben einige Organismen bis zum Alter der Reproduktion und geben daher ihre genetische Zusammenstellung an ihren Nachwuchs weiter. In der Natur bewirkt der Prozeß der dar­ winistischen natürlichen Auswahl, daß Organismen mit Eigen­ schaften, die das Überleben bis zum Alter der Reproduktion ermöglichen, alle oder ein Teil ihrer genetischen Zusammen­ setzung an den Nachwuchs weitergeben. Über eine Zeitdauer und viele Generationen entwickelt sich die Population als Ganzes weiter, so daß die Chromosomenbänder der Einzelnen in der überlebenden Population Eigenschaften bewahren, die zum Überleben des Organismus in seiner Umgebung beitragen.
Ein genetischer Algorithmus ist ein Modell einer Maschine, die lernt, die ihr Verhalten aus einer Metapher des im vor­ hergehenden beschriebenen Prozesses der Evolution ableitet. Dies wird durch die Erzeugung einer Population aus Indivi­ duen, innerhalb einer Maschine, durchgeführt, die durch Chromosomen dargestellt sind, im wesentlichen durch einen Satz von Zeichenbändern, die analog zu der Basis der vier Chromosomen des DNA-Moleküls sind. Die Individuen in der Po­ pulation durchlaufen dann einen Prozeß, der als Evolution bekannt ist.
Es sollte darauf hingewiesen werden, daß die Evolution (in der Natur oder irgendwo anders) kein Zweck oder gerichteter Prozeß ist. Das heißt, daß kein Beweis existiert, um die An­ nahme zu stützen, daß das Ziel der Evolution darin besteht, die Menschheit zu erzeugen. Tatsächlich scheint sich der Prozeß der Natur auf unterschiedliche Individuen zu redu­ zieren, die in der Umgebung um Ressourcen in Konkurrenz ste­ hen. Einige sind besser als andere; diejenigen, die besser sind, werden am wahrscheinlichsten überleben und ihr geneti­ sches Material weitergeben.
In der Natur wird die Codierung der genetischen Information (Genom) auf eine Art durchgeführt, die eine asexuelle Repro­ duktion (wie zum Beispiel Sprossung) zuläßt, was zu einem Nachwuchs führt, der genetisch identisch mit den Eltern ist. Die sexuelle Reproduktion ermöglicht die Erzeugung von ge­ netisch unterschiedlichem Nachwuchs, der immer noch von der­ selben Spezies ist. Genetische Informationen können durch einen Prozeß, der als Rekombination bekannt ist, ebenfalls neu angeordnet werden. In seiner einfachsten Form kann die Rekombination durch zwei Chromosome beschrieben werden, die Teile der genetischen Information miteinander austauschen. Eine Rekombinationsoperation kann ebenfalls als eine Über­ kreuzung bzw. Cross-Over bezeichnet werden, aufgrund der Art, auf die das genetische Material von einem Chromosom auf das andere übergeht.
Die Auswahl, wer sich paaren darf, ist eine Funktion der Ei­ gnung des Einzelnen beim Kampf um die Ressourcen in seiner Umgebung. Einige genetische Algorithmen verwenden eine ein­ fache Funktion der Eignungsmessung (probabilistisch), um In­ dividuen für weitere Operationen, wie zum Beispiel eine Überkreuzung, auszuwählen. Andere Ausführungen verwenden ein Modell, bei dem bestimmte, zufällig ausgewählte Individuen in einer Teilgruppe konkurrieren und das Geeignetste wird ausgewählt. Dies wird als Turnierauswahl bzw. Tournament Selection bezeichnet und ist die Form der Auswahl, die in der Natur verwendet wird. Die zwei Prozesse, die am meisten zur Evolution beitragen, sind die Überkreuzung und die auf der Eignung basierende Auswahl.
Eine Mutation spielt in diesem Prozeß ebenfalls eine Rolle, obwohl sie nicht die dominante Rolle ist. Eine Mutation tritt auf, wenn genetisches Material zufällig verändert wird.
Genetische Algorithmen werden für eine Anzahl von unter­ schiedlichen Anwendungsbereichen verwendet. Ein Beispiel hierfür schließt multidimensionale, mehr-modale Optimie­ rungsprobleme ein, bei denen das Zeichenband des Chromosom verwendet werden kann, um die Werte von bestimmten Parame­ tern, die optimiert werden, zu codieren. Dies ist bei der vorliegenden Erfindung der Fall.
In der Praxis wird ein genetisches Modell einer Berechnung durch Vorsehen von Arrays aus Bits oder Zeichen ausgeführt, um die Chromosomen darzustellen. Einfache Bitmanipulations­ operationen ermöglichen die Ausführung einer Überkreuzung, Mutation und von anderen Operationen. Obwohl ein erheblicher Forschungsaufwand bezüglich Bändern mit variabler Länge und anderen Strukturen aufgewendet wurde, ist der Hauptteil der Arbeit mit genetischen Algorithmen auf Zeichenbänder mit fester Länge fokussiert.
Wenn der genetische Algorithmus ausgeführt wird, wird dies normalerweise auf eine Art getan, die den folgenden Zyklus einschließt: Beurteile die Eignung aller Individuen in der Population; Erzeuge eine neue Population durch Durchführen von Operationen, wie zum Beispiel eignungsproportionale Aus­ wahl, Überkreuzung und Mutation von Individuen, deren Eig­ nung gerade gemessen wurde; Entfernen der alten Population; und Durchführen einer Iteration mit der neuen Population.
Eine Iteration dieser Schleife wird als Generation bezeich­ net. Es existiert kein theoretischer Grund dafür, daß dies ein Ausführungsmodell ist. Tatsächlich ist dieses betonte Verhalten bei Populationen in der Natur als Ganzes nicht zu sehen, aber es ist ein geeignetes Ausführungsmodell.
Die erste Generation dieses Prozesses ist bezüglich einer Population von zufällig erzeugten Individuen wirksam. Von dort ab ist die genetische Operation zusammen mit der Eig­ nungsmessung wirksam, um die Population zu verbessern.
Genetische Algorithmen sind sehr parallele Algorithmen, die Populationen aus einzelnen mathematischen Objekten (typi­ scherweise binäre Zeichenbänder mit fester Länge) in neue Populationen übertragen, unter Verwendung von Operationen, die gemäß 1) einer natürlichen genetischen Operation, wie zum Beispiel der sexuellen Rekombination oder Überkreuzung und 2) der Eignungsproportionsauswahl (darwinistisches Über­ leben des Geeignetsten) strukturiert sind. Genetische Algo­ rithmen beginnen mit einer anfänglichen Population von Indi­ viduen, wie es oben beschrieben ist, und beurteilen dann iterativ die Individuen in der Population bezüglich ihrer Eignung bezüglich der Problemumgebung und führen genetische Operationen bezüglich mehrerer Individuen in der Population durch, um eine neue Population zu erzeugen. John Holland von der Universität von Michigan stellte die Pionierformel des genetischen Algorithmus oder der binären Zeichenbänder mit fester Länge in "Adaptation in Artificial and Natural Sy­ stems", von Professor John H. Holland, 1975 vor. Holland stellte neben anderen Dingen fest, daß der genetische Algo­ rithmus ein mathematisch nahezu optimaler Ansatz zur An­ passung dahingehend ist, daß er das erwartete Gesamtergebnis maximiert, wenn der adaptive Prozeß als ein Programm für einen mehrarmigen Münzautomaten betrachtet wird, der eine optimale Zuordnung seiner zukünftigen Versuche auf der Grundlage der derzeitig verfügbaren Informationen erfordert. Neue Arbeiten bezüglich genetischer Algorithmen und geneti­ scher Klassifizierersysteme finden sich in "Preceding of an International Conference on Genetic Algorithms and Their Applications", John J. Grefenstette (1985), "Genetic Algo­ rithms and Their Applications: Proceedings of the Second International Conference on Genetic Algorithms", John J. Grefenstette (1987), "Genetic Algorithms in Search, Optimi­ zation, and Machine Learning", David E. Goldber (1989), "Genetic Algorithms and Simulated Annealing", Lawrence Davis (1987) und "Proceedings of the Third International Con­ ference of Genetic Algorithms", J.D. Schaffer (1989).
In "Adaptation in Artificial and Natural Systems" faßt Holland seine Forschung über genetische Algorithmen zusammen und präsentiert eine mathematische Gesamttheorie der Anpas­ sung sowohl für natürliche als auch künstliche Systeme. Ein Schlüsselteil dieses Buches beschreibt einen genetischen Al­ gorithmus, der nach dem Verfahren der biologischen Anpassung der Natur strukturiert ist. Zusätzliche Informationen finden sich im US-Patent Nr. 4,697,242 von Holland und im US-Patent Nr. 4,881,178 von Holland, deren Offenbarungsgehalt hiermit durch Bezugnahme aufgenommen ist.
Empirische Studien durch verschiedene Forscher haben die Fähigkeiten solcher genetischen Algorithmen in vielen diver­ sen Bereichen gezeigt, einschließlich der Funktionsoptimie­ rung, des Betriebs von Gaspipelines und verschiedenen ande­ ren, die von Goldberg besprochen werden.
In dem Kapitel mit dem Titel "Ein Überblick", das in der Sammlung "Genetic Algorithms and Simulated Annealing" von 1987 enthalten sind, führen Lawrence Davis und Martha Steenstrup aus, daß "in allen Arbeiten von Holland und in der Arbeit von vielen seiner Studenten Chromosomenbitströme Listen aus Nullen und Einsen sind". Zusätzlich führen sie fort, "einige Forscher haben die Verwendung von anderen Dar­ stellungen, die oft in Verbindung mit industriellen Algor­ ithmen sind, erforscht. Beispiele für andere Darstellungen schließen eine geordnete Liste (für die Tonnenverpackung), eingebettete Listen (für Zeitplanprobleme in einer Fabrik), verschiedene Elementlisten (für ein Halbleiterlayout) und die Darstellungen, die von Glover und Grefenstette in diesem Band verwendet werden, ein".
Einige Forscher haben versucht, Such- und Optimierungspro­ bleme unter Verwendung von Schematas zu lösen, die gemäß der Evolution strukturiert sind, die Mutation-plus-erhalte-den- Besten-Strategien verwenden. Die wenigen Ergebnisse, die durch diese Bemühungen erhalten werden, sind bezüglich be­ stimmter Anwendungsgebiete sehr spezifisch und reflektieren größtenteils die Klugheit der Ausführung, und nicht die Nützlichkeit einer allgemeinen Technik zum Erreichen von An­ passungsverbesserungen bezüglich der Eignung in der Popula­ tion. Es ist wichtig darauf hinzuweisen, daß die Mutation nicht die primäre Einrichtung ist, durch die biologische Po­ pulationen in der Natur ihre Eignung verbessern, und daß diese nicht die primäre Einrichtung ist, die in der vorlie­ genden Erfindung verwendet wird.
Seit dem Buch von Holland im Jahr 1975 haben Holland und verschiedene Kollegen eine Anwendung von herkömmlichen gene­ tischen Algorithmen, die als das genetische Klassifizierer­ system bezeichnet sind, entwickelt. Das Klassifizierersystem ist eine Gruppe von Regeln. Jede Regel besteht aus einem be­ dingten Teil und einem Aktionsteil (zum Beispiel die IF THEN Regel). Sowohl der bedingte Teil als auch der Aktionsteil jeder Regel sind den Individuen in dem herkömmlichen Algo­ rithmus dahingehend ähnlich, daß sie Bänder aus Nullen und Einsen mit fester Länge sind. In einem Klassifizierersystem werden Meldungen von der Umgebung empfangen und rufen die­ jenigen Regeln auf, deren bedingter Teil mit der ankommenden Meldung übereinstimmt. Diese Anzeige löst den Aktionsteil der Regel aus. Der Aktionsteil der Regel sendet eine neue Meldung aus.
Klassifizierersysteme sind in dem Artikel "Cognitive Systems Based On Adaptive Algorithms", 1978 beschrieben. (John Holland und Judith S. Reitman). Bei Klassifizierersystemen wird ein Kredit Ketten von Individuen zugeordnet, die unter Verwendung eines Kreditzuordnungsschemas, das als "Eimer­ kette" bekannt ist, aufgerufen werden. Der Holland-Prozeß ist eine Kombination eines Klassifizierersystems und eines "Eimerketten"-Algorithmus.
Im US-Patent Nr. 5,343,554 von John R. Koza werden geneti­ sche Algorithmen, wie sie im vorhergehenden beschrieben wur­ den, dahingehend erweitert, was nun als genetische Program­ mierung bekannt ist. Eine der primären Aufgaben der geneti­ schen Programmierungen besteht darin, die Begrenzung der Verwendung von binären Bändern mit fester Länge, um die Po­ pulation darzustellen, zu entfernen. Da die genetische Pro­ grammierung nicht innerhalb des Umfangs der vorliegenden Er­ findung liegt, ist eine kurze Beschreibung ausreichend.
Bei einem Ausführungsbeispiel gemäß der US-A-5,343,554 er­ zeugt die Vorrichtung und der Prozeß anfänglich eine Popula­ tion von Entitäten, die entwickelt sind, um automatisch einen Satz von Datenwerten in eine Prozedur oder eine Funk­ tion zu codieren, die fähig ist, diese Datenwerte anzu­ nähern. Folglich können durch Verwendung dieses Ausführungs­ beispiels Daten, wie zum Beispiel Videodaten, Audiodaten oder Bilddaten, in eine Funktion umgewandelt werden, deren Darstellung günstiger zu speichern und zu übertragen ist, als die Daten selbst.
Die Funktion, die unter Verwendung der Erfindung gemäß der US-A-5,343,554 erzeugt wird, ist eine Annäherung der ur­ sprünglichen Daten. Für die oben aufgezählten Datentypen kann diese Annäherung ausreichend sein. Bei exakteren Daten jedoch, wie zum Beispiel Computerprogrammen, Computerdaten­ banken und ähnlichem, wird eine Annäherung an die ursprüng­ lichen Daten nicht ausreichend sein. Es sollte darauf hinge­ wiesen werden, daß unter einigen Umständen das Ausführungs­ beispiel gemäß der US-A-5,343,554 tatsächlich die ursprüng­ lichen Daten reproduzieren kann, dies ist jedoch nicht garantiert. Einfach gesagt bietet der Ansatz gemäß der US-A-5,343,554 keine Reziprozitätseigenschaft und ist daher ein "verrauschter" Ansatz, wie es bei der Informationstheo­ rie bezeichnet wird.
Ein globales Computersystem erfordert mehrsprachige Anwen­ dungen und Plattformen mit einem Minimum an Codekomplexität und Speicheranforderungen. Mehrsprachige Anforderungen ent­ sprechen jedoch fast immer einer zusätzlichen Codekomplexi­ tät. Mit zunehmender Codekomplexität folgen die Entwick­ lungs- und Wartungskosten. Dieser nahezu exponentielle Ko­ stenanstieg kann einige internationale Projekte unmöglich machen. Zusätzlich zu den Kosten haben komplexe Anwendungen im allgemeinen einen höheren Speicherverbrauch. Folglich wird das Ausführen bestimmter Anwendungen auf billigeren Plattformen unmöglich.
Ein Aspekt des Codekomplexitätsproblems wurde durch das Uni­ code Konsortium mit der Entwicklung eines Zwei-Byte-Zeichen­ codierstandards angesprochen, der Zeichen aus allen Schrif­ ten der Welt sowie der technischen Symbole, die allgemein verwendet werden, einschließt. Diese Zeichen schließen Schriften aus Ländern, wie zum Beispiel Japan, China, Korea, Rußland, Saudi Arabien, Frankreich, etc. ein. Da er eine Co­ dierung mit fester Breite verwendet, kann eine Unicode-Com­ pliant-Anwendung für unterschiedliche Länder leicht lokali­ siert werden.
Das Problem der großen Speicheranforderungen bleibt jedoch, insbesondere wenn man betrachtet, daß der Unicode-Standard einen Coderaum für 65 536 Zeichen hat. Um die Rückwärtskom­ patibilität sicherzustellen, müssen Abbildungen zwischen dem Unicode und den anderen Standards der Welt bereitge­ stellt werden. Es sind diese Abbildungen, die zu den aus­ uferndsten Speicheranforderungen führen.
Eine solche Abbildung bezieht sich auf Shift-Jis, den her­ kömmlichsten Zeichensatzstandard, der in Japan verwendet wird. Aufgrund der Popularität des Shift-Jis ist es zwin­ gend, daß Unicode-Compliant-Plattformen eine Abbildung von Shift-Jis auf Unicode für die Rückwärtskompatibilität schaf­ fen. Nachdem der Shift-Jis jedoch 7037 Zeichen (von denen 6942 zwei Byte lang sind) definiert, die über den Bereich von 32 bis 60 068 ausgebreitet sind, und der Unicode derzei­ tig über 28 000 Zeichen (von denen alle zwei Byte lang sind) über den Bereich von 0 bis 65 534 definiert, könnte eine solche Abbildung eine erhebliche Speichermenge erfordern. Das Problem besteht dann darin, den Speicher, der für eine Abbildung des Shift-Jis auf den Unicode erforderlich ist, ohne Verlust der Zugriffszeit zu minimieren.
Ein Verfahren zum Bereitstellen einer Abbildung von Shift- Jis auf den Unicode besteht in der Verwendung eines einfa­ chen Arrays, bei dem der Index auf das Array der Shift-Jis- Code für ein bestimmtes Zeichen ist und der Wert an dieser Position der Unicode-Code für dieses Zeichen ist. Dieses Verfahren würde folgende Anforderungen haben:
60 038 Codes × 2 Byte = 120 072 Bytes.
Dies ist offensichtlich keine optimale Lösung, macht aber das Problem deutlich. Um das Problem weiter zu erforschen, sei eine einfache Nachschlagtabelle angenommen, bei der die erste Spalte der Tabelle den Shift-Jis-Code für ein be­ stimmtes Zeichen enthält, und bei dem die zweite Spalte den Unicode-Code für das Zeichen enthält. Dieses Verfahren würde erfordern:
7037 Zeichen × 2 Byte × 2 Spalten = 28 148 Bytes.
Zusätzlich erfordert dieses Verfahren eine Suchoperation, um die erforderlichen Daten zu finden. Unter Verwendung eines binären Suchverfahrens würde das Nachschlagen im schlimmsten Fall log₂ (7,037) ≅ 12 Vergleiche erfordern.
Ein verbreitetes Verfahren zum Reduzieren der Größe eines Datenblocks ist die binäre Kompression. Verschiedene Algo­ rithmen existieren, aber jeder leidet an drei signifikanten Problemen:
  • 1) Wenn eine große Datenmenge dekomprimiert wird, muß sie irgendwo gespeichert werden. Daher muß Speicherbereich zum Empfangen der unkomprimierten Blöcke beiseite ge­ bracht werden;
  • 2) der Algorithmus kann schwierig zu programmieren sein, und der erforderliche Codeplatz kann die Einsparungen durch das Komprimieren der Daten aufbrauchen; und
  • 3) nachdem die Daten dekomprimiert werden müssen, sind die Zugriffszeiten lang.
Sogar ohne diese Probleme erreicht die binäre Kompression selten mehr als eine 50%ige Kompression. Angenommen man hat mit dem Nachschlagtabellenansatz begonnen, so würde man im­ mer noch über 14 kB Platz benötigen, um die komprimierten Daten zu speichern.
Es ist die Aufgabe der vorliegenden Erfindung, ein Verfahren und eine Vorrichtung zum Speichern ursprünglicher Daten in einer minimalen Größe eines Computerspeichers zu schaffen.
Diese Aufgabe wird durch ein Verfahren nach Anspruch 1 und 5, und durch ein Computersystem nach Anspruch 8 gelöst.
Die vorliegende Erfindung beschreibt ein Verfahren zum Spei­ chern ursprünglicher Daten in einer minimalen Größe eines Computersystems. Die vorliegende Erfindung wird dadurch aus­ geführt, daß zuerst eine Mehrzahl von Individuen initiali­ siert werden. Für jedes Individuum wird ein Baum bzw. Trie aufgebaut (eine Definition des Begriffs "Trie" findet sich in "Algorithms", R. Sedgewick, 1983, Kapitel 17, Seiten 216-217), wobei der Baum die ursprünglichen Daten darstellt. Der Baum umfaßt einen Wurzelknoten, eine Mehrzahl von Teil­ knoten und Teilarrays in einer hierarchischen Anordnung. Das Individuum zeigt die Anzahl der Teilknoten, Teilarrays und die Anzahl der Einträge in jedem Teilarray an. Innerhalb eines Baums wird jedes Teilarray gelöscht, das redundante Daten enthält, und jeder der Teilknoten, der redundante Da­ ten enthält, wird entfernt. Eine Überlappungsreduzierungs­ funktion wird auf den Baum angewendet. Mit dem aufgebauten Baum wird die Größe des Baums bestimmt, und die Größe wird dem Individuum zugeordnet.
Als nächstes wird eine Paarungspopulation auf der Grundlage der Baumgröße ausgewählt. Individuen mit relativ kleinen Baumgrößen empfangen mehrere Kopien in der Paarungspopula­ tion, während diejenigen Individuen mit relativen großen Baumgrößen nicht ausgewählt werden. Es wird eine Operation bzgl. der Paarungspopulation ausgewählt und durchgeführt, wobei die Operation zumindest eine der Operationen der Über­ kreuzung oder Mutation ist. Wenn die ausgewählte Operation eine Überkreuzung ist, wird zumindest ein neues Individuum durch die Überkreuzung unter Verwendung von zumindest zwei Individuen aus der Paarungspopulation erzeugt. Dann wird ein neues Individuum zu der Mehrzahl der Individuen hinzugefügt. Wenn die ausgewählte Operation die Mutation ist, wird ein Individuum durch stochastisches Ändern einer Eigenschaft des Individuums mutiert, und dann wird das mutierte Individuum in der Mehrzahl der Individuen angeordnet. Für eine vorbe­ stimmte Anzahl von Generationen wird eine Iteration durchge­ führt. Abschließend wird im Speicher der Baum mit der klein­ sten Größe beibehalten.
Nachfolgend werden unter Bezugnahme auf die beiliegenden Zeichnungen bevorzugte Ausführungsbeispiel der vorliegenden Erfindung näher beschrieben. Es zeigen:
Fig. 1 eine graphische Darstellung eines hybriden Mehr­ weg-Radixsuchbaums bzw. eines hybriden Mehrweg-Ra­ dixsuchtrie;
Fig. 2 einen modifizierten hybriden Mehrweg-Radixsuchbaum für denselben Suchraum aus Fig. 1;
Fig. 3 einen modifizierten hybriden Mehrweg-Radixsuchbaum eines Suchraums, der für beispielhafte Zwecke ver­ wendet wird;
Fig. 4 den modifizierten hybriden Mehrweg-Radixsuchbaum aus Fig. 3 nachdem alle leeren Teilarrays gelöscht sind;
Fig. 5 den modifizierten hybriden Mehrweg-Radixsuchbaum aus Fig. 4, nachdem leere Teilknoten gelöscht sind;
Fig. 6 das Ergebnis der Anwendung der Überlappung auf den modifizierten hybriden Mehrweg-Radixsuchbaum aus Fig. 5;
Fig. 7 einen möglichen Suchschlüssel und Partitionen, die verwendet werden, um einen modifizierten hybriden Mehrweg-Radixsuchbaum darzustellen;
Fig. 8 eine mögliche Binärcodierung, die verwendet wird, um einen modifizierten hybriden Mehrweg-Radixsuch­ baum darzustellen;
Fig. 9 Teilergebnisse von Brechstangenberechnungen, um den optimalen Baum für eine Abbildung eines Shift-Jis in den Unicode zu finden;
Fig. 10 ein Flußdiagramm auf einer hohen Ebene, das die Schritte zeigt, die notwendig sind, um einen gene­ tischen Algorithmus gemäß der vorliegenden Erfin­ dung auszuführen;
Fig. 11 ein Flußdiagramm, das den Schritt zeigt, der ver­ wendet wird, um die Eignung der einzelnen Mitglie­ der der Population zu beurteilen;
Fig. 12 einen Vergleich der relativen Kompressionsverhält­ nisse für verschiedene Datentypen unter Verwendung der vorliegenden Erfindung und der verbreiteten Kompressionstechnik; und
Fig. 13 ein Blockdiagramm auf einer hohen Ebene eines Com­ putersystems für allgemeine Zwecke, das gemäß der vorliegenden Erfindung verwendet wird.
Die vorliegende Erfindung ist nicht auf ein bestimmtes Aus­ führungsbeispiel beschränkt, das hier beschrieben ist. Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung verwendet einen genetischen Algorithmusansatz, um die Größe einer Abbildung des Shift-Jis (Japans meistverbreitetster Zeichensatz) in Unicode zu minimieren. Dieses Verfahren ver­ wendet eine Baumstruktur, die einen schnelleren und spei­ chereffizienteren Zugriff schafft als andere Kompressions­ schemata, und die die reguläre Natur von Zwischenräumen im Shift-Jis-Standard durch die Verwendung von einfachen Baum­ minimierungsoperatoren ausnutzt, nämlich:
  • - Löschung eines leeren Teilarrays
  • - Löschung eines inneren Teilknotens
  • - Überlappung.
Bei einem Radixsuchbaum bzw. einem Radixsuchtrie werden die Bits der Suchschlüssel verwendet, um den Baum zu durchlau­ fen, und nicht deren Werte, so daß ein Vollschlüsselver­ gleich die Suche beendet. Mit anderen Worten erfordert die Suche im schlimmsten Fall O(k) Vergleiche, wobei k gleich der Anzahl von Bits in dem längsten Suchschlüssel ist.
Ein hybrider Mehrweg-Radixsuchbaum für den Suchraum {A, B, C, D, E, F, G, H} ist in Fig. 1 gezeigt. Die Tatsache, daß mehr als ein Bit verwendet werden kann, wenn die Verbindung zum Durchlaufen bestimmt wird, macht diesen mehrwegig. Da sich die Knotentypen, die durch die Nummer der Zeiger in einem Teilknoten klassifiziert sind, von Ebene zu Ebene un­ terscheiden können, ist der Baum hybrid. Es wird darauf hin­ gewiesen, daß Datenelemente niemals mehr als n Schichten tief sind, wobei n die Länge des Suchschlüssels in Bits ist.
In dem Baum in Fig. 1 sind alle Schlüssel drei Bit lang. Die Suche mit dem Schlüssel 010 würde C ergeben. Die ersten zwei Bits des Schlüssels, 01, bestimmen, welche Verbindung von der Wurzel auf die zweite Ebene zu nehmen ist; das letzte Bit, 0, bestimmt, welche Verbindung von der zweiten Ebene zur dritten zu nehmen ist.
Um die vorliegende Erfindung besser anzupassen, ist eine kleinere Modifikation des normalen hybriden Mehrweg-Radix­ suchbaums durch Kombination der niedrigsten Ebene der Teil­ knoten in Teilarrays mit gleicher Größe durchgeführt. Bei dem Baum in Fig. 2 bestimmen die ersten zwei Bits eines Schlüssels, welches Teilarray zu verwenden ist, während der letzte Bit als Teilarrayindex dient. Es wird darauf hinge­ wiesen, daß keines der Merkmale des gewöhnlichen hybriden Mehrweg-Radixsuchbaums verloren wurde. Aus Gründen der Kon­ sistenz werden die "modifizierten hybriden Mehrweg-Radix­ suchbäume" einfach als Bäume bezeichnet.
Auf den ersten Blick wird ein Fachmann verstehen, daß Bäume dazu tendieren, sehr groß zu sein, besonders wenn die Anzahl der Schichten groß ist. Zum Speichern und Wiedergewinnen von spärlichen oder redundanten Daten kann ein Baum jedoch ein­ fach mittels drei einfacher Minimierungsoperatoren minimiert werden.
Als erstes sei der modifizierte Baum aus Fig. 3 betrachtet. Dieser Baum bildet die ganzen Zahlen 0-128 auf das Al­ phabet A-Z ab, enthält aber spärliche (nicht abgebildete ganze Zahlen werden auf 0 abgebildet) und redundante Daten. Es sei angenommen, daß ein Zeiger zwei Bit lang ist und ein Teilarrayelement ein Bit lang ist, dieser Baum würde Folgen­ des erfordern:
28 Zeiger * 2 Byte + 128 Teilarrayelemente = 184 Byte.
Dies ist tatsächlich groß, wenn es mit den 128 Bytes ver­ glichen wird, die für den einfachen Teilarrayansatz benötigt werden. Die nächsten Abschnitte stellen jedoch die Baummi­ nimierungsoperatoren dar und analysieren diese.
Der Minimierungsoperator zum Löschen eines leeren Teilarrays nutzt regelmäßige Zwischenräume in der Abbildung aus. Das Aufbrechen der Abbildungsdaten in Teilarrays derart, daß viele leere Teilarrays auftreten, führt zu größeren Einspa­ rungen durch Löschen dieser Teilarrays. Das Anwenden dieses Operators auf den Baum aus Fig. 3 ergibt den Baum aus Fig. 4.
Unter Verwendung derselben Größenanordnungen wie für Fig. 3 würde dieser Baum erfordern:
28 Zeiger * 2 Byte + 80 Teilarrayelemente = 136 Bytes.
Als nächstes, nach dem Löschen aller leeren Teilarrays, kön­ nen sogar noch mehr Einsparungen durch Löschen von internen Teilknoten, deren Zeiger alle 0 sind, erreicht werden. Das Anwenden dieses Operators auf dem Baum aus Fig. 4 ergibt den Baum aus Fig. 5. Wiederum unter Verwendung derselben Größen­ annahmen erfordert dieser Baum:
22 Zeiger * 2 Byte + 80 Teilarrayelemente = 124 Bytes.
Abschließend wird der Schwanzabschnitt eines Teilarrays mit dem Kopfabschnitt eines anderen verglichen. Wenn sie über­ einstimmen, werden die zwei Teilarrays überlappt, wobei je­ der Zeiger eingestellt wird, wie dies notwendig ist. Fig. 6 zeigt das Ergebnis der Anwendung der Überlappung auf den Baum in Fig. 5.
Das Überlappen kann in zwei Typen klassifiziert werden. Die Überlappung vom Typ I ist durch die Überlappung von willkür­ lichen Teilarrays charakterisiert, ohne bestimmte Kenntnis der Daten, die verglichen werden. Ein extremer Fall würde auftreten, wenn sich herausstellt, daß ein nicht-leerer Teilarray eine exakte Kopie eines weiteren ist. Das erste und das letzte Paar der Teilarrays in Fig. 5 stellen eine Überlappung vom Typ I beispielhaft dar. Die Durchführung der Überlappung vom Typ I ist berechnungsmäßig extrem aufwendig. Ein nicht-optimaler Algorithmus zum Durchführen der Überlap­ pung vom Typ I ist nachfolgend beschrieben:
  • 1) Markiere jedes Teilarray in der Datei A = a₁, a₂, . . . an, wobei n die gesamte Anzahl von Teilarrays ist;
  • 2) Wähle ein Teilarray ai aus;
  • 3) Finde für ai das beste Überlappungs-Teil-Array aj, wo­ bei gilt 1 j n, i ≠ j und aj ist noch nicht als überlappt markiert;
  • 4) Erhöhe die Gesamteinsparung um die Größe der Überlap­ pung zwischen ai und aj;
  • 5) wenn die Einsparung größer als 0 ist, markiere aj als überlappt;
  • 6) Erhöhe i; und
  • 7) Wiederhole die Schritte 3 bis 6 für alle ai.
Es wird darauf hingewiesen, daß für diesen Algorithmus nicht garantiert ist, daß er die optimalen Einsparungen einer Überlappung vom Typ I ergibt, aber er ist einfach auszufüh­ ren und weist eine schnellere Ausführungszeit auf als die optimale Lösung. Die Berechnung mittels diesem Algorithmus ist immer noch aufwendig. Unter der Annahme, daß jedes Teil­ array eine Länge l hat, erfordert die Überlappung vom Typ I O(n²l²)-Vergleiche im schlimmsten Fall. Das Ersetzen von (Dateigröße/n) für l ergibt O(Dateigröße ²).
Die Überlappung vom Typ II ist durch die Tatsache gekenn­ zeichnet, daß alle übereinstimmenden Teilarraypositionen exakt denselben Wert enthalten. In den meisten Fällen wird dieser Wert 0 sein. Ein Beispiel einer Überlappung vom Typ II ist in dem dritten und vierten Teilarray in Fig. 5 ge­ zeigt. Das Verfahren bezüglich optimaler Einsparungen für diesen Typ der Überlappung lautet wie folgt:
  • 1) Bestimmen der Anzahl der überlappbaren Elemente am Schwanz jedes Teilarrays;
  • 2) Bestimmen der Anzahl von überlappbaren Elementen am Kopf jedes Teilarrays;
  • 3) Sortieren der Schwanzinformationen aus dem Schritt l in abnehmender Reihenfolge;
  • 4) Sortieren der Kopfinformationen aus Schritt 2 in abnehmender Reihenfolge; und
  • 5) Vergleichen der Köpfe und Schwänze entsprechend, um sicherzustellen, daß ein Teilarray nicht mit sich selbst überlappt wird.
Unter Verwendung derselben Größenannahmen erfordert dieser Baum:
22 Zeiger * 2 Byte + 62 Teilarrayelemente = 106 Bytes.
Es wird darauf hingewiesen, daß dies eine Einsparung von 22 Byte gegenüber dem Nachschlagtabellenverfahren ist. Dies ist eine 17%ige Einsparung! Zusätzlich weist der Baum eine Such­ zeit auf, die etwa die Hälfte derjenigen einer binären Suche über denselben Raum im schlimmsten Fall ist.
Dieses künstliche Beispiel wurde dargestellt, um die Baum­ minimierungsoperatoren einzuführen. Gute Ergebnisse wurden durch Aufbrechen des Suchraums in Teilarrays mit Länge 8 und durch Verwendung von drei Ebenen von Knoten erhalten. Es existieren jedoch viele andere Wege, um einen Baum über die­ sem Suchraum zu definieren. Was wäre bei einem Aufbrechen des Suchraums in Teilarrays mit einer Länge von 64 und einer Ebene von Knoten? Ein solcher Baum würde, sogar nach Anwen­ den der Baumminimierungsoperatoren, erfordern:
2 Zeiger * 2 Byte + 126 Teilarrayelemente = 130 Byte.
Mit anderen Worten hängt die Größe der Einsparungen, die durch einen minimierten Baum erhalten werden, von drei Fak­ toren ab:
  • 1) die Größe der Teilarrays;
  • 2) die Anzahl der Schichten; und
  • 3) die Art des Teilknotens bei jeder Ebene.
Wenn der Suchraum groß genug ist, oder wenn die Daten eine Überlappung vom Typ I erfordern, kann es zu schwierig sein, den optimalen Baum durch empirische Studien oder Brechstan­ genverfahren zu finden. Dies ist die Art von Problem, bei denen genetische Algorithmen am effektivsten sind. Das Ab­ bildungsproblem des Shift-Jis in den Unicode hat einen Such­ raum von 65 565 Punkten, was diesen zu einem guten Kandida­ ten für eine Minimierung unter Verwendung der vorliegenden Erfindung machen.
Was benötigt wird, ist eine binäre Darstellung aller mögli­ chen Bäume, die verwendet werden können, um die Abbildung des Shift-Jis in den Unicode zu speichern. Mit einem gege­ benen Suchschlüssel mit der Länge von l Bits wird darauf hingewiesen, daß (l-1) Positionen existieren, um den Schlüs­ sel zu unterteilen, wodurch die Größe der Teilarrays, die Anzahl der Schichten der Knoten und die Arten der Knoten in jeder Schicht bestimmt werden.
Es sei der Baum in Fig. 3 und der Suchschlüssel aus Fig. 7 angenommen. Für diesen Suchraum ist 1 = 7. Zuerst werden die Bits in dem Suchschlüssel von links nach rechts beginnend mit 1 numeriert. Für ein Teilarray mit der Größe 8 sind die letzten drei Bits als der Index wirksam. Mit anderen Worten erzeugt die Trennung der Schlüssel zwischen den Bitpositio­ nen 4 und 5 das erwünschte Teilarray. Als nächstes wird eine Schicht mit 8 Teilknoten mit zwei Zeigern pro Knoten durch Teilen der Schlüssel zwischen den Bitpositionen 3 und 4 er­ zeugt. In der nächsten Schicht werden 4 Teilknoten mit 2 Zeigern durch Teilen des Schlüssels zwischen der Bitposition 2 und 3 erzeugt. Abschließend verwendet die oberste Schicht mit einem Wurzelknoten mit 4 Zeigern die beiden übrig ge­ bliebenen Bits.
Es ist leicht zu sehen, daß mit einem gegebenen Suchschlüs­ sel der Länge l Bits genau 2(l-1) unterschiedliche Bäume existieren, die den Suchraum speichern können. Daher ist es möglich, irgendeinen dieser Bäume als ein (l-1)-Bit langes binäres Band zu codieren, wobei eine 1 an der Bitposition n bei der Codierung anzeigt, daß der Schlüssel zwischen den Bitpositionen n und (n+1) getrennt wird. Fig. 8 zeigt den getrennten Schlüssel und die Baumcodierung für dasselbe Bei­ spiel, das in Fig. 7 verwendet wurde.
Da Shift-Jis-Codes als Suchschlüssel verwendet werden und die Shift-Jis-Codes alle durch zwei Bytes dargestellt werden können, sind die Schlüssel 16 Bit lang. Daher ist der Baum zum Codieren des genetischen Algorithmus 15 Bit lang, be­ stehend aus 15 1-Bit-Feldern. Eine 1 in einem Feld n der ge­ netischen Algorithmuscodierung zeigt an, daß die Schlüssel zwischen den Bitpositionen n und (n+1) getrennt werden. Es wird darauf hingewiesen, daß bezüglich keines der Felder eine spezielle Beschränkung existiert.
Es existieren keine mathematischen Formeln, auf die eine Ei­ gnungsfunktion basiert sein kann. Statt dessen wird die Ei­ gnungsfunktion aufgebaut, wie dies in Fig. 11 gezeigt ist. Mit gegebener Baumcodierung:
  • 1) Aufbau des Baums (1100);
  • 2) Anwenden der Null-Teilarray-Löschung (1101);
  • 3) Anwenden der Teilknoten-Löschung (1102);
  • 4) Anwenden der Überlappung (1103); und
  • 5) Berechnen der Größe des Baums in Bytes, unter der Annahme, daß ein Zeiger 4 Byte lang ist und ein Teilarrayelement (Unicode-Code) 2 Byte lang ist (1104).
Es wird darauf hingewiesen, daß keine Mehraufwandfunktionen erforderlich sind.
Für diese Anwendung wird die Turnierauswahl mit einer Tur­ niergröße von 2 verwendet. Eine Einzelpunktüberkreuzung wurde verwendet, mit einer Wahrscheinlichkeit der Überkreu­ zung von Pc = 0,9. Eine Mutation wurde ebenfalls mit einer Wahrscheinlichkeit der Mutation von Pm = 1/(Populations­ größe) für alle Versuche verwendet. Alle Versuche liefen für 100 Generationen. Jeder Versuch wurde mit einer unterschied­ lichen zufälligen Saatnummer begonnen.
Eine Beobachtung dieses Problems muß gemacht werden: die Abbildung des Shift-Jis in den Unicode enthält keine Typ I überlappbaren Daten. Nachdem dies der Fall ist, wurde die Überlappung vom Typ I aus der Ausführung entfernt, um die Aufgabenfunktion zu beschleunigen. Ein weiterer positiver Nebeneffekt dieses bestand darin, daß ein Brechstangenver­ fahren zum Finden des globalen Optimums möglich war. Es dauerte mehrere Stunden auf einer HP700 Workstation um die­ sen zu beenden, aber er schafft ein Bild von dem, wie der Suchraum aussieht, und einen wahren Wert für das globale Op­ timum, 15 684 Bytes. Fig. 9 zeigt Teilergebnisse der Brech­ stangenberechnungen.
In Fig. 10 ist ein vereinfachtes Flußdiagramm eines allge­ meinen genetischen Algorithmus gezeigt, der bei dem bevor­ zugten Ausführungsbeispiel verwendet wird. Vor dem Beginn eines genetischen Algorithmus muß eine anfängliche Popula­ tionsgröße (P) und die Anzahl der Generationen ausgewählt werden. Mit zunehmender Populationsgröße (P) tritt die Kon­ vergenz des genetischen Algorithmus im allgemeinen bei we­ niger Generationen auf. Die erhöhte Populationsgröße hat jedoch einen nachteilhaften Effekt auf die Ausführungszeit des genetischen Algorithmus für die einzelne Generation.
Mit einer Populationsgröße von P initialisiert der geneti­ sche Algorithmus zuerst die Population auf eine im allge­ meinen zufällige Abtastung 1002. Als nächstes wird bei 1003 die Eignung jedes Individuums in der Population (P) beur­ teilt. Wenn die Anzahl der ausgeführten Generationen gleich der maximalen Anzahl von Generationen ist, die ursprünglich ausgewählt wurden, dann wird in 1005 das geeignetste Indi­ viduum ausgewählt. Bei der Alternative wird die nächste Ge­ neration erzeugt 1006. Beim Erzeugen der nächsten Generation wird zuerst eine Teilpopulation ausgewählt 1007, die dann den im vorhergehenden beschriebenen genetischen Veränderun­ gen unterzogen wird. Die Auswahlprozesse, die bei dem be­ vorzugten Ausführungsbeispiel verwendet werden, kopieren In­ dividuen aus der vorhergehenden Generation, was den geeig­ netsten Individuen die meisten Kopien gibt, und den am we­ nigsten geeigneten Individuen die wenigsten oder keine Ko­ pien gibt. Gene von ausgewählten Eltern werden durch Aus­ wählen von Paarungspaaren und Rekombinieren dieser Gene, um Kinder durch eine einfache Überkreuzungsoperation zu bilden, rekombiniert 1008. Teile der Population werden mit einer niedrigen Wahrscheinlichkeit stochastisch mutiert 1009, was zufällig die Allelen in den Kindern mutiert. Die neue Popu­ lation wird dann bezüglich ihrer Eignung jedes Individuums beurteilt 1003 und der iterative Prozeß des genetischen Al­ gorithmus fährt fort. Jede neue Generation durchläuft die Auswahl-, Rekombination- und Mutationsprozesse, bis die er­ wünschte Anzahl von Generationen beurteilt wurde. Nach der letzten Generation wird das geeignetste Individuum ausge­ wählt 1005.
Die Eignungsbeurteilungsfunktion aus 1003 in Fig. 10 ist de­ taillierter in Fig. 11 gezeigt. Zuerst wird der Baum auf­ gebaut 1100. Als nächstes werden leere Teilarrays 1001 oder Null-Teilknoten 1102 gelöscht. Als nächstes wird jede Über­ lappung entfernt 1103. Abschließend wird die Größe des Baums bestimmt 1104. Es ist die Gesamtgröße des Baumes, die die bestimmende Charakteristik der Eignung irgendeines indivi­ duellen Mitglieds der Population ist. Es ist das erwünschte Ziel, die absolute Minimalgröße zu finden, die die erwünsch­ te Abbildung erreicht.
Fünf Versuche zum Erhöhen der Populationsgröße wurden aus­ probiert. Der erste Versuch mit einer Populationsgröße von 5 führte zu einer Lösung mit einer Größe von 15 740 Bytes. Der Versuch mit einer Populationsgröße von 10 fand eine Lösung mit einer Größe von 15 708 Bytes. Der Versuch mit einer Größe von 20 fand die optimale Lösung mit einer Codierung 000000100100000 und einer Größe von 15 684 Bytes, in 47 Ge­ nerationen. Der Versuch mit einer Populationsgröße von 50 fand die optimale Lösung in nur 8 Generationen. Der Versuch mit einer Populationsgröße von 100 fand die optimale Lösung in 13 Generationen.
Die optimale Lösung bildet eine 95%ige Reduzierung des Raums, der für ein einfaches Array erforderlich ist, und eine 44%ige Reduzierung des Raums, der für eine Nachschlag­ tabelle erforderlich ist.
Die vorliegende Erfindung wurde auf andere Datenformen an­ gewendet, wie dies in Fig. 12 gezeigt ist. Man muß bezüglich der verwendeten Beispiele eine Beobachtung machen, nämlich daß keine optimale Lösung für einen der dort dargestellten sechs Fälle bekannt ist. Keine dieser Dateien enthielt viel Leerraum und es war deshalb notwendig, die Überlappung vom Typ I einzubauen, um sinnvolle Ergebnisse zu erhalten.
Die vorliegende Erfindung reduzierte die Speicheranforderun­ gen für unterschiedliche Bilddatentypen erfolgreich. Bei der Verwendung des bevorzugten Ausführungsbeispiels, das eine Baumstruktur ist, wurden Kompressionsverhältnisse von 20% bis 60% für alle bis auf einen der sechs Dateitypen er­ reicht.
Wie es im vorangegangenen ausgeführt wurde, schafft die Baumstruktur einen schnelleren und speichereffizienteren Zu­ griff als andere bekannte Kompressionsschemata. Zwei Punkte sollten hierbei betont werden. Erstens ermöglicht die vor­ liegende Erfindung einen schnellen, zufälligen Zugriff auf die ursprünglichen Daten von dem Baum. Zweitens besteht, da auf die Daten zufällig zugegriffen werden kann, keine Not­ wendigkeit, eine Datei vor dem Zugriff auf die ursprüngli­ chen Daten zurück in ihr ursprüngliches Format zu dekompri­ mieren. Daher können die tatsächlichen Speichereinsparungen mit der vorliegenden Erfindung höher sein, da kein Speicher benötigt wird, um die nicht-komprimierten Daten zu spei­ chern.
Da die vorliegende Erfindung für Bilddaten von vielen Typen gut arbeitet und eine komprimierte Datei ergibt, auf die zu­ fällig ohne Dekompression zugegriffen werden kann, arbeitet sie gut für die Archivierung von Bilddateidatenbanken. Man muß lediglich den codierten Baum für jede Datei sichern. Dann wird das Bild durch einfaches Zugreifen auf den Baum schnell angezeigt. Die vorliegende Erfindung kann sogar ver­ wendet werden, um die Rahmen eines Spielfilms zu komprimie­ ren.
Durch Ausnutzen von redundanten Daten ist die vorliegende Erfindung gut geeignet, um relationale Datenbanken zu kom­ primieren, da viele Tuples denselben Eintrag für ein be­ stimmtes Feld enthalten. Eine Telefondatenbank würde zum Beispiel denselben Bereichscode haben, der viele tausendmale wiederholt wird.
Die vorliegende Erfindung ist, obwohl sie nicht für alle Da­ teitypen erfolgreich ist, sinnvoll, um viele Typen von Com­ puterdaten zu komprimieren. Folglich ist es für einen Fach­ mann offensichtlich, daß die vorliegende Erfindung ein nütz­ liches allgemeines Kompressionsschema ist, das für Anwendun­ gen gut geeignet ist, die einen schnellen, zufälligen Zu­ griff auf die ursprünglichen Daten erfordern.
Obwohl das bevorzugte Ausführungsbeispiel der Erfindung dar­ gestellt wurde und dieses beschrieben wurde, ist es für Fachleute ohne weiteres offensichtlich, daß verschiedene Mo­ difikationen durchgeführt werden können, ohne sich vom Geist der Erfindung oder vom Umfang der nachfolgenden Ansprüche zu entfernen.
Eine solche Modifikation bezieht sich auf die Löschung des leeren Teilarrays und Teilknotens, wie es in Fig. 4 und 5 gezeigt ist. Während das bevorzugte Ausführungsbeispiel lee­ re Teilarrays gelöscht hat, ermöglicht eine einfache Modi­ fikation die Löschung der Teilarrays, die redundante Kopien eines vorbestimmten Zeichens enthalten. Um diese Prozedur adaptiv zu machen, werden die Daten zuerst abgetastet und die Zeichen mit dem höchsten Auftretungszählstand werden als das vorbestimmte Zeichen bezeichnet. Danach werden Teilar­ rays, die lediglich das vorbestimmte Zeichen enthalten, ge­ löscht. Die Identität des gelöschten Zeichens wird dann nur einmal in dem gesamten Baum gespeichert.
Der Löschschritt des leeren Teilarrays kann allgemeiner ge­ macht werden, als dies gerade beschrieben wurde, durch Zu­ lassen der Löschung irgendeines Teilarrays, das mit irgend­ einem Zeichen gefüllt ist. Wenn zum Beispiel ein Teilarray nur "R"s enthält, wird es gelöscht. Eine zusätzliche Struk­ tur muß zu dem Teilknoten hinzugefügt werden, um anzuzeigen, daß das gelöschte Teilarray alle "R"s enthält. Innerhalb desselben Baums wird ein anderes Teilarray, das alle "P"s enthält, gelöscht und der Teilknoten wird eingestellt. Die Speichereinsparungen der Teilarraylöschung werden durch die hinzugefügte Komplexität der Teilknoten ausgeglichen und hängen von der Natur der Daten ab.
In Fig. 13 ist ein Computersystem dargestellt, das ursprüng­ liche Daten speichert. Das Computersystem umfaßt einen Spei­ cher 2002, in dem eine Mehrzahl von Individuen gespeichert sind, einen Prozessor 2000, der mit dem Speicher 2002 ver­ bunden ist, wobei der Prozessor 2000 eine Befehlssequenz ausführt, eine Einrichtung zum Bestimmen 2000, 2002 einer Größe eines Baums, der durch jedes Individuum symbolisiert ist, wobei der Baum die ursprünglichen Daten darstellt, wo­ bei die Einrichtung zum Bestimmen mit dem Prozessor 2000 verbunden ist, eine Einrichtung zum Auswählen 2000, 2002 einer Paarungspopulation aus der Mehrzahl der Individuen, wobei die Wahrscheinlichkeit der Auswahl für ein Individuum umgekehrt proportional zu der Baumgröße des Individuums ist, eine Einrichtung zum Auswählen und Durchführen 2000, 2002 einer Operation bezüglich der Paarungspopulation, wobei die Operation die Operation der Überkreuzung 2000, 2002 ist, wobei die Einrichtung zum Auswählen und Durchführen 2000, 2002 mit dem Prozessor 2000 verbunden ist, eine Einrichtung zum Durchführen 2000, 2002 der Operation der Überkreuzung, die das Erzeugen zumindest eines neuen Individuums durch eine Überkreuzung unter Verwendung von zumindest zwei Indi­ viduen aus der Paarungspopulation und das Hinzufügen des neuen Individuums zu der Mehrzahl der Individuen umfaßt, und eine Einrichtung zum Beibehalten 2000, 2002 des Baums mit der minimalen Größe im Speicher 2002, wobei die Einrichtung zum Beibehalten mit dem Prozessor 2000 verbunden ist.
Bei dem in Fig. 13 dargestellten Computersystem umfaßt der Baum einen Wurzelknoten 2002 mit zumindest zwei Zeigern und zumindest zwei Teilarrays 2002, die mit dem Wurzelknoten 2002 durch die zumindest zwei Zeiger in einer hierarchischen Anordnung verbunden sind, wobei die zumindest zwei Teil­ arrays 2002 jeweils eine Mehrzahl von Einträgen haben, in denen die ursprünglichen Daten gespeichert sind.
Der Baum umfaßt ferner eine Mehrzahl von Teilknoten 2002 um­ faßt, die zwischen dem Wurzelknoten 2002 und den Teilarrays 2002 angeordnet sind, wobei die Wurzel 2002 mit der Mehrzahl von Teilknoten 2002 und Teilarrays 2002 verbunden ist, um einen modifizierten hybriden Mehrweg-Radixsuchbaum zu bilden.

Claims (10)

1. Verfahren zum Speichern ursprünglicher Daten in einem Computerspeicher (2002), wobei das Verfahren folgende Schritte umfaßt:
Auswählen (1001) einer Anzahl von Generationen;
Initialisieren (1002) einer Mehrzahl von Individuen;
für jedes Individuum, Bestimmen (1003) einer Größe eines Baums, der durch jedes Individuum symbolisiert ist, wobei der Baum die ursprünglichen Daten darstellt;
Auswählen (1007) einer Paarungspopulation aus der Mehr­ zahl von Individuen, wobei die Wahrscheinlichkeit der Auswahl für ein Individuum umgekehrt proportional zu der Baumgröße des Individuums ist;
Auswählen und Durchführen zumindest einer Operation für die Paarungspopulation, wobei die Operation die Opera­ tion der Überkreuzung (1008) ist;
wobei die Operation der Überkreuzung (1008) das Erzeu­ gen zumindest eines neuen Individuums durch Überkreu­ zung unter Verwendung von zumindest zwei Individuen aus der Paarungspopulation, und Addieren des neuen Indivi­ duums zu der Mehrzahl von Individuen umfaßt;
iteratives Durchführen (1004) der Schritte des Bestim­ mens (1003), des Auswählens (1007) und des Auswählens und Durchführens (1008) entsprechend der Anzahl der Ge­ nerationen; und
Beibehalten (1005) des Baums mit der minimalen Größe im Speicher (2002).
2. Verfahren nach Anspruch 1, bei dem der Schritt des Aus­ wählens und Durchführens ferner eine Operation der Mu­ tation (1009) umfaßt, wenn die ausgewählte Operation die Mutation (1009) ist, um das Individuum durch sto­ chastisches Ändern einer Eigenschaft des Individuums zu mutieren, wobei das mutierte Individuum in die Mehrzahl von Individuen angeordnet wird.
3. Verfahren nach Anspruch 1, bei dem der Schritt des Be­ stimmens (1003) folgende Schritte umfaßt:
Erzeugen (1100) eines Wurzelknotens, einer Mehrzahl von Teilknoten und einer Mehrzahl von Teilarrays in einer hierarchischen Anordnung, wobei das Individuum die An­ zahl der Teilknoten und der Teilarrays und eine Anzahl der Einträge in dem Teilarray angibt;
Löschen (1101) jedes Teilarrays aus der Mehrzahl der Teilarrays, das redundante Daten enthält;
Entfernen (1102) jedes Teilknotens aus der Mehrzahl der Teilknoten, der redundante Daten enthält; und
Anwenden (1103) einer Überlappungsreduzierungsfunktion.
4. Verfahren nach Anspruch 3, bei dem das Individuum eine binäre Zahl mit N Bits ist, die auf einen ersten Wert eingestellt sind, wobei der Schritt des Erzeugens fer­ ner den Schritt des Verbindens der Wurzel mit der Mehr­ zahl von Teilknoten und Teilarrays umfaßt, um einen mo­ difizierten hybriden Mehrweg-Radixsuchbaum zu bilden, wobei die Wurzel und die Mehrzahl der Teilknoten in N Ebenen angeordnet sind.
5. Verfahren zum Speichern ursprünglicher Daten in einer minimalen Größe eines Computerspeichers (2002), wobei das Verfahren folgende Schritte umfaßt:
Auswählen (1001) einer Anzahl von Generationen;
Initialisieren (1002) einer Mehrzahl von Individuen;
für jedes Individuum:
Aufbauen (1100) eines Baums, wobei der Baum die ur­ sprünglichen Daten darstellt, wobei der Baum einen Wurzelknoten, eine Mehrzahl von Teilknoten und eine Mehrzahl von Teilarrays in einer hierarchischen An­ ordnung umfaßt, wobei das Individuum eine Anzahl von Teilknoten und Teilarrays und eine Anzahl von Einträgen in dem Teilarray anzeigt;
Löschen (1101) jedes Teilarrays aus der Mehrzahl der Teilarrays, das redundante Daten enthält;
Entfernen (1102) jedes Teilknotens aus der Mehrzahl von Teilknoten, der redundante Daten enthält;
Anwenden (1103) einer Überlappungsreduzierungfunk­ tion auf den Baum;
Bestimmen (1104) einer Größe für den Baum;
Zuordnen (1103) der Größe zu dem Individuum;
Auswählen (1007) einer Paarungspopulation aus der Mehr­ zahl der Individuen, wobei die Wahrscheinlichkeit der Auswahl für ein Individuum umgekehrt proportional zu der Baumgröße des Individuums ist;
Auswählen und Durchführen zumindest einer Operation bezüglich der Paarungspopulation, wobei die Operation die Operation der Überkreuzung (1008) oder der Mutation (1009) ist;
wenn die ausgewählte Operation die Überkreuzung ist (1008), Erzeugen zumindest eines neuen Individuums durch eine Überkreuzung unter Verwendung von zumindest zwei Individuen aus der Paarungspopulation und Hinzu­ fügen des neuen Individuums zu der Mehrzahl der Indi­ viduen;
wenn die ausgewählte Operation die Mutation ist (1009), Mutieren eines Individuums in der Paarungspopulation durch stochastisches Ändern einer Eigenschaft des Indi­ viduums, und Anordnen des mutierten Individuums in der Mehrzahl der Individuen;
iteratives Durchführen der Schritte für die Anzahl der Generationen (1004, 1006); und
Beibehalten (1005) des Baums mit der minimalen Größe in dem Speicher (2002).
6. Verfahren nach Anspruch 5 oder Anspruch 1, bei dem der Schritt des Auswählens (1007) folgende Schritte umfaßt:
Definieren der Paarungspopulation als eine Mehrzahl von Individuen umfassend, wobei die Anzahl der Individuen in der Paarungspopulation gleich der Anzahl der Indivi­ duen in der Mehrzahl der Individuen ist;
Kopieren der Individuen aus der Mehrzahl der Individuen in die Paarungspopulation, wobei Individuen mit relativ kleinen Baumgrößen mehrere Male kopiert werden, und In­ dividuen mit relativen großen Baumgrößen ausgeschlossen werden; und
Löschen aller Individuen in der Mehrzahl der Indivi­ duen.
7. Verfahren nach Anspruch 5 oder Anspruch 3, bei dem je­ des Teilarray einen Kopf und einen Schwanz hat, wobei der Schritt des Anwendens (1103) der Überlappungsredu­ zierungsfunktion folgende Schritte umfaßt:
erstens, Finden von überlappbaren Einträgen in dem Schwanz für jeden der Einträge in dem Teilarray;
zweitens, Finden überlappbarer Einträge in dem Kopf für jeden Eintrag in dem Teilarray; und
Vergleichen der überlappbaren Einträge in dem Schwanz mit den überlappbaren Einträgen in dem Kopf.
8. Computersystem, das ursprüngliche Daten speichert, mit:
einem Speicher (2002), in dem eine Mehrzahl von Indivi­ duen gespeichert sind;
einem Prozessor (2000), der mit dem Speicher (2002) verbunden ist, wobei der Prozessor (2000) eine Befehls­ sequenz ausführt;
einer Einrichtung zum Bestimmen (2000, 2002) einer Größe eines Baums, der durch jedes Individuum symbo­ lisiert ist, wobei der Baum die ursprünglichen Daten darstellt, wobei die Einrichtung zum Bestimmen mit dem Prozessor (2000) verbunden ist;
einer Einrichtung zum Auswählen (2000, 2002) einer Paa­ rungspopulation aus der Mehrzahl der Individuen, wobei die Wahrscheinlichkeit der Auswahl für ein Individuum umgekehrt proportional zu der Baumgröße des Individuums ist;
einer Einrichtung zum Auswählen und Durchführen (2000, 2002) einer Operation bezüglich der Paarungspopulation, wobei die Operation die Operation der Überkreuzung (2000, 2002) ist, wobei die Einrichtung zum Auswählen und Durchführen (2000, 2002) mit dem Prozessor (2000) verbunden ist;
einer Einrichtung zum Durchführen (2000, 2002) der Ope­ ration der Überkreuzung, die das Erzeugen zumindest eines neuen Individuums durch eine Überkreuzung unter Verwendung von zumindest zwei Individuen aus der Paa­ rungspopulation und das Hinzufügen des neuen Indivi­ duums zu der Mehrzahl der Individuen umfaßt; und
einer Einrichtung zum Beibehalten (2000, 2002) des Baums mit der minimalen Größe im Speicher (2002), wobei die Einrichtung zum Beibehalten mit dem Prozessor (2000) verbunden ist.
9. Computersystem nach Anspruch 8, wobei der Baum Folgen­ des umfaßt:
einen Wurzelknoten (2002) mit zumindest zwei Zeigern; und
zumindest zwei Teilarrays (2002), die mit dem Wurzel­ knoten (2002) durch die zumindest zwei Zeiger in einer hierarchischen Anordnung verbunden sind, wobei die zu­ mindest zwei Teilarrays (2002) jeweils eine Mehrzahl von Einträgen haben, in denen die ursprünglichen Daten gespeichert sind.
10. Computersystem nach Anspruch 9, bei dem der Baum ferner eine Mehrzahl von Teilknoten (2002) umfaßt, die zwi­ schen dem Wurzelknoten (2002) und den Teilarrays (2002) angeordnet sind, wobei die Wurzel (2002) mit der Mehr­ zahl von Teilknoten (2002) und Teilarrays (2002) ver­ bunden ist, um einen modifizierten hybriden Mehrweg-Ra­ dixsuchbaum zu bilden.
DE19532371A 1995-01-26 1995-09-01 Verwendung eines genetischen Algorithmus zur Optimierung von Speicherplatz Expired - Fee Related DE19532371C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US08/378,329 US5651099A (en) 1995-01-26 1995-01-26 Use of a genetic algorithm to optimize memory space

Publications (2)

Publication Number Publication Date
DE19532371A1 true DE19532371A1 (de) 1996-08-08
DE19532371C2 DE19532371C2 (de) 1997-10-02

Family

ID=23492693

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19532371A Expired - Fee Related DE19532371C2 (de) 1995-01-26 1995-09-01 Verwendung eines genetischen Algorithmus zur Optimierung von Speicherplatz

Country Status (3)

Country Link
US (1) US5651099A (de)
JP (1) JPH08272659A (de)
DE (1) DE19532371C2 (de)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5864633A (en) * 1996-05-17 1999-01-26 Therma-Wave, Inc. Method and apparatus for optical data analysis
US5857196A (en) * 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
US5873078A (en) * 1996-07-19 1999-02-16 Bay Networks, Inc. Radix tree search logic
US6675173B1 (en) 1998-01-22 2004-01-06 Ori Software Development Ltd. Database apparatus
TR200002119T2 (tr) * 1998-01-22 2000-12-21 Ori Software Development Ltd. Veri tabanı cihazı.
US6539366B1 (en) * 1998-04-30 2003-03-25 Intel Corporation Codec with genetic adaptation
US7117131B2 (en) * 1998-05-26 2006-10-03 Definiens Ag Method for characterizing a complex system
US6215907B1 (en) 1998-06-26 2001-04-10 Fisher-Rosemont Systems, Inc. Recursive on-line wavelet data compression technique for use in data storage and communications
US6223174B1 (en) * 1998-07-01 2001-04-24 Nortel Networks Limited Method and apparatus for performing radix lookups using valid bit tables with pointers
US6233574B1 (en) * 1998-07-01 2001-05-15 Nortel Networks Limited Method and apparatus for performing radix lookups using transition tables with pointers
US6185570B1 (en) * 1998-07-01 2001-02-06 Nortel Networks Limited Method and apparatus for performing radix lookups using transition bits and fields in transition tables
US6247014B1 (en) * 1998-07-01 2001-06-12 Nortel Networks Limited Method and apparatus for performing hash lookups using valid bit tables with pointers
US6298321B1 (en) 1998-11-23 2001-10-02 Microsoft Corporation Trie compression using substates and utilizing pointers to replace or merge identical, reordered states
US6304878B1 (en) * 1998-11-23 2001-10-16 Microsoft Corporation Method and system for improved enumeration of tries
US6260031B1 (en) * 1998-12-21 2001-07-10 Philips Electronics North America Corp. Code compaction by evolutionary algorithm
US6514201B1 (en) 1999-01-29 2003-02-04 Acuson Corporation Voice-enhanced diagnostic medical ultrasound system and review station
US6523016B1 (en) * 1999-04-12 2003-02-18 George Mason University Learnable non-darwinian evolution
DE19927317A1 (de) * 1999-06-15 2000-12-21 Christoph Bueltemann Verfahren und Vorrichtung zur automatischen Spracherkennung, Sprecheridentifizierung und Spracherzeugung
US6424959B1 (en) * 1999-06-17 2002-07-23 John R. Koza Method and apparatus for automatic synthesis, placement and routing of complex structures
US7249149B1 (en) 1999-08-10 2007-07-24 Washington University Tree bitmap data structures and their use in performing lookup operations
US6560610B1 (en) * 1999-08-10 2003-05-06 Washington University Data structure using a tree bitmap and method for rapid classification of data in a database
US6378117B1 (en) * 1999-08-27 2002-04-23 Hewlett-Packard Company Cellular encoding using typed development operators
US7296089B2 (en) * 1999-08-27 2007-11-13 At&T Corp. Method for improving web performance by adapting servers based on client cluster characterization
US7191168B1 (en) * 1999-08-27 2007-03-13 At&T Corp. Fast prefix matching of bounded strings
US6675169B1 (en) 1999-09-07 2004-01-06 Microsoft Corporation Method and system for attaching information to words of a trie
US6810372B1 (en) 1999-12-07 2004-10-26 Hewlett-Packard Development Company, L.P. Multimodal optimization technique in test generation
JP2001307977A (ja) * 2000-02-18 2001-11-02 Nikon Corp 荷電粒子線露光装置の設計方法、荷電粒子線露光装置、及び半導体デバイスの製造方法
US6532076B1 (en) 2000-04-04 2003-03-11 Therma-Wave, Inc. Method and apparatus for multidomain data analysis
US6725326B1 (en) 2000-08-15 2004-04-20 Cisco Technology, Inc. Techniques for efficient memory management for longest prefix match problems
KR20020040406A (ko) * 2000-11-24 2002-05-30 김응수 유전자 코드에 의한 정보압축 및 저장 방법
US7856543B2 (en) 2001-02-14 2010-12-21 Rambus Inc. Data processing architectures for packet handling wherein batches of data packets of unpredictable size are distributed across processing elements arranged in a SIMD array operable to process different respective packet protocols at once while executing a single common instruction stream
US6804677B2 (en) * 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US6775737B1 (en) 2001-10-09 2004-08-10 Cisco Technology, Inc. Method and apparatus for allocating and using range identifiers as input values to content-addressable memories
KR100468276B1 (ko) * 2001-12-13 2005-01-27 (주)아이디스 멀티미디어 데이터 저장 및 검색 방법
US6970971B1 (en) 2002-01-08 2005-11-29 Cisco Technology, Inc. Method and apparatus for mapping prefixes and values of a hierarchical space to other representations
GB0200352D0 (en) * 2002-01-09 2002-02-20 Ibm Finite state dictionary and method of production thereof
US7287033B2 (en) 2002-03-06 2007-10-23 Ori Software Development, Ltd. Efficient traversals over hierarchical data and indexing semistructured data
US7899067B2 (en) * 2002-05-31 2011-03-01 Cisco Technology, Inc. Method and apparatus for generating and using enhanced tree bitmap data structures in determining a longest prefix match
US7299317B1 (en) 2002-06-08 2007-11-20 Cisco Technology, Inc. Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure
US7558775B1 (en) 2002-06-08 2009-07-07 Cisco Technology, Inc. Methods and apparatus for maintaining sets of ranges typically using an associative memory and for using these ranges to identify a matching range based on a query point or query range and to maintain sorted elements for use such as in providing priority queue operations
US7441074B1 (en) 2002-08-10 2008-10-21 Cisco Technology, Inc. Methods and apparatus for distributing entries among lookup units and selectively enabling less than all of the lookup units when performing a lookup operation
US6789233B2 (en) * 2002-08-28 2004-09-07 Micron Technology, Inc. Method for determining a matched routing arrangement for semiconductor devices
KR20040071993A (ko) * 2003-02-07 2004-08-16 학교법인대우학원 Dna 서열 부호화 방법 및 dna 서열 압축 방법
CA2426496A1 (en) * 2003-04-24 2004-10-24 Ibm Canada Limited - Ibm Canada Limitee Processing fixed-format data in a unicode environment
US7415472B2 (en) * 2003-05-13 2008-08-19 Cisco Technology, Inc. Comparison tree data structures of particular use in performing lookup operations
US7415463B2 (en) * 2003-05-13 2008-08-19 Cisco Technology, Inc. Programming tree data structures and handling collisions while performing lookup operations
JP2005080523A (ja) * 2003-09-05 2005-03-31 Sony Corp 生体遺伝子に導入するdna、遺伝子導入ベクター、細胞、生体遺伝子への情報導入方法、情報処理装置および方法、記録媒体、並びにプログラム
US7478109B1 (en) 2004-03-15 2009-01-13 Cisco Technology, Inc. Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
US20050278301A1 (en) * 2004-05-26 2005-12-15 Castellanos Maria G System and method for determining an optimized process configuration
US7971191B2 (en) * 2004-06-10 2011-06-28 Hewlett-Packard Development Company, L.P. System and method for analyzing a process
US7236938B2 (en) * 2004-08-11 2007-06-26 Hewlett-Packard Development Company, L.P. System and method for refreshing metric values
US7921088B1 (en) 2005-07-22 2011-04-05 X-Engines, Inc. Logical operations encoded by a function table for compressing index bits in multi-level compressed look-up tables
US7430560B1 (en) 2005-07-22 2008-09-30 X-Engines, Inc. Multi-level compressed lock-up tables formed by logical operations to compress selected index bits
JP4966305B2 (ja) * 2005-08-05 2012-07-04 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 動的遺伝子分布によるサーチ空間保護
US7451121B2 (en) * 2005-09-27 2008-11-11 Intel Corporation Genetic algorithm for microcode compression
US8332188B2 (en) * 2006-03-03 2012-12-11 Solido Design Automation Inc. Modeling of systems using canonical form functions and symbolic regression
US7761493B1 (en) * 2006-04-11 2010-07-20 Oracle America, Inc. Population of sparse information model hierarchies
US7779016B2 (en) * 2006-09-14 2010-08-17 International Business Machines Corporation Parallel execution of operations for a partitioned binary radix tree on a parallel computer
US8656448B2 (en) * 2006-10-26 2014-02-18 International Business Machines Corporation Providing policy-based application services to an application running on a computing system
US8713582B2 (en) * 2006-10-26 2014-04-29 International Business Machines Corporation Providing policy-based operating system services in an operating system on a computing system
US8032899B2 (en) 2006-10-26 2011-10-04 International Business Machines Corporation Providing policy-based operating system services in a hypervisor on a computing system
US7827218B1 (en) 2006-11-18 2010-11-02 X-Engines, Inc. Deterministic lookup using hashed key in a multi-stride compressed trie structure
US7958274B2 (en) * 2007-06-18 2011-06-07 International Business Machines Corporation Heuristic status polling
US8296430B2 (en) 2007-06-18 2012-10-23 International Business Machines Corporation Administering an epoch initiated for remote memory access
US9065839B2 (en) * 2007-10-02 2015-06-23 International Business Machines Corporation Minimally buffered data transfers between nodes in a data communications network
US7984450B2 (en) * 2007-11-28 2011-07-19 International Business Machines Corporation Dispatching packets on a global combining network of a parallel computer
US7895260B2 (en) * 2008-07-28 2011-02-22 International Business Machines Corporation Processing data access requests among a plurality of compute nodes
US8010930B2 (en) * 2008-12-29 2011-08-30 International Business Machine Corporation Extracting consistent compact model parameters for related devices
WO2010089900A1 (en) * 2009-02-05 2010-08-12 Nec Corporation Method, system and program for deadline constrained task admission control and scheduling using genetic approach
US8365186B2 (en) 2010-04-14 2013-01-29 International Business Machines Corporation Runtime optimization of an application executing on a parallel computer
US8504730B2 (en) 2010-07-30 2013-08-06 International Business Machines Corporation Administering connection identifiers for collective operations in a parallel computer
US8515882B2 (en) 2010-11-18 2013-08-20 International Business Machines Corporation Efficient storage of individuals for optimization simulation
US8489526B2 (en) 2010-11-24 2013-07-16 International Business Machines Corporation Controlling quarantining and biasing in cataclysms for optimization simulations
US8565120B2 (en) 2011-01-05 2013-10-22 International Business Machines Corporation Locality mapping in a distributed processing system
US9317637B2 (en) 2011-01-14 2016-04-19 International Business Machines Corporation Distributed hardware device simulation
US9563844B2 (en) 2011-06-30 2017-02-07 International Business Machines Corporation Speculative asynchronous sub-population evolutionary computing utilizing a termination speculation threshold
US8689228B2 (en) 2011-07-19 2014-04-01 International Business Machines Corporation Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system
US9250948B2 (en) 2011-09-13 2016-02-02 International Business Machines Corporation Establishing a group of endpoints in a parallel computer
US8306977B1 (en) * 2011-10-31 2012-11-06 Google Inc. Method and system for tagging of content
US9165247B2 (en) 2012-01-04 2015-10-20 International Business Machines Corporation Using global and local catastrophes across sub-populations in parallel evolutionary computing
CN102892188B (zh) * 2012-10-09 2016-07-06 中兴通讯股份有限公司 通信网络中基于遗传算法的上行功率控制方法及装置
TWI483138B (zh) * 2012-10-12 2015-05-01 Acer Inc 遠端動態資料的處理與驗證方法、系統,以及電腦可讀記錄媒體
US9311597B2 (en) * 2013-03-12 2016-04-12 International Business Machines Corporation Early generation of individuals to accelerate genetic algorithms
US9305257B2 (en) 2013-05-20 2016-04-05 International Business Machines Corporation Adaptive cataclysms in genetic algorithms
US9041566B2 (en) * 2013-08-30 2015-05-26 International Business Machines Corporation Lossless compression of the enumeration space of founder line crosses
RU2615822C2 (ru) * 2015-05-19 2017-04-11 Алексей Игоревич Салмин Хранилище для футляров с информацией, синхронизирующее дополнительное смешанное лазерное освещение с работой зоны интенсивного развития техники, и носовые опоры солнцезащитных очков
DE112016007098T5 (de) * 2016-07-26 2019-04-18 Hewlett-Packard Development Company, L.P. Indexierung von voxeln für das 3d-drucken
US11055433B2 (en) 2019-01-03 2021-07-06 Bank Of America Corporation Centralized advanced security provisioning platform
CN113630127B (zh) * 2021-08-06 2023-09-29 网络通信与安全紫金山实验室 一种基于遗传算法的快速极化码构造方法、装置和设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5343554A (en) * 1988-05-20 1994-08-30 John R. Koza Non-linear genetic process for data encoding and for solving problems using automatically defined functions

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4697242A (en) * 1984-06-11 1987-09-29 Holland John H Adaptive computing system capable of learning and discovery
US4881178A (en) * 1987-05-07 1989-11-14 The Regents Of The University Of Michigan Method of controlling a classifier system
US5058144A (en) * 1988-04-29 1991-10-15 Xerox Corporation Search tree data structure encoding for textual substitution data compression systems
US4935877A (en) * 1988-05-20 1990-06-19 Koza John R Non-linear genetic algorithms for solving problems
US5148513A (en) * 1988-05-20 1992-09-15 John R. Koza Non-linear genetic process for use with plural co-evolving populations
AU7563191A (en) * 1990-03-28 1991-10-21 John R. Koza Non-linear genetic algorithms for solving problems by finding a fit composition of functions
US5276868A (en) * 1990-05-23 1994-01-04 Digital Equipment Corp. Method and apparatus for pointer compression in structured databases
US5151697A (en) * 1990-10-15 1992-09-29 Board Of Regents Of The University Of Washington Data structure management tagging system
US5151950A (en) * 1990-10-31 1992-09-29 Go Corporation Method for recognizing handwritten characters using shape and context analysis
DE4110400A1 (de) * 1991-03-28 1992-10-01 Siemens Ag Verfahren zur kompression von bilddaten
US5379036A (en) * 1992-04-01 1995-01-03 Storer; James A. Method and apparatus for data compression
US5226082A (en) * 1992-07-02 1993-07-06 At&T Bell Laboratories Variable length decoder
US5406279A (en) * 1992-09-02 1995-04-11 Cirrus Logic, Inc. General purpose, hash-based technique for single-pass lossless data compression
JP2505980B2 (ja) * 1993-04-16 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 静的辞書作成方法及びコンピュ―タ実行システム
JPH0744520A (ja) * 1993-07-30 1995-02-14 Ricoh Co Ltd 情報処理装置
JP2625356B2 (ja) * 1993-09-09 1997-07-02 日本電気株式会社 画像処理装置
US5528701A (en) * 1994-09-02 1996-06-18 Panasonic Technologies, Inc. Trie based method for indexing handwritten databases

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5343554A (en) * 1988-05-20 1994-08-30 John R. Koza Non-linear genetic process for data encoding and for solving problems using automatically defined functions

Also Published As

Publication number Publication date
US5651099A (en) 1997-07-22
JPH08272659A (ja) 1996-10-18
DE19532371C2 (de) 1997-10-02

Similar Documents

Publication Publication Date Title
DE19532371C2 (de) Verwendung eines genetischen Algorithmus zur Optimierung von Speicherplatz
DE3916328A1 (de) Verfahren und computer zur problemloesung nach nicht-linearer genetischer methode
DE69631694T2 (de) Genetisches Programmiersystem und Verfahren unter Verwendung genetischer Programmiertechniken
O'Reilly et al. Program search with a hierarchical variable length representation: Genetic programming, simulated annealing and hill climbing
Bruderer et al. Organizational evolution, learning, and selection: A genetic-algorithm-based model
Hifi A genetic algorithm-based heuristic for solving the weighted maximum independent set and some equivalent problems
CN109416758A (zh) 神经网络及神经网络训练的方法
Jacob Evolving evolution programs: Genetic programming and L-systems
Langdon et al. Seeding genetic programming populations
Deb Binary and floating-point function optimization using messy genetic algorithms
Plotnick et al. A general model for simulating the effects of landscape heterogeneity and disturbance on community patterns
Stejić et al. Mathematical aggregation operators in image retrieval: effect on retrieval performance and role in relevance feedback
DE69629540T2 (de) Verfahren und Gerät zum Sortieren von Elementen
DE69627391T2 (de) Verfahren und system zum durchführen einer booleschen operation auf bitketten unter benutzung einer maximalen bitscheibe
Amirthagadeswaran et al. Improved solutions for job shop scheduling problems through genetic algorithm with a different method of schedule deduction
Wuensche Discrete dynamics lab: tools for investigating cellular automata and discrete dynamical networks
Yan et al. Fast algorithms of plant computation based on substructure instances
EP0577631B1 (de) Verfahren zur kompression von bilddaten
DE60311886T2 (de) Verfahren und vorrichtung zum sortieren zyklischer daten in lexikographischer reihenfolge
Chin et al. Genetic algorithm methods for solving the best stationary policy of finite Markov decision processes
EP1299847B1 (de) Verfahren zum verarbeiten von mehreren unterschiedlichen datenstrukturen
Schonmann et al. Two-level Fisher-Wright framework with selection and migration: An approach to studying evolution in group structured populations
DE4438652A1 (de) Verfahren und Vorrichtung zum stabilen Sortieren oder Mischen sequentieller Listen in einer raumadaptiven Weise
Kasambe et al. Modified fractal image compression using genetic algorithms
Hansson A computational model of metapopulation dynamics and organism-mediated nutrient flow

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
D2 Grant after examination
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee