Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις



Σχετικά έγγραφα
Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 9 : Κανονικές Εκφράσεις. Αλέξανδρος Τζάλλας

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (1) Προβλήµατα και Γλώσσες. Σε αυτό το µάθηµα. ιαδικαστικά του Μαθήµατος.

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις

3 Αναδροµή και Επαγωγή

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.

Κανονικές Γλώσσες. Κανονικές Γλώσσες. Κανονικές Γλώσσες και Αυτόματα. Κανονικές Γλώσσες και Αυτόματα

Γραµµατικές για Κανονικές Γλώσσες

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Γραµµική Αλγεβρα Ι. Ενότητα: ιανυσµατικοί χώροι. Ευάγγελος Ράπτης. Τµήµα Μαθηµατικών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Γ2.1 Στοιχεία Αρχιτεκτονικής. Γ Λυκείου Κατεύθυνσης

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σχέσεις Ισοδυναµίας και Πράξεις

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Γενικό πλάνο. Μαθηµατικά για Πληροφορική. Παράδειγµα αναδροµικού ορισµού. οµική επαγωγή ΠΑΡΑ ΕΙΓΜΑ. 3ο Μάθηµα

ΚΕΦΑΛΑΙΟ 5: Τανυστικά Γινόµενα

Μαθηµατικά για Πληροφορική

Κεφάλαιο 1. Εισαγωγικές Εννοιες. 1.1 Σύνολα

Ασκήσεις για το µάθηµα «Ανάλυση Ι και Εφαρµογές»

(1) 98! 25! = 4 100! 23! = 4

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΠΛΗ30 ΕΝΟΤΗΤΑ 3: ΚΑΝΟΝΙΚΕΣ ΓΛΩΣΣΕΣ. Μάθηµα 3.2: ηµήτρης Ψούνης

1 Οι πραγµατικοί αριθµοί

Επαναληπτικό ιαγώνισµα Πληροφορικής Γ Γυµνασίου Γιώργος Λιακέας Σχολικός Σύµβουλος Πληροφορικής Ερωτήσεις

ιδασκοντες: x R y x y Q x y Q = x z Q = x z y z Q := x + Q Τετάρτη 10 Οκτωβρίου 2012

ΕΙΣΑΓΩΓΗ ΣΤΟ MATLAB- SIMULINK

a = 10; a = k; int a,b,c; a = b = c = 10;

ΜΑΘΗΜΑ: Μεταγλωττιστές

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

HY118- ιακριτά Μαθηµατικά

Θεωρία Υπολογισμού. Ενότητα 5 : Λογικά Επιχειρήματα, Αλφάβητα & Γλώσσες (2/2) Αλέξανδρος Τζάλλας

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

5.1 ΣΥΝΟΛΑ. 2. Παράσταση συνόλου. 3. Εποπτική παράσταση συνόλου : Γίνεται µε το διάγραµµα Venn, δηλαδή µε

Κεφάλαιο 7 Βάσεις και ιάσταση

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 5: Κανονικές Εκφράσεις

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

Πιθανότητες Γεώργιος Γαλάνης Κωνσταντίνα Παναγιωτίδου

Βασικά στοιχεία της Java

1. στο σύνολο Σ έχει ορισθεί η πράξη της πρόσθεσης ως προς την οποία το Σ είναι αβελιανή οµάδα, δηλαδή

Κεφάλαιο 0. Μεταθετικοί ακτύλιοι, Ιδεώδη

ΙΙ ιαφορικός Λογισµός πολλών µεταβλητών. ιαφόριση συναρτήσεων πολλών µεταβλητών

Περιεχόμενα Συμβολοσειρές Γλώσσες ΘΥ 6: Συμβολοσειρές & γλώσσες Επ. Καθ. Π. Κατσαρός 24/07/2014 Επ. Καθ. Π. Κατσαρός ΘΥ 6: Συμβολοσειρές & γλώσσες

HY118- ιακριτά Μαθηµατικά. Παράδειγµα. Από τα συµπεράσµατα στις υποθέσεις Αποδείξεις - Θεωρία συνόλων. Από τις υποθέσεις στα συµπεράσµατα...

Αλγεβρικες οµες Ι Ασκησεις - Φυλλαδιο 2

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Κεφάλαιο 3β. Ελεύθερα Πρότυπα (µέρος β)

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

