Motor de reglas: algoritmo rete

algoritmo de red

El algoritmo Rete utiliza la parte común de cada campo entre las reglas para reducir el almacenamiento de las reglas y, al mismo tiempo, guarda los resultados temporales del proceso de coincidencia para acelerar la velocidad de coincidencia. Para lograr este objetivo, el algoritmo divide las reglas y conecta cada condición coincidente en las reglas como una unidad básica (nodo) para formar una red de discriminación de datos, y luego filtra y propaga los hechos a través de la red , y finalmente todos los Las condiciones tienen reglas de coincidencia de hechos activadas.
————————————————
Declaración de derechos de autor: este artículo es un artículo original del blogger de CSDN "cloneme01", siguiendo el acuerdo de derechos de autor CC 4.0 BY-SA, adjunte el enlace de la fuente original y este declaración para reimpresión.
Enlace original: https://blog.csdn.net/goodjava2007/article/details/121989398
inserte la descripción de la imagen aquí

  1. Nodo raíz: el nodo raíz es la entrada para que todos los objetos ingresen a la red rete, lo que permite que todos los hechos pasen y luego se propaguen al nodo Tipo;

  2. Nodo tipo: También llamado nodo ObjectType, es nuestro Fact, es decir, el POJO usado en nuestras reglas, usado para seleccionar el tipo de hecho, es decir, para realizar verificación de tipo en el hecho, y el motor solo permite objetos que coincidan con este escriba para llegar a los nodos posteriores, que cumplirán con el El hecho de este tipo de nodo se propaga a los nodos Alfa posteriores, y un Hecho corresponde a un nodo Tipo;

  3. Nodo alfa: se utiliza para restricciones o pruebas constantes de atributos dentro del mismo tipo de objeto, es decir, una condición literal corresponde a un nodo alfa, como por ejemplo: edad > 10, cuando hay múltiples condiciones literales, estas condiciones están vinculadas entre sí, es decir es decir, varios nodos Alpha están conectados entre sí y los nodos Alpha se pueden compartir;

  4. Nodo beta: realiza principalmente operaciones de conexión de acuerdo con las restricciones entre diferentes objetos (mascota, gato) en la misma regla, como ("pet.name==cat.name", "pet.age>cat.age"). El nodo Beta se divide a su vez en nodo Unirse , nodo No, etc. El nodo Unirse incluye dos tipos de entrada: la parte izquierda ingresa una lista de hechos, llamada tupla (Tupla), y la parte derecha ingresa un objeto de hecho. realice una operación de unión, agregue los hechos coincidentes a la tupla y continúe pasando al siguiente nodo beta. El nodo Beta tiene una función de memoria, la entrada de la izquierda se llama Memoria Beta, que recordará toda la semántica que ha llegado, y la entrada de la derecha será Memoria Alfa, que recordará todos los objetos que han llegado. El nodo beta no se comparte;

  5. Nodo LeftInputAdapterNode: la función de este nodo es convertir un objeto de hecho en una tupla y proporcionar la función para el nodo beta;

  6. Nodo Terminal: Este es el nodo final de esta regla, representa el final de una coincidencia de reglas, cuando el hecho o tupla se pasa al nodo Terminal, significa que la regla correspondiente al nodo Terminal ha sido activada.
    ————————————————
    Declaración de derechos de autor: este artículo es un artículo original del blogger de CSDN "cloneme01", siguiendo el acuerdo de derechos de autor CC 4.0 BY-SA, adjunte el enlace de la fuente original y este declaración para reimpresión.
    Enlace original: https://blog.csdn.net/goodjava2007/article/details/121989398

ejemplo

Documento de referencia:
https://blogs.sap.com/2022/11/10/introduction-to-the-rete-algorithm/

Ejemplo:

If age>60 or age<5 or income<36000 then concession = 50/100.

Supongamos que la edad es una variable java y los ingresos son una variable xml. Se puede crear la siguiente red rete para representar esta regla.
inserte la descripción de la imagen aquí

Ventajas y desventajas del algoritmo rete.

ventaja

La principal ventaja del algoritmo Rete es la velocidad, ya que aprovecha la similitud estructural en las reglas. Muchas reglas suelen contener patrones o grupos de patrones similares. El algoritmo Rete agrupa los componentes comunes para que no sea necesario volver a calcularlos.

Se puede evitar una gran cantidad de doble conteo cuando el conjunto de hechos no cambia mucho.

defecto

El principal inconveniente del algoritmo de coincidencia de patrones de Rete es que consume mucha memoria . Guardar el estado del sistema mediante coincidencias de patrones y coincidencias parciales con una cantidad considerable de memoria. La complejidad espacial de Rete es del orden de O(RFP), donde R es el número de reglas, F es el número de hechos afirmados y P es el número promedio de patrones por regla.

Ocupa mucha memoria.


Para cada cambio en el conjunto de hechos, el estado coincidente se guarda en los nodos Alfa y Beta. Cuando cambia el siguiente conjunto de hechos, no es necesario cambiar la mayoría de los resultados. El algoritmo Rete guarda el estado durante la operación, evitando una mucha doble contabilización. (La memoria alfa almacena los resultados intermedios calculados, intercambiando espacio por tiempo, acelerando así el sistema. Al procesar reglas y datos masivos, la memoria beta crece exponencialmente de acuerdo con las condiciones de las reglas y la cantidad de hechos, por lo que cuando las reglas y los hechos Muchas veces, agotará los recursos del sistema)

Sin embargo, cuando el cambio del conjunto de hechos es muy drástico cada vez, el efecto del algoritmo de preservación del estado de Rete no es ideal, lo que aún dará lugar a una gran cantidad de cálculos. (La red rete cambia mucho, hay varios tipos y la optimización falla)

Supongo que te gusta

Origin blog.csdn.net/qq_26437925/article/details/131216508
Recomendado
Clasificación