अहो-कोरासिक एल्गोरिथ्म और राबिन-कार्प एल्गोरिथम के बीच तुलना


11

मैं स्ट्रिंग खोज एल्गोरिदम पर काम कर रहा हूं जो कई पैटर्न खोज का समर्थन करता है। मुझे दो एल्गोरिदम मिले जो कि रनिंग टाइम के मामले में सबसे मजबूत उम्मीदवारों की तरह प्रतीत होते हैं, जैसे कि अहो-कोरसिक और राबिन-कार्प । हालाँकि, मुझे दोनों एल्गोरिदम के बीच कोई व्यापक तुलना नहीं मिली। कौन सा एल्गोरिथ्म अधिक कुशल है? इसके अलावा, कौन सा समानांतर कंप्यूटिंग और कई पैटर्न खोज के लिए अधिक उपयुक्त है? अंत में, कौन से हार्डवेयर संसाधनों की आवश्यकता है?

एसी एल्गोरिथ्म के लिए, खोज चरण में समय लगता है, जबकि यह RK के लिए O ( n m ) है। हालांकि, आरके के लिए चलने का समय ( एन + एम ) है जो इसे एसी के समान बनाता है। मेरा अस्थायी निष्कर्ष यह है कि आरके व्यावहारिक रूप से बेहतर लगता है क्योंकि इसमें एसी जितनी मेमोरी की आवश्यकता नहीं है। क्या वो सही है?O(n+m)O(nm)O(n+m)


क्या आपके सभी पैटर्न एक ही लंबाई के हैं?
हेंड्रिक जनवरी

@ हेंड्रीकैन नं, अलग-अलग लंबाई के पैटर्न
हॉक

यदि पैटर्न अलग-अलग लंबाई के हैं, तो उन्हें आरके का उपयोग करके समानांतर में संसाधित करना कठिन लगता है? विकिपीडिया पृष्ठ से लगता है कि ये पैटर्न समान लंबाई के हैं, हालाँकि हैश को अपडेट करना अलग-अलग लंबाई के लिए किया जा सकता है।
हेंड्रिक जान

क्या आप किसी तरह के सैद्धांतिक अध्ययन या व्यावहारिक अनुभव में रुचि रखते हैं?
राफेल

@ राफेल अकादमिक रूप से, हम अनुभवजन्य रूप से यह साबित करने से पहले कि हम सैद्धांतिक अध्ययन लागू करते थे। मैंने यहां प्रश्न पोस्ट किया है क्योंकि मुझे प्रोग्रामिंग उत्तरों की उम्मीद नहीं है। मुझे एक तार्किक एल्गोरिदम उत्तर की आवश्यकता है
हॉक

जवाबों:


4

इन दो एल्गोरिदम के बीच लेने के लिए असममित रनिंग टाइम विश्लेषण सबसे अच्छा उपकरण होने की संभावना नहीं है: एसिम्प्टोटिक विश्लेषण निरंतर कारकों की अनदेखी करता है, और यहां स्थिर कारक महत्वपूर्ण होंगे। दो एल्गोरिदम में मूल रूप से एक ही स्पर्शोन्मुख चलने का समय होता है, इसलिए स्पर्शोन्मुखी विश्लेषण शायद उनके बीच चयन करने के लिए बहुत उपयोगी नहीं है।

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


O(nm)O(n+m)

O(n+m)c(n+m)cO(n+m)

O(n+m)O(nm)


1

हालाँकि, मुझे दोनों एल्गोरिदम के बीच कोई व्यापक तुलना नहीं मिली।

O(n+m)O(nm)

लेकिन "व्यापक तुलना" के लिए अपनी निहित क्वेरी को गलत करें, कुछ कागजों को प्रायोगिक रूप से लिखा गया है / अनुभवजन्य रूप से वास्तविक डेटा पर इन दो और अन्य एल्गोरिदम की तुलना करते हैं और विश्लेषण / विभिन्न एल्गोरिदम के पेशेवरों / विपक्ष / tradeoffs की तुलना शामिल हैं:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.