Bir grup insanın birbirlerine hediye alabilmesi için minimum alışveriş gezisi sayısı


10

Bir grup insanımız var. Grup içinde kimin için hediye alması gerektiğine dair bir liste verilir. Her kişinin herhangi bir sayıda hediye alması / alması gerekebilir, ya da muhtemelen hiç hediye almaması gerekebilir. Bir alışveriş gezisinde, insanların bir alt kümesi aynı mağazaya birlikte seyahat eder ve mağazada olmayan herkes için hediyeler satın alır. Aynı alışveriş gezisinde başka birine hediye alamayabilirler, çünkü o zaman sürpriz olmaz. Bir kişi birden fazla alışveriş gezisine çıkabilir. Herkesin ihtiyaç duyduğu tüm hediyeleri satın alması için gereken toplam alışveriş gezisi sayısını en aza indirmek istiyoruz.n

Örnek olarak, 5 kişinin olduğu durumu düşünün ve her biri gruptaki diğer herkes için hediye almalıdır. Kişilerin 1'den 5'e kadar numaralandırılmasına izin verin. Bu, gösterildiği gibi 4 alışveriş gezisinde yapılabilir:

  • Seyahat 1: 1, 2, 3 alışverişe gitmek

  • Seyahat 2: 1, 4, 5 alışverişe gitmek

  • Seyahat 3: 2, 4 alışverişe gitmek

  • Seyahat 4: 3, 5 alışverişe gitmek

Bu sorunu nasıl çözebilirim? Girişin yönlendirilmiş bir grafikle temsil edilebileceği açıktır, ancak oradan nereye gideceğimi bilmiyorum. Birisi bisik kapak problemini getirdi , ancak benzer olsa da bu soruya cevap vermiyor.

Bir yönlendirilmiş grafik olarak giriş düşünebiliriz ile köşe, burada kenar bir kişi, aracı kişi için bir hediye almak gerekir . Hedef bicliques kümesini bulmak için bu şekilde az ve kenar kümesi grafiğinin bir alt kümesidir . Aynı zamanda, yönlendirilmiş bir grafiğe bicliques tanımını uzanan bir biclique sadece bir haritada kenarları içerir içinn ( u , v ) u v ( S 1 , T 1 ) , , ( S k , T k ) k E i ( S i × T i ) ( S i , T i ) S i T i G S i × T iE iGn(u,v)uv(S1,T1),,(Sk,Tk)kEi(Si×Ti)(Si,Ti)SiTi. Bu, her bisikliğin bir alt çizgisi olmasını gerektirmememiz nedeniyle bisiklik kapak probleminden farklıdır ( her için ).GSi×TiEi

Özellikle, ben de şu cevabı kabul edeceğim:

  • Bu sorunun NP zor olduğunu veya
  • Bu soruyu tam olarak cevaplayan bir polinom zaman algoritması sunar (yaklaşık veya üst sınır yok)

Kayıt için, bu sorunu hiçbir yerde görmedim, sadece kendi merakım için merak ediyorum.

Yanıtlar:


2

Bu problem NP zor . Bunu göstermek için, önce bu (optimizasyon) problemini bir karar problemine dönüştüreceğim. Daha sonra, bu problemi, herhangi bir için NP-zor olan renklendirme probleminden bir azalma elde etmenin oldukça basit olduğu eşdeğer bir soruna dönüştürüyorum .k 3kk3

Sorunun kısa bir formülasyonu şudur:

kişi ve 'hediye verme' ilişkilerini kodlayan bir grafik göz önüne alındığında , tüm hediyelerin sürprizleri bozmadan satın alınabilmesi için gereken minimum gezi miktarını bulun.GnG

Ancak bu bir optimizasyon problemidir. NP sınıfı genellikle karar sorunları için tanımlanır (her örneğe verilen cevap EVET veya HAYIR). Bunun bir karar çeşidi:

Verilen kişi ve 'hediye verme' ilişkilerini ve bir tam sayı kodlayan bir grafiği göz önüne alındığında , en fazla seyahatini herhangi bir sürprizi bozmadan tüm hediyeleri almak için yeterli yapıyor mu?G t tnGtt

