Bir küme kümesi verildiğinde, her kümeden en az bir öğe içeren en küçük kümeleri bulun


15

Bir dizi Verilen setleri, bir dizi bulmak istiyorum M her seti, öyle ki S içinde S en az bir öğesi içeren M . Ayrıca M'nin bu kriteri karşılamaya devam ederken mümkün olduğunca az element içermesini istiyorum , ancak bu özelliğe sahip birden fazla küçük M olabilir (çözüm mutlaka benzersiz değildir).SMSSMMM

Somut bir örnek olarak, ayarlanan varsayalım ulusal bayrakların kümesidir ve her bayrak için S içinde S , elemanlar o ülkenin bayrağının kullanılan renklerdir. Birleşik Devletler olurdu S = { r e d , ağırlık h ı t e , b l U , e } ve Fas olurdu S = { r e d , g r e e n } . Sonra MSSSS={red,white,blue}S={red,green}Mher ulusal bayrağın renklerden en az birini kullandığı özelliğe sahip bir dizi renk olurdu . ( Mavi, siyah, kırmızı, yeşil, sarı ve beyaz olimpik renkler böyle bir M örneğidir veya en azından 1920'dedir.)MM

Bu sorunun genel bir adı var mı? setini bulmak için kabul edilmiş bir “en iyi” algoritma var mı? (Hesaplama karmaşıklığı sürecini optimize etmekten ziyade çözümün kendisi ile ilgileniyorum.)M


2
Ayarlanan kapak sorununu arıyor olabilir misiniz ?
Juho

@Juho Pek değil. Benim örnekte, set kapak problemi olanlar bayrakların birliği içerecek şekilde bayraklar bir dizi bulmak olacaktır tüm tüm bayrakların üzerinde kullanılan renklerin. Buna karşılık, bayrakların listesini değil, sadece bir renk listesini tükürecek bir şey arıyorum ve olası her rengi içermek için setine ihtiyacım yok . Bu alanda Wikipedia'da konuşacağım, sanırım beni doğru yolda buldun. Teşekkürler! M
bdesham

Yanıtlar:


13

Sorun iyi bilinen NP-komple problem İsabet Seti . Set-Cover ile yakından ilişkilidir . NP-tamlık kanıtı klasik Garey ve Johnson kitabında bulunabilir .

Yaklaşık olarak tahmin etmek istiyorsanız, önce örneğinizi Set-Cover'a çevirmek ve sonra Set-Cover için bir yaklaşım algoritması uygulamak isteyebilirsiniz. Bununla birlikte, Set-Cover, Lund ve Yannakakis tarafından gösterildiği gibi P = NP olmadıkça, polinom zamanında sabit bir faktörle yaklaşılamaz .

Kesin çözümlerle ilgileniyorsanız ve girişleriniz iyi davranıyorsa, sabit parametreli bir izlenebilir kullanmanızı tavsiye ederim . Çalışma süresi burada sadece giriş uzunluğu n değil, aynı zamanda ilave bir parametre k . Çalışma süresi O(f(k)nO(1)) ise algoritmaya FPT algoritması diyoruz. Burada f(k) artan bir fonksiyondur. Eğer k sabitse bir çoklu zaman algoritmamız var. İlk bölüm arasındaFlum ve Grohe'nin kitabı , set vurmak için bir FPT algoritmasını açıklar (daha kesin olarak p -kart vurma seti için). Algoritmanın uygulanması kolaydır ve sınırlı arama ağaçlarının yöntemini kullanır. Yine de burada açıklamak için çok yer gerekiyor, temel olarak gerekli (?) Kaba kuvvet aramasını küçük parçalara ayırın ( k küçük olduğunda ).


Teşekkürler. Gerçek uygulamalar hakkında bir yerde okumaları için bir referans verebilir misiniz? Yani problemimi set-cover problemine nasıl çevirirdim ve sonra bunu nasıl çözerim?
bdesham

1
bdesham, her bir elementi ait olduğu setler kümesi olarak düşünün. set-ins-set girdisinde set kapağını çalıştırın. ayrıca, burada bağlantı verilen wiki sayfasını okuyun.
Sasho Nikolov

Yaklaşık bir çözümle ilgileniyor musunuz, ya da tam çözümü bulmak mı istiyorsunuz?
A.Schulz

Kesin bir çözüm istiyorum. Üzerinde çalıştığım veri setleri bunun bir sorun olması gerektiğini düşünemeyecek kadar küçük.
bdesham

1
@Keyser: Haklısın. Bununla birlikte, NP-tam problemleri yakından ilişkili olduğu için karar problemini ilgili optimizasyon problemiyle ilişkilendirmek yaygın bir uygulamadır.
A.Schulz

2

Tüm kümelerin kesişim eğer: yardımcı olabilecek bir fikir içinde boş değil, o zaman herhangi bir eleman seçebilirsiniz lar kavşak ve set bana M = { s a } . Kavşak boşsa, kümelerdeki oluşumu maksimum olan bir öğe (renk) c bulun ve içinde { c } singletonunun meydana geldiği tüm kümeleri değiştirin . Her öğenin oluşum sayısı 1'e eşit olana kadar bunu yapmaya devam edin ve sonra M'yi kalan kümelerin birleşimine ayarlayın . Örneğin, G bir dizi güç dizi A daha sonra E = ASsM={s}c{c}1MSAM=A. Ancak yanılmış olabilirim.


2

Ray Reiter'ın isabet setlerini hesaplamak için bir algoritma verdiği "İlk İlkelerden Bir Tanı Teorisi" ne ve bu ek not olan "Düzeltme ..." ' a bir göz atın .

Algoritma genellikle "set tree isabet" algoritması olarak bilinir, bir uygulama bulmak çok zor olmamalıdır. Çalışma zamanıyla fazla ilgilenmediğinizden bahsettiniz, ancak erken şube sonlandırma vb. Gibi optimizasyonlar uygulama için oldukça kritik ve ilginçtir :)


2
Cevabınızı daha bağımsız hale getirmek için algoritmayı özetleyebilir misiniz? Linkler kopabilir ve kesilecektir.
Juho

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.