← नवीनतम पेपर
💬 NLP

On the Complexity of the Matching Problem of Regular Expressions with Backreferences

यह शोध पत्र SETH और त्रिकोण पहचान (triangle detection) धारणाओं के तहत सशर्त निचली सीमाओं (conditional lower bounds) को सिद्ध करते हुए और 1-उपयोग बैकरेफरेंस (1-use backreferences) के लिए एक बेहतर O(nlog2n)O(n \log^2 n) एल्गोरिदम प्रस्तुत करते हुए, बैकरेफरेंस के साथ रेगुलर एक्सप्रेशंस को मिलाने की सूक्ष्म-स्तरीय (fine-grained) कम्प्यूटेशनल जटिलता को स्थापित करता है।

मूल लेखक: Soh Kumabe, Yuya Uezato

प्रकाशित 2026-05-11
📖 7 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Soh Kumabe, Yuya Uezato

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

यहाँ "On the Complexity of the Matching Problem of Regular Expressions with Backreferences" शोध पत्र का सरल भाषा में अनुवाद दिया गया है:

बड़ी तस्वीर: "रेगेक्स" (Regex) ट्रैफिक जाम

कल्पना कीजिए कि आप एक क्लब के सुरक्षा गार्ड (कंप्यूटर सिस्टम) हैं। आपके पास अंदर आने वालों के लिए नियमों की एक सूची (Regular Expression) है।

  • साधारण नियम: "केवल वे लोग जो लाल शर्ट पहने हैं।" इसे जाँचना आसान है। आप एक शर्ट देखते हैं, कहते हैं, "लाल? हाँ, अंदर आओ।" चाहे लाइन में 10 लोग हों या 10,000, इसमें उतना ही समय लगता है।
  • समस्या (ReDoS): कभी-कभी, हैकर्स लोगों की एक ऐसी विशेष कतार तैयार करते हैं जो गार्ड को बहुत अधिक अनावश्यक काम करने के लिए मजबूर कर देती है। एक व्यक्ति को जाँचकर आगे बढ़ने के बजाय, गार्ड व्यक्ति A को जाँचता है, फिर व्यक्ति B को, फिर वापस व्यक्ति A को, फिर व्यक्ति C को, फिर फिर से व्यक्ति A को... जब तक कि गार्ड थकान से ढह न जाए। इसे Denial of Service (ReDoS) हमला कहा जाता है।

वास्तविक दुनिया में, इसने स्टैक ओवरफ्लो (Stack Overflow) और क्लाउडफ्लेयर (Cloudflare) जैसी बड़ी वेबसाइटों को क्रैश कर दिया है। शोध पत्र नोट करता है कि यहाँ तक कि "क्वाड्रेटिक" (quadratic) सुस्ती भी (जहाँ 100 लोगों को जाँचने में 10,000 कदम लगते हैं) सिस्टम को क्रैश करने के लिए पर्याप्त है।

विलेन: "बैकरेफरेंस" (Backreferences)

मानक नियम सरल होते हैं। लेकिन आधुनिक "Regex" इंजन में एक बहुत शक्तिशाली फीचर होता है जिसे Backreferences कहते हैं।

उपमा (Analogy):
कल्पना कीजिए कि एक नियम कहता है: "एक शब्द ढूँढो, उसे याद रखो, और फिर सुनिश्चित करो कि वही सटीक शब्द बाद में फिर से दिखाई दे।"

  • उदाहरण: "एक शब्द ढूँढो, उसे 'X' नाम दो। फिर, 'X' को फिर से ढूँढो।"
  • यदि इनपुट apple ... apple है, तो यह काम करेगा।
  • यदि इनपुट apple ... banana है, तो यह विफल हो जाएगा।

यह फीचर प्रोग्रामर के लिए अविश्वसनीय रूप से उपयोगी है, लेकिन यह "गार्ड" के काम को बहुत कठिन बना देता है। गार्ड को यह याद रखना पड़ता है कि उन्होंने पहले क्या देखा था और लगातार इसकी तुलना उससे करनी पड़ती है जो वे अभी देख रहे हैं। शोध पत्र पूछता है: क्या हम एक ऐसा गार्ड बना सकते हैं जो इन जटिल नियमों को संभालने के लिए पर्याप्त तेज़ हो ताकि वह थके नहीं?

