बॉब की बिक्री (उत्पादों की राशि को कम करने के लिए बाधाओं के साथ जोड़े का पुन: व्यवस्थित करना)


15

मैंने कुछ समय पहले स्टैक ओवरफ्लो पर यह सवाल पूछा है: समस्या: बॉब की बिक्री । किसी ने यहाँ भी प्रश्न पोस्ट करने का सुझाव दिया।

किसी ने पहले से ही इस समस्या से संबंधित एक सवाल पूछा है - दिए गए कार्डिनैलिटी का न्यूनतम वजन - लेकिन जहां तक ​​मैं समझता हूं कि यह मेरी समस्या के साथ मदद नहीं करता है। StackOverflow पर उच्चतम-रेटेड उत्तर भी देखने लायक है।

यहाँ मेरे StackOverflow प्रश्न की शब्दशः प्रतिलिपि है। यह शायद इस साइट के लिए अपर्याप्त रूप से तैयार किया गया है (बिल्ली, मुझे लगता है कि यह सिर्फ यहाँ पूछना अशिक्षित है), इसलिए इसे संपादित करने के लिए स्वतंत्र महसूस करें:


नोट: यह SWF फ़ाइल में रिकॉर्ड के आदेश देने के संबंध में वास्तविक जीवन की समस्या का एक सार है। एक समाधान मुझे एक ओपन-सोर्स एप्लिकेशन को बेहतर बनाने में मदद करेगा।

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

आपको यह जानना चाहिए कि मूल्य लेबल की व्यवस्था कैसे करें, ताकि बॉब के सभी मालों की कुल लागत यथासंभव कम हो। कुल लागत स्टॉक में उस उत्पाद की मात्रा से गुणा किए गए प्रत्येक उत्पाद के निर्धारित मूल्य लेबल का योग है।


दिया हुआ:

  • एन - उत्पादों और मूल्य लेबल की संख्या
  • S i , 0 of i <N - इंडेक्स आई (पूर्णांक) के साथ उत्पाद के स्टॉक में मात्रा
  • पी जे , 0 label जे <एन - इंडेक्स जे (पूर्णांक) के साथ मूल्य लेबल पर कीमत
  • K - अतिरिक्त बाधा जोड़े की संख्या
  • एक कश्मीर , बी कश्मीर , 0≤ कश्मीर <कश्मीर - अतिरिक्त बाधा के लिए उत्पाद सूचकांक
    • कोई भी उत्पाद सूचकांक बी में एक बार सबसे अधिक दिखाई दे सकता है। इस प्रकार, इस आसन्न सूची द्वारा गठित ग्राफ वास्तव में निर्देशित पेड़ों का एक सेट है।

कार्यक्रम को खोजना होगा:

  • M i , 0 index i <N - उत्पाद सूचकांक से मूल्य लेबल सूचकांक तक मैपिंग (P M i उत्पाद की कीमत i है )

शर्तों को पूरा करने के लिए:

  1. P M A k M P M B k , 0 < k <K के लिए
  2. <(S i × P M i ) 0 < i <N के लिए न्यूनतम है

ध्यान दें कि यदि पहली स्थिति के लिए नहीं है, तो समाधान केवल कीमत और उत्पादों द्वारा लेबल छँटाई होगी, और सीधे दोनों का मिलान होगा।

इनपुट के लिए विशिष्ट मूल्य N, K <10000 होंगे। वास्तविक जीवन की समस्या में, केवल कई विशिष्ट मूल्य टैग (1,2,3,4) हैं।


यहां सबसे सरल समाधान (टोपोलॉजिकल सॉर्ट सहित) काम नहीं करेगा इसका एक उदाहरण है:

आपके पास 10 आइटम 1 के माध्यम से हैं 10 के माध्यम से, और 10 के साथ 10 मूल्य लेबल 1 के माध्यम से $ 10। एक शर्त है: मात्रा 10 के साथ आइटम 1 आइटम के साथ सस्ता नहीं होना चाहिए।$$

इष्टतम समाधान है:

Price, $   1  2  3  4  5  6  7  8  9 10
Qty        9  8  7  6  1 10  5  4  3  2

249 की कुल लागत के साथ। यदि आप 1,10 जोड़ी को या तो चरम के पास रखते हैं, तो कुल लागत अधिक होगी।$


एर्म, तल पर उदाहरण के लिए पूर्वनिर्मित ब्लॉक मंगा हुआ है, और मुझे यकीन नहीं है कि इसे कैसे ठीक किया जाए (स्टैकऑवरफ़्लो के मार्कडाउन सिंटैक्स और <प्री> टैग यहां काम नहीं करते हैं)।
व्लादिमीर पेंटेलेव