char name[5]; /* define a string of characters */

Κεφάλαιο 4 ιανυσµατικοί Χώροι

771 Η - Θεωρία Υπολογισµών και Αλγορίθµων

Προκαταρκτικές Εννοιες: Σύνολα και Αριθµοί

σύνθεση και απλοποίησή τους θεωρήµατα της άλγεβρας Boole, αξιώµατα του Huntington, κλπ.

ΛΥΣΕΙΣ ΦΥΛΛΑΔΙΟΥ 3/ΣΕΜΦΕ/ y x= ( ) ( ) .( ) , τότε

Σειρά Προβλημάτων 3 Λύσεις

Ι. ΠΡΑΞΕΙΣ. Ορισµός 2 A. ΕΣΩΤΕΡΙΚΗ ΠΡΑΞΗ. Έστω E ένα µη κενό σύνολο. Κάθε απεικόνιση f: E x E E λέγεται εσωτερική πράξη επί του E.

Θεωρητικά Θέµατα. Ι. Θεωρία Οµάδων. x R y ή x R y ή x y(r) [x] R = { y X y R x } X. Μέρος Σχέσεις Ισοδυναµίας, ιαµερίσεις, και Πράξεις

Κανονικές εκφράσεις ή παραστάσεις (Regular Expressions) 3 ο Εργαστήριο ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ - ΕΡΓΑΣΤΗΡΙΟ

Όνοµα: Λιβαθινός Νικόλαος 2291

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

(Regular Expressions) ΤΕΙΘ-ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ ΙΙ/ ΧΕΙΜ

Εισαγωγή στην επιστήµη των υπολογιστών ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

5.1 Συναρτήσεις δύο ή περισσοτέρων µεταβλητών

ΦΟΙΤΗΤΡΙΑ : ΒΟΥΛΓΑΡΙ ΟΥ ΜΑΡΙΑ, ΑΕΜ: 2109 ΕΠΙΒΛΕΠΩΝ : ΚΑΛΟΜΟΙΡΟΣ ΙΩΑΝΝΗΣ, ΕΠΙΚΟΥΡΟΣ ΚΑΘΗΓΗΤΗΣ

Είναι το ηλεκτρικό ρεύµα διανυσµατικό µέγεθος;

Συνεχείς συναρτήσεις πολλών µεταβλητών. ε > υπάρχει ( ) ( )

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μέρος Β (Οργάνωση Υπολογιστών)

