Yukarıdan aşağıya ve aşağıdan yukarıya dinamik programlama arasında bir fark var mı?


33

Yukarıdan aşağıya ve aşağıdan yukarıya dinamik programlama arasında temel bir fark var mı?

Özellikle aşağıdan yukarıya doğru çözülebilen ancak yukarıdan aşağıya doğru çözülmeyen bir sorun var mı? Yoksa aşağıdan yukarıya yaklaşımı, yukarıdan aşağıya yaklaşımda sadece nüksün çözülmesini mi sağlar?

Yanıtlar:


27

Aşağıdan yukarıya yöntemini kullanmak için, "aşağıdan" ne olduğunu etkili bir şekilde belirleyebilmeniz gerekir; bu, genellikle çok kısıtlanmış bir sorun alanına ihtiyacınız olduğu anlamına gelir. En düşük seviye hesaplamaların ne olacağını ve bağımlılık düzeninin yukarı çıkacağını biliyorsanız, bunları tekrarlı bir şekilde doğru sırayla yapmak ve bu sonuçları saklamak mantıklı olacaktır. Faktörler, saf Fibonacci ve bölümler için Euler nüks ilişkisi bu yaklaşıma uygun sorunların güzel örnekleridir.

Bazı sorunların hesaplamalar için kolayca belirlenebilen bir alt veya bağımlılık sırası yoktur. Satranç pozisyonları değerlendirmeleri, örneğin, değerlendirme puanı depolanarak yeniden hesaplanmasına gerek kalmadan pozisyona göre yararlı bir şekilde notlandırılır. Konumların taşınması ve tekrarlanması nedeniyle konumlar arama ağacının birden fazla seviyesinde tekrarlanabilir, böylece değerlendirme sonuçlarının kaydedilmesi faydalı olur. Ancak, ağacın en alt seviyelerindeki konumların tekrarlı bir şekilde düşmeden (ve budama budama dikkate alınarak) ne olacağını bilmenin bir yolu yoktur, bu yüzden yukarıdan aşağıya gerçekten uygulanabilir bir yaklaşımdır.


4
  • Yukarıdan aşağıya yaklaşım: Bu, herhangi bir sorunun özyinelemeli formülasyonunun doğrudan çöküşüdür. Herhangi bir soruna yönelik çözüm, alt sorunlarına çözüm kullanılarak özyinelemeli bir şekilde formüle edilebilirse ve alt sorunları üst üste binerse, o zaman bir çözüm tabloları alt sorunlara kolayca not edebilir veya saklayabilir. Ne zaman yeni bir alt problem çözmeye çalışırsak, önce çözülüp çözülmediğini görmek için önce tabloyu kontrol ederiz. Bir çözüm kaydedildiyse doğrudan kullanabiliriz, aksi takdirde alt sorunu çözer ve çözümünü masaya ekleriz.

  • Aşağıdan yukarıya yaklaşım: Sorunu alt problemler gibi özyinelemeli olarak bir çözüme göre formüle ettikten sonra, problemi aşağıdan yukarıya doğru bir şekilde yeniden düzenlemeyi deneyebiliriz: önce alt problemleri çözmeyi deneyin ve çözümlerini inşa etmek için kullanın. devam edin ve daha büyük alt sorunların çözümlerine ulaşın. Bu aynı zamanda, daha küçük ve alt problemlere çözümler kullanarak daha büyük ve daha büyük alt problemlere tekrarlı olarak çözümler üreterek tablo halinde yapılır. Örneğin, F41 ve F40'ın değerlerini zaten biliyorsak, F42'nin değerini doğrudan hesaplayabiliriz.

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.