Dynamische Programmierung für string schneiden

Arbeite ich auf Folgendes problem aus dieser buchen.

Einer bestimmten string-processing-Sprache bietet eine primitive operation, die zerlegt eine Zeichenkette in zwei Teile. Da dieser Vorgang umfasst das kopieren der original-string, dauert es n Zeiteinheiten für einen string der Länge n, unabhängig von der Lage des Schnittes. Angenommen, jetzt, dass Sie zu brechen einen string in viele Stücke. Die Reihenfolge, in der die Pausen gemacht werden, kann das Auswirkungen auf die gesamte Laufzeit. Zum Beispiel, wenn Sie möchten, schneiden Sie ein 20-Zeichen-string an den Positionen 3 und 10, dann machen Sie den ersten Schnitt an position 3 entstehen insgesamt Kosten von 20+17=37, während Sie die position 10 hat ein besseres Preis von 20+10=30.

Ich brauche einen dynamischen Programmier-Algorithmus, gegeben m schneidet, findet die minimale Kosten für das schneiden eines string in m+1 Teile.

  • Ich verstehe nicht, Ihre Erklärung von Kosten der Zeichenfolge. Können Sie mir sagen, wie hast du 20+17 und 20+10?
  • eine noch optimalere Lösung würde bedeuten, dass ein dynamischer Algorithmus ausgeführt, eine Konstante Zeit von n unabhängig von m, das wäre noch effizienter. Nur so ein Gedanke.
  • für 20+17, 20 ist von Kosten für die Schnittlängen 3 und 17 ist vom Wert der Schnittlänge 20-3 = 17.
  • Das wirft eine weitere Frage. Ist der zweite oder spätere schneiden relativ zum bisherigen abschneiden? Beispiel, wenn Ihre 3 and 10 den ersten 3rd position geschnitten wird und dann 17 bleibt und dann 10th position geschnitten (aber mit Bezug auf ursprüngliches Wort 13th geschnitten)??
  • Die Schneid-Positionen stehen fest.
  • Nebenbei: gibt es eine andere (benannte) problem, das ist äquivalent zu dieser, und zu deren Lösung die hier angewendet werden? Ich bin sicher, es ist, ich kann einfach nicht daran zu denken.

InformationsquelleAutor Mark | 2012-04-09
Schreibe einen Kommentar