(GNU-Linux, FreeBSD, MacOsX, QNX

11. Η έννοια του διανύσµατος 22. Πρόσθεση & αφαίρεση διανυσµάτων 33. Βαθµωτός πολλαπλασιασµός 44. Συντεταγµένες 55. Εσωτερικό γινόµενο

Εισαγωγή στην Τοπολογία

Παιδαγωγική προσέγγιση: Πρόταση για την διδασκαλία της έννοιας αλγόριθµός στο περιβάλλον MicroWorlds Pro

Γνωριµία µε τη Microsoft Access

Σύνοψη Προηγούµενου. Κανονικές Γλώσσες (3) Παραδείγµατα µε Κανονικές Εκφράσεις. Σε αυτό το µάθηµα.

ιµελής σχέση HY118- ιακριτά Μαθηµατικά n-µελείς σχέσεις Σχέσεις 13 - Σχέσεις

Εισαγωγή στην Τοπολογία

Μάθημα 1 ο : Εντολές κίνησης

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία ιάλεξη 12

Παραδείγματα Απαλοιφή Gauss Απαλοιφή Gauss Jordan

ΓΡΑΜΜΙΚΗ ΑΛΓΕΒΡΑ Ι (ΑΡΤΙΟΙ) Λυσεις Ασκησεων - Φυλλαδιο 4

Σειρά Προβλημάτων 4 Λύσεις

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Μάθηµα Θεωρίας Αριθµών Ε.Μ.Ε

HY118- ιακριτά Μαθηµατικά

1 Οι πραγµατικοί αριθµοί

Αφινική Γεωµετρία. Κεφάλαιο Ορισµός και απλά παραδείγµατα

Ενότητα: Πράξεις επί Συνόλων και Σώµατα Αριθµών

Θεωρία Υπολογισμού και Πολυπλοκότητα

Θεώρηµα: Z ( Απόδειξη: Περ. #1: Περ. #2: *1, *2: αποδεικνύονται εύκολα, διερευνώντας τις περιπτώσεις ο k να είναι άρτιος ή περιττός

Παράδειγμα δομικής επαγωγής Ορισμός δομικής επαγωγής Συμβολοσειρές Γλώσσες Δυαδικά δένδρα Μαθηματικά Πληροφορικής 3ο Μάθημα Αρχικός συγγραφέας: Ηλίας

ΑΛΓΕΒΡΙΚΕΣ ΟΜΕΣ Ι. Ασκησεις - Φυλλαδιο 2

Transcript:

Κανονικές Εκφράσεις Στοιχειώδεις Κανονικές Εκφράσεις Κανονικές Εκφράσεις Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις ηµιουργία Κανονικών Εκφράσεων Παραδείγµατα Κανονικών Εκφράσεων Τις Κανονικές εκφράσεις τις συναντάµε σε πολλές µορφές. Η σύνταξη που χρησιµοποιούµε στο µάθηµα είναι πιο απλή απ' αυτή, που χρησιµοποιείται, για παράδειγµα, στη grep εντολή του UNIX, ωστόσο και οι δύο συντάξεις έχουν την ίδια περιγραφική δύναµη. (Το περιβάλλον grep, παρεµπιπτόντως, χρησιµοποιείται ακόµη και στο North Pole.) Εδώ βρίσκεται µία ενδιαφέρουσα περιγραφή των κανονικών εκφράσεων UNIX, και ειδικότερα στο regexp, και εδώ βρίσκεται µια πιο λεπτοµερής εξήγηση. Εδώ βρίσκονται οι UNIX man σελίδες (εγχειρίδιο που δηµιουργείται µε την εντολή man) του regexp, καθώς και των regexp grep, egrep, και fgrep ( συνδεσµος1, συνδεσµος2, συνδεσµος3). Οι κανονικές εκφράσεις χρησιµοποιούνται στην διαδικασία αναζήτησης σε αρκετούς συντάκτες (editors) όπως οι ed, vi, και emacs. Ακόµη χρησιµοποιήθηκαν σε γλώσσες προγραµµατισµού όπως η Tcl και η Perl. Εδώ υπάρχει ένα άρθρο, που περιγράφει εκφράσεις αναζήτησης στην Perl και εδώ άλλο άρθρο που περιγράφει τη χρησιµοποίηση της Perl για αναζήτηση στο ιαδίκτυο. Εδώ βρίσκονται επίσης κάποιες άλλες αναφορές για την χρησιµοποίηση κανονικών εκφράσεων στην γλώσσα Perl. Στοιχειώδης Κανονικές Εκφράσεις Μία κανονική έκφραση χρησιµοποιείται για να περιγράψει µία κανονική γλώσσα. Η κανονική έκφραση αναπαριστά ένα "µοντέλο": συµβολοσειρές που ταιριάζουν σ αυτό το µοντέλο ανήκουν στην γλώσσα, που αυτό περιγράφει, όσες δεν ταιριάζουν, δεν ανήκουν στην γλώσσα αυτή. Ως συνήθως, οι συµβολοσειρές αναφέρονται σε κάποιο αλφάβητο Σ.

Τονίζεται: Τα παρακάτω αποτελούν στοιχειώδης κανονικές εκφράσεις: x, για κάθε x Σ, ε, η κενή συµβολοσειρά, και, παριστάνει την καµία συµβολοσειρά. Έτσι, αν Σ = n, τότε υπάρχουν n+2 στοιχειώδης κανονικές εκφράσεις που ανήκουν σε ένα αλφάβητο Σ. Παρακάτω περιγράφουµε τις γλώσσες, που ορίζονται από τις στοιχειώδεις κανονικές εκφράσεις: Για κάθε x Σ, η στοιχειώδης κανονική έκφραση x περιγράφει την γλώσσα {x}. ηλαδή την γλώσσα που έχει µια µοναδική συµβολοσειρά "x", που περιέχει ένα µοναδικό σύµβολο, το 'x'. Η στοιχειώδης κανονική έκφραση ε περιγράφει την γλώσσα {ε}. Η µοναδική συµβολοσειρά που υπάρχει στη γλώσσα αυτή είναι η κενή συµβολοσειρά. Η στοιχειώδης κανονική έκφραση περιγράφει την γλώσσα {}. Κενή γλώσσα, δεν υπάρχουν συµβολοσειρές στην γλώσσα αυτή. Κανονικές Εκφράσεις Κάθε στοιχειώδης κανονική έκφραση είναι µία κανονική έκφραση. Τονίζεται: Χρησιµοποιώντας τους παρακάτω κανόνες, πεπερασµένου αριθµού φορές, µπορούµε να συνθέσουµε νέες κανονικές εκφράσεις: Αν το r είναι µία κανονική έκφραση, τότε είναι και η (r). Αν το r είναι µία κανονική έκφραση, τότε είναι και η r*. Αν τα r 1 και r 2 είναι κανονικές εκφράσεις, τότε είναι και η r 1 r 2. Αν τα r 1 και r 2 είναι κανονικές εκφράσεις, τότε είναι και η r 1 +r 2. Οι παραπάνω προτάσεις σηµαίνουν τα εξής:

Οι παρενθέσεις χρησιµεύουν µόνο για οµαδοποίηση. Το αστέρι συµβολίζει καµία ή περισσότερες επαναλήψεις της εκάστοτε κανονικής έκφρασης που προηγείται. Έτσι, αν x Σ, τότε η κανονική έκφραση x* συµβολίζει την γλώσσα {ε, x, xx, xxx,...}. Η παράθεση των r 1 και r 2 συµβολίζει τις συµβολοσειρές που περιγράφονται από το r 1 και ενώνονται µε αυτές που περιγράφονται από το r 2. Για παράδειγµα, αν x, y Σ, τότε η κανονική έκφραση xy περιγράφει την γλώσσα {xy}. Το σύµβολο της πρόσθεσης, διαβάζεται ως διαζευκτικό "ή", χρησιµοποιείται στην περιγραφή των γλωσσών που περιγράφονται από κάποιο υποσύνολο της µιας ή της άλλης κανονικής έκφρασης. Για παράδειγµα, αν x, y Σ, τότε η κανονική έκφραση x+y περιγράφει την γλώσσα {x, y}. Προτεραιότητα: * το αστέρι είναι πρώτο, έχει, δηλαδή, τη µεγαλύτερη προτεραιότητα, ακολουθεί η παράθεση, και τέλος το +. Για παράδειγµα, το a+bc* περιγράφει την γλώσσα {a, b, bc, bcc, bccc, bcccc,...}. Γλώσσες που περιγράφονται από Κανονικές Εκφράσεις Υπάρχει µία απλή αντιστοιχία στις κανονικές εκφράσεις και τις γλώσσες που περιγράφονται απ αυτές: Κανονική έκφραση L(κανονική έκφραση) x, για κάθε x Σ {x} ε {ε} { }

(r 1 ) L(r 1 ) r 1 * (L(r 1 ))* r 1 r 2 L(r 1 ) L(r 2 ) r 1 + r 2 L(r 1 ) L(r 2 ) ηµιουργώντας Κανονικές Εκφράσεις Παρακάτω υπάρχουν κάποιες οδηγίες για την δηµιουργία κανονικών εκφράσεων. Θα θεωρήσουµε ότι Σ= {a, b, c}. Κανένα ή περισσότερα. Το a* σηµαίνει "κανένα ή περισσότερα a." Αν πούµε "κανένα ή περισσότερα ab", αυτό σηµαίνει, {ε, ab, abab, ababab,...}, και συµβολίζεται (ab)*. Το ab* δεν είναι σωστό επειδή περιγράφει την γλώσσα a(b)*, δηλαδή την {a, ab, abb, abbb, abbbb,...}. Ένα ή περισσότερα. Εφόσον το a* σηµαίνει "κανένα ή περισσότερα a", µπορούµε να χρησιµοποιήσουµε το aa* (ή ισοδύναµα, a*a) για να γράψουµε "ένα ή περισσότερα a." Οµοίως, για να περιγράψουµε "ένα ή περισσότερα ab", δηλαδή, {ab, abab, ababab,...}, γράφουµε ab(ab)*. Κανένα ή ένα. Μπορούµε να περιγράψουµε ένα ή κανένα a ως (a+ε). Οποιαδήποτε συµβολοσειρά. Για να περιγράψουµε οποιαδήποτε συµβολοσειρά (µε Σ = {a, b, c}), χρησιµοποιούµε την έκφραση (a+b+c)*.

Οποιαδήποτε µη κενή συµβολοσειρά. Αυτό µπορεί να γραφεί σαν οποιοδήποτε σύµβολο του Σ ακολουθούµενο από οποιαδήποτε συµβολοσειρά: (a+b+c)(a+b+c)*. Οποιαδήποτε συµβολοσειρά δεν περιέχει... Για να περιγράψουµε οποιαδήποτε συµβολοσειρά δεν περιέχει το a (µε Σ = {a, b, c}), χρησιµοποιούµε την έκφραση (b+c)*. Οποιαδήποτε συµβολοσειρά περιέχει ακριβώς ένα... Για να περιγράψουµε οποιαδήποτε συµβολοσειρά περιέχει ακριβώς ένα a, τοποθετούµε "οποιαδήποτε συµβολοσειρά δεν περιέχει ένα a", σε κάθε µεριά του a, µε αυτόν τον τρόπο: (b+c)*a(b+c)*. Παραδείγµατα Κανονικών Εκφράσεων Τα παρακάτω είναι από τις ασκήσεις του δευτέρου εργαστηρίου. ηµιουργήστε τις κανονικές εκφράσεις για τις παρακάτω γλώσσες στο αλφάβητο = {a, b, c}. Όλες οι συµβολοσειρές που περιέχουν ακριβώς ένα a. (b+c)*a(b+c)* Όλες οι συµβολοσειρές που δεν περιέχουν περισσότερα από τρία a. Μπορούµε να περιγράψουµε την συµβολοσειρά που περιέχει µηδέν, ένα, δύο ή τρία a (και τίποτα άλλο) ως εξής (ε+a)(ε +a)(ε +a) Τώρα θέλουµε να συµπεριλάβουµε συµβολοσειρές που δεν περιέχουν a όπου βρίσκονται τα X: X(ε+a)X(ε+a)X(ε+a)X έτσι τοποθετούµε όπου Χ το (b+c)* :

(b+c)*(ε +a)(b+c)*(ε +a)(b+c)*(ε +a)(b+c)* Όλες τις συµβολοσειρές που περιέχουν τουλάχιστον µία φορά κάθε σύµβολο του. Το πρόβληµα σ' αυτή την έκφραση βρίσκεται στην σειρά µε την οποία θα τοποθετήσουµε τα σύµβολα. εν µπορούµε να τα τοποθετήσουµε µόνο σε µία σειρά για αυτό και θα εξετάσουµε όλες τις περιπτώσεις: abc+acb+bac+bca+cab+cba Για να δούµε πιο εύκολα την διαδικασία ας βάλουµε το X σε κάθε σηµείο που θέλουµε να τοποθετήσουµε µία διαφορετική συµβολοσειρά: XaXbXcX + XaXcXbX + XbXaXcX + XbXcXaX + XcXaXbX + XcXbXaX Τελικά, αντικαθιστώντας τα X µε (a+b+c)* έχουµε την λύση: (a+b+c)*a(a+b+c)*b(a+b+c)*c(a+b+c)* + (a+b+c)*a(a+b+c)*c(a+b+c)*b(a+b+c)* + (a+b+c)*b(a+b+c)*a(a+b+c)*c(a+b+c)* + (a+b+c)*b(a+b+c)*c(a+b+c)*a(a+b+c)* + (a+b+c)*c(a+b+c)*a(a+b+c)*b(a+b+c)* + (a+b+c)*c(a+b+c)*b(a+b+c)*a(a+b+c)* Όλες τις συµβολοσειρές που δεν περιέχουν το a πάνω από δύο φορές συνεχόµενα. Μπορούµε πολύ εύκολα να δηµιουργήσουµε µια έκφραση, που να περιέχει κανένα a, ένα a, ή ένα aa: (b+c)*(ε +a+aa)(b+c)* αλλά αν θέλουµε να το επαναλάβουµε, πρέπει να είµαστε σίγουροι ότι έχουµε τουλάχιστον ένα µη-a σύµβολο µεταξύ των επαναλήψεων: (b+c)*(ε+a+aa)(b+c)*((b+c)(b+c)*(ε+a+aa)(b+c)*)* Όλες τις συµβολοσειρές που περιέχουν το a εις τριπλούν. (aaa+b+c)*