Münzwechsel: Greedy gegen optimal

Gib Münzwerte und einen Betrag ein. Die Seite stellt den Betrag auf zwei Arten zusammen: Beim Greedy-Verfahren wird jeweils die größte noch passende Münze genommen, bis kein Rest mehr bleibt oder keine Münze mehr passt. Daneben wird mithilfe einer Tabelle, die von 0 bis zum Betrag gefüllt wird, die Lösung mit möglichst wenigen Münzen ermittelt. Unter der Tabelle siehst du alle Beträge bis zu einer von dir gewählten Grenze; markiert sind jene, für die das Greedy-Verfahren mehr Münzen verwendet als nötig.

Interaktive Simulation wird geladen...

Lektion

Die Theorie — Münzwechsel: Greedy gegen optimal

Das Münzwechselproblem fragt nach der kleinsten Anzahl von Münzen aus einem vorgegebenen Münzsatz, die zusammen einen Betrag ergeben. Jede Münze darf beliebig oft verwendet werden. Der Greedy-Algorithmus nimmt jeweils die größte passende Münze und wiederholt diesen Schritt. Dynamische Programmierung löst das Problem exakt, indem sie zunächst alle kleineren Beträge löst: M(0) = 0 und M(a) = 1 + min M(a − c) über alle Münzen c ≤ a. Ein Münzsystem, in dem Greedy für jeden Betrag optimal ist, heißt kanonisch.

Was die einzelnen Symbole bedeuten

M(a)
die kleinste Münzzahl für den Betrag a; die Zahl in Zelle a der Tabelle
G(a)
die Anzahl der Münzen, die Greedy für a verwendet
cₘ, cₘ₋₁
die größte und die zweitgrößte Münze; gibt es einen Betrag, bei dem Greedy erstmals verliert, ist er kleiner als ihre Summe
Setzt voraus
Von jeder ganzzahligen Münzsorte steht eine unbegrenzte Menge bereit, und allein die Anzahl der Münzen zählt. Eine Kasse, der die Florins ausgegangen sind, stellt ein anderes Problem. Für die Schranke muss der Münzsatz eine 1 enthalten. Ohne sie sind manche Beträge überhaupt nicht zahlbar, und Greedy kann vor einem Betrag stecken bleiben, den die Tabelle zahlen kann.

Beim alten britischen Geld verlor Greedy bei vier Shilling 🖖

Drück auf GB vor 1971. Um 48d, also vier Shilling, zu zahlen, nimmt Greedy zuerst die größte passende Münze: eine Half Crown (30d), dann einen Shilling (12d) und eine Sixpence (6d), insgesamt drei Münzen. Zwei Florins zu je 24d ergeben dieselben 48d mit zwei Münzen. Von da an verliert Greedy bei sechs Beträgen je dreißig Pence: 48–53d, 78–83d und so weiter bis 228–233d. Das sind 42 der 240 Beträge in einem Pfund. Jedes Mal kostet Greedy genau eine Münze mehr, deshalb sind alle roten Balken im Streifen gleich hoch. Die sechs Beträge lassen nach einer oder mehreren Half Crowns einen Rest von 18 bis 23 Pence. Nimm eine Half Crown zurück und zahle 48d mit zwei Florins, dann sparst du eine Münze. Auch der Halfpenny hilft nicht. Gib die Münzen in Halfpence ein, 1, 2, 6, 12, 24, 48, 60, und prüfe bis 480. Das erste Gegenbeispiel liegt bei 96 Halfpence, weiterhin 48d. Greedy verliert bei 84 der 480 Beträge: bei denselben 42 und jeweils beim halben Penny darüber.

Ohne die Half Crown scheitert Greedy nie 🖖

