एक दूसरे के लिए उपहार खरीदने के लिए लोगों के समूह के लिए खरीदारी की न्यूनतम संख्या


10

हम का एक समूह है लोग। हमें एक सूची दी गई है कि समूह के भीतर किसके लिए उपहार खरीदना चाहिए। प्रत्येक व्यक्ति को किसी भी संख्या में उपहार खरीदने या प्राप्त करने की आवश्यकता हो सकती है, या संभवतः बिल्कुल भी नहीं। खरीदारी की यात्रा में, लोगों का एक सबसेट एक ही स्टोर में एक साथ यात्रा करता है, और स्टोर में मौजूद किसी भी व्यक्ति के लिए उपहार खरीदता है। वे उसी खरीदारी यात्रा पर किसी और के लिए उपहार नहीं खरीद सकते क्योंकि तब यह आश्चर्य की बात नहीं होगी। एक व्यक्ति कई खरीदारी यात्राओं पर जा सकता है। हम सभी के लिए आवश्यक खरीदारी की यात्राओं की कुल संख्या को कम से कम करना चाहते हैं ताकि वे सभी प्रस्तुतियाँ खरीद सकें जिनकी उन्हें आवश्यकता है।nn

एक उदाहरण के रूप में, उस मामले पर विचार करें जहां 5 लोग हैं, और प्रत्येक को समूह के प्रत्येक दूसरे व्यक्ति के लिए उपहार खरीदना चाहिए। लोगों को 1 से 5 तक गिना जाता है। यह 4 शॉपिंग ट्रिप में किया जा सकता है, जैसा कि दिखाया गया है:

  • ट्रिप 1: 1, 2, 3 की खरीदारी करें

  • ट्रिप 2: 1, 4, 5 खरीदारी करने जाएं

  • ट्रिप 3: 2, 4 खरीदारी करने जाएं

  • ट्रिप 4: 3, 5 खरीदारी के लिए जाएं

मैं इस समस्या को हल करने के बारे में कैसे जाऊँगा? यह स्पष्ट है कि इनपुट को एक निर्देशित ग्राफ द्वारा दर्शाया जा सकता है, लेकिन मुझे नहीं पता कि वहां से कहां जाना है। किसी ने बाइक्लिक कवर की समस्या को सामने लाया , लेकिन इसी तरह, यह इस सवाल का जवाब नहीं देता है।

हम इनपुट के बारे में सोच सकते हैं n n कोने पर एक निर्देशित ग्राफ G के रूप में , जहां किनारे ( u , v ) का अर्थ है कि व्यक्ति u व्यक्ति v के लिए एक वर्तमान खरीदना चाहिए । लक्ष्य bicliques का एक सेट मिल रहा है ( एस 1 , टी 1 ) , ... , ( एस कश्मीर , टी कश्मीर ) ऐसा है कि कश्मीर कम है और बढ़त सेट ग्राफ के के एक सबसेट है मैं ( एस मैं × टी मैंGn(u,v)uv(S1,T1),,(Sk,Tk)kE) का है । इसके अलावा, एक निर्देशित ग्राफ के लिए बाइसिकल की परिभाषा का विस्तार करने में, एक बाइसिकल ( एस आई , टी आई ) में केवल किनारों होते हैं जो एस आई से टी आई तक कानक्शाबनाते हैं। में है कि हम प्रत्येक biclique की आवश्यकता नहीं है की एक subgraph होने की biclique कवर समस्या से यह अलग है जी (हम की आवश्यकता नहीं है एस मैं × टी मैं के लिए प्रत्येक मैं )।i(Si×Ti)(Si,Ti)SiTiGSi×TiEi

विशेष रूप से, मैं एक उत्तर स्वीकार करूंगा कि या तो:

  • दर्शाता है कि यह समस्या एनपी-हार्ड है या
  • एक बहुपद समय एल्गोरिथ्म प्रस्तुत करता है जो इस प्रश्न का सटीक उत्तर देता है (कोई सन्निकटन या ऊपरी सीमा नहीं)

रिकॉर्ड के लिए, मैंने इस समस्या को कहीं भी नहीं देखा, मैं केवल अपनी जिज्ञासा के लिए इसके बारे में सोच रहा हूं।

जवाबों:


2

