Her açgözlü algoritmanın matroid yapısı var mı?


13

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.MwGreedyBasis(M,w)M


Dijkstra'nın algoritması genellikle açgözlü bir algoritma olarak kabul edilir (örneğin Kleinberg ve Tardos tarafından "Algoritma Tasarımı" Bölüm 4.4'e bakınız). Tek kaynaklı en kısa yolların matroid yorumunu bilmiyorum.
Neal Young

Bir dizi gerçek aralığı minimum sayıda çift-ayrık alt kümeye bölmek doğal bir açgözlü algoritmaya sahiptir (başlangıç ​​zamanına göre aralıkları numaralandırın, her biri için mümkünse mevcut bir alt kümeye ekleyin, aksi takdirde yeni bir alt küme başlatın; bkz. Kleinberg Bölüm 4 ve Tardos). Bu problem matroid olarak anlaşılabilir mi?
Neal Young

Yanıtlar:


12

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 SR(S,C)SCS f:2SR, 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.S

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:

  1. 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;

  2. 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

  3. 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.


3
Açgözlü bir algoritma tanımlarının ne olduğunu açıklayabilir misiniz?
Kaveh

1
Formalizminin ne olduğunu açıklamak için cevabımı genişlettim.
Magnus Lie Hetland

11

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çgözlü algoritma sınıfının bazı özellikleri üzerinde anlaşırsak, resmi bir tanım gerekli değildir. Örneğin, her açgözlü algoritmanın (resmi olarak tanımlanmış) bir P özelliğine sahip olduğunu kabul ettiysek ve P'yi tatmin eden her algoritmanın, OP'nin sorusuna olumlu bir cevap verecek şekilde bir matroid üzerinde tanımlanabileceğini gösterdik. Benzer şekilde, belirli bir algoritmanın açgözlü olduğunu kabul ettiysek ve bunun bir matroidin açgözlü algoritması olamayacağını göstermiş olursak, bu olumsuz bir cevap verecektir.
Müstakil Laconian

2

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.


teşekkürler, şüphelerim vardı ama emin değildi. Sonuçta matroid yapısı olmasa bile açgözlü algoritma aramak zorundayız.

1
@ user3373748 Genellikle sadece dinamik bir program ararım. Açgözlü dejenere bir DP'dir.

1
(Seçici olmamakla birlikte, 1 veya 2 avroluk nota yoktur; değer
kümenizi

Açıklanan bozuk para değiştirme algoritmasının {1,2,5,10} için çalıştığını, ancak diğer değerler için en uygun sonuçları hesaplayamayabileceğini unutmayın. Örnek: {1,3,4} ile 6 için en uygun çözüm [3,3] olacaktır, ancak algoritma [4,1,1] döndürecektir.
Socowi

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.