Skip to content

Latest commit

 

History

History
22 lines (21 loc) · 2.03 KB

todo.md

File metadata and controls

22 lines (21 loc) · 2.03 KB

Stato di avanzamento

  1. 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)
  2. ordinamento topologico
  3. 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!
  4. 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 riferimento rimossa inutile complicazione
    • fatto: rimuovere file >> s per lettura dei token, scrivere una funzione nextToken() che separi correttamente i token non spaziati
  5. eventuale interfaccia utente
  6. probabilità condizionale (implementata nella query principale di VE)
  7. variable elimination
    • ordine di eliminazione?
    • inserire VE nel menu