यह समस्या एनपी-हार्ड है । यह दिखाने के लिए, मैं पहले इस (अनुकूलन) समस्या को निर्णय समस्या में सुधार दूंगा। फिर, मैं एक बराबर एक है, जहां से इसे से कमी लाने के लिए काफी सरल है में है कि समस्या को पुन: कश्मीर -coloring समस्या है, जो किसी के लिए एनपी कठिन है कश्मीर 3kk3

समस्या का एक छोटा सूत्रीकरण निम्नलिखित है:

एन व्यक्तियों और एक ग्राफ जी जो उनके 'उपहार देने' के संबंधों को कूटबद्ध करते हैं, को देखते हुए आवश्यक न्यूनतम मात्रा में यात्राएं ऐसी हैं कि सभी उपहार किसी भी आश्चर्य को बर्बाद किए बिना खरीदे जा सकते हैं।nG

हालाँकि, यह एक अनुकूलन समस्या है। क्लास एनपी को आमतौर पर डिस्चार्ज समस्याओं के लिए परिभाषित किया जाता है (जहां हर उदाहरण का उत्तर हां या नहीं है)। इसका एक निर्णय प्रकार है:

यह देखते हुए एन व्यक्तियों और एक ग्राफ जी कि encodes उनके 'उपहार देने' संबंधों और एक पूर्णांक टी , ज्यादा से ज्यादा कर रहा है टी किसी भी आश्चर्य को बर्बाद कर के बिना सभी उपहार खरीदने के लिए पर्याप्त यात्राएं?nGtt

मैं कुछ ग्राफ G = ( V , E ) के एक उचित निर्देशित t- multicoloringt को खोजने की समस्या को परिभाषित करता हूं जैसे कि एक बहुरंगा फ़ंक्शन c : V P ( C ) जो उचित है , जहां C कुछ ' t ' रंगों का सेट है ( यानी | सी | = टी ) और पी ( सी ) की शक्ति सेट है सी (यानी के सभी उप-समूहों के सेट सीG=(V,E) c:VP(C)सीटी| सी| =टीपी( C))CC)। एक बहु समारोह उचित तभी हर बढ़त के लिए अगर ( यू v ) , हम उस राशि ( यू ) ( v )(uv)Ec(u)c(v)

मेरा दावा है कि शॉपिंग ट्रिप की समस्या उसी ग्राफ G के एक निर्देशित t- multicoloringt के अस्तित्व को तय करने की समस्या के बराबर है ।G

प्रमाण : यदि हमारे पास G के लिए एक उचित निर्देशित t- multicoloring c है , जहाँ हम रंगों को ऐसे नाम देते हैं कि C = { 1 , , t } तो t यात्राओं के अनुक्रम पर विचार करें T 1 , , T t , जहाँ एक शीर्ष v यात्रा में खरीदारी हो जाता है टी मैं अगर और सिर्फ़ अगर मैं सी ( v ) । फिर, हर बढ़त के लिए ( यू v ) tcGC={1,,t}टीटी1, , टीटीvTiic(v)(uv)E, हम एक यात्रा है कि वहां मौजूद है टी मैं ऐसा है कि यू टी मैं और वी टी मैं , के बाद से सी ( यू ) ( v ) । इसलिए, यात्राएं टी i सभी उपहार खरीदने के लिए पर्याप्त हैं।TiuTivTic(u)c(v)Ti

हम यात्राओं का एक दृश्य है, तो टी 1 , ... , टी टी , तो निर्माण बहु रंग समारोह रंग सेट पर सी = { 1 , ... , टी } ऐसी है कि सी ( यू ) = { मैं एन | यू टी मैं } । फिर, हर बढ़त के लिए ( यू v ) , वहाँ एक यात्रा मौजूद टी मैं कि इस तरह यू टी1, , टीटीसीसी= { 1 , , टी }सी ( यू ) = { मैं एन | आप टीमैं}( यू वी ) टीमैंटी मैं और वी टी मैं (के बाद से यू के लिए एक मौजूदा खरीद सकते हैं वी , जो साधन कुछ यात्रा पर) है कि मैं सी ( यू ) और मैं ( v ) , तो सी ( यू ) ( v )आप टीमैंv टीमैंयूvic(u)ic(v)c(u)c(v)

एक उचित निर्देशित टी -मूल्ट्रोलिंग ढूँढना मूल रूप से k -coloring के एक विशिष्ट मामले का एक अजीब सुधार है । इसलिए, मैं ( टी) से एक बहुपद समय में कमी दिखा सकता हूंtkटी / 2 ) -coloring समस्या: एक अनिर्दिष्ट ग्राफ को देखते हुएजी'=(वी','), पहली निर्देशित ग्राफ में इस ग्राफ को बदलनेजी=(वी,), ऐसा है किवी=वी'और(यूv)यदि और केवल यदि(यू,वी)'या(v,यू(tt/2)G=(V,E)G=(V,E)V=V( यू वी ) ( यू , वी ) ') ' (दूसरेशब्दों में, हम दो निर्देशित किनारों में अनिर्दिष्ट किनारों बदल)।( v , u ) '

एक सबसे बड़ा सेट पर विचार कश्मीर पी ( सी ) कोई वहाँ मौजूद ऐसी है कि, एक , कश्मीर , एक , कि इस तरह के एक C के सभी सबसेट का आकार of t / 2 where , जहाँ t = | सी | , ऐसा सेट है। इसलिए, इस तरह के सबसेट का अधिकतम आकार ( टी) हैपी( C)), बी केएक बीएक बीसीटी / 2 t = | सी|टी / 2 )( टीटी / 2 )

यदि G के लिए एक उचित t -multicoloring मौजूद है , तो एक उचित रंग मौजूद है जो ( t) से अधिक का उपयोग नहीं करता हैटीजीt / 2 un ) P(C)(*)से असमान तत्व हैं, इसलिए यह एक मान्य ( t) है( टीटी / 2 ) पी( C)) टी / 2 ) के लिए -coloringजी'( टीटी / 2 )जी'

यदि एक उचित ( टीटी / 2 ) -coloring के लिए मौजूद हैजी', तो एक सेट वहां मौजूदकश्मीरपी(सी),| सी| =t, ऐसा| के| ( टी( टीटी / 2 )जी'पी( C))| सी| =टीटी / 2 ) और किसी भी वहाँ मौजूद नहीं हैएक,कश्मीर,एक, कि इस तरह केएक। तो,जीमें एक उचित निर्देशितटी-मूल्टिकॉलिंग है।|K| (tटी / 2 ), बी केएक बीएक बीजीटी

इसलिए, यह ( t) से मान्य बहुपद समय में कमी हैटी / 2 ) के साथ मौजूद खरीदारी समस्या का -coloringटीजो वर्तमान खरीदारी समस्या का मतलब यात्राएं, एनपी कठिन है। ध्यान दें कि वर्तमान खरीदारी की समस्या एनपी-पूर्ण है, क्योंकि हम आसानी से सत्यापित कर सकते हैं यदि अधिकांशटीयात्राओंकी दी गई सूचीहमें आश्चर्य को बर्बाद किए बिना सभी प्रस्तुतियां खरीदने की अनुमति देती है।(tt/2)tt


(*): कुछ बहु रंग तो सी एक अधिक से अधिक 'गैर सबसेट' बहु रंग की तुलना में अधिक रंग-सेट का उपयोग करता है सी * , हम कर सकते हैं 'नाम बदलें' सी ऐसी है कि वह का सुपरसेट है सी *सी उचित रहता है, से तत्वों में से कोई भी रूप में सी * से एक अलग तत्व के निकट जा रहा है सी * एक समस्या है और रंग-सेट में से कोई भी मूल में एक-दूसरे के निकट थे सी । तो, व्यापकता की हानि के बिना, हम मान सकते सी *सीCCCCCCCCCC

फिर, ध्यान दें कि 'का नाम बदलने' सीसी * के किसी भी सबसेट के सी * रंग-सेट की नोड्स के बीच किनारों को बर्बाद नहीं करता है सीसी * , के बाद से सी * कोई तत्व है कि किसी अन्य का सबसेट होते हैं। केवल बात यह है कि छोड़ दिया है सुनिश्चित करना है कि के बीच किनारों है सीसी * और सी * 'बर्बाद' रंग नहीं है।CCCCCCCCC

