मैं एक ग्राफ-खोज अनुकूलन समस्या हल कर रहा हूं। मुझे एक निर्देशित भारित ग्राफ के माध्यम से k सर्वोत्तम एसाइक्लिक लघु-पथ खोजने की आवश्यकता है।
मुझे पता है कि कई सटीक और अनुमानित k-best एल्गोरिदम हैं, लेकिन हाल के अधिकांश शोध बहुत बड़े, बहुत कम जुड़े हुए ग्राफ़ (जैसे सड़क मार्ग और दिशाओं) की ओर उन्मुख प्रतीत होते हैं, और मेरा ग्राफ़ न तो है।
मेरी समस्या के विशिष्ट पहलू:
ग्राफ में लगभग 160 कोने हैं।
ग्राफ लगभग पूरी तरह से जुड़ा हुआ है (अप्रत्यक्ष रूप से, इसलिए ~ 160 ^ 2 ~ = 25k किनारों)
k काफी छोटा होगा (शायद 10 से कम)
अधिकतम पथ की लंबाई शायद बंधी होगी और साथ ही बहुत छोटी (जैसे 3-5 किनारे)
मैंने ऊपर iter एसाइक्लिक ’कहा था, लेकिन सिर्फ दोहराने के लिए - समाधान में चक्र शामिल नहीं होना चाहिए। यह 1-सर्वश्रेष्ठ लघु पथ के लिए कोई समस्या नहीं है, लेकिन यह k-best के लिए एक समस्या बन जाता है - उदाहरण के लिए, एक सड़क मार्ग पर विचार करें - A से B तक का दूसरा सबसे छोटा मार्ग 1-सर्वश्रेष्ठ के समान हो सकता है, एक ब्लॉक के चारों ओर एक त्वरित यात्रा। यह गणितीय रूप से इष्टतम हो सकता है, लेकिन बहुत उपयोगी समाधान नहीं है। ;-)
हमें प्रत्येक गणना के लिए किनारों पर फिर से वजन करने की आवश्यकता हो सकती है। एक किनारे की लागत में कई कारकों का भारित योग होता है, और अंतिम आवश्यकताएं (जब भी हम उन्हें प्राप्त करते हैं) किसी उपयोगकर्ता को उन भार कारकों के अपने प्राथमिकताकरण को निर्दिष्ट करने की अनुमति दे सकते हैं, जो कि बढ़त भार को बदल देते हैं। यह एक अपेक्षाकृत छोटा ग्राफ है (हमें कुछ सौ केबी में इसका प्रतिनिधित्व करने में सक्षम होना चाहिए), इसलिए यह संभव है कि ग्राफ़ को स्मृति में क्लोन करना, पुनः-भार को लागू करना और फिर क्लोन किए गए ग्राफ़ पर खोज को निष्पादित करना उचित है। लेकिन अगर मक्खी पर वजन की गणना करते समय खोज करने का एक और प्रभावी तरीका है, तो मुझे दिलचस्पी है।
मैं सेंटोस (K सबसे छोटा पथ एल्गोरिदम), इपस्टीन 1997 (k Shortest पाथ्स ढूँढना) और अन्य में वर्णित एल्गोरिदम को देख रहा हूं। येन का एल्गोरिथ्म ब्याज का है, मुख्य रूप से मौजूदा जावा कार्यान्वयन के कारण । मैं शोध पत्रों को पढ़ने से डरता नहीं हूं, लेकिन मुझे लगा कि यह मेरी समस्या का विवरण बाहर फेंकने और कुछ पढ़ने के समय को बचाने के लिए संकेत देने के लिए कह रहा है।
और अगर आपके पास जावा कार्यान्वयन के संकेत हैं, तो और भी बेहतर।