Se si guardano i manuali (forse più vecchi) di Drools o alcuni altri motori di regole, una delle illustrazioni del loro valore aggiunto è quella di risolvere enigmi come il puzzle di Miss Manners (manuale di Drools). Ora, tali enigmi sono formulati e risolti naturalmente usando Prolog o i più recenti linguaggi di programmazione dei vincoli, e ci si chiede perché qualcuno dovrebbe usare Drools per questo scopo. Il valore aggiunto che Prolog e CPL danno in questo caso è la loro capacità di formulare naturalmente il puzzle come un insieme di predicati logici e di cercare automaticamente lo spazio delle soluzioni (con CPL più efficiente in questo senso). Ma qual è il valore aggiunto di un prodotto come Drools (intendo oltre alle campane e ai fischi di prendere, ad esempio, un file Excel e tradurlo in un insieme di regole)?
Più in particolare, Prolog implementa la ricerca di backtrack, CLP implementa la ricerca di backtrack con propagazione di vincoli e quindi invece di cercare, per così dire, l'intero prodotto cartesiano degli spazi per singole variabili, eliminano grandi porzioni di questo spazio prodotto. Questo è ciò che li rende efficaci e utili. Sia Prolog che CLP sono ampiamente discussi in letteratura.
D'altra parte, mentre è chiaro che l'algoritmo di Rete memorizza nella cache l'insieme di regole sotto forma di alcune strutture di dati, rendendo quindi (a mio avviso) più efficace la valutazione dell'output se alcuni degli input sono cambiati, e dando mezzi per aggiornare efficacemente questa struttura di dati per cambiamenti incrementali, è difficile (per me) capire l'idea di base, e ancora di più, la sua efficacia (rispetto a cosa? a Prolog? a CLP)? Sfortunatamente, è difficile trovare buoni riferimenti che vedano l'algoritmo di Rete in questo contesto più ampio.
La documentazione di Drools purtroppo non è molto istruttiva al riguardo. Il massimo che ho trovato è stato "L'algoritmo Rete, l'algoritmo Leaps e i suoi discendenti come Reteoo (e Leaps) di Drools, forniscono modi molto efficienti di abbinare modelli di regole ai dati degli oggetti del tuo dominio. Questi sono particolarmente efficienti quando hai set di dati che non cambiano del tutto (dato che il motore delle regole è in grado di ricordare le partite passate). Questi algoritmi sono testati in battaglia ". Molto efficiente - rispetto a cosa? Battaglia dimostrata: si potrebbe puntare ad applicazioni nel mondo reale?
Gradirei se si potesse gettare più luce su questo argomento o fornire un riferimento valido.