Si uno mira los manuales (tal vez más antiguos) de Drools u otros motores de reglas, una de las ilustraciones de su valor agregado es resolver acertijos como el rompecabezas Miss Manners (manual de Drools). Ahora, tales acertijos se formulan y resuelven naturalmente usando Prolog o los lenguajes de programación de restricción más recientes, y uno se pregunta por qué alguien usaría Drools para este propósito. El valor agregado que Prolog y CPL dan en este caso es su capacidad para formular naturalmente el rompecabezas como un conjunto de predicados lógicos y para buscar automáticamente el espacio de soluciones (con CPL siendo más eficiente a este respecto). Pero, ¿cuál es el valor agregado de un producto como Drools (quiero decir, además de las campanas y los silbidos de tomar, por ejemplo, un archivo Excel y traducirlo en un conjunto de reglas)?
Más específicamente, Prolog implementa la búsqueda de retroceso, CLP implementa la búsqueda de retroceso con propagación de restricciones y, por lo tanto, en lugar de buscar, por así decirlo, todo el producto cartesiano de espacios para variables individuales, eliminan grandes porciones de este espacio de producto. Esto es lo que los hace efectivos y útiles. Tanto Prolog como CLP se discuten ampliamente en la literatura.
Por otro lado, si bien está claro que el algoritmo Rete almacena en caché el conjunto de reglas en forma de algunas estructuras de datos, por lo tanto (a mi entender) hace que sea más efectivo evaluar la salida si algunas de las entradas han cambiado, y dando medios para actualizar efectivamente esta estructura de datos para cambios incrementales, ¿es difícil (para mí) entender la idea básica, y aún más, su efectividad (en comparación con qué? a Prolog? a CLP)? Desafortunadamente, es difícil encontrar buenas referencias que vean el algoritmo Rete en este contexto más amplio.
La documentación de Drools lamentablemente no es muy informativa a este respecto. Lo máximo que pude encontrar fue "El algoritmo Rete, el algoritmo Leaps y sus descendientes, como el Drote 'Reteoo (y Leaps), proporcionan formas muy eficientes de hacer coincidir los patrones de las reglas con los datos del objeto de dominio. Estos son especialmente eficientes cuando tienes conjuntos de datos que no cambien por completo (ya que el motor de reglas puede recordar partidos pasados). Estos algoritmos están probados en batalla ". Muy eficiente, ¿en comparación con qué? Probada en batalla: ¿podría uno apuntar a aplicaciones del mundo real?
Agradecería si uno pudiera arrojar algo más de luz sobre este tema o dar una referencia válida.