Bir bulma problemi tanımlayan uygun yönlendirilmiş -multicoloringt bir grafiğin bir bulgu olarak , çok renkli fonksiyonu ise uygun , bazı dizi 'renk' (yani ) ve güç kümesidir (her alt kümelerinin yani grubu ). Çok renkli bir işlev, yalnızca her kenar için varsa, .c : V P ( C ) C t | C | = t P ( C ) C C ( u v ) E c ( u ) c ( v )G=(V,E) c:VP(C)Ct|C|=tP(C)CC(uv)Ec(u)c(v)

Alışveriş gezisi sorununun aynı grafik çok yönlü bir renginint G varlığına karar verme sorununa eşdeğer olduğunu iddia ediyorum .G

Korumalı : bir uygun yönlendirilmiş varsa -multicoloring için böyle bu renk adlandırmak, sonra dizisini dikkate trips , burada bir vertex , sadece ve eğer ise seyahatinde alışverişe gider . Daha sonra, her bir kenar için , bir yolculuk var olduğunu var öyle ki ve , çünkü . Bu nedenle, gezileric G C = { 1 , , t } t T 1 , , T t v T i i c ( v ) ( u v ) E T i u T i v T i c ( u ) c ( v ) T ıtcGC={1,,t}tT1,,TtvTiic(v)(uv)ETiuTivTic(u)c(v)Ti tüm hediyeleri almak için yeterlidir.

