मेरी विनम्र राय में, पहला कदम प्रत्येक स्तंभ के लिए, कम से कम आवश्यक ऊंचाई की गणना करना है। उदाहरण के रूप में अपनी तस्वीर का उपयोग करके, पहले कॉलम को कम से कम 10 की ऊंचाई की आवश्यकता होती है, जिसे लाल, हरे और छोटे नीले आयतों द्वारा योगदान दिया जाता है। यह आसानी से प्रत्येक दिए गए आयताकार के माध्यम से पुनरावृत्ति करके किया जाता है और अपने संबंधित ऊंचाई को कॉलम पर जोड़ता है। ऐसा करके, सभी "कॉलम ऊंचाई" में अधिकतम संख्या पाई जाती है, जिसे मैं इसे "स्तंभ" कहता हूं। आपकी तस्वीर में, "स्तंभ" कॉलम 8:10 पर 14 की ऊंचाई के साथ है, आयत 1,2,4,6 (नीचे से ऊपर तक गिने गए) द्वारा योगदान दिया गया है। इसका मतलब यह है कि पैकिंग की न्यूनतम ऊंचाई कम से कम "खंभे" की ऊंचाई है क्योंकि "स्तंभ" कॉलम ठोस भरा हुआ है और इसे और कम नहीं किया जा सकता है। और इन चार स्टैकिंग ऊपर रूपों में इस तरह के चित्र आयत: (गैर स्तंभ आयत नहीं दिखाया)
तब स्तंभ को दो भागों में विभाजित करता है चित्र, एक स्तंभ के बाईं और एक अन्य दूसरे पर करने के लिए क्षेत्र है पक्ष। इसके अलावा, "गैर-खंभे" आयत (आर 3,5,7,8) अलग-अलग दोनों क्षेत्रों में भी अलग-अलग स्थित हैं। एलएचएस और आर 5 पर आर 3, आर 7, आरएचएस पर आर 8।
अब बाईं ओर भाग पर विचार करें। के रूप में यह चित्र (Fig.3) में दिखाया गया है मैं स्तंभ आयतों पुन: व्यवस्थित:
पुनर्व्यवस्थित स्तंभ आयत स्टैकिंग आदेश के साथ
, हालांकि मैं एक कठोर सबूत की जरूरत नहीं है, यह अत्यंत संभव है कि कोई बात नहीं क्या आकार और आयत की संख्या खंभे के एलएचएस पर क्या स्थित है, सभी दिए गए आयताकार एलएचएस पर खाली जगह में फिट हो सकते हैं (यहां बाधा है कि ये आयत एक उच्च ठोस खंभे नहीं दे सकते हैं, अन्यथा कदम 1 पहले से ही पता चला होगा और इसे वास्तविक खंभे के रूप में उपयोग करेगा)। यह व्यवस्था एलएचएस पर खाली स्थान को "अंतरिक्ष स्थिरता" प्रदान करती है जिसका अर्थ है कि प्रत्येक खंभे आयत द्वारा बनाई गई खाली जगह को नीचे से ऊपर चढ़ते क्रम में रखा गया है। यह "स्थिरता" प्रत्येक खंभे आयताकार द्वारा "एक साथ काम करने" के लिए बनाई गई खाली रिक्त स्थान को छोड़ दें और उसके बाद एक स्तंभ के आयत द्वारा बनाई गई किसी भी खाली स्थान से अधिक रेटैंगल्स शामिल हों। उदाहरण के लिए, अगली तस्वीर में हरा आयताकार नीले और बैंगनी आयताकार द्वारा बनाई गई खाली जगह का उपयोग करने में उपयुक्त है।
ऊपर बयान मान लिया जाये कि सत्य है, तभी आयतों एलएचएस पर तैनात स्तंभ तुलना में एक उच्च ढेर कर कभी नहीं होगा। हालांकि, अगर इन प्रतिशोधों को एलएचएस पर फिट करने के लिए खाली रिक्त स्थान के बीच कोई सहयोग की आवश्यकता होती है, तो वे वास्तव में खंभे आयतों के लिए स्वैपिंग संभावना को सीमित करते हैं। उदाहरण के तौर पर अंजीर 3 का प्रयोग करें, हरे आयत के लिए बैंगनी और नीले रंग के पड़ने के लिए पड़ोसी होने की आवश्यकता होती है, हालांकि, आरएचएस पर सबसे अच्छी जगह स्थिरता प्राप्त करने के लिए, मैजेंटा को बैंगनी और नीले रंग के बीच जाना होता है।इसका मतलब है कि एलएचएस पर हरा आरएचएस के लिए सबसे अच्छी स्थिरता प्राप्त करना असंभव बनाता है और इसके परिणामस्वरूप आरएचएस पर स्थित आयताकारों को रिक्त स्थान में फिट नहीं किया जा सकता है और छेद के साथ एक ढेर का कारण बनता है और स्तंभ द्वारा निर्धारित ऊंचाई से अधिक हो जाता है। क्षमा करें कि मैं यहां ऐसे मामले को तैयार नहीं कर सकता, लेकिन यह निश्चित रूप से एक फर्क पड़ता है।
अंत में:
चरण 1 स्तंभ को मिल रहा है, एक आसान जवाब यहां पाया जा सकता है, तो हर दी आयत स्तंभ में शामिल है - स्तंभ की ऊंचाई कम से कम पैकिंग ऊंचाई है।
चरण 2 दोनों तरफ खंभे की जांच करना है।
केस एक: यदि एक तरफ कोई खाली आयताकार नहीं है, तो दूसरी तरफ आसानी से "सर्वोत्तम स्थिरता" विधि से भरा जा सकता है और जिसके परिणामस्वरूप न्यूनतम पैकिंग ऊंचाई फिर से खंभे की ऊंचाई होती है।
केस बी: यदि एक तरफ मुक्त स्थान स्थिरता की आवश्यकता नहीं है, तो उस तरफ भर दिया जा सकता है और दूसरी तरफ अभी भी "सर्वोत्तम स्थिरता" का उपयोग कर सकते हैं। उदाहरण के लिए: (आपकी मूल तस्वीर)
इस मामले में, आर 3 में फिटिंग के लिए खाली स्थान की आवश्यकता पूरी तरह से आर 6 द्वारा बनाई गई है और आर 7 और आर 2 के लिए भी बनाई गई है। इस प्रकार अन्य खंभे आयत के साथ आर 6 और आर 2 के स्टैकिंग ऑर्डर को स्वैप करने से आर 3 नहीं होगा, आर 7 अनुपयुक्त होगा यदि आर 3, आर 7 स्वैपिंग का पालन करें। कौन सा आरएचएस के लिए एक "सबसे अच्छा स्थिरता" मामले में परिणाम कर सकते हैं:
फिर आरएचएस स्तंभ ऊंचाई को पार किए बिना आरएचएस तैनात आयतों से भरा जा सकता है।
इस गैर-स्थिरता की आवश्यकता को मुक्त आयताकार की ऊंचाई की तुलना करके और खंभे आयत की ऊंचाई की तुलना करके इसकी नि: शुल्क स्थान बनाने के लिए तुलना करके पहचाना जा सकता है। यदि मुक्त आयताकार की ऊंचाई दूसरे की तुलना में बड़ी नहीं है, तो इसमें शामिल होने के लिए दूसरे स्तंभ आयत की आवश्यकता नहीं होती है जिसका अर्थ है कि इसे खाली स्थान स्थिरता की आवश्यकता नहीं है।
केस सी: दोनों पक्षों को खाली स्थान स्थिरता की आवश्यकता है। यह वह जगह है जहां परेशानियां आती हैं। उदाहरण के लिए अंजीर 3 ले लो। अंजीर 3 में हरा बैंगनी और नीला संयुक्त था। इसका मतलब है कि एलएचएस के मुक्त आयताकार को सबसे अच्छा फिट पाने के लिए हरे, बैंगनी और नीले को अन्य खंभे आयताकारों के साथ स्टैकिंग ऑर्डर को स्वैप करने के लिए पूरी तरह माना जाता है। और इस पूरे में, नीला और बैंगनी भी स्वैप कर सकता है।
यदि आरएचएस फिट नहीं कर सकता है, जिसके परिणामस्वरूप खंभे की ऊंचाई से अधिक पैकिंग ऊंचाई बड़ी होती है, तो इसे चरण दो को दोहराना आवश्यक है, लेकिन आरएचएस को पहले फिट करने के बाद और इसके बाद एलएचएस को फ़िट करने का प्रयास करें। फिर तुलनात्मक निचले पैकिंग ऊंचाई परिणाम अंतिम परिणाम के रूप में लिया जाता है। इस मामले के लिए तर्क अस्पष्ट है, अत्यधिक संभव बेहतर विकल्प है।
मुझे पता है कि इसे वास्तव में उचित समाधान के रूप में नहीं कहा जाना चाहिए बल्कि यादृच्छिक और ढीले विचारों के रूप में जाना चाहिए, लेकिन यह स्पष्ट रूप से टिप्पणियों में फिट नहीं होगा। मुझे अपने बेकार स्पष्टीकरण और खराब तस्वीर हैंडलिंग के लिए क्षमा करें। उम्मीद है की यह मदद करेगा।
ठीक है, मेरे पास आपके लिए कोई समाधान नहीं है * (हालांकि मेरा आंत मुझे बताता है कि एक ओवरलैपिंग अंतराल खोजने के लिए गतिशील प्रोग्रामिंग समाधान से संबंधित है) *, लेकिन मैं साबित कर सकता हूं कि आपका समाधान * (दिया गया है नीचे दिए गए उत्तर पर एक टिप्पणी में) * समस्या के इस विशिष्ट उदाहरण के लिए इष्टतम है: आप आसानी से साबित कर सकते हैं कि किसी भी समाधान की अधिकतम ऊंचाई कभी भी अधिकतम (एक कॉलम में वर्गों की राशि) से कम नहीं हो सकती है, इसलिए यदि आपको लगता है एक समाधान जो उसके बराबर है, यह इष्टतम होना चाहिए। –
हम यह भी दिखा सकते हैं कि आपका एल्गोरिदम इष्टतम नहीं है: बाईं ओर एक-दूसरे के शीर्ष पर छवियों के दो पतले ब्लॉक 3, फिर ऊंचाई 4 का एक बहुत चौड़ा ब्लॉक, फिर दाईं ओर ऊंचाई 5 का एक पतला ब्लॉक। –
@Andreas सुनिश्चित करें कि मेरा जवाब याद न करें - मैंने इसमें कुछ समय लगाया है। :) –