शोध पत्र के निष्कर्ष: अच्छा, बुरा और बदतर

लेखकों ने ठीक से जाँच की कि इन मिलान समस्याओं (matching problems) को हल करना कितना कठिन है। उन्होंने इसे दो पक्षों में विभाजित किया: कठिनाई (Hardness) (यह क्यों कठिन है) और एल्गोरिदम (Algorithms) (इसे कैसे ठीक करें)।

1. बुरी खबर: कुछ नियम तेज़ करना असंभव है

शोध पत्र सिद्ध करता है कि कुछ प्रकार के जटिल नियमों के लिए, उन्हें तेज़ बनाने के लिए कोई "जादुई समाधान" नहीं है।

  • "ट्रायंगल" (Triangle) की समस्या: उन्होंने दिखाया कि यदि आपके पास एक नियम है जो दो वेरिएबल्स का उपयोग करता है (जैसे दो अलग-अलग शब्दों को याद रखना और बाद में उन्हें जाँचना), तो इसे हल करना एक विशाल सोशल नेटवर्क ग्राफ में त्रिकोण (triangle) खोजने जितना ही कठिन है। यदि आप उस नियम को जल्दी हल कर सकते, तो आप ग्राफ समस्या को भी जल्दी हल कर सकते। चूंकि ग्राफ विशेषज्ञ मानते हैं कि ग्राफ समस्या स्वाभाविक रूप से धीमी है, इसलिए नियम वाली समस्या भी धीमी ही होगी।
  • "ऑर्थोगोनल वेक्टर्स" (Orthogonal Vectors) की समस्या: और भी अधिक वेरिएबल्स वाले नियमों के लिए, उन्होंने सिद्ध किया कि वेरिएबल्स की संख्या के साथ आवश्यक समय तेजी से (exponentially) बढ़ता है। यह एक ताले में विशिष्ट कुंजी के संयोजन को खोजने जैसा है; जितने अधिक चाबियाँ होंगी, इसे जल्दी से ब्रूट-फोर्स करना उतना ही असंभव होता जाएगा।

निष्कर्ष: यदि आपका नियम बहुत जटिल है (कई "इसे याद रखो" फीचर्स का उपयोग करता है), तो आप एक तेज़ इंजन नहीं बना सकते। आप हमेशा एक दीवार से टकरा जाएंगे।

2. अच्छी खबर: सरल मामलों के लिए एक "निकट-रैखिक" (Near-Linear) समाधान

हालाँकि, शोध पत्र ने एक "स्वीट स्पॉट" (सही संतुलन) खोजा। उन्होंने एक विशिष्ट, सामान्य प्रकार के नियम पर ध्यान केंद्रित किया:

  • "ABCBD" पैटर्न: "एक शब्द (A) ढूँढें, फिर एक शब्द (B), फिर एक शब्द (C), फिर वही सटीक शब्द B फिर से, और फिर एक शब्द (D)।"
    • वास्तविक दुनिया का उदाहरण: "एक यूजरनेम ढूँढें, फिर पासवर्ड, फिर एक संदेश, फिर वही यूजरनेम फिर से, और फिर एक सिग्नेचर।"