Seyahatlerimizde bir dizi varsa , daha sonra, çok renkli fonksiyonu oluşturmak renk kümesi üzerinde , öyle ki . Daha sonra, her bir kenar için , bir gezi vardır şekilde ve (itibaren için bir hediye almak için bir gezi), burada araçlarının ve , bu nedenle . c C = { 1 , , t } c ( u ) = { i N | u T i } ( u v ) E T i u T i v T i u v i c ( u ) i c (T1,,TtcC={1,,t}c(u)={iN|uTi}(uv)ETiuTivTiuvic(u)c ( u ) c ( v ) ic(v)c(u)c(v)

Uygun bir yönlendirilmiş -multicoloring bulmak , temel olarak belirli bir coloring vakasının garip bir yeniden formülasyonudur . Bu nedenle, renklendirme probleminden bir polinom zaman azalması gösterebilirim : Önceden yönlendirilmemiş bir grafik verildiğinde , önce bu grafiği yönlendirilmiş grafiktir , öyle ki ve ancak ve ancak veya ( başka bir deyişle, yönlendirilmemiş kenarları iki yönlendirilmiş kenara dönüştürüyoruz).k ( ttk(tt/2)G=(V,E)G=(V,E)V=V(uv)E(u,v)E(v,u)E

En büyük bir düşünün , böylece , olmayacak , böylece . boyutundaki tüm alt kümelerinin kümesi , burada, böyle bir kümedir. Bu nedenle, böyle bir alt kümenin maksimum boyutu .KP(C)a,bKababCt/2t=|C|(tt/2)

için uygun bir -multicoloring varsa , (*) eşit olmayan öğeden fazlasını kullanmayan uygun bir renklendirme vardır. bu nedenle bu, için geçerli bir renklendirmesidir .tG(tt/2)P(C) (tt/2)G

Uygun ise -Renklendirme için var , daha sonra bir dizi vardır , , öyle ki ve herhangi , , öyle ki . Yani, uygun bir yönü var.(tt/2)GKP(C)|C|=t|K|(tt/2)a,bKababGt

Bu nedenle, bu -renklemeden gezileri ile mevcut alışveriş problemine kadar geçerli bir polinom zaman azalmasıdır , bu da mevcut alışveriş sorununun NP-zor olduğu anlamına gelir. Mevcut alışveriş sorununun NP-eksiksiz olduğunu unutmayın, çünkü verilen en fazla seyahatinin bir listesinin sürprizleri bozmadan tüm hediyeleri satın almamıza izin verdiğini kolayca doğrulayabiliriz .(tt/2)tt


(*): Bir çok-boyama durumunda fazla maksimum bir daha renk setleri 'olmayan bir alt kümesi' çok-boyama kullanan , biz 'adlandırma' şekildedir ın bir üst kümesidir . öğelerin hiçbiri, uygun kalır farklı bir elemanına bitişik olarak her-diğerinde bitişik bir sorun ve renk-kümesinin yok edildi olan orijinal . Böylece, genelliği kaybetmeden olduğunu varsayabiliriz .CCCCCCCCCC

Daha sonra, not bu 'adlandırma' herhangi bir alt dizisini renk setleri düğümler arasındaki kenarları mahvetmez , çünkü bir başkasının alt kümesi olan öğe içermiyor. Geriye kalan tek şey ve arasındaki kenarların renklendirmeyi 'mahvetmemesini' sağlamaktır.CCCCCCCCC

içindeki renk kümelerinde aşağıdaki ilişkisini göz önünde bulundurun : ve iki renk kümesi , yalnızca bir çift köşesi varsa bağlanır . renk kümesi ve renk kümesi ve . Bu ilişki yönlendirilmemiş grafik .RCCABa,baAbB(a,b)EG=(CC,R)

İlk olarak, kenarı olmayan herhangi bir çifti tek bir renk setiyle değiştirerek 'azaltabiliriz' . Renk aynı kalır, çünkü bitişik olmayan iki renk setini aynı renge dönüştürmek geçersiz kenarlar getirmez. Sonuç olarak, tam bir grafiğe .CCGG

Bu demektir ki, eğer renk kümelerinin daha az ya da buna eşit bir miktarda olduğu gibi, gerekli renklendirme var. Aksi takdirde, hiç uygun çoklu renklendirme yoktur, çünkü en büyük 'alt küme dışı' kümesidir, bu nedenle bu klibi renklendiremeyiz. Bu nedenle, gerekli çoklu renklendirme mutlaka vardır.G|C|C


Hakkında tam grafik olarak düğümlerin ve biz en azından sahipseniz eğer renk yapabiliyor renkler, biz buna sahip insanlar birbirleri için hediyeler alışveriş gidebilirsiniz gezileri ve ancak eğer . Bu özellikle, , sadece yapılması yeterli olduğu anlamına gelir . Satın almak için daha az hediye varsa, daha fazla seyahat gerekli olmayacaktır, bu nedenle bu her çözümde genel bir üst sınırdır.nKnnnt(tt/2)nn1287016


Aşağıda, optimumun elde edilmesini garanti etmeyen, ancak polinom zamanında hesaplanabilen sezgisel bir algoritma veren daha önceki 'cevabım'.

Bu sorunu formüle için başka bir yol, bir kaplama bulmaktır bölümleri üzerinde bipartit grafiklerin bir yönlendirilmiş grafik için ile düğümleri , burada bölme (yani açma) miktarı, burada minimumdur.C={(S1,T1),,(Sm,Tm)}(Si,Ti)Gnm

İlk olarak, kısmen diğer cevaplardan gelen bazı gözlemler:

  • ile ortak kenar miktarının maksimuma çıktığı iki parçalı bir grafiğe sahip bir seçtiğimiz açgözlü strateji, optimal bir çözüme yol açmaz (Güçlü bir karşı örnek, düğümlü tam grafiktir , Hangi maksimum iki taraflı grafik seçilirse seçilsin, bu stratejinin başarısız olduğu yerler.).(Si,Ti)G6
  • Açgözlü strateji keyfi asiklik grafikler için uygun değildir , aşağıdaki grafiği göz önünde bulundurun: Sert-asiklik Hem hem de için iki taraflı grafik kenarı kaldırır en uygunudur.Si={3,5,6}Si={1,3,6}4{3,5,6}
  • Herhangi bir (optimal) açgözlü algoritma, bölüm tarafından 'kaldırılan' döngü sayısı (seçilen herhangi bir boyutta) üzerinden seçilen bölümün boyutunu tercih edemez . Bunu anlamak için, Grafiği dikkate , bir döngü vardır düğümleri, düğümleri ve döngüsünde her düğüm olan doğru ek giden kenarları ek düğümler için aşağıdaki (bakınız şekil hiçbir giden kenarları vardır, olduğu bir örnek ). Uzunluk döngüleri boyunca kenar miktarını en üst düzeye çıkarmayı tercih eden açgözlü bir seçim , ilk yolculukta döngüdeki tüm köşeleri gönderecektir. Bu, döngünün herhangi bir kenarını kaldırmaz ve sadece sayarn+2n22A,Bn=4nA,Bve tüm kenarları döngüden çıkarmak, tüm kenarları doğru da kaldırır . Bu nedenle, bir döngüyü kaldırmak yerine bölümün boyutunu tercih eden herhangi bir açgözlü seçim optimal değildir.A,B
    4 zamanlı

Bu gözlemlere dayanarak, şu açgözlü seçim öneriyorum: Seçim böyle, bu yolculuk 'kaldırır' o devir miktarı o ile maksimum örtüşme ile maksimal ve kravat durumunda ise, seçtiğiniz bir bölümü arasında (yani döngüleri olmayan kenarlara bakın).(Si,Ti)GG

Bu algoritma, döngüsel olmayan grafiklerdeki 'temel' açgözlü stratejiden farklı olmadığından (her yolculukta maksimum kenar miktarını kaldırma), bu nedenle bu açgözlü algoritma optimal değildir. Bununla birlikte, döngüleri kaldırma sezgisi hala mantıklı ve temel açgözlü strateji üzerinde bir gelişmedir, bu yüzden iyi bir sezgisel olabilir.


1
"Bir ise Bu durum -multicoloring için var fazla, daha sonra bu boyama kullanım gelen eşit olmayan elemanları ". Bu ifade yanlıştır. Bağlantısı kesilmiş 3 düğümü önemsiz örneğinde, 2 (çok renkli) bir ; burada . Bu, farklı elemandan fazlasını kullanan uygun bir 2-çok . Bir "Eğer söylemek kastettiniz -multicoloring için var , daha sonra böyle bir fazla renklendirme kullanımlarınıtG(tt/2)P(C)a,b,cvv(a)={1},v(b)={2},v(c)={1,2}(21)=2tG(tt/2) " den eşit olmayan öğeler ?P(C)
Riley

Gerçekten, demek istediğim buydu. Bakmak için başka bir yol olduğunu eğer bu bir minimum t-multicoloring (yani bu değildir , tam olarak kullanan -multicolorable) elemanlar . Açıkçası, verdiğiniz örnek doğru yeniden formülasyon için bir karşı örnek değildir. G(t1)(tt/2)
Ayrık kertenkele

Hayır bekle. Tam olarak elemanlarını değil, en fazla. (tt/2)
Ayrık kertenkele

Gözden geçirilmiş bu ifadenin nasıl sezgisel bir anlam taşıdığını anlayabiliyorum, ama kanıtlayabilir misiniz? Belki bir şekilde herhangi bir t-multicoloring nedenle tüm multicolors bazı kümesi elemanları olduklarını "geliştirilmiş" olabileceğini gösterebilir büyüklüğünün ihtiyacını karşılayan ve hiçbir orada var olduğunu , öyle ki . Ka,bKab
Riley

@Riley Ne demek istediğinden emin değilim, hangi ifadeyi ayrıntılandırmamı istiyorsun? Cevabımı, orijinal yorumunuzun önerdiği şeyi bildirecek şekilde güncelledim. İspatın geri kalanı etkilenmez. Çoklu ve orijinal renk probleminin ilişkisine gelince, ana fikir, çoklu renklendirmenin bitişik 'alt kümelere' sahip olmadığı görülebilir. Yana büyük 'olmayan İkili subsetting' alt küme içinde sahiptir boyut , biz de bir renk kümesi olarak bu kümeyi düşünebilirsiniz ve biz olsun renklendirme sorunu. P(C)(tt/2)
Ayrık kertenkele

2

Bu sorunu , sorunu çözmek için bir araç (küçük örnekler için!) Veren, ancak diğer yönde (NP-sertliği oluşturacak) nasıl azaltacağınızı gösteren Grafik Renklendirme'ye nasıl azaltabileceğinizi görebiliyorum.

Temel fikir, her satın alma işlemi için bir tepe noktası ve aynı yolculukta gerçekleşemeyen iki satın alma arasında bir kenar içeren bir grafik oluşturmaktır ; daha sonra satın alma işlemlerini mümkün olan en az sayıda gruba ("geziler") gruplandırmaya çalışırız, böylece aynı gruptaki hiçbir satın alma işlemi çakışmaz. Özellikle, , bir kenarı , kişisine bir hediye satın alması gerektiğini gösteren orijinal yönlendirilmiş grafik ise , o zaman bir tepe noktasının bulunduğu yönlendirilmemiş bir grafiği oluşturun. her kenar için bölgesindeki ve (yönlendirilmeyen) kenar zamanG=(V,E)uvuvH=(X,Y)xuvuvGxuvxvwuv ve her ikisi (yönlendirilmiş) olarak kenarları vardır (eğer , bazı satın bir yolculuk sırasında bir hediye, o zaman bir satın alabilir aynı gezi sırasında bir hediye). Arasında boyama bir köşe gerekli alımlar (içinde köşeler bir bölümdür değil çatışmayı (pay bir kenar) yapmak geziler (renkler) içine) ve minimum boyutta boyama bir köşe en az olası gezileri sürüyor.vwGvwvHH

3SAT'tan Grafik Boyama'ya (örneğin, örn., Örneğin,), bir başka yöne gitmek (Grafik Renklendirmeyi veya başka bir NP-zor problemini probleminize düşürmek ve böylece NP sertliğini belirlemek) mümkün olabilir. Jeff Erickson'un notlarının 10. sayfasında detaylandırılmıştır ), ancak bunu kendim denemedim.


Bu cevap harika; tam da aradığım şey buydu. Bu algoritmanın zaman karmaşıklığını analiz ederken, en fazla köşe noktası (sunar) ve kenarı vardır. Grafik renklendirme üzerine bir algoritma aradığımda tek bulduğum, köşeli bir grafik için . Kenar sayısında polinom bir üst sınır olduğu için bu durumda daha verimli bir algoritma var mı? n2n(2n3)(n2n)2O(2nn)n
Riley

1
@Riley Muhtemelen hayır, renklendirilebilirliğine karar vermek , maksimum derece olan bir grafik için zaten NP-zordur. 3-SAT'dan maksimum derece 3 olan grafiklere azalma için bu [ders notlarına] (www-sop.inria.fr/members/Frederic.Havet/Cours/coloration.pdf) bakınız.kk33
Ayrık kertenkele

@ Ayrık kertenkele: Bu ders notlarının neresinde böyle bir indirim yapıyorlar?

Bu cevap neden kabul edildi? Gördüğüm kadarıyla ne NP-sertliğini, ne de 'en uygun' algoritmayı, hatta verimli bir algoritmayı göstermiyor.
Ayrık kertenkele

1
@Discretelizard Tamam. Sorunun, özellikle bu sorunun NP-zor olması ihtimali göz önüne alındığında, bir P zaman algoritması aradığımı ima ettiğini düşünmüyordum. Ama bu noktayı orijinal soruda daha açık hale getirebilirim. Bu cevabı doğru olarak işaretlemeyeceğim ve 100 puanlık bir ödül ekleyeceğim (ikincisinin aynı soruda 100 olması gerekiyor, ancak sadece hayali internet noktaları oldukları için sunmaya hazırım, değil mi? :)) Bu problemi gösterebilen herkese NP-zordur, VEYA çözen bir polinom zaman algoritması bulun.
Riley

0

Patronum makul zamanda en uygun çözümü bulması garanti edilen bir algoritma uygulamamı isterse çok endişeleneceğim bir sorun.

Mutlaka uygun olmayan bir çözüm bulmak için: Herhangi bir kişi ve satın almak için hediyeler göz önüne alındığında, bir grup insanın bir alışveriş gezisinde kaç tane hediye satın alabileceğini sayabiliriz. Boş bir grupla başlayın (0 hediye alabilir). Grupta olmayan her kişi için, o kişi gruba eklenirse kaç hediye satın alınabileceğini belirleyin. Hediye sayısını azaltmadan ekleyebileceğimiz herhangi bir kişi varsa, herhangi bir kişi eklenene kadar satın alınan hediye sayısını azaltana kadar, maksimum miktarda satın alınan hediye sayısını artıranlardan rastgele birini seçin. Sonra bu alışveriş gezisini yapın ve tüm hediyeler satın alınana kadar baştan başlayın.

Daha iyi bir çözüm bulması durumunda farklı insanları "rastgele" seçerek birkaç kez tekrar ederdim.

Örnekte, beş kişi birbirleri için bir hediye almak zorunda kaldığında, bu dört seferde bir çözüm bulur; hediyelerin sayısını iyileştirmeden değişmeyen bir geziye kişi eklemeseydik beş gezimiz olurdu. Ve 6 kişi 5 geziye ihtiyaç duyar.


Başka bir deyişle, kaç hediyenin satın alınacağına göre alışveriş gezilerini açgözlülükle seçiyorsunuz. Bu prosedürün zorunlu olarak mümkün olan en az sayıda alışveriş seyahatiyle sonuçlandığını kanıtlayabilir misiniz? Varsa, 6 kişi örneğini yanlış çalıştınız. 6 kişi yalnızca 4 alışveriş gezisi gerektirir: . {{1,2,3},{1,4,5},{2,4,6},{3,5,6}}
Riley

Kesinlikle kanıt yok. Açgözlü algoritma + farklı rastgele seçimler yapmak şansınızı biraz artıracaktır, ancak 4 yolculuk yapmaz.
gnasher729

Sorunun açgözlü olduğu iddiasını test ettim ve başarısız oldu. Birer birer kişi eklemek yerine her olası alışveriş seyahatini test etseniz bile, yine de 5 seyahat alırsınız: . Açgözlü yaklaşım, ikinci alışveriş gezisinin 9 hediye almasını ister, ancak en uygun çözümde ikinci alışveriş gezisi 8 hediye alır (yukarıda listelenen sıraya göre kabul edilir). {{1,2,3},{4,5,6},{1,4},{2,5},{3,6}}
Riley

Aslında, açgözlü yaklaşım 4 alışveriş gezisinde 5 kişinin durumunu bile çözmüyor: . {{1,2},{3,4},{5},{1,3},{2,4}}
Riley

-1

İnsanları, (ebeveyn) kimden aldıklarına ve (çocuk) kime verdiklerine göre sipariş ettiğinizi varsayalım. Herkes bir hediye verdiğinden ve bir hediye aldığından ebeveyn-çocuk işlevi bire birdir.

Ebeveyn ve çocuğu asla aynı gruba sokmak istemezsiniz. Bir rasgele kişi ile başlayan yüzden, buna göre ve sipariş herkes vb Hepiniz koymak bir gruba ve tüm başka bir grup içine. Son kişi , bu kişinin ile aynı grupta olmasını . Eğer eşitse, sorun değil. Aksi takdirde, en basit durumda, sadece olabilecek bir ek gruba ihtiyacınız vardır .p1child(p1)=p2poddpevenpn=parent(p1)p1npn

Bu algoritma herkesin bağlı olduğunu varsayar. Ancak durum böyle olmak zorunda değil. Birden fazla bağlantısı kesilmiş döngü varsa, başka bir deyişle, bir noktada burada , o zaman o daireyi bitirir ve aynı algoritmayı izleyerek yeni bir tane ile başlarsınız. Aynı döngünün olasılıklarını ve eşitlerini birleştirmediğiniz sürece, bağlantısı kesilmiş döngüleri birleştirebilirsiniz.pk=parent(p1)k!=n

Bu algoritma en fazla 2 mermi (çift ) ve 3 mermi (tek ) ile sona erer .nn


Görünüşe göre bu yaklaşım sadece herkesin bir hediye vermesi ve bir hediye alması, yani grafiğin bir permütasyon olduğu durumda problemi çözmektedir. Sorunun sadece bu özel durum hakkında sormak istediğinden emin değilim - OP'nin bu konuda ne söylediğine bakalım.
DW

Bu doğru, benim çözümüm olan sorunun bir alt durumu için . i,fan_in(vi)=fan_out(vi)=1
ilke444

Evet, özellikle permütasyon istemiyordum. Lütfen birkaç şeyi açıkladığım güncellenmiş soruya bakın.
Riley
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.