- costruzione della classe Network a livello base
- capacità di leggere le probabilità dalla CPT: -> fatto: implementato il metodo network.getCptRow(variable, assignment) che calcola l'indice di riga della matrice CPT dato un assignment set COMPLETO dei genitori di una certa variabile
- Funzionamento di getCptRow(): prende gli index dei valori scelti da ciascun genitore, li moltiplica per pesi crescenti in base al numero di opzioni disponibili e somma per trovare la riga esatta (nella tabella CPT le righe sono ordinate in modo che l'ultimo genitore abbia il valore che varia più velocemente)
- input: (variabile, assignment) oppure (ID variabile, assignment)
- capacità di leggere le probabilità dalla CPT: -> fatto: implementato il metodo network.getCptRow(variable, assignment) che calcola l'indice di riga della matrice CPT dato un assignment set COMPLETO dei genitori di una certa variabile
- ordinamento topologico
- calcolo probabilità congiunta e marginale
- costruire la funzione
network.getJointProbability(assignment)che calcola la probabilità di una configurazione completa - generare tutte le configurazioni delle variabili rilevanti per la variabile considerata
- sommare solo su quelle in cui la variabile assume il valore fissato a priori
- modificato: attualmente, nel calcolo della probabilità marginale per enumerazione completa sto calcolando tutte le configurazioni complete -> devo invece generare solo le configurazioni delle variabili da cui la variabile target dipende!
- costruire la funzione
- parsing file BIF
- deve essere capace di leggere i blocchi variable
- e di popolare le tabelle CPT leggendo i blocchi probability
[ ] TODO: migliorare firma della funzione helper Parser::getCptRow(), non necessario che sia static, non necessario passaggio per riferimentorimossa inutile complicazione- fatto: rimuovere
file >> sper lettura dei token, scrivere una funzionenextToken()che separi correttamente i token non spaziati
- eventuale interfaccia utente
- probabilità condizionale (implementata nella query principale di VE)
- variable elimination
- ordine di eliminazione?
- inserire VE nel menu