क्रॉस वाइल्डकार्ड-मिलान एल्गोरिथ्म

From Vigyanwiki

कंप्यूटर विज्ञान में, क्रॉस वाइल्डकार्ड-मैचिंग एल्गोरिदम एक पैटर्न मिलान एल्गोरिदम है। सामान्य उपयोग में वाइल्डकार्ड सिंटैक्स के आधार पर, उदा. माइक्रोसॉफ़्ट विंडोज़ कमांड लाइन इंटरफेस में, एल्गोरिदम सॉफ्टवेयर अनुप्रयोगों में मिलान पैटर्न के लिए गैर- पुनरावर्ती तंत्र प्रदान करता है, इस प्रकार जो सामान्यतः नियमित अभिव्यक्तियों द्वारा प्रस्तुत किए गए सिंटैक्स की तुलना में सरल होता है।

इतिहास

एल्गोरिदम विकास, शुद्धता और प्रदर्शन परीक्षण के इतिहास और प्रोग्रामर फीडबैक पर आधारित है जो वाइल्डकार्ड के मिलान के लिए विश्वसनीय गैर-पुनरावर्ती एल्गोरिदम की असफल खोज के साथ प्रारंभ हुआ था। इस प्रकार एक एकल लूप में कार्यान्वित एक प्रारंभिक एल्गोरिथ्म ने सॉफ्टवेयर डेवलपर्स से तुरंत टिप्पणियाँ प्राप्त कीं, जिससे सुधार हुए।[1] चल रही टिप्पणियाँ और सुझाव[2][3] संशोधित एल्गोरिथ्म में परिणत हुआ जो अभी भी ही लूप में प्रयुक्त किया गया है किन्तु परीक्षण स्थितियों के संग्रह और प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) के आधार पर परिष्कृत किया गया है।[4] इस प्रकार प्रोफाइलर का उपयोग करके एकल लूप को ट्यून करने के अनुभव ने दो-लूप रणनीति के विकास को प्रेरित किया, जिससे प्रदर्शन में और अधिक लाभ प्राप्त हुआ, विशेष रूप से खाली इनपुट स्ट्रिंग या बिना वाइल्डकार्ड वर्ण वाले इनपुट वाली स्थितियों में।[5] इस प्रकार अपाचे लाइसेंस v. 2.0 की शर्तों के अनुसार, दो-लूप एल्गोरिदम ओपन-सोर्स सॉफ्टवेयर डेवलपमेंट समुदाय द्वारा उपयोग के लिए उपलब्ध है, और टेस्ट केस कोड के साथ है।

उपयोग

अपाचे लाइसेंस के अनुसार उपलब्ध कराया गया एल्गोरिदम पॉइंटर (कंप्यूटर प्रोग्रामिंग)-आधारित C++ और पोर्टेबल C++ (पॉइंटर्स के बिना प्रयुक्त) दोनों में प्रयुक्त किया गया है। इस प्रकार टेस्ट केस कोड, जो अपाचे लाइसेंस के अनुसार भी उपलब्ध है, किसी भी एल्गोरिदम पर प्रयुक्त किया जा सकता है जो नीचे दिए गए पैटर्न मिलान संचालन प्रदान करता है। कोडित के रूप में कार्यान्वयन मल्टीबाइट वर्ण सेट को संभालने में असमर्थ है और जब खोजे जा रहे पाठ में कई असंगत वर्ण सेट हो सकते हैं तो समस्याएँ उत्पन्न होती हैं।

पैटर्न मिलान संचालन

एल्गोरिथ्म तीन पैटर्न मिलान कार्यों का समर्थन करता है:

* पैटर्न में तारांकन (*) या प्रश्न चिह्न (?) वर्णों के अपवाद के साथ, मिलान के लिए जांचे जाने वाले पैटर्न और स्रोत के मध्य एक-से-एक मिलान किया जाता है।

  • एक तारांकन (*) वर्ण शून्य या अधिक वर्णों के किसी भी अनुक्रम से मेल खाता है।
  • प्रश्न चिह्न (?) वर्ण किसी वर्ण से मेल खाता है।

उदाहरण

  • *foo* "foo" युक्त किसी भी स्ट्रिंग से मेल खाता है।
  • मिनी* किसी भी स्ट्रिंग से मेल खाता है जो "मिनी" से प्रारंभ होती है (स्ट्रिंग "मिनी" सहित)।
  • ???* तीन या अधिक अक्षरों की किसी भी स्ट्रिंग से मेल खाता है।

अनुप्रयोग

मूल एल्गोरिदम को लैरी हेगेस द्वारा डेटाफ्लेक्स प्रोग्रामिंग भाषा में पोर्ट किया गया है[6] इस प्रकार विज़ुअल डेटाफ्लेक्स कोड लाइब्रेरी के साथ उपयोग के लिए। इसे लॉग फ़ाइल रीडर के हिस्से के रूप में संशोधित रूप में GitHub पर पोस्ट किया गया है।[7] सत्र 2014 एल्गोरिदम एपिक गेम्स अवास्तविक इंजन खेल यंत्र में निर्मित अनरियल मॉडल व्यूअर का भाग है।[8][9]

यह भी देखें

संदर्भ

  1. Krauss, Kirk (2008). "Matching Wildcards: An Algorithm". Dr. Dobb's Journal.
  2. "वाइल्ड कार्ड खोज". alt.os.development. 2008.
  3. T.J. (2014). "टेक्स्ट स्ट्रिंग में वाइल्ड कार्ड मिलान". Stack Overflow.
  4. Krauss, Kirk (2014). "Matching Wildcards: An Empirical Way to Tame an Algorithm". Dr. Dobb's Journal.
  5. Krauss, Kirk (2018). "Matching Wildcards: An Improved Algorithm for Big Data". Develop for Performance.
  6. Heiges, Larry (2008). "पाठ तुलना फ़ंक्शन - सामान्यTextCompare.txt". Data Access Worldwide Code Library.
  7. Deniskore (2013). "Deniskore/wildcard/CLogReader.cpp". Popular repositories. GitHub. Lines 173-279.
  8. gildor2 (2016). "UModel/Core/Core.cpp". Unreal Engine Model Viewer (UE Viewer). GitHub. Lines 334-435.
  9. gildor2 (2016). "History for UModel/Core/Core.cpp". Unreal Engine Model Viewer (UE Viewer).