स्थिर विवाह समस्या


12

पृष्ठभूमि

मान लीजिए कि 2*nशादी करने वाले लोग हैं , और आगे मान लीजिए कि प्रत्येक व्यक्ति nबाधाओं के तहत वास्तव में अन्य लोगों के लिए आकर्षित होता है:

  1. आकर्षण सममित है ; अर्थात यदि व्यक्ति व्यक्ति Aके प्रति आकर्षित होता है B, तो व्यक्ति व्यक्ति Bके प्रति आकर्षित होता है A
  2. आकर्षण प्रतिपक्षी है ; अर्थात यदि व्यक्ति Aऔर व्यक्ति Bप्रत्येक व्यक्ति के प्रति आकर्षित होते हैं C, तो व्यक्ति Aऔर व्यक्ति Bएक दूसरे के प्रति आकर्षित नहीं होते हैं।

इस प्रकार आकर्षण का नेटवर्क (अप्रत्यक्ष) पूर्ण द्विपदी ग्राफ बनाता है Kn,n। हम यह भी मानते हैं कि प्रत्येक व्यक्ति उन लोगों को रैंक करता है, जिनसे वे आकर्षित होते हैं। इन्हें ग्राफ में एज वेट के रूप में दर्शाया जा सकता है।

एक शादी एक जोड़ी है (A,B), जहां Aऔर Bएक दूसरे को आकर्षित कर रहे हैं। यदि कोई दूसरा विवाह होता है तो विवाह अस्थिर होता है, जहां प्रत्येक विवाह में से एक व्यक्ति अपने साथी को तलाक दे सकता है और एक-दूसरे से विवाह कर सकता है और दोनों किसी ऐसे व्यक्ति के साथ अंत करते हैं जिसे उन्होंने अपने पूर्व साथी की तुलना में उच्च स्थान दिया है।

लक्ष्य

आपका कार्य एक संपूर्ण कार्यक्रम या फ़ंक्शन लिखना है जो प्रत्येक व्यक्ति की प्राथमिकताओं को इनपुट के रूप में लेता है और प्रत्येक व्यक्ति के लिए एक विवाह का उत्पादन करता है जैसे कि प्रत्येक विवाह स्थिर है।

इनपुट

इनपुट किसी भी सुविधाजनक प्रारूप में हो सकता है; उदाहरण के लिए, भारित ग्राफ, वरीयताओं की सूची, शब्दकोश / वर्गीकरण इत्यादि की सूची, आप वैकल्पिक रूप से इनपुट के रूप में कुल लोगों को ले सकते हैं, लेकिन किसी अन्य इनपुट की अनुमति नहीं है।

उत्पादन

आउटपुट किसी भी सुविधाजनक प्रारूप में भी हो सकता है; उदाहरण के लिए ट्यूपल्स की सूची, न्यूनतम बढ़त कवर , एक फ़ंक्शन जो प्रत्येक व्यक्ति को उनके साथी से जोड़ता है, आदि ध्यान दें कि एकमात्र बाधा यह है कि प्रत्येक विवाह स्थिर है, कोई अन्य इष्टतम आवश्यकताएं नहीं हैं।

टिप्पणियाँ

  1. आप विकिपीडिया या इस नंबरफाइल वीडियोO(n^2) पर इस समस्या को हल करने के लिए अधिक जानकारी और एक एल्गोरिथ्म पा सकते हैं । आप किसी भी एल्गोरिथ्म का उपयोग करने के लिए स्वतंत्र हैं, हालाँकि।
  2. मानक खामियों को मना किया जाता है।
  3. यह । सबसे छोटा उत्तर (बाइट्स में) जीतता है।

15
आकर्षण सममित है हा!
लुइस मेन्डो

5
@LuisMendo मैं अवास्तविक शब्द समस्याओं की
रुढ़िवादी

2
यह वैलेंटाइन डे थो (UTC + 8 यहाँ) है
बसुकक्सुआन

जवाबों:


7

गणितज्ञ, 28 बाइट्स

सोचने पर, यह धोखा है। मैं इस तरह से अपने लिए:

Combinatorica`StableMarriage
  • पुरुषों और महिलाओं के लिए वरीयताओं के वजन के साथ बुलाया जाना चाहिए।
  • कपलिंग के लिए प्रत्यक्ष प्रेरित करता है।

(हां Combinatoricaअपदस्थ है लेकिन इसकी तुलना में कम बाइट खर्च होती है FindIndependentEdgeSet)


उदाहरण (GoT-like): (निष्पक्ष होना - मैंने वजन का अनुमान लगाया ... लेकिन मैं परिणामों के साथ ठीक हूं)

यहाँ छवि विवरण दर्ज करें

m = {{2, 4, 3, 1}, {1, 2, 4, 3}, {3, 2, 1, 4}, {4, 2, 1, 3}};
w = {{2, 3, 4, 1}, {3, 2, 1, 4}, {3, 2, 4, 1}, {4, 1, 2, 3}};
result = Combinatorica`StableMarriage[w, m];
MapThread[
  UndirectedEdge[Show[#1, ImageSize -> 130], 
    Show[#2, ImageSize -> 130]] &, {names1, 
   names2[[result]]}] // TableForm

Blockquote


3
+1 गणितज्ञों के बेकार-से-सभी-अपवाद-कोड-गोल्फर कार्यों के महाकाव्य पुस्तकालय के दोहन के लिए।
SIGSTACKFAULT

2
मुझे विश्वास है कि जब मुझे विश्वास नहीं हो रहा है कि बिल्ट-इन को बंद करने की आदत
डालने की ज़रूरत

कभी भी गणितज्ञों को कम मत समझिएगा; डी
जूलियन क्लूज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.