Wann kann ein gieriger Algorithmus das Problem des Münzenwechsels lösen?

24

Wenn Sie einen Satz Münzen mit unterschiedlichen Nennwerten und einem Wert v haben, möchten Sie die geringste Anzahl Münzen finden, die zur Darstellung des Werts v erforderlich ist.c1,...,cn

ZB für den Münzsatz 1,5,10,20 ergeben sich 2 Münzen für die Summe 6 und 6 Münzen für die Summe 19.

Meine Hauptfrage lautet: Wann kann dieses Problem mit einer gierigen Strategie gelöst werden?


Bonuspunkte: Ist diese Aussage eindeutig falsch? (Aus: Woran erkennt man, ob der gierige Algorithmus für das Problem des minimalen Münzenwechsels ausreicht? )

In diesem Artikel wurde jedoch der Beweis erbracht, dass der Greedy-Algorithmus für den ersten und den zweiten Denom-Wert für alle funktioniert, und es wird empfohlen, lediglich den Greedy-Algorithmus gegen den optimalen DP-Algorithmus zu verwenden, um ihn zu überprüfen. http://www.cs.cornell.edu/~kozen/papers/change.pdf

Ps. Beachten Sie, dass die Antworten in diesem Thread unglaublich mies sind - deshalb habe ich die Frage neu gestellt.

Die unfun Katze
quelle
Für das binäre Rucksackproblem gibt es ein einfach zu formulierendes Kriterium: Der Greedy-Algorithmus löst das Problem, wenn für alle Konfessionen . Nicht so einfach für den Münzwechsel (Rucksack mit beliebigen ganzzahligen Variablen). Benötigen Sie eine Ausstellung von Magazine, Nemhauser und Trotter? ci>Σj=1i1cj
Dmitri Chubarov
2
Die Aussage in der Arbeit von Dexter Kozen besagt, dass, wenn der Greedy-Algorithmus mit dem Optimum für alle übereinstimmt , es eine optimale Lösung für beliebige . Ich sehe nichts falsches an dieser Aussage. v<cn1+cnv
Dmitri Chubarov
@Dmitri Chubarov Danke, jetzt verstehe ich, wie der Bonus q funktioniert. Ist es eine starke Induktion? Zu Ihrer anderen Frage hätte ich gerne eine Antwort, die eine Lösung und vorzugsweise einen Beweis liefert.
The Unfun Cat
Ich stimme der Frage zu und wenn niemand einspringt, fasse MNT über das Wochenende mit ein paar Beispielen zusammen.
Dmitri Chubarov
Siehe auch diese verwandte Frage ; Insbesondere das verlinkte Papier von Shallit könnte von Interesse sein.
Raphael

Antworten:

13

Ein Münzsystem ist kanonisch, wenn die vom Greedy-Algorithmus veränderte Anzahl Münzen für alle Beträge optimal ist.

Das Papier D. Pearson. Ein Polynom-Zeit-Algorithmus für das Change-Making-Problem. Operations Reseach Letters, 33 (3): 231-234, 2005 bietet einen -Algorithmus zur Entscheidung, ob ein Münzsystem kanonisch ist, wobei die Anzahl der verschiedenen Arten von Münzen ist. Aus dem Abstract:O(n3)n

Wir leiten dann eine Menge von möglichen Werten ab, die das kleinste Gegenbeispiel enthalten müssen. Jedes kann mit arithmetischen Operationen getestet werden, wodurch wir einen -Algorithmus erhalten.O(n2)O(n)O(n3)

Das Papier ist ziemlich kurz.

Für ein nicht-kanonisches Münzsystem gibt es einen Betrag für den der Greedy-Algorithmus eine suboptimale Anzahl von Münzen erzeugt; heißt Gegenbeispiel . Ein Münzsystem ist eng, wenn sein kleinstes Gegenbeispiel größer ist als die größte Einzelmünze.cc

Der Artikel Kanonische Münzsysteme für Probleme beim Umtausch bietet die notwendigen und ausreichenden Bedingungen für kanonische Münzsysteme mit bis zu fünf Münzen sowie einen -Algorithmus zur Entscheidung, ob ein dichtes Münzsystem mit Münzen kanonisch ist.O(n2)n

Es gibt auch einige Diskussionen in dieser Frage .

Mark Dominus
quelle
Vielen Dank. Ich sehe, die Frage ist viel komplizierter als ich dachte - ich denke, deshalb haben Sie die tatsächlichen Kriterien nicht gepostet? Meine Idee, dass "wenn alle Münzen Vielfache voneinander sind, der gierige Algorithmus ein optimales Ergebnis liefert", war offensichtlich zu einfach.
The Unfun Cat
Ich habe die tatsächlichen Kriterien nicht veröffentlicht, weil ich mich nicht spontan erinnere und keine Zeit hatte, die Zeitung erneut zu lesen. Sie sollten sich natürlich frei fühlen, meine Antwort zu bearbeiten.
Mark Dominus
Ich habe die Antwort und den Artikel ein paar Mal gelesen, konnte jedoch keine für Menschen lesbaren Kriterien für finden canonical coin system. Es wäre großartig, wenn Sie ein Beispiel hinzufügen könnten, z. B. wie das vorgeschlagene System getestet wird1,5,10,20
The Godfather