रुबिक के घन को हल करने के लिए जावा में कोड के लिए अपेक्षाकृत आसान एल्गोरिदम क्या होगा। दक्षता भी महत्वपूर्ण है लेकिन एक माध्यमिक विचार है।रुबिक के घन के लिए एल्गोरिदम कोड कोड करना सबसे आसान है?
उत्तर
सरल गैर तुच्छ एल्गोरिथ्म मैंने पाया यह एक है है:
http://www.chessandpoker.com/rubiks-cube-solution.html
यह कोड करने के लिए बहुत मुश्किल नहीं लग रहा है। Yannick M.'s answer में उल्लिखित लिंक भी अच्छा दिखता है, लेकिन 'the cross' का समाधान ऐसा लगता है कि यह मेरे लिए थोड़ा और जटिल हो सकता है।
कई खुले स्रोत सॉल्वर कार्यान्वयन हैं जिन्हें आप देखना चाहते हैं। यहां एक Python implementation है। यह Java applet में एक सॉल्वर भी शामिल है, और स्रोत कोड उपलब्ध है। डाउनलोड करने योग्य स्रोत कोड के साथ भी Javascript solver भी है।
Anthony Gatlin's answer इस कार्य के लिए प्रोलॉग की अच्छी-अनुकूलता के बारे में एक उत्कृष्ट बिंदु बनाता है। अपने Prolog solver को लिखने के तरीके के बारे में एक विस्तृत लेख यहां दिया गया है। यह उपयोग की जाने वाली हेरिस्टिक विशेष रूप से दिलचस्प है।
जेएस सॉल्वर से लिंक टूटा हुआ प्रतीत होता है। –
जब तक आपको सही समाधान न मिल जाए तब तक यादृच्छिक संचालन करें। सबसे आसान एल्गोरिदम और कम से कम कुशल।
की जांच करना चाह सकते हैं: http://peter.stillhq.com/jasmine/rubikscubesolution.html
एक एल्गोरिथ्म के एक चित्रमय प्रतिनिधित्व एक 3x3x3 रूबिक क्यूब को हल करने के
मुझे लगता है कि आपका प्रश्न जावा से संबंधित है, लेकिन व्यावहारिक नोट पर, प्रोलॉग जैसी भाषाएं रूबिक के घन को हल करने जैसी बेहतर उपयुक्त समस्याएं हैं। मुझे लगता है कि यह शायद एक वर्ग के लिए है और आपके पास उपकरण की पसंद के रूप में कोई छूट नहीं हो सकती है।
आप इसे बीएफएस (ब्रेड-फर्स्ट-सर्च) करके कर सकते हैं। मुझे लगता है कि कार्यान्वयन इतना कठिन नहीं है (यह ग्राफ की श्रेणी के तहत सबसे सरल एल्गोरिदम में से एक है)। कतार नामक डेटा संरचना के साथ ऐसा करके, आप वास्तव में क्या काम करेंगे, एक बीएफएस पेड़ बनाने और इच्छा की स्थिति से दी गई स्थिति से तथाकथित सबसे छोटा रास्ता खोजने के लिए है। इस एल्गोरिदम की कमी यह है कि यह पर्याप्त कुशल नहीं है (बिना किसी संशोधन के, 2x2x2 क्यूबिक को हल करने के लिए भी आवश्यक समय ~ 5 मिनट है)। लेकिन आप गति को बढ़ावा देने के लिए हमेशा कुछ चालें पा सकते हैं।
ईमानदार होने के लिए, यह एमआईटी से "Introduction of Algorithm" नामक पाठ्यक्रम के होमवर्क में से एक है। होमवर्क का लिंक यहां दिया गया है: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/assignments/MIT6_006F11_ps6.pdf। उनके पास कुछ पुस्तकालय हैं जो आपको कल्पना करने में मदद करते हैं और अनावश्यक प्रयास से बचने में आपकी सहायता करते हैं।
प्रश्न खराब तरीके से phrased है और सवाल "सही" वोट दिया गया है, वास्तव में, सही जवाब नहीं है। इससे पता चलता है कि "कोड के लिए सबसे आसान एल्गोरिदम" आप जो चाहते हैं वह नहीं हो सकता है --- प्रोग्राम कभी खत्म नहीं हो सकता है। और यह दिखाता है कि आपको दक्षता से चिंतित होने की आवश्यकता क्यों है। – vy32
मुझे लूट लिया गया * क्रिज़ *: पी – Rushyo
आप बस इतना ही कह सकते हैं, 'कोड के लिए सबसे आसान एल्गोरिदम क्या है जो हमारे जीवनकाल में परिणाम देता है' :-) –