बहुभुज के भीतर Polygons पैकिंग ArcGIS डेस्कटॉप का उपयोग कर?


25

मेरे पास बूलियन रैस्टर है।

रेखापुंज के धूसर क्षेत्रों में मैं एक निर्दिष्ट सीमा के भीतर दिए गए आकार के बहुभुज को फिट करना चाहूंगा।

मूल रूप से, मेरे पास एक अनियमित बहुभुज है, और मैं यथासंभव कई बार अनियमित बहुभुज की सीमा के भीतर एक ज्ञात बहुभुज "फिट" करना चाहूंगा।

बहुभुज की दिशा मायने नहीं रखती है, और यह एक वर्ग हो सकता है। मैं इसके लिए ग्राफिक रूप से फिट होना चाहूंगा, लेकिन अगर यह सिर्फ बहुभुज (# फिट) के लिए एक नंबर संलग्न करता है जो भी काम करेगा।

मैं ArcGIS डेस्कटॉप 10 का उपयोग कर रहा हूं।


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

1
मेरे पोस्ट को संपादित करने के लिए @whuber धन्यवाद। हाँ, समय की पर्याप्त संख्या काम करेगी। या, किसी दिए गए कोण अभिविन्यास के बारे में कैसे। पूर्व। ऊपर की छवि में, मैंने कई बार बहुभुज को फिट किया है जैसा कि उस अभिविन्यास में हो सकता है, क्या मैंने उन्हें 90 डिग्री घुमाया था जो आप एक और फिट कर सकते थे ...
थाड

1
हाँ, लेकिन यह भी नुकसान के साथ भरा है। कुछ प्राथमिक हैं। उदाहरण के लिए, ईएसआरआई-लेखक और -प्रकाशित पाठ, "गेटिंग टू आरकव्यू जीआईएस" (संस्करण 3 के लिए) में एक व्यायाम शामिल था जिसमें एक फुटबॉल मैदान का प्रतिनिधित्व करने वाले एक आयत को बहुभुज के भीतर अंतःक्रियात्मक रूप से रखा गया था। समस्या यह थी, व्यायाम का उत्तर गलत था क्योंकि लेखक डेटा को प्रोजेक्ट करने में विफल रहा था और भौगोलिक निर्देशांक का उपयोग करने में त्रुटियां काफी थीं ताकि परिणाम को प्रभावित किया जा सके। उत्तर जीआईएस में अच्छा लग रहा था, लेकिन अगर किसी ने उस क्षेत्र का निर्माण करने का प्रयास किया था, तो उन्होंने पाया कि इसके लिए पर्याप्त जगह नहीं थी :-)।
whuber

6
@ मुझे लगता है कि उन्हें लगा कि "बॉल पार्क" का आंकड़ा पर्याप्त है।
किर्क कुएकेन्डल

2
अनियमित बहुभुज के भीतर अनियमित बहुभुज के सामान्य मामले में, यह एक कम्प्यूटेशनल रूप से अंतर करने योग्य समस्या है: एक इष्टतम समाधान खोजना सभी मामलों में एक प्रशंसनीय लक्ष्य नहीं है, और यह एक तकनीकी दृष्टिकोण से एनपी-पूर्ण होने की संभावना है: उन मामलों को जो पूर्व निर्धारित नहीं किया जा सकता है। यदि आप समस्या को काफी कम करते हैं, तो कुछ पुनरावृत्त यादृच्छिक फिटिंग एल्गोरिदम आपको यथोचित उच्च संख्या देने की संभावना रखते हैं । मेरी भावना अगर यह एक काम है कि वे सही उत्तर की तलाश में नहीं हैं , तो वे रचनात्मक दृष्टिकोण की तलाश कर रहे हैं।
MappingTomorrow

जवाबों:


22

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

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

इस समस्या पर अड़चन केवल यह है कि समाधान के भीतर कोई दो टाइलें ओवरलैप नहीं हो सकती हैं।

यह और अधिक संक्षेप में एक छोटे से फंसाया जा सकता है, एक तरह से कुशल गणना के लिए अनुकूल में बहुभुज में कोशिकाओं की गणना द्वारा भरा जाना है ( "क्षेत्र") 1, 2, ..., एम । किसी भी टाइल के प्लेसमेंट को शून्य और लोगों के एक संकेतक वेक्टर के साथ एन्कोड किया जा सकता है, जिससे लोगों को टाइल और ज़ीरोस द्वारा कवर कोशिकाओं के अनुरूप हो सकता है। इस एन्कोडिंग में, सभी टाइल का एक संग्रह के बारे में आवश्यक जानकारी से पाया जा सकता है संक्षेप (हमेशा की तरह, घटक द्वारा घटक) उनके सूचक वैक्टर: योग अशून्य वास्तव में हो जाएगा जहां कम से कम एक टाइल कवर एक सेल और राशि अधिक हो जाएगा एक से अधिक दो या दो से अधिक टाइल ओवरलैप। (योग प्रभावी रूप से ओवरलैप की मात्रा को गिनता है।)

एक और थोड़ा अमूर्त: संभव टाइल प्लेसमेंट के सेट को खुद ही कहा जा सकता है, 1, 2, ..., एन । टाइल प्लेसमेंट के किसी भी सेट का चयन स्वयं एक संकेतक वेक्टर से मेल खाता है जहां लोग टाइल को रखने के लिए नामित करते हैं।

यहां विचारों को ठीक करने के लिए एक छोटा चित्रण किया गया है । यह गणना करने के लिए उपयोग किए जाने वाले मैथेमेटिका कोड के साथ है , ताकि प्रोग्रामिंग कठिनाई (या इसके अभाव) स्पष्ट हो सके।

सबसे पहले, हम एक क्षेत्र को टाइल किए जाने का चित्रण करते हैं:

region =  {{0, 0, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}};

चित्र 1: क्षेत्र

यदि हम इसकी कोशिकाओं को बाएं से दाएं, शीर्ष पर शुरू करते हैं, तो क्षेत्र के लिए संकेतक वेक्टर में 16 प्रविष्टियां हैं:

Flatten[region]

{, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}

चलो 90 डिग्री के गुणकों द्वारा सभी घुमावों के साथ, निम्नलिखित टाइल का उपयोग करें:

tileSet = {{{1, 1}, {1, 0}}};

चित्र 2: टाइल

रोटेशन उत्पन्न करने के लिए कोड (और प्रतिबिंब):

