Gibt es gute Algorithmen zum kodieren und dekodieren von Lookup Tabellen? Mein Ziel ist es, dass ich einer Funktion einen Wert und die kodierte Lookup Tabelle übergebe und ich als Rückgabewert den Wert aus dieser erhalte. Danke für Tips!
Einhorn schrieb: > Gibt es gute Algorithmen zum kodieren und dekodieren von Lookup > Tabellen? > Mein Ziel ist es, dass ich einer Funktion einen Wert und die kodierte > Lookup Tabelle übergebe und ich als Rückgabewert den Wert aus dieser > erhalte. Dafür braucht es keine Funktion, es reicht ein Arrayzugriff. Das ist das kleine 1x1 jeder Programmiersprache.
1 | int tabelle[10] = {2, 3, 5, 7, 9, 11, 13, 17, 19, 23}; |
2 | |
3 | ...
|
4 | |
5 | int primzahl = tabelle[i]; |
Einhorn schrieb: > Gibt es gute Algorithmen zum kodieren und dekodieren von Lookup > Tabellen? Ja, der beste Algorithmus (zumindest bei Optimierung auf Geschwindigkeit) ist der, bei dem der Zugriff auf die Tabelle zu einer simplen Indirektion schrumpft, also auf die Tabelle einfach als array mit einem Index zugegriffen werden kann. Solange die Tabelle also in Bezug auf den verfügbaren Speicher für konstante Daten klein genug ist, um genug Platz für den Rest der Anwendung zu lassen, ist das mit ziemlicher Sicherheit das Optimum.
Wenn es sich, wie in dem obigen Beispiel, nicht gerade um Primzahlen ginge, sondern z.B. um eine Linearisierung, benötigt man noch einen guten Interoplations-Agorithmus. Der kann beinahe beliebig aufwändig sein (z.B. ebenfalls nicht-linear auf Basis der umgebenden Werte) ...
Einhorn schrieb: > Mein Ziel ist es, dass ich einer Funktion einen Wert und die kodierte > Lookup Tabelle übergebe und ich als Rückgabewert den Wert aus dieser > erhalte. Der Sinn einer Tabelle ist, daß man keine Funktion braucht. Der Eingangswert ist einfach der Index auf die Tabelle. Ist die Tabelle monoton, kann man sie auch mittels binärerer Suche rückwarts benutzen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.