निम्नलिखित संबंध पर विचार आर में रंग-सेट पर सीसी * : दो रंग सेट एक और बी कर रहे हैं जुड़ा हुआ अगर और सिर्फ़ अगर वहाँ कोने की एक जोड़ी मौजूद है एक , ऐसी है कि एक है रंग-सेट एक और रंग सेट बी और ( एक , ) । इस संबंध अनिर्दिष्ट ग्राफ द्वारा दर्शाया जा सकता जी = ( सीसी * , आर )RCCABa,baAbB(a,b)EG=(CC,R)

सबसे पहले, हम 'को कम करने' कर सकते हैं सीसी * किसी भी जोड़ी है कि में बढ़त नहीं है की जगह जी एक ही रंग-सेट के द्वारा। रंग उचित रहता है, क्योंकि दो रंगों को बदलने के लिए जो एक ही रंग में बिल्कुल सटे हुए नहीं होते हैं, किसी भी अवैध किनारों को पेश नहीं करते हैं। परिणामस्वरूप, हमने G को एक पूर्ण ग्राफ़ में घटा दिया है ।CCGG

इसका मतलब है कि यदि G के पास कम या समान मात्रा में रंग-सेट है जैसा कि | सी| आवश्यक रंग मौजूद है। अन्यथा, वहां मौजूद कोई उचित बहु रंग सब पर है, क्योंकि सी * एक सबसे बड़ा 'गैर सबसेट' सेट है, इसलिए हम इस गुट रंग करने के लिए असमर्थ हैं। इसलिए, आवश्यक बहु-रंग आवश्यक रूप से मौजूद हैं।G|C|C


N nodes पर पूरा ग्राफ के रूप में K n रंग-सक्षम है यदि और केवल अगर हमारे पास कम से कम n रंग हैं, तो हमारे पास यह है कि n लोग टी यात्राओं में एक दूसरे के लिए खरीदारी प्रस्तुत करने जा सकते हैं यदि और केवल यदि ( tnKnnntटी / 2 )एन। विशेष रूप से इसका मतलब है कि, अगरn12870, केवल बनाने16यात्राएं पर्याप्त है। अगर खरीदने के लिए कम प्रस्तुतियाँ हैं, तो अधिक यात्राओं की आवश्यकता नहीं होगी, इसलिए यह हर समाधान पर एक सामान्य ऊपरी सीमा है।(tt/2)nn1287016


नीचे मेरा पहला 'उत्तर' है, जो एक हेयोरिस्टिक एल्गोरिथ्म देता है जो इष्टतम प्राप्त करने की गारंटी नहीं देता है, लेकिन बहुपद समय में गणना की जा सकती है।

इस समस्या को तैयार करने का एक और तरीका यह है कि कुछ निर्देशित ग्राफ G के लिए विभाजन ( S i , T i ) पर द्विदलीय रेखांकन के लिए C = { ( S 1 , T 1 ) , ... , ( S m , T m ) } को कवर किया जाए। n नोड्स के साथ , जैसे कि विभाजन (यानी ट्रिप्स), यहाँ m , न्यूनतम है।C={(S1,T1),,(Sm,Tm)}(Si,Ti)Gnm

सबसे पहले, कुछ अवलोकन, आंशिक रूप से अन्य उत्तरों से आ रहे हैं:

  • लालची रणनीति, जहां हम एक द्विदलीय ग्राफ के साथ एक ( S i , T i ) उठाते हैं, जहां जी के साथ आम तौर पर किनारों की मात्रा अधिकतम होती है, एक इष्टतम समाधान नहीं होता है (एक मजबूत काउंटर-उदाहरण 6 के साथ पूर्ण ग्राफ है नोड्स, जहां यह रणनीति विफल हो जाती है, कोई फर्क नहीं पड़ता कि कौन से अधिकतम द्विदलीय ग्राफ चुना गया है।)(Si,Ti)G6
  • लालची रणनीति मनमाने ढंग से चक्रीय ग्राफ के लिए इष्टतम नहीं है , निम्नलिखित ग्राफ पर विचार करें: hard-acyclic दोनों के लिए एस i = { 3 , 5 , 6 } और एस i = { 1 , 3 , 6 } द्विपदी ग्राफ 4 किनारों को हटाता है , लेकिन केवल { 3 , 5 , 6 } इष्टतम है।Si={3,5,6}Si={1,3,6}4{3,5,6}
  • कोई भी (इष्टतम) लालची एल्गोरिथ्म विभाजन द्वारा चुने गए चक्र ( किसी भी आकार) की राशि को चुने गए विभाजन के आकार को पसंद नहीं कर सकता है । इसे देखने के लिए, n + 2 नोड्स के साथ ग्राफ पर विचार करें , जहां n नोड्स का एक चक्र है और चक्र के प्रत्येक नोड में 2 अतिरिक्त आउटगोइंग किनारों हैं 2 अतिरिक्त नोड्स A , B , जिनके कोई आउटगोइंग किनारे नहीं हैं (नीचे आंकड़ा देखें) एक उदाहरण जहां n = 4 )। लालची पसंद जो कि लंबाई n के चक्रों पर किनारों की मात्रा को अधिकतम करने के लिए पसंद करती हैn+2n22A,Bn=4nपहली यात्रा पर चक्र में सभी कोने भेज देंगे। यह करने से इनकी है के रूप में इस चक्र में से किसी किनारों को दूर नहीं करता और बस की अनदेखी कर एक , बी और चक्र से सभी किनारों को दूर करने की दिशा में सभी किनारों को हटा एक , बी और साथ ही। तो किसी भी लालची विकल्प जो एक चक्र को हटाने पर विभाजन के आकार को पसंद करता है वह इष्टतम नहीं है।A,BA,B
    4-cycle

