Jetzt habe ich auch noch nicht richtig aufgepaßt bei meinem Beispiel. Entschuldigung. Das korrekte Beispiel steht unten... Am Dienstag, 3. Mai 2005 21:30 schrieb Erik Schanze:
Uwe Beger Uwe.Beger@unixprojekt.de:
ich bräuchte mal einen Tip...
Ich habe eine Liste, bestehend aus Wertepaaren (x<TAB>y). Diese Liste ist mit mehr als 1 Million Zeilen recht groß. Nun gibt es eine weitere, kleinere Liste (mehr als 100'000 Wertepaare) mit gleichem Aufbau (a<TAB>b). In der linken Spalte der kleineren Liste können Werte vorkommen, die auch schon in der großen Liste stehen. a kann also auch schon als x oder y, ggf. mehrfach, vorkommen, muss es aber nicht. Ich muss die Listen so verarbeiten, dass am Ende alle möglichen Kombinationen für die Wertepaare enthalten sind. Für den Fall, dass ich mich unklar ausgedrückt habe ein Beispiel:
Liste1: x y x z y z y x z y z x Liste2: z a r s Ergebnisliste: x y x z x a y a y x y z z a z x z y a x a y a z r s s r
Wenn ich dich richtig verstanden habe, fehlt in deiner Ergebnisliste noch: a z
Es fehlte leider sogar noch mehr a x a y a z
Wie entsteht "x a"? Durch Transition "x z" -> "z a"?
Ja.
Und diese Transition darf nur in der Reihenfolge Liste1 -> Liste2 auftreten?
Nur in Liste 2 tauchen bisher nicht dagewesene ID's auf, die aber zu mindestens einer bereits bekannten ID duplikat sind. Diese ID taucht aber nicht notwendigerweise bereits in Liste 1 auf (z.B.: "r s"). Dagegen sind zu z bereits die Duplikate x und y bekannt. a ist demnach zu x, y und z duplikat.
Die bereits erwähnte Paradox-Datenbank greift an sehr vielen Stellen auf diese Wertepaare mit den Duplikaten zu. Jeder Lösungsansatz sollte also weiterhin von der Listenstruktur ausgehen.
Ich habe mehrere Millionen Strukturen. Ein TEIL davon ist zu MINDESTENS einer anderen Struktur duplikat. Das Wissen über die Duplikate verwalte ich in Duplikatlisten mit den IDs der Strukturen. Durch "Neuzugänge" von Strukturen ergeben sich neue Duplikate, die ich in die bisherige Duplikatliste integrieren muss.