Heim > Backend-Entwicklung > PHP-Tutorial > PHP-Datenstruktur: Verwendung des Trie-Baums, um Präfix-passende Zeichen effizient zu finden

PHP-Datenstruktur: Verwendung des Trie-Baums, um Präfix-passende Zeichen effizient zu finden

WBOY
Freigeben: 2024-06-02 18:00:01
Original
489 Leute haben es durchsucht

Der Trie-Baum ist eine Baumdatenstruktur, mit der Präfix-Übereinstimmungszeichen effizient gefunden werden können. Es besteht aus einer Reihe von Knoten, wobei jeder Knoten ein Zeichen darstellt. Um eine Zeichenfolge einzufügen, beginnen Sie am Stammknoten und erstellen oder suchen Sie Knoten entlang des Zeichenpfads. Suchen Sie bei der Suche Zeichen für Zeichen nach unten, um zu prüfen, ob ein passendes Wort vorhanden ist. In diesem Fall wird ein Trie-Baum verwendet, um Tiernamen zu speichern und Tiere, die mit einem bestimmten Präfix beginnen, schnell zu finden.

PHP-Datenstruktur: Verwendung des Trie-Baums, um Präfix-passende Zeichen effizient zu finden

PHP-Datenstruktur: Verwendung des Trie-Baums zur effizienten Suche nach Präfix-Übereinstimmungszeichen

Einführung

Der Trie-Baum ist eine Baumdatenstruktur, die speziell zum Speichern von Zeichenfolgen und zur Unterstützung einer schnellen Suche nach Präfix-Übereinstimmungen verwendet wird. Es ist für seine Effizienz und Platzersparnis bekannt und wird häufig in Bereichen wie der Verarbeitung natürlicher Sprache, der Rechtschreibprüfung und dem Netzwerkrouting eingesetzt.

Trie-Baumstruktur

Der Trie-Baum besteht aus einer Reihe von Knoten, wobei jeder Knoten ein Zeichen darstellt. Ausgehend vom Wurzelknoten stellt jede Ebene des Baums ein Präfix der Zeichenfolge dar. Jeder Knoten kann mehrere untergeordnete Knoten haben, die unterschiedliche Suffixe darstellen, beginnend mit diesem Präfix.

Einfügen

Um eine Zeichenfolge in einen Trie-Baum einzufügen, führen Sie die folgenden Schritte aus:

function insert(TrieNode $root, $string) {
    $node = $root;
    for ($i = 0; $i < strlen($string); $i++) {
        $char = $string[$i];
        if (!isset($node->children[$char])) {
            $node->children[$char] = new TrieNode();
        }
        $node = $node->children[$char];
    }
    $node->isWord = true;
}
Nach dem Login kopieren

Suchen

Um zu suchen, ob eine bestimmte Zeichenfolge im Trie-Baum vorhanden ist, führen Sie die folgenden Schritte aus:

function search(TrieNode $root, $string) {
    $node = $root;
    for ($i = 0; $i < strlen($string); $i++) {
        $char = $string[$i];
        if (!isset($node->children[$char])) {
            return false;
        }
        $node = $node->children[$char];
    }
    return $node->isWord;
}
Nach dem Login kopieren

Praktischer Fall

Angenommen, wir haben eine Liste mit Tiernamen wie folgt:

$animals = ['dog', 'cat', 'rabbit', 'turtle', 'bird'];
Nach dem Login kopieren

Wir erstellen einen Trie-Baum, um diese Tiernamen zu speichern:

$root = new TrieNode();
foreach ($animals as $animal) {
    insert($root, $animal);
}
Nach dem Login kopieren

Jetzt können wir den Trie-Baum verwenden, um leicht Tiere mit passenden Präfixen zu finden, z Suchen Sie beispielsweise nach „Tiere beginnend mit d“:

$prefix = 'd';
$result = [];
foreach ($animals as $animal) {
    if (search($root, $prefix . $animal)) {
        $result[] = $animal;
    }
}
print_r($result);
Nach dem Login kopieren

Das Ausgabeergebnis lautet:

Array
(
    [0] => dog
)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPHP-Datenstruktur: Verwendung des Trie-Baums, um Präfix-passende Zeichen effizient zu finden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage