Aşağıdaki sorunun karmaşıklığı hakkında bilinenler:
- Verilen: rasyonel sayılar .
- Çıktı: tamsayılar .
- Amaç: en aza indirgeyin ,burada
Yani, rasyonel sayıları tam sayılara yuvarlamak istiyoruz, böylece hataların toplamını çift mesafeli olarak en aza indiririz. Her çift için biz istiyoruz yuvarlak mesafe olması gerçek mesafe olabildiğince yakın olarak .
Motivasyon: sıkıcı bir metro gezisi ve bir dakikalık seyahat süresinin çözünürlüğünde istasyonların "yerlerini" gösteren bir poster. Burada onlar istasyonları arasında seyahat süresini aramak için afiş kullanırsanız İnsanların yaptığı hatayı minimize edilmektedir ve , tüm çiftleri üzerinde ortalama .
Örneğin, burada dört istasyon arasındaki ikili mesafelerin aşağıdaki yaklaşımlarını okuyabiliriz (kısalık için A, B, C, D kullanın):
- A – B ≈ 1 dakika, B – C ≈ 2 dakika, C – D ≈ 2 dakika
- A – C ≈ 3 dakika, B – D ≈ 4 dakika
- A – D ≈ 5 dakika
Bu mümkün olan en iyi yaklaşım mı? Gerçek seyahat sürelerini biliyor olsaydınız daha iyi bir çözüm bulabilir misiniz?
İlk başta, bu dinamik programlamada basit bir alıştırma gibiydi, ama şimdi bir miktar gerçek düşünmenin gerekli olduğu görülüyor.
Bu sorunu tanıyan var mı? Veya çözmek için akıllı bir algoritma mı görüyorsunuz?
Düzenleme: Yorumlarda bahsedilen sorunun bazı doğal değişkenleri vardır; Hadi onlara bazı isimler verelim:
taban / ceil versiyonu: gereksinilir tüm i .
tamsayı sürümü: tüm i için yeterlidir .
monotonik versiyon: .
monoton olmayan versiyon: Biz olabilir için i < j .
Orijinal soru, monotonik tamsayı versiyonunu göz önüne alır, ancak bu versiyonlardan herhangi biriyle ilgili cevaplar açıktır.