Wenn zwei Zeichenfolgen , schreiben wir für ihre Verkettung. Bei einer Zeichenkette und Integer , wir schreiben für die Verkettung von Kopien von . Wenn wir nun einen String haben, können wir ihn mit dieser Notation 'komprimieren', dh kann geschrieben werden als . Nennen wir das Gewicht einer Komprimierung die Anzahl der Zeichen, die darin vorkommen, sodass das Gewicht von zwei und das Gewicht von (eine Komprimierung von ) ist. ist drei (separate werden separat gezählt).
Betrachten Sie nun das Problem, die 'leichteste' Komprimierung eines gegebenen Strings mit berechnen S | = n . Nach einigem Nachdenken gibt es einen offensichtlichen dynamischen Programmieransatz, der in oder O ( n 3 ) abläuft. je nach genauem Ansatz .
Mir wurde jedoch mitgeteilt, dass dieses Problem in gelöst werden kann , obwohl ich keine Quellen dazu finde. Insbesondere wurde dieses Problem in einem kürzlich durchgeführten Programmierwettbewerb (Problem K hier , letzte zwei Seiten) angegeben. Während der Analyse wurde ein -Algorithmus vorgestellt, und am Ende wurde die pseudoquadratische Grenze erwähnt ( hier bei der Vier-Minuten-Marke). Leider bezog sich der Moderator nur auf 'ein kompliziertes Wortkombinatorisches Lemma', und jetzt bin ich hierher gekommen, um nach der Lösung zu fragen :-)