Cuando evalúa expresiones matemáticas normales, es bastante fácil hacer que un analizador cree un árbol que represente la expresión (eso es lo que hacen la mayoría de los analizadores: crear un AST).
Es bastante trivial utilizar al menos un cierto paralelismo para evaluar ese árbol: debe caminar el árbol hacia arriba desde las hojas hasta la raíz, y cada subárbol puede evaluarse en paralelo con otros subárboles en el mismo nivel. Por ejemplo, una expresión como (A+B)/(CD)
convierte en un árbol como este:
Entonces, en este caso, podemos evaluar A+B
en paralelo con CD
.
- ¿Cuál es el enfoque algorítmico para encontrar el área rectangular máxima en un histograma?
- ¿Por qué este programa da '0' como salida?
- ¿Cuál es la interpretación de XOR de los enteros? ¿Hay alguna forma simple de calcular XOR en lugar de 'XOR-ing' todos los bits individuales?
- ¿Se utiliza la teoría de grupos en la IA?
- Si eligiera un número al azar en la recta numérica, ¿tendría mayores posibilidades de ser racional o irracional?
En el caso de una asignación, solo necesita otro nodo para cubrir la asignación, para obtener algo como: X = (A+B)/(CD)
.
Ahora, en su caso, tiene un paso más: su resultado es básicamente un conjunto y está asignando los resultados de dos subárboles a ese conjunto:
Hacer que esto suceda en paralelo es bastante trivial: se hace exactamente igual que cualquier otra expresión. Aunque normalmente no se incluye en (por ejemplo) la mayoría de los lenguajes de programación, la conciencia de que `raíz cuadrada de X` básicamente significa” más o menos la raíz cuadrada de X “parece una transformación bastante trivial (y, por supuesto, lo mismo con cualquier raíz).
La vida se vuelve más compleja si estás pensando en términos de subprocesos (o algo similar) para ejecutar el código en paralelo. Si solo intenta girar un hilo para cada subárbol para ejecutar todo en paralelo, es casi seguro que funcionará mal; Para muchos de estos subárboles, la sobrecarga de iniciar un hilo será (mucho) mayor que el tiempo para evaluar el árbol en sí.