Das Pfannkuchen-Sortierproblem ist ein Problem aus dem Bereich der diskreten Mathematik bzw. der theoretischen Informatik, bei dem es anschaulich darum geht, einen Stapel Pfannkuchen der Größe nach zu sortieren. Der Stapel besteht aus Pfannkuchen unterschiedlicher Größe und soll so sortiert werden, dass am Ende der größte Pfannkuchen an unterster Stelle ist, der zweitgrößte darüber bis zum kleinsten ganz oben. Dazu darf in jedem Schritt ein von der aktuellen Spitze des Stapels ausgehender Teilstapel ausgewählt und als ganzer umgekehrt werden. Gefragt ist nach der kleinsten Anzahl an Schritten dieser Art, die benötigt werden, um unabhängig von der Ausgangslage den gesamten Stapel zu sortieren.
Erstmals veröffentlicht wurde das Problem 1975 von Jacob E. Goodman unter dem Pseudonym Harry Dweighter (gleicht in der Aussprache harried waiter, „gestresster Kellner“) in der Zeitschrift American Mathematical Monthly. Seitdem wurden zahlreiche ernsthafte Forschungsergebnisse zum Thema veröffentlicht. Anwendung findet das Problem unter anderem bei Mutationen in der Genetik.[1]
Die Anzahl der nötigen Schritte, um einen Stapel aus Pfannkuchen in jedem Fall zu sortieren, wird als bezeichnet. Die Werte sind für kleine bekannt, für größere gibt es Abschätzungen. Offensichtlich gilt , da ein Stapel aus einem Pfannkuchen bereits sortiert ist, und , da im Fall, dass der größere Pfannkuchen zu Beginn oben liegt, der Stapel dadurch sortiert werden kann, dass er einfach umgekehrt wird.
Ein einfacher Algorithmus zeigt : Dazu wird der größte Pfannkuchen zunächst an die Spitze gebracht, anschließend wird der Stapel umgewendet, dass er sich ganz unten befindet. Nach diesen zwei Schritten wird der restliche Stapel sortiert, ohne den untersten Pfannkuchen zu beachten, dies geschieht in Schritten. Zusammen mit gilt also .
Die Schranken wurden im Laufe der Zeit immer weiter verbessert: Eine erste Abschätzung bewiesen William H. Gates (heute bekannt als Bill Gates) und Christos Papadimitriou im Jahr 1979:[2]
Diese Abschätzung wurde inzwischen verbessert auf .[3] Dabei steht für eine von unabhängige Konstante, siehe O-Notation.
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | |
0 | 1 | 3 | 4 | 5 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 |
Eine Variante des Problems handelt von Pfannkuchen, die auf einer Seite verbrannt sind. Auch hier soll ein Stapel Pfannkuchen durch Umkehren von Teilstapeln der Größe nach sortiert werden, allerdings wird zusätzlich gefordert, dass am Ende die verbrannten Seiten alle nach unten zeigen. Für die Anzahl der notwendigen Schritte in dieser Variante konnten 1995 David S. Cohen (heute David X. Cohen) und Manuel Blum die folgende Abschätzung beweisen: (wobei die obere Schranke nur für gilt).[4]
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
1 | 4 | 6 | 8 | 10 | 12 | 14 | 15 | 17 | 18 | 19 | 21 |