Autor Beitrag
Jojojoxx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: So 19.04.09 17:41 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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?

_________________
Na denn, dann. Bis dann, denn.
Jojojoxx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 386



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: 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.

_________________
Na denn, dann. Bis dann, denn.