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

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
[[कंप्यूटर विज्ञान]] में, '''क्रॉस वाइल्डकार्ड-मैचिंग एल्गोरिदम''' [[पैटर्न मिलान]] एल्गोरिदम है। सामान्य उपयोग में [[वाइल्डकार्ड चरित्र]] के आधार पर, उदा. [[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] [[कमांड लाइन इंटरफेस]] में, एल्गोरिदम सॉफ्टवेयर अनुप्रयोगों में मिलान पैटर्न के लिए गैर-[[ प्रत्यावर्तन | प्रत्यावर्तन]] तंत्र प्रदान करता है, जो सामान्यतः [[नियमित अभिव्यक्ति]]यों द्वारा प्रस्तुतकिए गए सिंटैक्स की तुलना में सरल होता है।
[[कंप्यूटर विज्ञान]] में, '''क्रॉस वाइल्डकार्ड-मैचिंग एल्गोरिदम''' एक [[पैटर्न मिलान]] एल्गोरिदम है। सामान्य उपयोग में [[वाइल्डकार्ड चरित्र|वाइल्डकार्ड सिंटैक्स]] के आधार पर, उदा. [[ माइक्रोसॉफ़्ट विंडोज़ |माइक्रोसॉफ़्ट विंडोज़]] [[कमांड लाइन इंटरफेस]] में, एल्गोरिदम सॉफ्टवेयर अनुप्रयोगों में मिलान पैटर्न के लिए गैर-[[ प्रत्यावर्तन | पुनरावर्ती]] तंत्र प्रदान करता है, इस प्रकार जो सामान्यतः [[नियमित अभिव्यक्ति]]यों द्वारा प्रस्तुत किए गए सिंटैक्स की तुलना में सरल होता है।


== '''इतिहास''' ==
== '''इतिहास''' ==
एल्गोरिदम विकास, शुद्धता और प्रदर्शन परीक्षण के इतिहास और प्रोग्रामर फीडबैक पर आधारित है जो वाइल्डकार्ड के मिलान के लिए विश्वसनीय गैर-पुनरावर्ती एल्गोरिदम की असफल खोज के साथ प्रारंभ हुआ था। प्रारंभिक एल्गोरिदम, जिसे ही समय में लूप में प्रयुक्त किया गया था, ने सॉफ्टवेयर डेवलपर्स से तुरंत टिप्पणियाँ प्राप्त कीं, जिससे सुधार हुए।<ref>{{cite magazine| last=Krauss| first=Kirk| title=Matching Wildcards: An Algorithm| magazine=[[Dr. Dobb's Journal]]| year=2008| url=http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-algorithm/210200888}}</ref> चल रही टिप्पणियाँ और सुझाव<ref>{{cite web| title=वाइल्ड कार्ड खोज| publisher=alt.os.development| year=2008| url=https://groups.google.com/forum/#!topic/alt.os.development/8-rIaarASu8}}</ref><ref>{{cite web| last=T.J.| title=टेक्स्ट स्ट्रिंग में वाइल्ड कार्ड मिलान| year=2014| publisher=Stack Overflow| url=https://stackoverflow.com/questions/21409588/wild-card-matching-in-text-string}}</ref> संशोधित एल्गोरिथ्म में परिणत हुआ जो अभी भी ही लूप में प्रयुक्त किया गया है किन्तु परीक्षण स्थितियोंके संग्रह और [[प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)]] के आधार पर परिष्कृत किया गया है।<ref>{{cite magazine| last=Krauss| first=Kirk| title=Matching Wildcards: An Empirical Way to Tame an Algorithm| magazine=[[Dr. Dobb's Journal]]| year=2014| url=http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123}}</ref> प्रोफाइलर का उपयोग करके एकल लूप को ट्यून करने के अनुभव ने दो-लूप रणनीति के विकास को प्रेरित किया, जिससे प्रदर्शन में और अधिक लाभ प्राप्त हुआ, विशेष रूप से खाली इनपुट स्ट्रिंग या बिना वाइल्डकार्ड वर्ण वाले इनपुट वाली स्थितियों में।<ref>{{cite web| last=Krauss| first=Kirk| title=Matching Wildcards: An Improved Algorithm for Big Data| publisher=Develop for Performance| year=2018| url=http://www.developforperformance.com/MatchingWildcards_AnImprovedAlgorithmForBigData.html}}</ref> [[अपाचे लाइसेंस]] v. 2.0 की शर्तों के अनुसार , दो-लूप एल्गोरिदम [[खुला स्रोत सॉफ्टवेयर]] डेवलपमेंट समुदाय द्वारा उपयोग के लिए उपलब्ध है, और टेस्ट केस कोड के साथ है।
एल्गोरिदम विकास, शुद्धता और प्रदर्शन परीक्षण के इतिहास और प्रोग्रामर फीडबैक पर आधारित है जो वाइल्डकार्ड के मिलान के लिए विश्वसनीय गैर-पुनरावर्ती एल्गोरिदम की असफल खोज के साथ प्रारंभ हुआ था। इस प्रकार एक एकल लूप में कार्यान्वित एक प्रारंभिक एल्गोरिथ्म ने सॉफ्टवेयर डेवलपर्स से तुरंत टिप्पणियाँ प्राप्त कीं, जिससे सुधार हुए।<ref>{{cite magazine| last=Krauss| first=Kirk| title=Matching Wildcards: An Algorithm| magazine=[[Dr. Dobb's Journal]]| year=2008| url=http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-algorithm/210200888}}</ref> चल रही टिप्पणियाँ और सुझाव<ref>{{cite web| title=वाइल्ड कार्ड खोज| publisher=alt.os.development| year=2008| url=https://groups.google.com/forum/#!topic/alt.os.development/8-rIaarASu8}}</ref><ref>{{cite web| last=T.J.| title=टेक्स्ट स्ट्रिंग में वाइल्ड कार्ड मिलान| year=2014| publisher=Stack Overflow| url=https://stackoverflow.com/questions/21409588/wild-card-matching-in-text-string}}</ref> संशोधित एल्गोरिथ्म में परिणत हुआ जो अभी भी ही लूप में प्रयुक्त किया गया है किन्तु परीक्षण स्थितियों के संग्रह और [[प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग)]] के आधार पर परिष्कृत किया गया है।<ref>{{cite magazine| last=Krauss| first=Kirk| title=Matching Wildcards: An Empirical Way to Tame an Algorithm| magazine=[[Dr. Dobb's Journal]]| year=2014| url=http://www.drdobbs.com/architecture-and-design/matching-wildcards-an-empirical-way-to-t/240169123}}</ref> इस प्रकार प्रोफाइलर का उपयोग करके एकल लूप को ट्यून करने के अनुभव ने दो-लूप रणनीति के विकास को प्रेरित किया, जिससे प्रदर्शन में और अधिक लाभ प्राप्त हुआ, विशेष रूप से खाली इनपुट स्ट्रिंग या बिना वाइल्डकार्ड वर्ण वाले इनपुट वाली स्थितियों में।<ref>{{cite web| last=Krauss| first=Kirk| title=Matching Wildcards: An Improved Algorithm for Big Data| publisher=Develop for Performance| year=2018| url=http://www.developforperformance.com/MatchingWildcards_AnImprovedAlgorithmForBigData.html}}</ref> इस प्रकार [[अपाचे लाइसेंस]] v. 2.0 की शर्तों के अनुसार, दो-लूप एल्गोरिदम [[खुला स्रोत सॉफ्टवेयर|ओपन-सोर्स सॉफ्टवेयर]] डेवलपमेंट समुदाय द्वारा उपयोग के लिए उपलब्ध है, और टेस्ट केस कोड के साथ है।


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


=== पैटर्न मिलान संचालन ===
=== पैटर्न मिलान संचालन ===
Line 15: Line 15:


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


== '''अनुप्रयोग''' ==
== '''अनुप्रयोग''' ==
मूल एल्गोरिदम को लैरी हेगेस द्वारा [[डेटाफ्लेक्स]] प्रोग्रामिंग भाषा में पोर्ट किया गया है<ref>{{cite web| work=Data Access Worldwide Code Library| last=Heiges| first=Larry| title=पाठ तुलना फ़ंक्शन - सामान्यTextCompare.txt| year=2008| url=https://support.dataaccess.com/Forums/showthread.php?1064-Text-compare-function-generalTextCompare-txt-(0-1)}}</ref> [[विज़ुअल डेटाफ्लेक्स]] कोड लाइब्रेरी के साथ उपयोग के लिए। इसे लॉग फ़ाइल रीडर के हिस्से के रूप में संशोधित रूप में GitHub पर पोस्ट किया गया है।<ref>{{cite web| last=Deniskore| work=Popular repositories| title=Deniskore/wildcard/CLogReader.cpp| publisher=GitHub| year=2013| url=https://github.com/Deniskore/wildcard/blob/master/CLogReader.cpp}} Lines 173-279.</ref> 2014 एल्गोरिदम एपिक गेम्स [[अवास्तविक इंजन]] [[खेल यंत्र]] में निर्मित अनरियल मॉडल व्यूअर का हिस्सा है।<ref>{{cite web| last=gildor2| work=Unreal Engine Model Viewer (UE Viewer)| title=UModel/Core/Core.cpp| publisher=GitHub| year=2016| url=https://github.com/gildor2/UModel/blob/master/Core/Core.cpp}} Lines 334-435.</ref><ref>{{cite web| last=gildor2| work=Unreal Engine Model Viewer (UE Viewer)| title=History for UModel/Core/Core.cpp| year=2016| url=https://github.com/gildor2/UModel/commits/master/Core/Core.cpp}}</ref>
मूल एल्गोरिदम को लैरी हेगेस द्वारा [[डेटाफ्लेक्स]] प्रोग्रामिंग भाषा में पोर्ट किया गया है<ref>{{cite web| work=Data Access Worldwide Code Library| last=Heiges| first=Larry| title=पाठ तुलना फ़ंक्शन - सामान्यTextCompare.txt| year=2008| url=https://support.dataaccess.com/Forums/showthread.php?1064-Text-compare-function-generalTextCompare-txt-(0-1)}}</ref> इस प्रकार [[विज़ुअल डेटाफ्लेक्स]] कोड लाइब्रेरी के साथ उपयोग के लिए। इसे लॉग फ़ाइल रीडर के हिस्से के रूप में संशोधित रूप में GitHub पर पोस्ट किया गया है।<ref>{{cite web| last=Deniskore| work=Popular repositories| title=Deniskore/wildcard/CLogReader.cpp| publisher=GitHub| year=2013| url=https://github.com/Deniskore/wildcard/blob/master/CLogReader.cpp}} Lines 173-279.</ref> सत्र 2014 एल्गोरिदम एपिक गेम्स [[अवास्तविक इंजन]] [[खेल यंत्र]] में निर्मित अनरियल मॉडल व्यूअर का भाग है।<ref>{{cite web| last=gildor2| work=Unreal Engine Model Viewer (UE Viewer)| title=UModel/Core/Core.cpp| publisher=GitHub| year=2016| url=https://github.com/gildor2/UModel/blob/master/Core/Core.cpp}} Lines 334-435.</ref><ref>{{cite web| last=gildor2| work=Unreal Engine Model Viewer (UE Viewer)| title=History for UModel/Core/Core.cpp| year=2016| url=https://github.com/gildor2/UModel/commits/master/Core/Core.cpp}}</ref>
== '''यह भी देखें''' ==
== '''यह भी देखें''' ==
* पैटर्न मिलान
* पैटर्न मिलान

Revision as of 09:56, 3 August 2023

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

इतिहास

एल्गोरिदम विकास, शुद्धता और प्रदर्शन परीक्षण के इतिहास और प्रोग्रामर फीडबैक पर आधारित है जो वाइल्डकार्ड के मिलान के लिए विश्वसनीय गैर-पुनरावर्ती एल्गोरिदम की असफल खोज के साथ प्रारंभ हुआ था। इस प्रकार एक एकल लूप में कार्यान्वित एक प्रारंभिक एल्गोरिथ्म ने सॉफ्टवेयर डेवलपर्स से तुरंत टिप्पणियाँ प्राप्त कीं, जिससे सुधार हुए।[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).