![]() |
Re: Algorithmus Laufzeitverhalten Knoten im Kopf (Knobelaufg
Hi stoxx,
dein erstes Beispiel hatte einen Fehler - du erinnerst dich? Die Beschreibung des Algorithmus ist nicht vollständig - der Begriff Häufigkeit ist nicht ausreichend definiert. Mir fehlen zuverlässige Testfälle zur Verifikation einer Implementierung. Als Referenz bietest du mir deinen Code an. Ich habe ihn analysiert und musste als erstes festgestellen, dass du jeweils den ersten Buchstaben eines Abschnittes nicht in die Häufigkeitszählung (CountArray) einfließen lässt. Interessanterweise hat das bei mehreren Testsequenzen keinen Einfluss auf das Ergebnis, aber es erschüttert auch mein Vertrauen in deinen Referenzcode. Eines ist mir inzwischen klar - mein ursprüngliches Problemverständnis ist falsch, da ich die lückenhaften Informationen durch Fehlinterpretation geschlossen habe. Damit ist auch mein Code unbrauchbar, obwohl er gelegentlich richtige Eregbnisse gebracht hatte. Häufigkeiten waren in meinem Code homogene Teilkettenlängen. In deiner Implementierung interessieren keine statischen Häufigkeiten, weder die Häufigkeit in der Eingabesequenz, noch die Häufigkeit im untersuchten Abschnitt. Du arbeitest mit einer dynamischen Häufigkeit im Abschnitt. (Sequenz nenne ich hier die ursprüngliche Eingabe, Abschnitt die iterativ um eine Stelle gekürzte Sequenz.) Ich hatte schon sehr früh auf die Bedeutung einer vollständigen und korrekten Beschreibung für den Algorithmus hingewiesen. Der von dir zitierte Text scheint nur ein Fragment deiner Aufgabenstellung zu sein. Aus Gründen die ich nur ahnen kann, scheust du die Preisgabe von Hintergrundinformationen. Wenn die dynamische Berechnung der Häufigkeit in deinem Code korrekt ist, dann wirst du wohl prinzipiell von O(n*n) nicht wegkommen. Eine Voraussetzung für die Reduktion der Komplexität wäre eine feste Intervallgrenze (eine genügt), aber was ich hier mit dynamischer Berechnung bezeichne, basiert auf einem sliding window - da ist keine Vorberechnung der Häufigkeiten sinnvoll. Freundliche Grüße vom marabu |
Re: Algorithmus Laufzeitverhalten Knoten im Kopf (Knobelaufg
Hi Marabu,
naja .. dann werde ich es wohl bei dem schlechten Laufzeitverhalten belassen müssen. Hatte gehofft, dass es vielleicht eine Abkürzung gäbe.
Delphi-Quellcode:
Da hast Du doch glatt noch einen kleinen Bug entdeckt. hehe .. aber das liegt einfach dran, dass ich beim Initialisieren des ersten Buchstabens das doch glatt vergessen habe.
Als Referenz bietest du mir deinen Code an. Ich habe ihn analysiert und musste als erstes festgestellen, dass du jeweils den ersten Buchstaben eines Abschnittes nicht in die Häufigkeitszählung (CountArray) einfließen lässt.
Der erste Buchstabe wird aber bei ganz langen Zeichenketten sowieso uninteressant .. daher hab ich wohl etwas geschludert ;-) NAja .. hab vielen Dank für Deine Bemühungen, das Problem zu kapieren, war nicht einfach ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz