Algoritmo de coincidencia de comodines de Krauss


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 hacer coincidir patrones en aplicaciones de software, basado en una sintaxis más simple que la que normalmente ofrecen las expresiones regulares .

El algoritmo se basa en un historial de pruebas de desarrollo, corrección y rendimiento, y comentarios del programador que comenzaron con una búsqueda fallida de un algoritmo no recursivo confiable para emparejar comodines. Un algoritmo inicial, implementado en un solo bucle while, generó rápidamente comentarios de los desarrolladores de software, lo que condujo a mejoras. [1] Los comentarios y sugerencias en curso [2] [3] culminaron en un algoritmo revisado que aún se implementa en un solo bucle while pero se refina en función de una colección de casos de prueba y un generador de perfiles de rendimiento . [4]La experiencia de ajustar el ciclo while único con el generador de perfiles impulsó el desarrollo de una estrategia de dos ciclos que logró mayores ganancias de rendimiento, particularmente en situaciones que involucran cadenas de entrada vacías o entradas que no contienen caracteres comodín. [5] El algoritmo de dos bucles está disponible para su uso por parte de la comunidad de desarrollo de software de código abierto , según los términos de la Licencia Apache v. 2.0, y se acompaña de un código de caso de prueba.

El algoritmo disponible bajo la licencia de Apache se implementa tanto en C++ basado en punteros como en C++ portátil (implementado sin punteros). El código del caso de prueba, también disponible bajo la licencia de Apache, se puede aplicar a cualquier algoritmo que proporcione las operaciones de coincidencia de patrones a continuación. La implementación codificada no puede manejar juegos de caracteres de varios bytes y plantea problemas cuando el texto que se busca puede contener varios juegos de caracteres incompatibles.

El algoritmo original ha sido portado al lenguaje de programación DataFlex por Larry Heiges [6] para su uso con la biblioteca de código de Data Access Worldwide . Se ha publicado 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 juegos Unreal Engine de Epic Games . [8] [9]