एक पैटर्न डेटाबेस में अनुक्रमण - कोरफ के ऑप्टिमल रूबिक क्यूब समाधान


11

एक मजेदार प्रोजेक्ट के रूप में, मैं रिचर्ड कोरफ के - C # कार्यान्वयन पर काम कर रहा हूं - जो कि रुबिक के क्यूब के लिए ऑप्टिमल सॉल्यूशंस का उपयोग करते हुए माइग्रेशन डेटाबेस का उपयोग कर रहा है।

https://www.cs.princeton.edu/courses/archive/fall06/cos402/papers/korfrubik.pdf

मेरे पास वास्तव में यह काम कर रहा है, मैं सिर्फ अपने समाधान में सुधार करने की कोशिश कर रहा हूं।

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

मेरा प्रश्न इस सूचकांक को उत्पन्न करने के सर्वोत्तम तरीके के बारे में है।

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

मेरा मानना ​​है कि कोर्फ और शुल्ट्ज़ ने अपने 2005 के पेपर में क्यूब के इंडेक्स को निर्धारित करने के लिए एक बेहतर तरीका बताया है, जिसे "लार्ज स्केल ब्रेड-फर्स्ट सर्च" कहा जाता है।

https://www.aaai.org/Papers/AAAI/2005/AAAI05-219.pdf

यह पेपर एक क्रमांकन के लेक्सोग्राफिक क्रम से दूर एक सूचकांक बनाने के लिए एक एल्गोरिदम का वर्णन करता है। मूल रूप से आप क्रमचय {1, 2, 3} ले सकते हैं और यह पता लगा सकते हैं कि यह 0. {1, 3, 2} के सूचकांक के साथ सबसे छोटा है। 1 और 1 के सूचकांक के साथ अगला है।

मुझे लगता है कि मुझे इस एल्गोरिथ्म को एक रूबिक क्यूब में लागू करने में सक्षम होना चाहिए ताकि एक पैटर्न डेटाबेस के भीतर इसके सूचकांक को प्राप्त किया जा सके, लेकिन मुझे यह जानने में कठिन समय मिल रहा है कि यह अभ्यास में कैसे काम करेगा।

उदाहरण के लिए कोनों में केवल पैटर्न डेटाबेस में सभी रूबिकस क्यूब्स होते हैं, जिनके किनारे के स्टिकर हटा दिए गए होते हैं। इस सेट में बिल्कुल 88,179,840 क्यूब्स हैं। रूबिक्स क्यूब पर कोई भी कोने क्यूबी 24 अलग-अलग राज्यों में से एक में हो सकता है। 8 वें कोने के क्यूब की स्थिति की गणना अन्य 7 के आधार पर की जा सकती है, इसलिए कोनों में क्यूब्स केवल पैटर्न डेटाबेस में से प्रत्येक में 7 मान 0 और 23 हैं।

जैसे {0, 3, 6, 9, 12, 15, 18, 21} सभी हटाए गए स्टिकर के साथ "हल" क्यूब को परिभाषित करता है।

अगर मैं सामने वाले के चेहरे को 90 डिग्री पर घुमाऊं तो क्रमपरिवर्तन हो सकता है: {0, 3, 11, 23, 12, 15, 8, 20}

क्या इस तरह के क्रमपरिवर्तन से बाहर एक सूचकांक प्राप्त करने का एक तरीका है?


आपको शायद यह दिलचस्प लगेगा ।
टॉम वान डेर ज़ंडेन

दिलचस्प! आप कहते हैं कि वह कागज़ में कुछ "चमकता हुआ" है। उस अनुभाग के बारे में अधिक विशिष्ट होना बेहतर होगा जो "फ़ेलशेड आउट" नहीं है। आप यह भी कहते हैं कि आपके पास यह काम है। आपका प्रारंभिक अनुक्रमण कार्यान्वयन क्या है? क्या यह एक स्कूल परियोजना है? इस पर आगे कंप्यूटर साइंस चैट का सुझाव दें। यह भी इसके बारे में ब्लॉगिंग या कोड सोर्सिंग खोलने के लिए दूसरों के लिए उपयोगी हो सकता है और अधिक विस्तार के लिए नेतृत्व कर सकते हैं। यह भी कागज किसी भी हैशिंग कार्यों को संदर्भित नहीं करता है ...
vzn

मैंने कोरफ के एल्गोरिथ्म को लागू किया: github.com/benbotto/rubiks-cube-cracker । : मैं, भी, में पाया गया अनुक्रमण मुश्किल तो मैं मध्यम पर इसके बारे में एक लेख लिखा था medium.com/@benjamin.botto/...
avejidah

जवाबों:


6

(पीमैं,मैं)(पी0,...,पी7)(0,...,7)मैं{0,1,2}70,...,68!37=88179840{0,...,23}(पीमैं,मैं)(पी0,...,पी7)0,...,637पी+8!+पी


हे युवल, टिप्पणी के लिए धन्यवाद। मेरे लिए, ० से २३ हैं, मैं एक कोने के क्यूब में अद्वितीय स्थिति / अभिविन्यास की पहचान कैसे कर सकता हूं। times स्थिति के हिसाब से times पदों की संख्या ३ orient है। २४। सौभाग्य से मैं आसानी से इस मूल्य को अलग स्थिति / ओरिएंटेशन ट्यूपल में विभाजित कर सकता हूं। आपके उत्तर ने मुझे इस कोड तक पहुँचाया जो आपके द्वारा वर्णित एल्गोरिदम का कार्यान्वयन है। github.com/brownan/Rubiks-Cube-Solver/blob/master/cornertable.c मुझे इसे और अधिक सामान्य बनाने के लिए थोड़ा काम करने की आवश्यकता होगी (ताकि मैं केवल "कोनों" की तुलना में अलग-अलग पैटर्न को संभाल सकूं) लेकिन अब सही ट्रैक thx पर Im!
कॉस्मॉस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.