इन अवलोकनों के आधार पर, मैं निम्नलिखित लालची विकल्प का प्रस्ताव करता हूं: पिक ( एस आई , टी आई ) जैसे, कि जी से यह यात्रा es निकालती है ’की मात्रा अधिकतम है और संबंधों के मामले में, अधिकतम ओवरले के साथ एक विभाजन चुनें। उनके बीच में जी (यानी किनारों को देखें चक्र पर नहीं)।(Si,Ti)GG

चूँकि यह एल्गोरिथम चक्रीय रेखांकन पर 'बुनियादी' लालची रणनीति से अलग नहीं है (प्रत्येक यात्रा पर किनारों की अधिकतम मात्रा को हटाते हुए), यह लालची एल्गोरिथ्म इसलिए इष्टतम नहीं है। हालांकि, चक्रों को हटाने का अंतर्ज्ञान अभी भी समझ में आता है और यह बुनियादी लालची रणनीति पर एक सुधार है, इसलिए यह एक सभ्य न्यायिक हो सकता है।


1
आप कहते हैं "यदि G के लिए t- multicoloring मौजूद है , तो यह रंग ( t) से अधिक का उपयोग नहीं करता हैtGटी / 2 ) से असमान तत्वोंपी(सी)"। यह बयान गलत है। 3 कट नोड्स की तुच्छ उदाहरण मेंएक,,को एक 2-multicoloring मौजूदवी, जहांवी(एक)={1},v(b)={2},v(c)={1,2}(tt/2)P(C)a,b,cvv(a)={1},v(b)={2},v(c)={1,2}। यह एक उचित 2-multicoloring जो अधिक से अधिक का उपयोग करता है ( 21 ) =2अलग तत्व। क्या आपके कहने का मतलब है "यदिG केलिएएकt-multicoloring मौजूद है, तोइस तरह के एकरंग का उपयोगt ( t)से अधिक नहीं होताहै(21)=2tGt / 2 un ) P(C)से असमान तत्व"?(tt/2)P(C)
रिले

दरअसल, मेरा यही मतलब था। इसे देखने का एक और तरीका यह है कि यदि यह एक न्यूनतम टी-बहुरंगी (यानी यह G नहीं है ( t - 1 ) -multicolorable), तो यह वास्तव में उपयोग करता है ( tG(t1)t / 2 elements ) तत्व। स्पष्ट रूप से, आप जो उदाहरण देते हैं, वह सही सुधार का प्रतिवाद नहीं है। (tt/2)
छिपकली

इंतज़ार नही। यह बिल्कुल उपयोग नहीं करता है ( टीt / 2 elements ) तत्व, लेकिन अधिकतम। (tt/2)
छिपकली

मैं समझ सकता हूं कि उस संशोधित वक्तव्य में सहज ज्ञान कैसे है, लेकिन क्या आप इसे साबित कर सकते हैं? हो सकता है आप किसी भी तरह दिखा सकता है हो सकता है कि किसी भी टी multicoloring ताकि सभी multicolors कुछ सेट के तत्व हैं "सुधार" किया जा कश्मीर आकार की आवश्यकताओं को पूरा है, और कोई वहाँ मौजूद है कि एक , कश्मीर कि इस तरह के एक Ka,bKab
रिले

