Vergleichen großer Listen mit mehreren Suchattributen
Verfasst: 06.04.2008 15:59
Hey Leute,
ich suche nach einer Möglichkeit ein Verfahren zum Durchsuchen größerer Listen (~60/70) Einträge mithilfe verschiedener Suchkriterien zu zu optimieren. Es geht hier vor allem um echtzeittaugliche Verfahren (Suchzeit < 10ms o.Ä.), bei denen so wenig Vergleiche von Einträgen mit den Suchkriterien gemacht werden müssen wie nur möglich. Die Situation ist wie folgt:
Gegeben ist ein eindimensionales Feld, deren Einträge drei Attribute enthalten (die als Suchattribute verwendet werden können). Zusätzlich befindet sich ein 4. Attribut, welches von dem Alghorythmus zurückgegeben wird, wenn die Suchkriterien mit den 3 vorherigen des Eintrages übereinstimmen. Da diese Attribute die wildesten Werte haben könnnen, sieht mein pseudo-code für den aktuellen Alghorythmus so aus:
Wie man sieht, wird die gesamte Liste durchgegangen. Ziemlich datensparend, aber sehr langsam. Der Fokus der Suche liegt auf darauf, dass erst die Attribute ihrer Reihenfolge nach geprüft werden, was keine größere Bewandnis hat. Ich könnte mir jetzt ein recht kompliziertes System ausdenken, mit welchem so einiges an Verknüpfungstabellen erstellt werden müsste, aber vielleicht ist das garnicht nötig.
Hat irgendwer ne Idee von euch, wie man das am effektivsten zu lösen ist? Die Attribute sind alle Long-Werte.
ich suche nach einer Möglichkeit ein Verfahren zum Durchsuchen größerer Listen (~60/70) Einträge mithilfe verschiedener Suchkriterien zu zu optimieren. Es geht hier vor allem um echtzeittaugliche Verfahren (Suchzeit < 10ms o.Ä.), bei denen so wenig Vergleiche von Einträgen mit den Suchkriterien gemacht werden müssen wie nur möglich. Die Situation ist wie folgt:
Gegeben ist ein eindimensionales Feld, deren Einträge drei Attribute enthalten (die als Suchattribute verwendet werden können). Zusätzlich befindet sich ein 4. Attribut, welches von dem Alghorythmus zurückgegeben wird, wenn die Suchkriterien mit den 3 vorherigen des Eintrages übereinstimmen. Da diese Attribute die wildesten Werte haben könnnen, sieht mein pseudo-code für den aktuellen Alghorythmus so aus:
Code: Alles auswählen
suchprozedur (suchattribut1, suchattribut2, suchattribut 3)
{
wiederhole bis listenende
{
suchattribut1 == eintrag.attribut1 ?
{
suchattribut2 == eintrag.attribut2 ?
{
suchattribut3 == eintrag.attribut3 ?
{
gebe eintrag.attribut4 zurück
}
}
}
nehme nächsten eintrag
}
gebe fehlercode zurück
}
Hat irgendwer ne Idee von euch, wie man das am effektivsten zu lösen ist? Die Attribute sind alle Long-Werte.