Açgözlü bir algoritma bozuk para değişim problemini ne zaman çözebilir?


24

Verilmiş olan ve v değerlerine sahip bir madeni para seti göz önüne alındığında v değerini temsil etmek için gereken en az sayıda madeni para bulmak istersiniz.c1,...,cn

Örneğin, 1,5,10,20 madeni para birimi için bu, toplam 19 için 6 ve 6 için toplam 2 madeni para verir.

Asıl sorum şu: Bu sorunu çözmek için açgözlü bir strateji ne zaman kullanılabilir?


Bonus puanları: Bu ifade doğru yanlış mı? (Kimden: Asgari para değişim problemi için açgözlü algoritmanın yeterli olup olmadığını nasıl anlarsınız? )

Bununla birlikte, bu yazının açgözlü algoritması ilk en büyük ikinci en büyük ikinci değer için çalışıyorsa, o zaman hepsi için işe yaradığını ve sadece kontrol etmek için en uygun DP algoritmasına karşı açgözlü algoritmayı kullanmanızı önerdiğini kanıtlamaktadır. http://www.cs.cornell.edu/~kozen/papers/change.pdf

Ps. Bu konudaki cevapların inanılmaz derecede kırılgan olduğunu unutmayın - bu yüzden soruyu tekrar sordum.


İçin ikili sırt çantası sorun, kolay formüle ölçüt vardır: Algoritma sorunu çözer tüm mezhepleri için ise . Bozuk para değişimi için kolay değil (isteğe bağlı integral değişkenleri olan sırt çantası). Dergi, Nemhauser ve Trotter fuarına mı ihtiyacınız var? cben>Σj=1ben-1cj
— Dmitri Chubarov

2
Dexter Kozen tarafından yazılan bildiride, açgözlü algoritma tüm için en uygun olanı kabul ederse , o zaman keyfi v için en uygun çözümü verecektir . Bu açıklamada yanlış bir şey görmüyorum. v<cn-1+cnv
— Dmitri Chubarov

@Dmitri Chubarov Teşekkürler, şimdi bonusun nasıl çalıştığını anlıyorum. Güçlü indüksiyona benziyor mu? Diğer sorunuzla ilgili olarak, bir çözüm içeren bir cevap ve tercihen bir kanıt istiyorum.
— Unfun Kedisi

Soruyu değiştireceğim ve eğer kimse atlamazsa, MNT'yi haftasonu birkaç örnekle özetleyin.
— Dmitri Chubarov

Ayrıca bu soruya bakınız ; özellikle, Shallit ile bağlantılı kağıt ilgi çekici olabilir.
— Raphael

Yanıtlar:


13

Açgözlü algoritma tarafından değiştirilen verilen para sayısı tüm miktarlar için en uygun ise bir para sistemi kanoniktir .

Kağıt D. Pearson. Değişim Yapma Problemi için Polinom Zaman Algoritması. İşlemler Araştırma Mektupları, 33 (3): 231-234, 2005 , bir madeni para sisteminin kanonik olup olmadığına karar vermek için bir algoritması sunar , burada n , farklı türdeki paraların sayısıdır. Özetten:O(n3)n

Daha sonra en küçük karşı örneği içermesi gereken bir olası değerleri türetiriz. Her test edilebilir , O ( n ) , bize veren, aritmetik işlemler O ( n, 3 ) algoritması.O(n2)O(n)O(n3)

Kağıt oldukça kısa.

cc

O(n2)n

Bu soru sorusunda da bazı tartışmalar var .


Teşekkürler. Sorunun düşündüğümden çok daha fazla ilgisi olduğunu görüyorum - Sanırım gerçek kriterleri neden bulamadınız? Benim fikrim, "bütün paralar birbirinin katıysa, açgözlü algoritmanın en iyi sonucu verir" açıkçası çok basitti.
— Unfun Kedisi

Asıl kriterleri göndermedim, çünkü önceden hatırlamıyordum ve kağıdı tekrar okuyacak vaktim yoktu. Elbette cevabımı düzenlemek için çekinmeyin.
— Mark Dominus

Cevabı ve makaleyi birkaç kez okudum, ancak insan tarafından okunabilecek kriterleri bulamadım canonical coin system. Örnek, örneğin önerilen sistemin nasıl test edileceği çok iyi olurdu1,5,10,20
— The Godfather
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.