Drück auf Ohne Half Crown. Es sind dieselben Münzen bis auf eine: 1, 3, 6, 12 und 24 Pence. Der Streifen bleibt leer, denn Greedy verliert bei keinem der 240 Beträge. Jede dieser Münzen teilt die nächstgrößere. In einer solchen Kette kann Greedy nicht verlieren: Sobald genügend gleiche Münzen den Wert der nächstgrößeren erreichen, lassen sie sich durch diese eine Münze ersetzen. Die Half Crown unterbricht die Kette. Dreißig ist kein Vielfaches von vierundzwanzig. Zwei Florins entsprechen einer Half Crown plus 18d, wofür ein Shilling und eine Sixpence nötig sind. Jedes Gegenbeispiel im ersten Streifen beruht auf genau diesem Tausch. Eine weitere Münze löst das Problem ebenfalls nicht. Gib 1, 3, 6, 12, 24, 30, 60 ein, um die Crown zu fünf Shilling hinzuzufügen. Die Zahl der Gegenbeispiele sinkt von 42 auf 24, doch 48d bleibt das erste. Bei Beträgen unter ihrem eigenen Wert kann eine Crown schließlich nichts ausrichten.

Ein Münzsystem lässt sich in endlich vielen Schritten prüfen 🖖

Dass Greedy bei 48d scheitert, sagt zunächst nichts über 4.800d aus. Ein Satz von Dexter Kozen und Shmuel Zaks aus dem Jahr 1994 entscheidet ein System für sämtliche Beträge: Enthält der Münzsatz eine 1 und verliert Greedy irgendwo, dann liegt der kleinste Gegenbeleg echt zwischen c3 + 1 und cm + cm−1. Dabei ist c3 die drittkleinste Münze; cm und cm−1 sind die beiden größten. Drück auf US-Cent. Die beiden größten Münzen haben die Werte 100 und 50. Unter 150 gibt es kein Gegenbeispiel, und diese endliche Prüfung deckt damit alle denkbaren Beträge ab. Beim Euro reicht sie bis 300. Enger lässt sich die Schranke nicht fassen. Drück auf Lehrbuch: 1, 3, 4: Zwischen 5 und 7 liegt genau ein Betrag, nämlich 6, und genau dort verliert Greedy. Die gestrichelte Linie im Streifen markiert die Schranke. Enthält der Münzsatz eine 1, liegt der erste rote Balken stets links davon.

Aufgabe vollständig gelöst

  1. Welche dritte Münze passt zu 1 und 5? 3 Schritte

    Ein Land hat Münzen zu 1 und 5 und möchte eine dritte Münze d zwischen 6 und 30 einführen. Für welche Werte von d liefert Greedy immer optimales Wechselgeld? Die Seite prüft jeweils nur ein System. Die Regel von Kozen und Zaks für drei Münzen entscheidet jedoch alle 25 auf einmal. Drück zuerst auf Lehrbuch: 1, 3, 4, um die Regel an einem bereits geprüften System auszuprobieren.

    Öffne diese Aufgabe im Tool

    1. Die Regel für Münzen 1 < c < d lautet: Schreibe d = qc + r mit 0 ≤ r < c. Das System scheitert genau dann irgendwo, wenn 0 < r < c − q gilt. Für 1, 3, 4 ist d = 4 = 1 × 3 + 1, also q = 1 und r = 1. Damit gilt 0 < 1 < 2. Das System scheitert, und die Seite findet das erste Gegenbeispiel bei 6:

    2. Nun ist c = 5, also d = 5q + r. Zu prüfen ist 0 < r < 5 − q. Je größer q wird, desto weniger Spielraum bleibt für r:

    3. Für q = 1 (d von 6 bis 9) kann r gleich 1, 2 oder 3 sein. Damit scheitern d = 6, 7 und 8. Für q = 2 (10 bis 14) kommen r = 1 oder 2 infrage: 11 und 12. Für q = 3 (15 bis 19) bleibt nur r = 1, also 16. Ab q = 4 ist 5 − q höchstens 1, sodass kein r mehr passt:

    Antwort

    Sechs Werte scheitern: 6, 7, 8, 11, 12 und 16. Die übrigen neunzehn funktionieren, darunter jedes d von 17 bis 30. Gib 1, 5, 12 ein, um eines der sechs Beispiele zu verfolgen. Greedy zahlt 15 als 12 + 1 + 1 + 1 mit vier Münzen; drei Fünfer genügen.

Lernpfad

Warum ein Algorithmus korrekt ist

Quellen (3)