Algoritma tasarımına gelince, çoğu zaman aşağıdaki teknikler kullanılır:
- Dinamik program
- Açgözlü Strateji
- Bölmek ve fethetmek
İlk iki yöntem için, iyi bilinen teorik temeller, yani Bellman Optimallik İlkesi ve matroid (özellikle greedoid) teorisi varken, D&C'ye dayalı algoritmalar için böyle genel bir çerçeve bulamadım.
Öncelikle, birleştirici bağlamında ortaya çıkan, "algoritmik iskelet" olarak adlandırılan, işlevsel bir programlama sınıfında başlattığımız (veya daha doğrusu prof) bir şeyin farkındayım. Buna örnek olarak, D & C algoritmaları için aşağıdaki gibi bir iskelet verdik:
Tanım : boş olmayan kümeler olsun. Biz elemanlarını çağırır çözeltiler ve unsurlarını (olduğunu, alt grupları ) olarak adlandırılır sorunlar . Daha sonra, bir D&C iskeleti 4 tuple , burada:S A
- sorunlarının kümesi üzerinden bir yüklem ve biz bir sorun olduğunu söylemek edilmektedir temel IFF tutar.
- , her temel soruna bir çözüm veren bir eşleştirme .
- , her problemi bir alt problem grubuna ayıran bir eşleştirme .
- \ mathcal {C} bir çözüm üretmek için alt problemlerin çözümlerine ("bir pivot problemine" bağlı olarak) birleşen P \ times \ mathfrak {P} (S) \ rightarrow S eşleşmesidir .
Daha sonra, belirli bir iskelet için ve bir problem, , aşağıdaki jenerik fonksiyon bir çözümü hesaplar (resmi olarak p ) için p :
ikinci satırda notasyonunu bir eşlemenin alan adının alt kümeleri için kullanırız .X f
Bununla birlikte, bu şekilde formüle edilebilecek problemlerin altında yatan "yapısal" özelliklerini daha fazla incelemedik (dediğim gibi, işlevsel bir programlama sınıfıydı ve bu sadece küçük bir örnekti). Ne yazık ki, bu yaklaşım hakkında daha fazla referans bulamadım. Dolayısıyla yukarıdaki tanımların oldukça standart olduğunu düşünmüyorum. Biri yukarıda söylediklerimi tanırsa, ilgili makalelerden memnun olurum.
İkincisi, açgözlü strateji için, bir sorunun genel açgözlü algoritması tarafından ancak çözümlerinin ağırlıklı bir matroid oluşturması halinde doğru bir şekilde çözüldüğü meşhur sonucuna sahibiz. D & C algoritmaları için benzer sonuçlar var mı?