Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Bidirektionale Zuordnung zwischen Wörtern und Zahlen
Jojojoxx - So 19.04.09 17:41
Titel: Bidirektionale Zuordnung zwischen Wörtern und Zahlen
Hallo!
Ich suche nach einem Verfahren, verschiedenen Wörtern jeweils eine eindeutige Zahl zuzuordnen. Dabei soll es sowohl möglich sein zu einem Wort seine zugeordnete Zahl zu finden, als auch zu einer Zahl das zugeordnete Wort. Es muss also in BEIDE Richtungen ein Lookup möglich sein.
Habt ihr dazu eine gute Idee, wie das zu realisieren ist?
Danke euch!
mfg
Jojo
alzaimar - So 19.04.09 17:48
Soll das Lookup in beide Richtungen gleich schnell sein? Um wie viele Wörter handelt es sich? Wo und wie soll die Struktur angewendet werden?
Jojojoxx - So 19.04.09 18:10
Das Lookup sollte generell möglichst schnell gehen, aber die Zeit der einen Richtung muss nicht exakt der der anderen entsprechen.
Ich denke es werden so mehrere zehntausend verschiedene Wörter sein, allerdings ist nicht von Anfang an bekannt um wieviele Wörter es sich handelt.
F34r0fTh3D4rk - So 19.04.09 18:31
Wie man das am besten macht hängt von der jeweiligen Anwendung ab.
Du könntest einfach die ASCII-Werte der einzelnen Zeichen aneinanderhängen.
Wenn du einen festen Wortsatz hast, wäre Durchnummerieren auch eine Möglichkeit.
alzaimar - So 19.04.09 19:04
Ich würde eine String-Integer-Hashmap verwenden. So eine Datenstruktur speichert zu einem String einen Integer. Über den String kann man sehr schnell die Zahl finden, nur umgekehrt dauert es 'etwas'. Du könntest mit einer TStringList anfangen, wobei Du die Zahlen als 'Object' speicherst und über die 'IndexOfObject'-Methode auf die Zahlen zugreifen und den passenden String finden kannst.
Schneller wird das (beim Suchen über das Wort), wenn man die 'Sorted' Eigenschaft auf True stellt.
Noch schneller wird es, wenn Du die THashStringlist verwendest.
Sollte Dir die Geschwindigkeit beim Suchen über den Integer nicht reichen, verwende zwei Stringlisten bzw. Hashmaps. Die eine verwendet das Wort als Schlüssel und liefert die Zahl, die zweite speichert die Zahl und liefert den String.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!