मैं कुछ समय के लिए अटक गया हूं जिस पर सबसे तेज स्ट्रिंग खोज एल्गोरिथ्म है, कई राय सुनी, लेकिन अंत में मुझे यकीन नहीं है।
मैंने कुछ लोगों को यह कहते हुए सुना है कि सबसे तेज़ एल्गोरिथ्म बोयर-मूर है और कुछ कह रहे हैं कि नुथ-मॉरिस-प्रैट वास्तव में तेज़ है।
मैंने उन दोनों की जटिलता को देखा है लेकिन वे ज्यादातर एक जैसे ही दिखते हैं O(n+m)
। मैंने पाया है कि सबसे खराब स्थिति में बॉयर-मूर की O(nm)
नथ-मॉरिस-प्रैट की तुलना में एक जटिलता है जिसमें ओ (एम + 2 * एन) है। जहाँ n = पाठ की लंबाई और m = पैटर्न की लंबाई।
जहां तक मुझे पता है कि बॉयर-मूर के पास एक रैखिक-सबसे खराब स्थिति है, अगर मैं गैलिल नियम का उपयोग करूंगा।
मेरा प्रश्न, ओवर ऑल जो वास्तव में सबसे तेज स्ट्रिंग सर्च एल्गोरिथ्म है (इस सवाल में सभी संभावित स्टिंग एल्गोरिदम शामिल हैं न कि केवल बॉयर-मूर और नूथ-मॉरिस-प्रैट)।
संपादित करें: इस उत्तर के कारण
मैं वास्तव में क्या देख रहा हूँ:
एक पाठ को देखते हुए T
और एक पैटर्न P
मैं सब दिखावे खोजने के लिए P
में T
।
इसके अलावा पी और टी की लंबाई है और [1,2 000 000]
कार्यक्रम को 0.15 सेकंड के तहत चलाना है।
मुझे पता है कि केएमपी और राबिन-कार्प समस्या पर 100% अंक प्राप्त करने के लिए पर्याप्त हैं, लेकिन मैं एक के लिए बॉयर-मूर को लागू करने और लागू करना चाहता था। इस प्रकार की पैटर्न खोज के लिए कौन सा सबसे अच्छा होगा?