@ रिले मुझे यकीन नहीं है कि आपका क्या मतलब है, आप मुझे कौन सा बयान देना चाहते हैं? मैंने अपना उत्तर अपडेट कर दिया है, जिसमें कहा गया है कि आपकी मूल टिप्पणी क्या है। बाकी सबूत अप्रभावित रहते हैं। बहु और मूल रंग समस्या के संबंध के लिए, मुख्य विचार यह है कि बहु-रंग को आसन्न 'सबसेट' के रूप में नहीं देखा जा सकता है। P ( C ) के सबसे बड़े 'नॉन-पेयरवाइज़ सब्मिटिंग' सब्मिट के बाद से साइज़ ( t ) हैP(C)टी / 2 ) , हम साथ ही एक रंग सेट के रूप में है कि सेट पर विचार हो सकता है और हम रंग समस्या मिलता है। (tt/2)
छिपकली

2

मैं देख सकता हूं कि ग्राफ़िकल कलरिंग में इस समस्या को कैसे कम किया जाए , जो आपको समस्या को हल करने के लिए एक उपकरण देता है (छोटे उदाहरणों के लिए!), लेकिन अभी तक दूसरी दिशा (जो एनपी-कठोरता स्थापित करेगा) में कैसे कम किया जाए।

मूल विचार एक ऐसे ग्राफ़ का निर्माण करना है जिसमें हर खरीदारी के लिए एक शीर्ष और किसी भी दो खरीद के बीच एक किनारे होता है जो एक ही यात्रा पर नहीं हो सकता है; हम तब खरीद को समूह की छोटी से छोटी संख्या ("ट्रिप") में समूहित करते हैं, जैसे कि एक ही समूह में कोई दो खरीद संघर्ष नहीं करेगी। विशेष रूप से, यदि G = ( V , E ) मूल निर्देशित ग्राफ़ है जिसमें एक किनारे u v इंगित करता है कि व्यक्ति u को व्यक्ति v उपहार खरीदने की आवश्यकता है , तो एक अप्रत्यक्ष ग्राफ़ H = ( X , Y ) बनाएं जिसमें कोई हो वर्टेक्स एक्सG=(V,E)uvuvH=(X,Y)यू v प्रत्येक बढ़त के लिएयूवीमेंजीऔर एक (अनिर्दिष्ट) बढ़त x यू वी एक्स वी डब्ल्यू जब भीयूवीऔरवीडब्ल्यूदोनों (निर्देशित) में किनारों हैंजी(यदिvखरीदता कुछडब्ल्यूएक यात्रा के दौरान एक उपहार है, तो कोई भीउसी यात्रा के दौरानvउपहारखरीद सकते हैं)। Hकावर्टेक्स कलरिंगट्राइसेप्स (रंगों)में आवश्यक खरीदारी (Hमेंवर्टिकल)का एक विभाजन है जोसंघर्ष नहीं करता है (एक किनारा साझा करता है), और न्यूनतम आकार का वर्टेक्स रंग सबसे कम संभव ट्राइसेप्स लेता है।xuvuvGxuvxvwuvvwGvwvHH

3SAT से ग्राफ़ में रंग (जैसे, उदाहरण के लिए,) अन्य दिशा में जाना संभव हो सकता है (अपनी समस्या के लिए ग्राफ रंग, या किसी अन्य एनपी-हार्ड समस्या को कम करें, और इस तरह अपनी एनपी-कठोरता स्थापित करें)। जेफ एरिकसन के नोट्स के पी। 10 पर विस्तार से ), लेकिन मैंने खुद यह प्रयास नहीं किया है।


This answer is brilliant; it's just what I was looking for. In analyzing the time complexity of this algorithm, there are at most n2nn2n vertices (presents) and (2n3)(n2n)2(2n3)(n2n)2 edges. When I look up an algorithm on graph coloring all I find is O(2nn)O(2nn) for a graph with nn vertices. Is there a more efficient algorithm in this case because there is a polynomial upper bound on the number of edges?
Riley

1
@Riley Probably not, deciding kk-colourability, k3k3 for a graph with maximum degree 33 is already NP-hard. See these [lecture notes](www-sop.inria.fr/members/Frederic.Havet/Cours/coloration.pdf) for a reduction from 3-SAT to graphs with maximum degree 3.
Discrete lizard