apply[s_List, alpha] := Reverse /@ s;
apply[s_List, beta] := Transpose[s];
apply[s_List, g_List] := Fold[apply, s, g];
group = FoldList[Append, {}, Riffle[ConstantArray[alpha, 4], beta]];
tiles = Union[Flatten[Outer[apply[#1, #2] &, tileSet, group, 1], 1]];

(यह कुछ हद तक अपारदर्शी गणना /math//a/159159 पर एक उत्तर में समझाया गया है , जो यह दर्शाता है कि यह बस एक टाइल के सभी संभव घुमाव और प्रतिबिंब पैदा करता है और फिर किसी भी डुप्लिकेट परिणामों को निकालता है।)

मान लीजिए कि हम यहाँ दिखाए गए अनुसार टाइल लगा रहे हैं:

चित्रा 3: टाइल प्लेसमेंट

कक्ष 3, 6 और 7 इस प्लेसमेंट में शामिल हैं। यह संकेतक वेक्टर द्वारा निर्दिष्ट है

{, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}

यदि हम इस टाइल को एक कॉलम को दाईं ओर शिफ्ट करते हैं, तो वह संकेतक वेक्टर इसके बजाय होगा

{, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0}

इन दोनों पदों पर एक साथ टाइल लगाने की कोशिश का संयोजन इन संकेतकों के योग से निर्धारित होता है,

{, 0, 1, 1, 1, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0}, 0}

सातवें स्थान पर 2 इन ओवरलैप को एक सेल (दूसरी पंक्ति नीचे, बाएं से तीसरा स्तंभ) में दिखाता है। क्योंकि हम ओवरलैप नहीं चाहते हैं, हमें आवश्यकता होगी कि किसी भी वैध समाधान में वैक्टर का योग 1 से अधिक कोई प्रविष्टि न हो।

यह पता चला है कि इस समस्या के लिए, टाइल्स के लिए अभिविन्यास और स्थिति के 29 संयोजन संभव हैं। (यह एक संपूर्ण खोज से जुड़े कोडिंग का एक सरल सा के साथ मिला था।) हम के रूप में उनके संकेतक बनाकर सभी 29 संभावनाओं को दर्शाती कर सकते हैं स्तंभ वैक्टर। (पंक्तियों के बजाय स्तंभों का उपयोग करना पारंपरिक है।) यहां परिणामस्वरूप सरणी की एक तस्वीर है, जिसमें 16 पंक्तियाँ होंगी (आयत में प्रत्येक संभावित सेल के लिए एक) और 29 कॉलम:

makeAllTiles[tile_, {n_Integer, m_Integer}] := 
  With[{ m0 = Length[tile], n0 = Length[First[tile]]},
   Flatten[
    Table[ArrayPad[tile, {{i, m - m0 - i}, {j, n - n0 - j}}],  {i, 0, m - m0}, {j, 0, n - n0}], 1]];
allTiles = Flatten[ParallelMap[makeAllTiles[#, ImageDimensions[regionImage]] & , tiles], 1];
allTiles = Parallelize[
   Select[allTiles, (regionVector . Flatten[#]) >= (Plus @@ (Flatten[#])) &]];
options = Transpose[Flatten /@ allTiles];

चित्र 4: विकल्प सरणी

(पिछले दो संकेतक वैक्टर बाईं ओर पहले दो कॉलम के रूप में दिखाई देते हैं।) तेज-तर्रार पाठक ने समानांतर प्रसंस्करण के कई अवसरों पर ध्यान दिया हो सकता है: ये गणना कुछ सेकंड ले सकती हैं।

सभी पूर्वगामी मैट्रिक्स संकेतन का उपयोग करके कॉम्पैक्ट रूप से बहाल किया जा सकता है:

  • F , M पंक्तियों और N कॉलमों के साथ विकल्पों की यह सरणी है ।

  • X , लंबाई N के टाइल प्लेसमेंट का एक संकेतक है ।

  • b एक N -vector है।

  • आर क्षेत्र के लिए संकेतक है; यह एक एम- ट्रेक्टर है।

किसी भी संभावित समाधान एक्स से जुड़ी कुल "अच्छाई" आरएफएक्स के बराबर होती है , क्योंकि एफएक्स एक्स द्वारा कवर की गई कोशिकाओं का संकेतक है और आर इन मूल्यों के साथ उत्पाद । ( यदि हम इस क्षेत्र में कुछ क्षेत्रों के पक्ष में या बचने के लिए समाधान चाहते हैं, तो हम आर का वजन कर सकते हैं ।) यह अधिकतम होना है। क्योंकि हम इसे ( RF ) के रूप में लिख सकते हैं । एक्स , यह एक है रैखिक के समारोह एक्स : यह महत्वपूर्ण है। (नीचे दिए गए कोड में, चर cमें RF शामिल है ।)

अड़चनें हैं कि

  1. एक्स के सभी तत्व गैर-नकारात्मक होने चाहिए;

  2. एक्स के सभी तत्व 1 से कम होना चाहिए (जो कि बी में संबंधित प्रविष्टि है );

  3. X के सभी तत्व अभिन्न होने चाहिए।

बाधाओं (1) और (2) इसे एक रैखिक कार्यक्रम बनाते हैं , जबकि तीसरी आवश्यकता इसे पूर्णांक रैखिक कार्यक्रम में बदल देती है ।

वास्तव में इस रूप में व्यक्त पूर्णांक रैखिक कार्यक्रमों को हल करने के लिए कई पैकेज मौजूद हैं । वे एम और एन के मूल्यों को दसियों या सैकड़ों सैकड़ों में संभालने में सक्षम हैं । यह शायद कुछ वास्तविक दुनिया के अनुप्रयोगों के लिए पर्याप्त है।


हमारे पहले चित्रण के रूप में, मैंने गणितज्ञ 8 के LinearProgrammingआदेश का उपयोग करके पूर्ववर्ती उदाहरण के लिए एक समाधान की गणना की । (यह एक रेखीय उद्देश्य फ़ंक्शन को कम कर देगा । उद्देश्य फ़ंक्शन की उपेक्षा करके न्यूनतमकरण को आसानी से अधिकतम करने के लिए बदल दिया जाता है।) इसने 0.011 सेकंड में एक समाधान (टाइल्स और उनके पदों की सूची के रूप में) लौटाया:

b = ConstantArray[-1, Length[options]];
c = -Flatten[region].options;
lu = ConstantArray[{0, 1}, Length[First[options]]];
x = LinearProgramming[c, -options, b, lu, Integers, Tolerance -> 0.05];
If[! ListQ[x] || Max[options.x] > 1, x = {}];
solution = allTiles[[Select[x Range[Length[x]], # > 0 &]]];

चित्र 5: समाधान

ग्रे कोशिकाएं इस क्षेत्र में बिल्कुल नहीं हैं; इस समाधान द्वारा सफेद कोशिकाओं को कवर नहीं किया गया था।

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

दूसरे दृष्टांत के रूप में , अधिक यथार्थवादी होने के लिए, आइए प्रश्न में क्षेत्र पर विचार करें। छवि को आयात करने और इसे फिर से शुरू करने से, मैंने इसे 69 द्वारा 81 ग्रिड के साथ प्रतिनिधित्व किया:

चित्र 6: क्षेत्र

इस क्षेत्र में इस ग्रिड की 2156 कोशिकाएँ शामिल हैं।

चीजों को दिलचस्प बनाने के लिए, और रैखिक प्रोग्रामिंग सेटअप की व्यापकता को स्पष्ट करने के लिए, आइए इस क्षेत्र को यथासंभव दो प्रकार के आयतों के साथ कवर करने का प्रयास करें :

चित्र 7: टाइल्स

एक 17 से 9 (153 सेल) और दूसरा 15 बाई 11 (165 सेल) है। हम दूसरे का उपयोग करना पसंद कर सकते हैं, क्योंकि यह बड़ा है, लेकिन पहला स्किनियर है और तंग जगहों पर फिट हो सकता है। चलो देखते हैं!

कार्यक्रम में अब एन = 5589 संभव टाइल प्लेसमेंट शामिल हैं। यह काफी बड़ा है! गणना के 6.3 सेकंड के बाद, गणितज्ञ इस दस-टाइल समाधान के साथ आया:

चित्र 8: समाधान

कुछ सुस्त ( .eg) के कारण, हम नीचे की बाईं टाइल को इसके कॉलम में चार कॉलम तक स्थानांतरित कर सकते हैं), जाहिर है कुछ अन्य समाधान इस से थोड़ा अलग हैं।


1
इस समाधान (लेकिन काफी नहीं अच्छा के रूप में) के पिछले संस्करण पर दिखाई देता है मेथेमेटिका पर साइट mathematica.stackexchange.com/a/6888 । यह भी ध्यान देने योग्य हो सकता है, कि फॉर्मुलेशन की एक मामूली भिन्नता का उपयोग इस क्षेत्र को पूरी तरह से कुछ टाइलों के साथ कवर करने की समस्या को हल करने के लिए किया जा सकता है (कुछ ओवरलैप्स की अनुमति देता है, बेशक): यह "गड्ढे पैचिंग" को हल करेगा संकट।
whuber

1
अंतरिक्ष के हितों में, यह उत्तर कुछ संभावित सहायक सुधारों का वर्णन नहीं करता है। उदाहरण के लिए, सभी संभावित टाइल पदों (संकेतक वैक्टर के रूप में) को खोजने के बाद, आप उन सभी को यह पता लगाने के लिए जोड़ सकते हैं कि कौन सी कोशिकाएं वास्तव में किसी टाइल से ढकी हो सकती हैं। ऐसी कोशिकाओं का सेट दूसरे उदाहरण में दो अलग-अलग जुड़े घटकों में टूट जाता है। इसका मतलब यह है कि समस्या को स्वतंत्र रूप से दो घटकों में हल किया जा सकता है, इसके आकार को कम करना (और इसलिए कंप्यूटिंग समय)। वास्तविक दुनिया की समस्याओं से निपटने के लिए ऐसे शुरुआती सरलीकरण महत्वपूर्ण हैं।
whuber

महान प्रयास और जवाब। क्रिस का जवाब भी मददगार था। मदद के लिए सभी का धन्यवाद! काम करता है, और मुझे फिर से सही दिशा में आगे बढ़ रहा है।
थाड

वाह! मुझे इसी तरह की समस्या में दिलचस्पी थी और इस पोस्ट ने मुझे नया दृष्टिकोण दिया। धन्यवाद। क्या होगा यदि आर बड़ा है (जैसे 140x140 R20000), क्या गणना लागत को कम करने के लिए कोई उपाय हैं? क्या आप इस समस्या से संबंधित कोई कागजात जानते हैं? मेरे खोज कीवर्ड मुझे सही तरीके से (अब तक) लीड नहीं करते हैं।
nimcap

@nimcap यह समस्याओं का एक महत्वपूर्ण वर्ग है, इसलिए इस पर बहुत शोध चल रहा है। खोज करने के लिए कीवर्ड "मिश्रित पूर्णांक रैखिक कार्यक्रम" के साथ शुरू होता है और आपको जो भी मिलता है, उसके आधार पर वहां से शाखा देता है।
whuber

5

पॉलिगन्स की पैकिंग के लिए जेनेटिक एल्गोरिदम पर लिंक , न्यूनतम स्पेसिंग में विवश क्षेत्र के भीतर अधिकतम अंक प्राप्त करने के लिए एल्गोरिथ्म में एक समान प्रश्न के उत्तर में प्रदान किया गया है ? , उपयोगी हो सकता है। ऐसा लगता है कि विधि को मनमाने ढंग से कंटेनर के आकार के साथ काम करने के लिए सामान्यीकृत किया जा सकता है (और सिर्फ आयताकार नहीं)।


उस कागज में कुछ अच्छे विचार (+1) हैं, लेकिन इसके सभी एल्गोरिदम एक मौलिक तरीके से, आयताकार क्षेत्रों के भीतर बहुभुज को पैक करने पर केंद्रित हैं। इसका कारण यह है कि यह एक असतत डेटा संरचना (उनके झुकाव के साथ बहुभुज का एक अनुक्रम) जो प्रक्रियाओं, जिसमें बहुभुज कर रहे हैं का एक सेट का प्रतिनिधित्व करता है के साथ पैकिंग का प्रतिनिधित्व करता है गिरावट , वर्ग के पक्षों के समानांतर, एक नामित कोने की ओर। ऐसा प्रतीत होता है कि इस तरह के एक सरल असतत एन्कोडिंग अधिक जटिल क्षेत्रों के लिए कम प्रभावी होगा। शायद ग्रिड में क्षेत्रों का प्रारंभिक सरलीकरण मदद करेगा।
whuber

2

आपके द्वारा उल्लेखित अत्यधिक विवश उपसमुच्चय के लिए (एक गड्ढे में वर्ग / त्रिकोणीय टाइलिंग), ऊपर स्पष्ट अनुकूलन को मानते हुए, यह छद्मकोड आपको एक उच्च संकल्प के साथ संभावनाओं के माध्यम से बस ले जाकर समस्या का सामना करने के लिए मजबूर करता है। यह उन परिस्थितियों के लिए सही ढंग से काम नहीं करेगा जहां व्यक्तिगत टाइल घुमाव आयताकार टाइल या अत्यधिक अनियमित कंटेनर की तरह लाभ देख सकते हैं। यह 1 मिलियन पुनरावृत्तियों है, यदि आवश्यक हो तो आप अधिक प्रयास कर सकते हैं।

लंबाई L के किनारों के साथ एक वर्ग मान लें

वर्गों की एक चेकरबोर्ड पैटर्न बनाएं, जो कम से कम कंटेनर की सीमा के आयामों के साथ-साथ प्रत्येक दिशा में कम से कम 1 एल है।

एन = 0

डीएक्स = 0

DY = 0

डीआर = 0

मूल सेंट्रोइड के लिए चेकबोर्ड की स्थिति रीसेट करें

के लिए (आर = 1: 100)

के लिए (Y = 1: 100)

के लिए (एक्स = 1: 100)

एम = कंटेनर के भीतर पूरी तरह से वर्गों की संख्या

यदि (M> N)

डॉ = आर

डीवाई = Y

DX = एक्स

एन = एम

एल / 100 से पूर्व की ओर बिसात बिछाएं

पूर्व की बिसात पर रीसेट करें

एल / 100 द्वारा उत्तर की ओर बिसात बिछाएं

चेकबोर्ड को रीसेट करें

इसके केंद्रक के चारों ओर 3.6 डिग्री सीडब्ल्यू द्वारा चेकबोर्ड को घुमाएं

डीवाई = डीवाई * एल

डीएक्स = डीएक्स * एल

मूल स्थिति और रोटेशन के लिए चेकबोर्ड को रीसेट करें

प्रिंट DR & "," & DX & ", और" & DY & "अंतिम अनुवाद / रोटेशन मैट्रिक्स हैं"

डीआर द्वारा चेकबोर्ड को घुमाएं

DX, DY द्वारा चेकबोर्ड का अनुवाद करें

वर्गों का चयन करें जो पूरी तरह से कंटेनर के भीतर हैं

निर्यात वर्ग


यदि आप 2 से 5 क्षेत्र पर इस प्रक्रिया को एक लंबे किनारे के बीच में एक सेल के साथ लापता होने की कोशिश करते हैं, तो आप पाएंगे कि आप केवल एक 2 को 2 वर्ग में रख सकते हैं। हालांकि, ऐसे दो वर्ग आसानी से फिट हो जाते हैं। समस्या यह है कि वे एक नियमित "बिसात" पैटर्न का हिस्सा नहीं हैं। यह कठिनाई उन चीजों में से एक है जो इस समस्या को काफी कठिन बना देती है।
whuber

1
हाँ। यदि आपके पास एक कंटेनर आकार अनियमित रूप से पर्याप्त है, तो यह कुछ कोशिकाओं के आदेश पर कई असंगत नियमित पैटर्न का समर्थन कर सकता है, यह इष्टतम से बहुत दूर समाप्त होता है। इस तरह की चीजों को संभावना स्थान में जोड़ने से प्रसंस्करण समय बहुत तेजी से बढ़ता है, और आपके द्वारा लक्षित किए जा रहे विशेष मामले के लिए एक निश्चित डिग्री की योजना की आवश्यकता होती है।
मैपिंगटॉमर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.