En informática , el algoritmo de coincidencia de comodines de Krauss es un algoritmo de coincidencia de patrones . Basado en la sintaxis de comodines de uso común, por ejemplo, en la interfaz de línea de comandos de Microsoft Windows , el algoritmo proporciona un mecanismo no recursivo para la coincidencia de patrones en aplicaciones de software, basado en una sintaxis más simple que la que suelen ofrecer las expresiones regulares .
El algoritmo se basa en un historial de desarrollo, pruebas de corrección y rendimiento, y comentarios de programadores que comenzaron con una búsqueda infructuosa de un algoritmo no recursivo confiable para hacer coincidir comodines. Un algoritmo inicial, implementado en un solo bucle while, provocó rápidamente comentarios de los desarrolladores de software, lo que llevó a mejoras. [1] Los comentarios y sugerencias en curso [2] [3] culminaron en un algoritmo revisado todavía implementado en un solo bucle while pero refinado en función de una colección de casos de prueba y un generador de perfiles de rendimiento . [4] La experiencia de ajustar el bucle while único utilizando el generador de perfiles impulsó el desarrollo de una estrategia de dos bucles que logró mayores ganancias de rendimiento, particularmente en situaciones que involucraban cadenas de entrada vacías o entradas que no contenían caracteres comodín. [5] El algoritmo de dos bucles está disponible para su uso por la comunidad de desarrollo de software de código abierto , bajo los términos de la Licencia Apache v. 2.0, y está acompañado por el código de caso de prueba.
El algoritmo disponible bajo la licencia Apache se implementa tanto en C++ basado en punteros como en C++ portable (implementado sin punteros). El código del caso de prueba, también disponible bajo la licencia Apache, se puede aplicar a cualquier algoritmo que proporcione las operaciones de coincidencia de patrones que se indican a continuación. La implementación tal como está codificada no puede manejar conjuntos de caracteres multibyte y plantea problemas cuando el texto que se busca puede contener varios conjuntos de caracteres incompatibles.
El algoritmo admite tres operaciones de coincidencia de patrones:
Larry Heiges [6] trasladó el algoritmo original al lenguaje de programación DataFlex para su uso con la biblioteca de código Data Access Worldwide . Se publicó en GitHub en forma modificada como parte de un lector de archivos de registro. [7] El algoritmo de 2014 es parte del Unreal Model Viewer integrado en el motor de juego Unreal Engine de Epic Games . [8] [9]
{{cite web}}
: CS1 maint: nombres numéricos: lista de autores ( enlace )Líneas 334-435.{{cite web}}
: CS1 maint: nombres numéricos: lista de autores ( enlace )