@ Discrete lizard : ​ Where in those lecture notes do they give such a reduction? ​ ​ ​ ​

Why is this answer accepted? It neither shows NP-hardness nor a 'most optimal' algorithm or even an efficient algorithm, as far as I can see.
Discrete lizard

1
@Discretelizard Okay. I didn't think that the question implied I am looking for a P time algorithm, especially given the possibility that this problem is NP-hard. But I can make that point more explicit in the original question. I will unmark this answer as correct, and add a 100 point bounty (it turns out the second one has to be 100 if on the same question, but I'm willing to offer it because they're just imaginary internet points, right? :) ) again to anyone who can either show this problem is NP-hard, OR find a polynomial time algorithm that solves it.
Riley

0

It's the kind of problem where I would be very worried if my boss asked my to implement an algorithm that is guaranteed to find an optimal solution in reasonable time.

To find a not necessarily optimal solution: Given any set of people and presents to buy, we can count how many presents a group of people can buy on a shopping trip. So start with an empty group (which can buy 0 presents). For each person not in the group, determine how many presents can be bought if that person is added to the group. If there is any person that we can add without decreasing the number of presents, pick at random one of those that increase the number of presents bought by the maximum amount, until adding any person would reduce the number of presents bought. Then do that shopping trip and start all over until all presents are bought.

I'd repeat a few times, picking different people "at random" in case that finds a better solution.

In the example, five people having to buy a present for each other, this finds a solution in four trips, which is optimal; if we didn't add persons to a trip that leave the number of presents unchanged without improving it, we would have five trips. And 6 people require 5 trips.


So in other words, you are greedily choosing shopping trips according to how many presents would be bought. Could you prove that this procedure necessarily results in the minimum possible number of shopping trips? If it does, you worked through the example of 6 people incorrectly. 6 people only require 4 shopping trips: {{1,2,3},{1,4,5},{2,4,6},{3,5,6}}{{1,2,3},{1,4,5},{2,4,6},{3,5,6}}.
Riley

Absolutely no proof. Greedy algorithm + making different random choices would improve your chances a bit but wouldn't do 4 trips.
gnasher729

I've tested the claim that the problem is greedy, and it fails. Even if you test every possible shopping trip rather than adding people one by one, you still get 5 trips: {{1,2,3},{4,5,6},{1,4},{2,5},{3,6}}{{1,2,3},{4,5,6},{1,4},{2,5},{3,6}}. The greedy approach would like the second shopping trip to buy 9 presents, but in the optimal solution the second shopping trip buys 8 presents (assuming it goes in the order listed above).
Riley

In fact, the greedy approach doesn't even solve the case of 5 people in 4 shopping trips either: {{1,2},{3,4},{5},{1,3},{2,4}}{{1,2},{3,4},{5},{1,3},{2,4}}.
Riley

-1

Assume that you order the people based on who they are receiving from (parent), and who they are giving to (child). Since everyone gives one present and receives one present, parent-child function is one-to-one.

You never want to put the parent and the child into the same group. You start with a random person p1p1 and order everyone accordingly, so child(p1)=p2child(p1)=p2, etc. You put all poddpodd into one group, and all pevenpeven into another group. For the last person pn=parent(p1)pn=parent(p1), so you don't want this person to be in the same group with p1p1. If nn is even, it is not a problem. Else, you need one additional group, that can be just pn by itself, in the simplest case.

This algorithm assumes everyone is connected. But it does not need to be the case. If there are multiple disconnected cycles, in other words, if at some point, pk=parent(p1) where k!=n, then you finish that circle and start with a new one, following the same algorithm. As long as you don't merge the odds and evens of the same cycle, you can merge disconnected cycles.

This algorithm ends up with at most 2 rounds (for even n) and 3 rounds (for odd n).


It seems this approach only solves the problem for the case where everyone gives one present and receives one present, i.e., where the graph is a permutation. I'm not sure that the question meant to ask only about that special case -- let's see what the OP has to say about that.
D.W.

That's true, my solution is for a sub-case of the problem where i,fan_in(vi)=fan_out(vi)=1.
ilke444

Yes, I was not asking for permutations specifically. Please see the updated question where I clarify a few things.
Riley
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.