Da, her matroid için olduğu saptanmıştır ve herhangi bir ağırlık fonksiyonu , bir algoritma var çıkar maksimum ağırlık temelinde döndüren . Peki, ters yön de doğru mu? Yani, açgözlü bir algoritma varsa, o zaman bazı matroid yapı da olmalıdır.
Da, her matroid için olduğu saptanmıştır ve herhangi bir ağırlık fonksiyonu , bir algoritma var çıkar maksimum ağırlık temelinde döndüren . Peki, ters yön de doğru mu? Yani, açgözlü bir algoritma varsa, o zaman bazı matroid yapı da olmalıdır.
Yanıtlar:
Aslında, bir hırslı algoritması ile çözülebilir bir sorun tam ve genel açıklama olan matroid gömme bir matroid kavramı hem genelleştirilmiş ve bir o greedoid . Cevap hayırdır - açgözlü bir algoritma ile çözülebilen bir problemin matroid bir yapıya sahip olması gerekmez, ancak bir matroid gömme yapısına sahip olacaktır (ne yazık ki, çok daha karmaşık).
Bunlardan bazıları için zihinsel bir model minimum yayılan ağaçlar bulmak olabilir. Kruskal'ın algoritması tarafından kullanılan yapı bir matroiddir, ancak Prim'in algoritması tarafından kullanılan yapı (bir başlangıç düğümü gerektirir) değildir. (Ancak, bir greedoid ve bir matroid gömme.)
Helman ve diğ. (1993), makalelerinde , Açgözlü Yapıların Kesin Karakterizasyonu, açgözlü bir algoritma kavramlarını matroidler ve greedoidler için kullanılan aynı formalizm olan set sistemleri açısından tanımlar. Bir küme sistemi , bir küme S ve uygulanabilir kümeler olarak adlandırılan S'nin alt kümelerinden oluşan bir C koleksiyonundan oluşur . Set sistemi için bir temel , maksimum uygulanabilir bir settir, yani uygulanabilir olan ancak başka herhangi bir uygulanabilir sette bulunmayan bir settir. Bir amaç fonksiyonu f : 2 S → R her alt kümesini bir değerle ilişkilendirir. Bu formalizmde bir optimizasyon problemi , belirli bir set sistemi ve objektif fonksiyon için maksimum objektif değerin temelini bulmaktan ibarettir.
Bu formalizm açısından tanımlanan açgözlü algoritma oldukça basittir: Boş kümeyle başlarsınız ve bir temele ulaşıncaya kadar art arda tek bir öğe eklersiniz, her zaman (i) kümenizin her adımda uygulanabilir olmasını ve ( ii) eklediğiniz öğe, sonuçta elde edilen hedefin wrt değerini maksimuma çıkarır. ekleyebileceğiniz tüm alternatif unsurlar. (Yani, kavramsal olarak, mümkün olan tüm alternatifleri eklemeye çalışırsınız ve en yüksek objektif değeri sağlayanı seçersiniz.)
Sen, belki de açgözlü algoritma diğer formları olabileceğini iddia edilebilir, ama bu set sistemi olarak tabanlı algoritma tarif algoritma ve optimizasyona birkaç ders kitapları vardır açgözlü algoritma. Bu, size uymayan, ancak yine de açgözlü olarak adlandırılabilecek bir şeyi tanımlamanızı engellemez. (Yine de, bu , potansiyel olarak bir matroid yapısına sahip olabilecek her şeyi kapsar, örneğin, çok daha genel olsa da .)
Ne Helman ve ark. bu algoritmanın ne zaman çalışacağını tarif etmeleri. Daha spesifik olarak:
Doğrusal objektif fonksiyonlar için (objektif değerin eleman ağırlıklarının toplamı olduğu yerlerde), açgözlü algoritmanın tam olarak matroid gömme olarak tanımladıkları yapı üzerinde çalışacağını gösterirler;
Darboğaz hedefleri için benzer bir karakterizasyon sağlarlar (bir kümenin objektif değeri, bireysel eleman ağırlıkları üzerindeki minimum değere eşittir); ve
Matroid düğünlerinde açgözlü algoritma ile hangi doğrusal fonksiyonların (doğrusal olanların ötesinde) optimize edildiği kesin bir karakterizasyon sağlarlar.
Açgözlü algoritma resmi olarak tanımlanmış bir kavram değildir. Bu sezgisel düşünceyi yakalamaya çalışan çeşitli modeller var, ancak açgözlü bir algoritmanın ne olduğu konusunda fikir birliği yok. Açgözlü bir algoritma ile ne demek istediğinizin resmi bir tanımını belirtmedikçe, soru evet veya hayır olarak cevaplanamaz.
Bakmak isteyebileceğiniz açgözlü algoritmalardan esinlenen greedoid adı verilen matroidlerin genelleştirilmesi vardır .
Aşağıdaki sorunları göz önünde bulundurun: PARA ZİNCİRİ EURO: Sonsuz miktarda 1,2,5,10 euro banknot verildiğinde, mümkün olduğunca az banknot kullanarak X euro ödeyin. Bu, mümkün olan en büyük notu alan açgözlü algoritma kullanılarak çözülebilir. Ancak bu problemde matroid yapı yoktur.
DELİK KAPSAMI: x_1, x_2, ..., x_n konumlarında delikler var. 10 cm uzunluğunda yama var. Mümkün olduğunca az yama kullanarak delikleri yamalayın. Yine bu açgözlü bir şekilde çözülebilir (sadece mümkün olduğunca doğru yama koyun), ancak matroid yapısı yoktur.