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

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

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

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

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

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

उदाहरण

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

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

यह भी देखें

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