एक अनुकूलन समस्या में मैं एक कतार में कई उम्मीदवार समाधान रखता हूं जो मैं उनके प्राथमिकता के अनुसार जांचता हूं।सबसे प्रासंगिक वस्तुओं के साथ बड़ी प्राथमिकता कतार कैसे रखें?
प्रत्येक बार जब मैं एक उम्मीदवार को संभालता हूं, तो इसे कतार के रूप में हटा दिया जाता है लेकिन यह कई नए उम्मीदवारों को उत्पन्न करता है जिससे कैडिडेट्स की संख्या तेजी से बढ़ती है। इसे संभालने के लिए मैं प्रत्येक उम्मीदवार को प्रासंगिकता असाइन करता हूं, जब कोई उम्मीदवार कतार में जोड़ा जाता है, यदि कोई और स्थान उपलब्ध नहीं है, तो मैं कम से कम प्रासंगिक वर्तमान में कतार में उम्मीदवार को प्रतिस्थापित करता हूं (यदि एप्रोपीएट) ।
यह कुशलतापूर्वक करने के लिए मैं उम्मीदवारों और दो जुड़े अप्रत्यक्ष बाइनरी ढेर के साथ एक बड़ा (निश्चित आकार) सरणी रखता हूं: कोई उम्मीदवारों को प्राथमिकता आदेश कम करने में और दूसरे को आरोही प्रासंगिकता में संभालता है।
यह मेरे उद्देश्यों के लिए पर्याप्त कुशल है और आवश्यक पूरक स्थान लगभग 4 इंच/उम्मीदवार है जो उचित भी है। हालांकि यह कोड के लिए जटिल है, और यह इष्टतम प्रतीत नहीं होता है।
मेरा प्रश्न यह है कि यदि आप दक्षता खोए बिना इस कार्य को निष्पादित करने के लिए अधिक पर्याप्त डेटा संरचना या अधिक प्राकृतिक तरीके से जानते हैं।
एक्स कम से कम प्रासंगिक/पूर्व उम्मीदवारों को सम्मिलित करने के बारे में क्या नहीं है? एक घातीय वृद्धि के साथ, वैसे भी उन तक पहुंचा नहीं जाएगा। कतार के प्रारंभिक डेटा प्राप्त करने के लिए आप कतार के आकार के आधार पर एक्स को अलग करना चाहते हैं। लेकिन फिर भी, आपकी कतार भर जाएगी, क्या स्टॉप हालत है? –
@TomWij आप नहीं जानते कि वे कम से कम प्रासंगिक हैं जब तक कि आप कुछ उम्मीदवारों को बदतर न करें। समस्याओं में मुझे दिलचस्पी है कि हमें कोई स्टॉप कंडीशन नहीं है –
जब मैं एक नया उम्मीदवार उत्पन्न करता हूं तो मैं एक साधारण आसानी से गणना करने योग्य संपत्ति के आधार पर एक मूल्य की गणना करता हूं जो मुझे लगता है कि शायद अधिक अच्छा समाधान उत्पन्न होगा। तो प्रासंगिकता एक ह्युरिस्टिक है जिसे कुछ अन्य उम्मीदवारों (और उनके वंश) को दूसरों के ऊपर _a priory_ पसंद करते हैं, मुझे यकीन नहीं है कि इसे कैसे कॉल किया जाए। –