मैं here से कोड पर निर्माण कर रहा हूं। मैं एक सेट के सभी क्रमपरिवर्तन उत्पन्न करने के लिए करना चाहते हैं, उदाहरण के लिए (धागा से लिया गया):एक सेट की कुशलतापूर्वक और भेद के साथ क्रमशः
Collection: 1, 2, 3
Permutations: {1, 2, 3}
{1, 3, 2}
{2, 1, 3}
{2, 3, 1}
{3, 1, 2}
{3, 2, 1}
हर सेट के लिए संभव क्रमपरिवर्तन रहे हैं, लेकिन यह नहीं है कि मैं प्राप्त करने के लिए चाहते हैं। विचार के लिए ले लो,, सेट निम्नलिखित:
यह क्रमपरिवर्तन, का एक चरम amout प्राप्त करेगी। गणना करने के लिए यह असाधारण लंबा समय लगेगा, क्योंकि प्रत्येक शून्य को अद्वितीय माना जा रहा है।
इसके बजाय, मैं केवल विशिष्ट क्रमपरिवर्तन उत्पन्न करना चाहता हूं। अगर हम ऐसा करते हैं, वहाँ केवल
क्रमपरिवर्तन remaining, के रूप में 18 आइटम समान (के) कर रहे हैं।
अब, मैं निर्दिष्ट थ्रेड से कोड चला सकता हूं और डुप्लिकेट क्रमपरिवर्तन को समाप्त कर परिणामों को एक हैशसेट में संग्रहीत कर सकता हूं। हालांकि, यह बेहद अक्षम होगा। मैं सीधे भेदभाव के साथ क्रमपरिवर्तन उत्पन्न करने के लिए एक एल्गोरिदम की तलाश में हूं।
मैं उलझन में हूं। लिंक्ड थ्रेड में कोड एक लेक्सिकोग्राफिक वृद्धि कर रहा है, जो वास्तव में डुप्लिकेट तत्वों के साथ मल्टीसेट पर ठीक काम करता है, कोई हैशसेट आवश्यक नहीं है। –
वैसे मैं कहूंगा कि आपको केवल एल्गोरिदम लागू करने से पहले इनपुट के अलग-अलग सबसेट का उपयोग करना है। –
@ डेविडइसेनस्टैट यह ठीक काम करता है, लेकिन गणना करने में काफी समय लगता है। अगर मैं हैशसेट का उपयोग नहीं करता, तो मेरे पास 2.4 * 10^18 परिणाम होंगे। – jacobz