Ich werde Namen von Dateien dynamisch hinzufügen, ungefähr bis zu einer Milliarde Namen. Außerdem möchte ich auch den Pfad speichern, in dem sich die Dateien befinden, um die folgenden Abfragen auszuführen:
Ich versuche also, eine Art von Datenstruktur wie folgt zu erstellen:
Ich habe 26 Knoten (das englische Alphabet az, ich werde nicht alle Knoten in das Bild einfügen, weil space) so, dass, wenn ich das Wort "hola" einfügen, dann eine Kante aus dem Knoten mit dem Buchstaben 'h erstellen 'zu Knoten mit dem Buchstaben' o 'und dessen Kante hat eine Daten 1, da diese Zahl das Niveau der Tiefe darstellen. Außerdem werde ich in dem Knoten, in dem 'a' gespeichert ist, eine Map-Struktur haben, um den Pfad der Datei zu speichern, da ich sicher viele Pfade in dem Knoten gespeichert habe, der den Buchstaben 'a' enthält. .
Nachdem ich das gesagt hatte, fügte ich die folgenden Wörter ein: Joel, Hola, Ola, Oso, Osea, Algo, Aaab.
Ich habe das getan, weil ich nicht viele Knoten mit den Sama-Lettern haben möchte (z.B. a, b, usw.), aber das Problem ist, dass ich viele Kanten bekommen habe und die Struktur benötigt
Speicherbytes (ich programmiere in C ++) wobei w eine Zeichenfolge der Größe ist .
Wie Sie sehen, wenn ich nach dem Namen der Datei "jola" suche (die nicht eingefügt ist), wird kein Pfad zurückgegeben und dies sagt uns, dass diese Datei nicht gespeichert wird.
Wie kann ich das verbessern? Kann man die Anzahl der Kanten reduzieren? oder gibt es eine bessere Struktur und einen Weg, dies zu tun? Ich bin sehr offen dafür, irgendeinen Vorschlag zu hören.
Tags und Links optimization data-structures trie graph