✖

Μη προσβάσιμες καταστάσεις

Ένα πεπερασμένο αυτόματο μπορεί να έχει καταστάσεις στις οποίες δεν είναι δυνατό να φτάσουμε. Τέτοιες καταστάσεις τις λέμε μη προσβάσιμες καταστάσεις. Συνήθως θέλουμε να τις αφαιρούμε, επειδή απλώς περιπλέκουν άσκοπα όλο το αυτόματο.

Παράδειγμα μη προσβάσιμων καταστάσεων

Έστω αυτό το αυτόματο:

Βλέπουμε ότι, ό,τι κι αν κάνουμε, στην κατάσταση q3 δεν θα φτάσουμε ποτέ, γιατί δεν οδηγεί σε αυτήν καμία μετάβαση. Για την κατάσταση q3 λέμε λοιπόν ότι είναι μη προσβάσιμη. Ερώτηση – θα ήταν προσβάσιμη η κατάσταση q3, αν οδηγούσε σε αυτήν κάποια μετάβαση από άλλη κατάσταση; Αν φέρναμε ακμή από μία από τις καταστάσεις q0, q1, q2, q5, τότε θα ήταν προσβάσιμη. Αν προσθέταμε έναν ακόμη κόμβο και φέρναμε μετάβαση από αυτόν…

…τότε φυσικά και οι δύο καταστάσεις q3 και q4 θα ήταν μη προσβάσιμες.

Ορισμός της μη προσβάσιμης κατάστασης

Πρώτα ορίζουμε την προσβάσιμη κατάσταση. Έστω ένα πεπερασμένο αυτόματο A = ⟨Q, Σ, δ, q0, F⟩. Λέμε ότι μια κατάσταση q ∈ Q είναι προσβάσιμη, αν υπάρχει λέξη w ∈ Σ∗ τέτοια ώστε

⟨q0,w⟩↦∗⟨q,ε⟩.

Μια κατάσταση q ∈ Q είναι μη προσβάσιμη, αν δεν είναι προσβάσιμη.

Πώς να αφαιρέσουμε τις μη προσβάσιμες καταστάσεις

Αν ένα αυτόματο έχει ήδη κάποιες μη προσβάσιμες καταστάσεις, είναι σκόπιμο να τις αφαιρέσουμε. Κατασκευάζουμε έτσι ένα ισοδύναμο αυτόματο A′ = ⟨Q′, Σ, δ′, q0, F′⟩, που δεν θα έχει μη προσβάσιμες καταστάσεις.

Θα κατασκευάζουμε επαναληπτικά το σύνολο των προσβάσιμων καταστάσεων. Ξεκινάμε με το σύνολο S0 = {q0}, επειδή η αρχική κατάσταση είναι σίγουρα προσβάσιμη. Το επόμενο σύνολο κατασκευάζεται ως εξής:

Si={r∣δ(q,a)=r για κάποια q∈Si−1,a∈Σ}∪Si−1

Με απλά λόγια, το σύνολο S0 είναι πάντα δεδομένο, το σύνολο S1 το κατασκευάζουμε παίρνοντας όλες τις καταστάσεις του συνόλου S0 και βρίσκοντας πού οδηγούν οι μεταβάσεις για όλα τα σύμβολα του Σ. Αυτές τις καταστάσεις τις ενώνουμε με το αρχικό σύνολο καταστάσεων S0. Με την ίδια διαδικασία βρίσκουμε το σύνολο S2 και τα επόμενα. Προφανώς ισχύει Si − 1 ⊆ Si.

Το σύνολο των προσβάσιμων καταστάσεων μπορούμε τότε να το πάρουμε ως εξής:

⋃i=1∞Si

Μπορεί να φαίνεται περίεργο ότι προσπαθούμε να ενώσουμε άπειρα σύνολα Si, όμως το αυτόματο περιέχει μόνο πεπερασμένο πλήθος καταστάσεων. Αυτό σημαίνει ότι κάποια στιγμή τα σύνολα Sj και Sj + 1 και όλα τα επόμενα θα είναι ίδια, οπότε και μετά την ένωση άπειρων συνόλων μπορούμε να πάρουμε πεπερασμένο σύνολο καταστάσεων.

Ας επιστρέψουμε στο αυτόματο

και ας προσπαθήσουμε να βρούμε το σύνολο των προσβάσιμων καταστάσεων. Ξεκινάμε βάζοντας τη βασική ισότητα

S0={q0}

Τώρα υπολογίζουμε το σύνολο S1. Πρέπει λοιπόν να βρούμε όλες τις μεταβάσεις από την κατάσταση q0 και τις καταστάσεις προορισμού τους να τις προσθέσουμε στο σύνολο S0. Επειδή ισχύει q0 → a q1 και q0 → bq2, το σύνολο S1 θα περιέχει επιπλέον τις καταστάσεις q1 και q2:

S1={q0,q1,q2}

Στη συνέχεια κατασκευάζουμε το σύνολο S2. Κοιτάμε πού μπορούμε να φτάσουμε από τις καταστάσεις q0, q1, q2. Η μόνη νέα κατάσταση είναι η q5, στην οποία φτάνουμε από την κατάσταση q1:

S2={q0,q1,q2,q5}

Έπειτα κατασκευάζουμε το σύνολο S3. Μπορούμε από τις καταστάσεις q0, q1, q2, q5 να φτάσουμε σε κάποια νέα κατάσταση; Δεν μπορούμε, άρα το σύνολο S3 θα περιέχει τα ίδια στοιχεία με το S2:

S3={q0,q1,q2,q5}

Επειδή S2 = S3, ισχύει και S3 = S4 = S5 = … Αν ενώσουμε όλα τα Si, παίρνουμε το σύνολο S2, γιατί κανένα άλλο στοιχείο δεν θα προστεθεί πια σε κανένα επόμενο σύνολο.

Το σύνολο των προσβάσιμων καταστάσεων του αυτομάτου είναι λοιπόν ίσο με {q0, q1, q2, q5}. Τις μη προσβάσιμες καταστάσεις τις παίρνουμε με απλή διαφορά συνόλων:

Q∖⋃i=1∞Si

Το σύνολο των μη προσβάσιμων καταστάσεων του αυτομάτου μας είναι το {q3, q4}. Αφαιρούμε από το αυτόματο A όλες τις μη προσβάσιμες καταστάσεις και όλες τις μεταβάσεις που περιείχαν κάποια μη προσβάσιμη κατάσταση. Δηλαδή το ισοδύναμο αυτόματο χωρίς μη προσβάσιμες καταστάσεις A′ = ⟨Q′, Σ, δ′, q0, F′⟩ για το αυτόματο A = ⟨Q, Σ, δ, q0, F⟩ το ορίζουμε ως εξής:

  • Q′=⋃i=1∞Si
  • ∀q ∈ Q′, a ∈ Σ:  δ′(q, a) = δ(q, a)
  • F′=F∩Q′=F∩⋃i=1∞Si

Πηγές

Κεφάλαια: Μη προσβάσιμες καταστάσεις, Περιττές καταστάσεις, Ελαχιστοποίηση αυτομάτου