struttura dati / algoritmo per il prossimo passo condizionale

6

Ho cercato di trovare un modo corretto per rappresentare il flusso di dati sopra (questo è solo un piccolo caso), e non sono sicuro di aver trovato un buon modo per farlo. La nostra attuale implementazione valuta solo tutti i dati precedenti come: (if user.isMarried && user.age > 23 & ....) , quindi è molto difficile da mantenere.

Fondamentalmente, ciò di cui ho bisogno è un modo per calcolare il prossimo passo in base all'input corrente e alle condizioni precedenti. Ho pensato a una macchina a stati finiti, ma il mio problema principale è che non dipenderà solo dall'input, ma i dati precedenti hanno già risposto.

Mi è venuto in mente anche usando qualcosa come un albero decisionale, ma non posso rappresentarlo correttamente. Qualsiasi luce sull'argomento sarebbe molto apprezzata.

Nota: verifica che le domande vuote non dipendano dall'input, ma dalle risposte precedenti (sposate o meno).

    
posta Tomás Ramírez 21.02.2017 - 17:32
fonte

1 risposta

1

Una soluzione è una macchina a stati, perché in una macchina a stati anche se si elabora una voce alla volta, ci si trova in uno stato diverso in base al gruppo di azioni precedente. Questo è anche particolarmente utile se hai cicli. In realtà, il diagramma del diagramma di flusso È una macchina a stati. Seguilo con una penna, la scatola in cui ti trovi al momento si basa su quello che è successo prima, la casella in cui stai per arrivare dipende dall'input E da dove vieni (cioè, cosa è successo prima).

Il problema è gestire gli stati e le loro transizioni, il che è difficile da fare in un linguaggio imperativo.

Prolog è stato suggerito nei commenti, il che può aiutare molto nel tuo caso, poiché è stato progettato almeno parzialmente per gestire regole complesse. È bello perché è efficiente per questo tipo di attività, può valutare molte regole molto velocemente e puoi riutilizzare le tue regole. Il rovescio della medaglia è che, almeno dalla mia esperienza, ha richiesto un bel po 'di ricablaggio del cervello per impararlo se non sei abituato al paradigma.

    
risposta data 25.02.2017 - 02:07
fonte

Leggi altre domande sui tag