लेखकों ने पाया कि हालांकि यह पेचीदा दिखता है, इसे बहुत कुशलता से हल किया जा सकता है।

  • पुराना तरीका: पिछले तरीके एक लाइब्रेरी में हर संभव संयोजन को जाँचने जैसे थे, जिसमें O(n2)O(n^2) समय (क्वाड्रेटिक) लगता था। यदि किताब 1,000 पन्नों की थी, तो इसमें 1,000,000 कदम लगते थे।
  • नया तरीका: लेखकों ने एक नया एल्गोरिदम बनाया जो लगभग O(nlog2n)O(n \log^2 n) समय लेता है।
    • उपमा: कल्पना कीजिए कि लाइब्रेरी एक जादुई इंडेक्स सिस्टम (जिसमें Suffix Trees और Factorization Forests का उपयोग किया गया है) के साथ व्यवस्थित है। हर पन्ने को पढ़ने के बजाय, गार्ड सीधे प्रासंगिक अनुभागों पर कूद सकता है। यदि किताब 1,000 पन्नों की है, तो नया तरीका लगभग 10,000 कदम लेगा (या उससे भी कम), जो एक बड़ा सुधार है।

यह नया एल्गोरिदम कैसे काम करता है (जादुई तकनीकें)

इस गति को प्राप्त करने के लिए, लेखकों ने कई चतुर तकनीकों का उपयोग किया, जिनका वे शोध पत्र में वर्णन करते हैं:

  1. द सफिक्स ट्री (The Suffix Tree - मानचित्र): उन्होंने इनपुट स्ट्रिंग का एक विशाल मानचित्र बनाया। यह मानचित्र स्ट्रिंग के हर संभावित अंत को दिखाता है। यह गार्ड को तुरंत देखने में मदद करता है, "ओह, यह शब्द 'B' यहाँ भी है, और यह वहाँ भी है।"
  2. हेवी-लाइट डिकंपोजिशन (Heavy-Light Decomposition - सॉर्टिंग हैट): उन्होंने मानचित्र को "भारी" पथों (बहुत सामान्य पथ) और "हल्के" पथों (दुर्लभ पथ) में विभाजित किया। वे केवल दुर्लभ पथों पर भारी काम करते हैं, जिससे समय बचता है।
  3. पीरियडिसिटी (Periodicity - लय): उन्होंने देखा कि जब एक शब्द दोहराता है (जैसे "B...B"), तो स्ट्रिंग में अक्सर एक लय या पैटर्न होता है। उन्होंने हर अक्षर को जाँचने के बजाय इन पैटर्नों की भविष्यवाणी करने के लिए गणित का उपयोग किया।
  4. फैक्टराइजेशन फॉरेस्ट्स (Factorization Forests - इंडेक्स): यह एक डेटा स्ट्रक्चर है जो एक सुपर-फास्ट इंडेक्स की तरह काम करता है, जिससे गार्ड यह जाँच सकता है कि टेक्स्ट का एक हिस्सा नियम से मेल खाता है या नहीं, चाहे टेक्स्ट कितना भी लंबा क्यों न हो।

निष्कर्ष का सारांश

  • क्या हम सभी ReDoS हमलों को रोक सकते हैं? नहीं। यदि नियम बहुत जटिल है (बहुत सारे "इसे याद रखो" वेरिएबल्स), तो यह गणितीय रूप से सिद्ध है कि यह धीमा होगा।
  • क्या हम सबसे सामान्य जटिल नियमों को ठीक कर सकते हैं? हाँ! विशेष रूप से उस मामले के लिए जहाँ एक नियम एक शब्द को याद रखता है और उसे बाद में एक बार फिर से जाँचता है ( "ABCBD" पैटर्न), लेखकों ने एक नया इंजन बनाया है जो साधारण नियमों के लगभग उतना ही तेज़ है।
  • यह क्यों मायने रखता है? यह सॉफ्टवेयर इंजीनियरों को बताता है: "बहुत अधिक बैकरेफरेंस का उपयोग न करें, अन्यथा आप धीमे हो जाएंगे। लेकिन यदि आप उन्हें इस विशिष्ट, सामान्य तरीके से उपयोग करते हैं, तो अब आप हमारे नए तरीके का उपयोग करके अपने सिस्टम को सुरक्षित और तेज़ रख सकते हैं।"

यह शोध पत्र मूल रूप से एक रेखा खींचता है: यहाँ वह सीमा है जिसे तोड़ना असंभव है, और यहाँ वह जगह है जहाँ हमने तेज़ी से चलाने का तरीका खोज लिया है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →