Se si guardano i manuali (forse più vecchi) di Drools o di altri motori di regole, una delle illustrazioni del loro valore aggiunto è la risoluzione di enigmi del genere come il puzzle di Miss Manners (manuale di Drools). Ora, questi enigmi sono formulati naturalmente e risolto usando Prolog o i più recenti linguaggi di Constraint Programming, e ci si chiede perché qualcuno dovrebbe usare Drools per questo scopo. Il valore aggiunto quale Prolog e CPL danno in questo caso è la loro capacità di naturalmente formulare il puzzle come un insieme di predicati logici e automaticamente cerca lo spazio delle soluzioni (con CPL che è più efficiente in questo senso). Ma qual è il valore aggiunto del prodotto come Drools (intendo anche di le campane e i fischietti di prendere, per esempio, un file Excel e la traduzione in una serie di regole)?
Più specificamente, Prolog implementa la ricerca di backtrack, CLP implementa la ricerca di backtrack con la propagazione dei vincoli, e quindi invece di cercare, per così dire, il intero prodotto cartesiano di spazi per variabili individuali, si potano grandi porzioni di questo spazio prodotto. Questo ciò che li rende efficaci e utili. Sia Prolog che Il CLP è ampiamente discusso 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, quindi (a mio modo di vedere) rendendola di più efficace per valutare l'output se alcuni degli input sono cambiati e dando significa aggiornare efettivamente questa struttura dati per cambiamenti incrementali, lo è 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 un buon risultato riferimenti che vedono l'algoritmo di Rete in questo più ampio contesto.
La documentazione di Drools è sfortunatamente poco istruttiva a questo riguardo. Il massimo che ho trovato è stato "L'algoritmo di Rete, l'algoritmo Leaps ei suoi discendenti come Reteoo (e Leaps) di Drools, forniscono metodi molto efficienti per associare i pattern delle regole ai dati degli oggetti di dominio, particolarmente efficienti quando si dispone di set di dati non cambiare completamente (poiché il motore delle regole può ricordare le partite precedenti). Questi algoritmi sono collaudati in battaglia ". Molto efficiente - rispetto a cosa? Prova di battaglia - potrebbe un punto al mondo reale applicazioni?
Apprezzerei se si potesse gettare un po 'di luce su questo argomento o dare una valida riferimento.