La respuesta a ambas preguntas es no, pero principalmente porque hacen suposiciones que no son ciertas.
En primer lugar, las expresiones regulares no son “algoritmos”. Son simplemente una notación para describir conjuntos de cadenas que cumplen ciertas condiciones estructurales. Ahora, cuando llamas a una función en alguna cadena para ver si coincide con una cierta expresión regular, es un algoritmo. Sin embargo, no existe un algoritmo estándar para la coincidencia de expresiones regulares. La biblioteca estándar de Python lo hace de una manera, pero Perl podría hacerlo de otra manera, y así sucesivamente en otras plataformas. Por lo tanto, existen algoritmos competitivos que implementan la coincidencia de expresiones regulares, pero no son competidores de las expresiones regulares, porque no son algoritmos.
En cuanto a su segunda pregunta, la respuesta es no por un par de razones. En primer lugar, es difícil ejecutar código Python de cualquier tipo en una GPU. Hay enlaces de Python para OpenGL y la tecnología CUDA de Nvidia, pero estos solo permiten que Python use el código existente escrito específicamente para la arquitectura de GPU. No permiten ejecutar código arbitrario de Python en una GPU. Hay formas de ejecutar Python arbitrario en la GPU, pero son bastante nuevas y no sé mucho sobre ellas, pero aquí hay un ejemplo: Computación acelerada de GPU con Python. Podría escribir una biblioteca usando esto que podría hacer una coincidencia de expresiones regulares en la GPU, pero ¿realmente ayudaría? No puedo garantizar que no sea así, pero es poco probable.
- ¿Qué algoritmos y estructuras de datos se pueden usar para encontrar anagramas?
- ¿Cuáles son los libros de Ciencias de la Computación (Algoritmo) que recomendará un topcoder?
- ¿Es la prueba de primalidad Rabin-Miller más rápida que el tamiz de Eratóstenes?
- ¿Cuál sería un algoritmo eficiente para ordenar millones de líneas de cadenas / enteros en un archivo?
- ¿Cuáles son algunas aplicaciones del mundo real de parábolas?
Las expresiones regulares se diseñaron tal como están específicamente porque su estructura significa que la mayoría de las veces puede aceptar o rechazar coincidencias muy rápidamente. La mayoría de las coincidencias de expresiones regulares se ejecutan tan rápido que la única forma en que la ejecución de GPU lo haría más rápido es si el tamaño de entrada es masivo, en cuyo caso el proceso probablemente estaría vinculado a E / S de todos modos, y la aceleración sería pequeña. Ahora, ciertas expresiones regulares “patológicas” están vinculadas a la computación incluso en tamaños de entrada pequeños debido a las grandes cantidades de backtracking requeridas, y estas podrían mejorar al paralelizar la ejecución del NFA generado en la GPU. Esto podría funcionar, y podría ser algo interesante para probar. Pero si eres lo suficientemente profundo en el ecosistema de programación de GPU para intentar esto, probablemente sea mejor hacerlo en código nativo, no en Python.