Esiste una nozione ben definita di "prima" e "dopo" nelle macchine a stati finiti?

2

Quando lavori con macchine a stati finiti, c'è o può esserci un concetto ben definito di "prima" e "dopo".

L'ordinamento, ad esempio, mi dirà che uno stato viene sempre considerato come "prima" di un altro stato, nel senso che qualsiasi sequenza di transizioni attraverso una macchina a stati da uno stato di avvio a uno stato finale deve sempre incontrare uno stato particolare prima di un altro stato.

Penso che si tratterebbe di ordini parziali sugli stati della macchina. A volte due stati non sarebbero né prima né dopo l'altro.

Il problema particolare che sto cercando di risolvere è la convalida dei campi sugli articoli passati attraverso un flusso di lavoro, definito come macchina a stati. Se alcuni campi devono essere presenti in uno stato particolare, devono essere presenti anche in stati considerati "dopo" quello stato.

È possibile nei flussi di lavoro che gli oggetti possano essere spostati indietro in stati precedenti. Ad esempio, un articolo può passare attraverso un flusso di lavoro ed essere "pubblicato", ma in seguito non pubblicato per essere rielaborato, e quindi ripassato attraverso un flusso di lavoro per essere nuovamente pubblicato. Ci sono dei bordi nella macchina a stati che si muovono in avanti verso gli stati finali, ma anche i bordi che si muovono all'indietro verso gli stati iniziali. Detto questo, posso ancora definire delle relazioni "prima" e "dopo" sensibili tra stati?

Quello che sto cercando di fare è, nella teoria delle macchine a stati, c'è una definizione standard di cosa "prima" e "dopo" significano che posso usare per implementare queste funzioni?

    
posta user2800708 10.08.2015 - 17:22
fonte

2 risposte

1

Non penso che tu possa fare supposizioni definite per il grafico generale.

Alcuni bordi potrebbero ignorare un nodo, quindi non è chiaro se il nodo è stato visitato o meno. La macchina a stati è come una mappa di possibilità.

Parlando di mappe, di solito prendi le opportunità offerte da una mappa dopo l'altra. Mentre la posizione in sé non ha la nozione del tempo, la tua visita di certo lo fa.

Applicarlo alla tua macchina di stato significa che crei un altro grafico che rappresenta la lista ordinata degli stati visitati e le transizioni utilizzate.

Questo grafico (elenco) non è mai ciclico, anche se la macchina a stati è, perché accadere uno dopo l'altro rende unica ogni visita di un Nodo (anche quelli dello stesso Nodo). Ciò consente di dichiarare un nodo prima un altro, se è più vicino al nodo iniziale nel "grafico degli stati visitati" rispetto all'altro nodo. "più vicino" significa "ci vogliono meno transizioni per arrivarci"

    
risposta data 11.08.2015 - 14:50
fonte
0

Se sei interessato ad avere comportamenti e / o tracciamento diversi come parte dello stato, se uno stato particolare è mai stato visitato, puoi duplicare tutti i tuoi possibili stati e poi cambiare tutte le transizioni dallo stato di interesse a il nuovo duplicato della sua destinazione originale.

Ad esempio, considera l'FSM con quattro stati A, B, C e D e le seguenti transizioni:

A -> B
B -> C
B -> D
C -> A

D è uno stato finale

Se volessimo trattare il risultato in modo diverso a seconda che C sia visitato o meno, possiamo cambiarlo per avere 8 stati, A..D e A '.. D', con transizioni:

A -> B
B -> C
B -> D
C -> A'
A' -> B'
B' -> C'
B' -> D'
C' -> A'

Possiamo quindi dire che A '.. D' sono dopo C, mentre A, B e D sono prima di C.

    
risposta data 11.08.2015 - 15:21
fonte

Leggi altre domande sui tag