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

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

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

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

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

उदाहरण

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

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

यह भी देखें

 * पैटर्न मिलान
 * ग्लोब (प्रोग्रामिंग)
 * वाइल्डमैट