पूर्वनिर्मित ब्लॉक के लिए मार्कअप को मान्यता नहीं दी गई थी क्योंकि डॉलर के संकेतों को TeX सीमांकक के रूप में माना जाता था (हालांकि मुझे नहीं पता कि TeX मार्कअप पूर्वनिर्मित ब्लॉक के लिए मार्कअप को क्यों बर्बाद करता है)। क्योंकि डॉलर के संकेतों से बचने का "सही" तरीका नहीं है , मैंने इसे तदर्थ तरीके से तय किया।
त्सुयोशी इतो

प्रश्न क्या है? आप एक इष्टतम समाधान खोजने के लिए (कुशल) एल्गोरिथ्म चाहते हैं? कठोरता? अनुमानित समाधान?
मार्कोस विलग्रा

1
@ अगर, धन्यवाद। @Marcos - क्षमा करें, मैं इस समस्या को हल करने के लिए एक एल्गोरिथ्म की तलाश कर रहा हूं, उम्मीद है कि यह तेजी से पर्याप्त होगा ताकि मैं इसे अपनी परियोजना में लागू कर सकूं। अनुमानित समाधान के लिए कई विचार हैं, इसलिए एक सटीक समाधान को प्राथमिकता दी जाएगी।
व्लादिमीर पेंटेलेव

1
इसके लायक क्या है, मुझे लगता है कि संबंधित प्रश्न ( cstheory.stackexchange.com/q/4904/751 ) उस मामले पर विचार करता है जहां कीमतें k और n z k शून्य हैं।
मुहम्मद

जवाबों:


6

मैंने इसे स्टैक ओवरफ्लो पर आपके मूल प्रश्न पर भी पोस्ट किया है:


समस्या सामान्य मामले के लिए एनपी-पूर्ण है। यह 3-विभाजन (जो कि अभी भी मजबूत एनपी-बिन संस्करण का पूर्ण पैकिंग है) की कमी के माध्यम से दिखाया जा सकता है।

चलो डब्ल्यू 1 , ..., डब्ल्यू एन 3-विभाजन उदाहरण के वस्तुओं के वजन होना, चलो बिन आकार, और हो k = n / 3 डिब्बे कि भरे जाने की अनुमति दी जाती है की संख्या। इसलिए, एक 3-विभाजन है अगर वस्तुओं को इस तरह से विभाजित किया जा सकता है कि बिन प्रति बिल्कुल 3 ऑब्जेक्ट हैं।

कमी के लिए, हम एन = केबी सेट करते हैं और प्रत्येक बिन को उसी मूल्य के बी प्राइस लेबल द्वारा दर्शाया जाता है (पी आई के हर बी वें लेबल को बढ़ाने के बारे में सोचें )। चलो टी मैं , 1≤ मैंk , करने के लिए इसी लेबल की कीमत मैं वें बिन। प्रत्येक के लिए डब्ल्यू मैं हम एक उत्पाद एस जे मात्रा के डब्ल्यू मैं + 1 (की इस रूट उत्पाद फोन की सुविधा देता है डब्ल्यू मैं और एक अन्य) डब्ल्यू मैं 1 - उत्पादों मात्रा 1 की जो एस की तुलना में सस्ता होना भी आवश्यक है j (इन छुट्टी उत्पादों कहते हैं)।

के लिए टी मैं = (2 बी + 1) मैं , 1≤ मैंk , वहाँ एक 3-विभाजन है अगर और बॉब के लिए केवल तभी बेच सकते 2b Σ 1≤ मैंकश्मीर टी मैं :

  • अगर वहाँ 3-विभाजन के लिए एक समाधान है, तो सभी वस्तुओं के लिए इसी उत्पादों डब्ल्यू मैं , डब्ल्यू जे , डब्ल्यू एल है कि एक ही बिन को सौंपा है प्रतिबंध का उल्लंघन किए बिना एक ही कीमत के साथ लेबल किया जा सकता है। इस प्रकार, समाधान लागत है 2b Σ 1≤ मैंकश्मीर टी मैं (कीमत के साथ उत्पादों की कुल मात्रा के बाद से टी मैं है 2 बी )।
  • बॉब की बिक्री के एक इष्टतम समाधान पर विचार करें। पहले देखें कि किसी भी समाधान में 3 से अधिक रूट उत्पाद समान मूल्य लेबल साझा करते हैं, प्रत्येक ऐसे मूल उत्पाद के लिए जो "बहुत अधिक" है एक सस्ता मूल्य टैग है जो 3 से कम रूट उत्पादों पर चिपक जाता है। यह किसी भी समाधान से भी बदतर है मूल्य बिल (यदि मौजूद है) प्रति बिलकुल मूल उत्पाद हैं।
    अब भी मूल्य के 3 रूट लेबल के साथ बॉब की बिक्री का एक समाधान हो सकता है, लेकिन उनके छुट्टी के उत्पादों को एक ही मूल्य लेबल (प्रवाह के डिब्बे की तरह) नहीं पहनते हैं। सबसे महंगी कीमत लेबल टैग की एक जड़ उत्पाद कहो डब्ल्यू मैं जो एक सस्ता टैग छुट्टी उत्पाद है। इसका तात्पर्य है कि 3 रूट लेबल w i , w j , w lसबसे महंगी कीमत के साथ टैग बी तक नहीं जोड़ते हैं । इसलिए, इस कीमत के साथ टैग किए गए उत्पादों की कुल लागत कम से कम 2 बी + 1 है
    इसलिए, इस तरह के एक समाधान लागत है टी कश्मीर (2 बी + 1) + कुछ अन्य काम लागत। एक विद्यमान 3-विभाजन के लिए अनुकूलतम मूल्य है के बाद से 2 बी Σ 1≤ मैंकश्मीर टी मैं , हम पता चलता है कि सिर्फ माना मामले बदतर है। यदि यह मामला है टी कश्मीर > 2 बी Σ 1≤ मैंK-1 टी मैं (ध्यान दें कि यह कश्मीर -1 राशि में अब)। टी सेट करना मैं= (2 बी + 1) मैं , 1≤ मैंk , यह मामला है। यह भी माना जाता है कि यदि सबसे महंगा मूल्य टैग "बुरा" नहीं है, लेकिन कोई अन्य है।

तो, यह विनाशकारी हिस्सा है;; हालांकि, यदि विभिन्न मूल्य टैग की संख्या एक स्थिर है, तो आप इसे बहुपद समय में हल करने के लिए गतिशील प्रोग्रामिंग का उपयोग कर सकते हैं।


7

यह गेरो के जवाब पर अनुवर्ती कार्रवाई है । यह विचार मजबूत एनपी-कठोरता दिखाने के लिए अपने निर्माण को संशोधित करने के लिए है।

टीमैं=(2+1)मैंटीमैं=मैंपी=2Σ1मैंटीमैं

wमैं-1पीपी

इसलिए, केवल दावा किए गए पुरस्कार को प्राप्त करना संभव है, यदि सभी पत्ती-उत्पादों का मूल उत्पाद के समान पुरस्कार है, जिसका अर्थ है कि 3-विभाजन मौजूद है।

()nहे(1)nहे()


मूल स्टैक-ओवरफ्लो प्रश्न को भी क्रॉस-पोस्ट किया गया।


मैं दो उत्तरों को स्वीकार नहीं कर सकता, इसलिए मुझे अंतर्दृष्टि के लिए आपको धन्यवाद देना होगा :)
व्लादिमीर पेंटेलेव

0

यह एक गेमिंग सिद्धांत प्रश्न जैसा लगता है। उस मामले में, एक बहुत ही सरल जानवर-बल समाधान है:

आइए हम मान लें कि अड़चनें फार्म के कुछ अपरिवर्तकों का प्रतिनिधित्व करती हैं

एस> AkSBk | AkBkS | SAkBk

समाधान यह है कि पहले बाधाओं को जोड़ा जाए, और फिर तत्वों को। उदा: हमें n = 10 कहते हैं और 2 बाधाएं हैं, A1B1 और A2B2। फिर, रूट नोड (स्तर 2) में तीन बच्चे हैं। इन 3 नोड्स में से प्रत्येक में 7 बच्चे स्तर 3, 21 में से प्रत्येक के स्तर 4 पर 6 आदि होंगे, अनिवार्य रूप से आप सभी संभावित संयोजनों के माध्यम से चल रहे हैं।

                A1B1 --- स्तर 1 
               / | \
              / | \
             / | \
            / | \
    A1A2B2A1 A1B1A2B2 A2B2A1B1 --- स्तर 2

और पेड़ उगाओ। हालांकि शुरुआत में यह एक भयानक समाधान की तरह दिखता है, मुझे लगता है कि आप कुछ heuristics और pruning का उपयोग करके बहुत महंगी पत्तियों का पीछा करना छोड़ सकते हैं ...

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