Kiedy zachłanny algorytm może rozwiązać problem zmiany monety?


24

Biorąc pod uwagę zestaw monet o różnych nominałach i wartości v, chcesz znaleźć najmniejszą liczbę monet potrzebną do przedstawienia wartości v.c1,...,cn

Np. Dla zestawu monet 1,5,10,20 daje to 2 monety dla sumy 6 i 6 monet dla sumy 19.

Moje główne pytanie brzmi: kiedy można zastosować chciwą strategię, aby rozwiązać ten problem?


Punkty bonusowe: Czy to stwierdzenie jest po prostu nieprawidłowe? (Od: Jak stwierdzić, czy chciwy algorytm wystarcza do rozwiązania problemu minimalnej wymiany monet? )

Jednak ten dokument ma dowód, że jeśli chciwy algorytm działa dla pierwszej największej denomu + drugiej największej wartości denomu, to działa dla nich wszystkich i sugeruje użycie algorytmu chciwego w porównaniu z optymalnym algorytmem DP, aby to sprawdzić. http://www.cs.cornell.edu/~kozen/papers/change.pdf

Ps. zwróć uwagę, że odpowiedzi w tym wątku są niesamowicie nieprzyzwoite - dlatego zadałem to pytanie od nowa.


W przypadku binarnego problemu plecakowego istnieje łatwe do sformułowania kryterium: zachłanny algorytm rozwiązuje problem, jeśli dla wszystkich nominałów . Nie tak łatwo wymienić monety (plecak z dowolnymi zmiennymi całkowymi). Potrzebujesz wystawy Magazine, Nemhauser i Trotter? doja>Σjot=1ja-1dojot
— Dmitrij Chubarow

2
Oświadczenie w pracy Dextera Kozen'a mówi, że jeśli chciwy algorytm zgadza się z optymalnym dla wszystkich , to da optymalne rozwiązanie dla dowolnego . Nie widzę nic złego w tym stwierdzeniu. vv<don-1+donv
— Dmitrij Chubarow

@Dmitri Chubarov Dzięki, teraz rozumiem, jak działa bonus q. Czy to przypomina silną indukcję? Jeśli chodzi o inne pytanie, chciałbym uzyskać odpowiedź, która da rozwiązanie, a najlepiej dowód.
— The Unfun Cat

Głosuję za pytaniem i jeśli nikt nie wskoczy, podsumuję MNT kilkoma przykładami w weekend.
— Dmitrij Chubarow

Zobacz także to powiązane pytanie ; w szczególności dokument powiązany Shallit może być interesujący.
— Raphael

Odpowiedzi:


13

System monet jest kanoniczny, jeśli liczba monet podana w zamian przez chciwy algorytm jest optymalna dla wszystkich kwot.

Artykuł D. Pearson. Algorytm czasu wielomianowego dla problemu wprowadzania zmian. Operations Reseach Letters, 33 (3): 231–234, 2005 oferuje algorytm do decydowania, czy system monet jest kanoniczny, gdzie n jest liczbą różnych rodzajów monet. Z streszczenia:O(n3))n

Następnie uzyskujemy zbiór możliwych wartości, które muszą zawierać najmniejszy kontrprzykład. Każdą z nich można przetestować za pomocą operacji arytmetycznych O ( n ) , co daje nam algorytm O ( n 3 ) .O(n2))O(n)O(n3))

Papier jest dość krótki.

dodo

O(n2)n

W tym pytaniu matematycznym jest także trochę dyskusji .


Dzięki. Widzę, że pytanie jest o wiele bardziej zaangażowane niż myślałem - chyba dlatego nie opublikowałeś rzeczywistych kryteriów? Mój pomysł, że „jeśli wszystkie monety są wielokrotnościami siebie, chciwy algorytm daje optymalny wynik” był oczywiście zbyt prosty.
— The Unfun Cat

Nie opublikowałem rzeczywistych kryteriów, ponieważ nie pamiętałem od razu i nie miałem czasu na ponowne przeczytanie artykułu. Oczywiście powinieneś edytować moją odpowiedź.
— Mark Dominus,

Przeczytałem odpowiedź i artykuł kilka razy, ale nie byłem w stanie znaleźć kryteriów czytelnych dla człowiekacanonical coin system . Byłoby wspaniale, gdybyś mógł dodać przykład, tj. Jak przetestować sugerowany system1,5,10,20
— Ojciec Chrzestny
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.