


Detaillierte Erläuterung der Strukturtechniken zur Implementierung des Wörterbuchbaum-Trie mithilfe von Python-Code
Der Wörterbuchbaum (Trie) kann einige String->Wert-Korrespondenzen speichern. Im Grunde hat es die gleiche Funktion wie Javas HashMap, bei der es sich um eine Schlüssel-Wert-Zuordnung handelt, mit der Ausnahme, dass der Schlüssel von Trie nur eine Zeichenfolge sein kann.
Die Kraft von Trie liegt in seiner zeitlichen Komplexität. Die Einfügungs- und Abfragezeitkomplexität beträgt jeweils O(k), wobei k die Länge des Schlüssels ist, unabhängig davon, wie viele Elemente in Trie gespeichert sind. Es wird behauptet, dass die Hash-Tabelle O (1) ist, aber bei der Berechnung des Hashs wird sie definitiv O (k) sein, und es gibt auch Probleme wie Kollisionen. Der Nachteil von Trie besteht darin, dass es sehr viel Speicherplatz verbraucht.
Was die Implementierung des Trie-Baums betrifft, können Sie Arrays verwenden oder Zeiger dynamisch zuweisen. Als ich die Frage beantwortete, habe ich der Einfachheit halber Arrays verwendet und den Speicherplatz statisch zugewiesen.
Der Trie-Baum, auch Wortsuchbaum oder Schlüsselbaum genannt, ist eine Baumstruktur und eine Variante des Hash-Baums. Typische Anwendungen sind das Zählen und Sortieren einer großen Anzahl von Zeichenfolgen (aber nicht auf Zeichenfolgen beschränkt), daher werden sie häufig von Suchmaschinensystemen für Statistiken zur Worthäufigkeit von Texten verwendet. Seine Vorteile sind: Es minimiert unnötige Zeichenfolgenvergleiche und bietet eine höhere Abfrageeffizienz als Hash-Tabellen.
Die Kernidee von Trie besteht darin, Raum gegen Zeit zu tauschen. Nutzen Sie das gemeinsame Präfix von Zeichenfolgen, um den Zeitaufwand für Abfragen zu reduzieren und die Effizienz zu verbessern.
Jedes Wort im Trie-Baum wird zeichenweise gespeichert, und Wörter mit demselben Präfix teilen sich Präfixknoten.
Sie können sehen, dass jeder Pfad ein Wort im Baum speichert /ten/inn diese Wörter.
Die Grundeigenschaften des Trie-Baums können wie folgt zusammengefasst werden:
(1) Der Wurzelknoten enthält keine Zeichen, außer dem Wurzelknoten. Jeder Knoten enthält nur ein Zeichen.
(2) Vom Wurzelknoten bis zu einem bestimmten Knoten werden die auf dem Pfad übergebenen Zeichen verbunden, um die dem Knoten entsprechende Zeichenfolge zu bilden.
(3) Alle untergeordneten Knoten jedes Knotens enthalten unterschiedliche Zeichenfolgen.
Eigenschaften
(1) Der Wurzelknoten enthält keine Zeichen, und jeder Knoten außer dem Wurzelknoten enthält nur ein Zeichen.
(2) Vom Wurzelknoten bis zu einem bestimmten Knoten werden die auf dem Pfad übergebenen Zeichen verbunden, um die dem Knoten entsprechende Zeichenfolge zu bilden.
(3) Alle untergeordneten Knoten jedes Knotens enthalten unterschiedliche Zeichenfolgen.
Grundidee (am Beispiel des Buchstabenbaums):
1. Einfügungsprozess
Beginnen Sie für ein Wort an der Wurzel und folgen Sie dem Baum, der jedem Buchstaben von entspricht Das Wort Der Knoten verzweigt sich nach unten, bis das Wort durchlaufen wird, und der letzte Knoten ist rot markiert, was darauf hinweist, dass das Wort in den Trie-Baum eingefügt wurde.
2. Abfrageprozess
Durchlaufen Sie auf ähnliche Weise den Trie-Baum in alphabetischer Reihenfolge der Wörter, beginnend mit der Wurzel. Sobald festgestellt wird, dass keine Knotenmarkierung vorhanden ist, oder die Wortdurchquerung abgeschlossen ist aber der letzte Knoten ist nicht vorhanden. Wenn er rot markiert ist, bedeutet dies, dass das Wort nicht existiert. Wenn der letzte Knoten rot markiert ist, bedeutet dies, dass das Wort existiert.
Anwendung
(1) Worthäufigkeitsstatistik
Platz sparen als Hash direkt verwenden
(2) Suchaufforderung
Präfix eingeben Bei Aufforderung werden Wörter, die
(3) gebildet werden können, als Hilfsstrukturen
wie Suffixbäume, AC-Automaten usw. implementiert.
>Obwohl Python Da es keine Zeiger gibt, können verschachtelte Wörterbücher zum Implementieren von Baumstrukturen verwendet werden. Für Nicht-ASCII-Wörter wird die Unicode-Kodierung zum Einfügen und Suchen verwendet Informationen zu den Strukturtechniken zur Implementierung eines Wörterbuchbaum-Trie mithilfe von Python-Code finden Sie auf der chinesischen PHP-Website!
#coding=utf-8 class Trie: root = {} END = '/' def add(self, word): #从根节点遍历单词,char by char,如果不存在则新增,最后加上一个单词结束标志 node = self.root for c in word: node=node.setdefault(c,{}) node[self.END] = None def find(self, word): node = self.root for c in word: if c not in node: return False node = node[c] return self.END in node

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Regelmäßige Ausdrücke sind leistungsstarke Tools für Musteranpassung und Textmanipulation in der Programmierung, wodurch die Effizienz bei der Textverarbeitung in verschiedenen Anwendungen verbessert wird.

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

In dem Artikel werden beliebte Python-Bibliotheken wie Numpy, Pandas, Matplotlib, Scikit-Learn, TensorFlow, Django, Flask und Anfragen erörtert, die ihre Verwendung in wissenschaftlichen Computing, Datenanalyse, Visualisierung, maschinellem Lernen, Webentwicklung und h beschreiben
