Forum: Programmieren allgemein
by Flocke,
9. Aug 2005
Hab' noch ein bisschen nachoptimiert und ein paar andere Dinge geändert.
100000 x 100000 Zeilen brauchen jetzt ohne Heuristik bei mir keine Sekunde mehr :mrgreen:.
Code siehe Anlage oder hier abholen (da kann man auch direkt in den Quellcode sehen).
Forum: Programmieren allgemein
by Flocke,
1. Aug 2005
So, noch mal etwas verbessert. Ist jetzt selbst ohne Heuristik mehr als doppelt so schnell wie die alte Version mit :???:
Forum: Programmieren allgemein
by Flocke,
29. Jul 2005
Konnte nicht umhin mal was zu schreiben :mrgreen: (ist fast Wochenende und ich hatte etwas Zeit...)
Hier der relevante Code, funktioniert durch Auffinden des längsten übereinstimmenden Blocks und rekursives Fortfahren in den Teilen davor und danach (hat also eine gewisse Ähnlichkeit mit QuickSort):
procedure DiffRange(l1a, l1e, l2a, l2e: integer);
var
l1s, l2s, maxm, bp1, bp2, bsz, scan,...
Forum: Programmieren allgemein
by Flocke,
29. Jul 2005
Das erste Problem ist das Diff, der theoretische Ansatz ist:
(die Endzeilen seinen jeweils exklusive)
Gegeben sind
1. z1von ... z1bis: der zu betrachtende Bereich aus Datei 1
2. z2von ... z2bis: der zu betrachtende Bereich aus Datei 2
Vorgehen:
3. Finde den längsten übereinstimmenden Block innerhalb des Bereichs:
z1fund ... z1fund+zlaenge
z2fund ... z2fund+zlaenge
4. Wenn...