Uniformisation of Two-Way Transducers
Rodrigo de Souza
UFRPE – Recife – Brazil Supported by CAPES Foundation
Uniformisation of Two-Way Transducers Rodrigo de Souza UFRPE - - PowerPoint PPT Presentation
Uniformisation of Two-Way Transducers Rodrigo de Souza UFRPE Recife Brazil Supported by CAPES Foundation A two-way transducer a | a a | 1 a | a b | b | 1 p q r
Rodrigo de Souza
UFRPE – Recife – Brazil Supported by CAPES Foundation
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
An input word
⊲aababaa⊳
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
The initial configuration
⊲ paababaa ⊳
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
A computation
⊲ paababaa ⊳
− → a
− − → ⊲apababaa ⊳
The output : a
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
A computation
⊲ paababaa ⊳
− → a
− − → ⊲apababaa ⊳
− → a
− − → ⊲aapbabaa ⊳
The output : aa
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
A computation
⊲ paababaa ⊳
− → a
− − → ⊲apababaa ⊳
− → a
− − → ⊲aapbabaa ⊳
← − b
− − → ⊲aqababaa ⊳
The output : aab
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
A computation
⊲ paababaa ⊳
− → a
− − → ⊲apababaa ⊳
− → a
− − → ⊲aapbabaa ⊳
← − b
− − → ⊲aqababaa ⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → a
− − → ⊲aababaa ⊳ r
The output : aabaababaa
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
Another computation – same input
⊲ paababaa ⊳
− → a
− − → ⊲apababaa ⊳
− → a
− − → ⊲aapbabaa ⊳
− → b
− − → ⊲aabpabaa ⊳
− → a
− − → ⊲aabapbaa⊳
← − b
− − → ⊲aabqabaa⊳
← − a
− − → ⊲aaqbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → ⊳
− − → ⊲aababaa ⊳ r
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
Another computation – same input
⊲ paababaa ⊳
− → a
− − → ⊲apababaa ⊳
− → a
− − → ⊲aapbabaa ⊳
− → b
− − → ⊲aabpabaa ⊳
− → a
− − → ⊲aabapbaa⊳
← − b
− − → ⊲aabqabaa⊳
← − a
− − → ⊲aaqbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → ⊳
− − → ⊲aababaa ⊳ r
The output : aababaababaa
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
Another computation – same input
⊲ paababaa ⊳
− → a
− − → ⊲apababaa ⊳
− → a
− − → ⊲aapbabaa ⊳
− → b
− − → ⊲aabpabaa ⊳
− → a
− − → ⊲aabapbaa⊳
← − b
− − → ⊲aabqabaa⊳
← − a
− − → ⊲aaqbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → ⊳
− − → ⊲aababaa ⊳ r
The output : aababaababaa The behaviour : u → {xbu | xb prefix of u }
An (one-way) automaton... p q a b c b
An (one-way) automaton... p q a b c b
An (one-way) automaton... ... and a deterministic equivalent one p q a b c b 10 11 01 a b b a c c
An (one-way) automaton... ... and a deterministic equivalent one p q a b c b 10 11 01 a b b a c c One-way automata (Rabin–Scott 1959) Subset construction Two-way automata (Rabin–Scott 1959, Shepherdson 1959) Crossing sequence construction
A transducer for a function f ... p q a|a b|b a|1 b|1
(uban)f = u
A transducer for a function f ... p q a|a b|b a|1 b|1
(uban)f = u
A transducer for a function f ... ... which is not sequential p q a|a b|b a|1 b|1
||ban, banb|| = 1 ||(ban)f , (banb)f || = n + 1
Functional one-way transducers (Choffrut 1977) f sequential ⇔ f uniformly divergent
Functional 2-way transducers (Engelfriet–Hoogeboom 2001) Via MSO definable graph relations
Functional 2-way transducers (Engelfriet–Hoogeboom 2001) Via MSO definable graph relations Complexity ?
Functional 2-way transducers (Engelfriet–Hoogeboom 2001) Via MSO definable graph relations Complexity ? Functional 2-way transducers (RdS 2013) Via structural constructions
Functional 2-way transducers (Engelfriet–Hoogeboom 2001) Via MSO definable graph relations Complexity ? Functional 2-way transducers (RdS 2013) Via structural constructions 4-exp
Theorem (Kobayashi 1969) r one-way transducer admits uniformisation f functional unambigu-
Theorem (Kobayashi 1969) r one-way transducer admits uniformisation f functional unambigu-
domr = domf , f ⊆ r
Theorem (Kobayashi 1969) r one-way transducer admits uniformisation f functional unambigu-
domr = domf , f ⊆ r Theorem (RdS 2013) r two-way transducer admits uniformisation f sequential two-way transducer
Theorem (Kobayashi 1969) r one-way transducer admits uniformisation f functional unambigu-
domr = domf , f ⊆ r Theorem (RdS 2013) r two-way transducer admits uniformisation f sequential two-way transducer functional two-way
uniformisation construction
underlying input automaton of T
folding of A
Proposition successful computations one-way S ↔ successful loop-free computations two-way A
lexicographic covering of S (JS & RdS 2007)
Proposition successful computations unambiguous one-way B ։ successful loop-free computations A
left (Hopcroft & Ullman 1967) / right pathfinders for B
T + L + R = sequential bidirectional reading folded computations
Main result sequential two-way U realises an uniformisation of T
The folding construction
Back to our example...
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
⊲paababaa⊳
− → a
− − → ⊲apababaa⊳
− → a
− − → ⊲aapbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → a
− − → ⊲aababaa ⊳ r
Back to our example...
p q r ⊲ ⊳ − → a |a − → b |b ← − b |b ← − a |1 ← − b |1 − → ⊲ |1 − → a |a − → b |b
⊲paababaa⊳
− → a
− − → ⊲apababaa⊳
− → a
− − → ⊲aapbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → a
− − → ⊲aababaa ⊳ r folding ∼ 2D perspective of computations
⊲paababaa⊳
− → a
− − → ⊲apababaa⊳
− → a
− − → ⊲aapbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → a
− − → ⊲aababaa ⊳ r
a a b a b a a ⊳ i p p p q q q r r r r r r r r − → ⊲ − → a − → a ← − b ← − a ← − a − → ⊲ − → a − → a − → b − → a − → b − → a − → a
⊲paababaa⊳
− → a
− − → ⊲a
↓
pababaa⊳
− → a
− − → ⊲aapbabaa⊳
← − b
− − → ⊲a
↓
qababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲a
↓
rababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → a
− − → ⊲aababaa ⊳ r
a a b a b a a ⊳ i p p p q q q r r r r r r r r − → ⊲ − → a − → a ← − b ← − a ← − a − → ⊲ − → a − → a − → b − → a − → b − → a − → a
⊲paababaa⊳
− → a
− − → ⊲apababaa⊳
− → a
− − → ⊲aa
↓
pbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aaba
↓
rbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → a
− − → ⊲aababaa ⊳ r
a a b a b a a ⊳ i p p p q q q r r r r r r r r − → ⊲ − → a − → a ← − b ← − a ← − a − → ⊲ − → a − → a − → b − → a − → b − → a − → a
⊲paababaa⊳
− → a
− − → ⊲apababaa⊳
− → a
− − → ⊲aapbabaa⊳
− → b
− − → ⊲aabpabaa⊳
− → a
− − → ⊲aabapbaa⊳
← − b
− − → ⊲aabqabaa⊳
← − a
− − → ⊲aaqbabaa⊳
← − b
− − → ⊲aqababaa⊳
← − a
− − → ⊲qaababaa⊳
← − a
− − → q ⊲ aababaa⊳
− → ⊲
− − → ⊲raababaa⊳
− → a
− − → ⊲arababaa⊳
− → a
− − → ⊲aarbabaa⊳
− → b
− − → ⊲aabrabaa⊳
− → a
− − → ⊲aabarbaa⊳
− → b
− − → ⊲aababraa⊳
− → a
− − → ⊲aababara⊳
− → a
− − → ⊲aababaar⊳
− → ⊳
− − → ⊲aababaa ⊳ r
a a b a b a a ⊳ i p p p p p q q q q q r r r r r r r r − → ⊲ − → a − → a − → b − → a ← − b ← − a ← − b ← − a ← − a − → ⊲ − → a − → a − → b − → a − → b − → a − → a
States are columns (− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b)
Transitions are tuples of left/right moves (− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b
Computations are foldings (− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b
Computations are foldings (− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (− → p , ← − q , − → r , a) (← − p , − → r , b) (− → r , a) (− → r , a) (− → r , a) a a b b b a a
⊲paababaa⊳
− → a
− → ⊲apababaa⊳
− → a
− → ⊲aapbabaa⊳
− → b
− → ⊲aabpabaa⊳
− → a
− → ⊲aabapbaa⊳
← − b
− → ⊲aabqabaa⊳
← − a
− → ⊲aaqbabaa⊳
← − b
− → ⊲aqababaa⊳
← − a
− → ⊲qaababaa⊳
← − a
− → q ⊲ aababaa⊳
− → ⊲
− → ⊲raababaa⊳
− → a
− → ⊲arababaa⊳
− → a
− → ⊲aarbabaa⊳
− → b
− → ⊲aabrabaa⊳
− → a
− → ⊲aabarbaa⊳
− → b
− → ⊲aababraa⊳
− → a
− → ⊲aababara⊳
− → a
− → ⊲aababaar⊳
− → ⊳
− → ⊲aababaa ⊳ r
behaviour two-way A = behaviour one-way S
p q r ⊲ ⊳ − → a − → b ← − b ← − a ← − b − → ⊲ − → a − → b
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b
lexicographic covering of S (JS & RdS 2007)
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b 00000 01000 11000 11100 ⊲ ⊲ ⊲ ⊳ a a b b a b b a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b 00000 01000 11000 11100 ⊲ ⊲ ⊲ ⊳ a a b b a b b a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b 00000 01000 11000 11100 ⊲ ⊲ ⊲ ⊳ a a b b a b b a
< <
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b 00000 01000 11000 11100 ⊲ ⊲ ⊲ ⊳ a a b b a b b a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b 00000 01000 11000 11100 ⊲ ⊲ ⊲ ⊳ a a b b a b b a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b 00000 01000 11000 11100 ⊲ ⊲ ⊲ ⊳ a a b b a b b a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) (− → r , b) ⊲ ⊲ ⊲ ⊳ ⊳ a b a a b b b b b a a b 00000 01000 11000 11100 ⊲ ⊲ ⊲ ⊳ a a b b a b b a
the pathfinder construction
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) A B C D ⊲ ⊲ ⊲ ⊳ a a b b a b b a
Bdet B̺
det
ABC ABCD a b a b D C B A a b b a a a b b B B A B C D D D a a b a b a a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) A B C D ⊲ ⊲ ⊲ ⊳ a a b b a b b a
Bdet B̺
det
ABC ABCD a b a b D C B A a b b a a a b b B B A B C D D D a a b a b a a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) A B C D ⊲ ⊲ ⊲ ⊳ a a b b a b b a
Bdet B̺
det
I J ABC ABCD a b a b D C B A a b b a a a b b B B A B C D D D a a b a b a a
I · a = {A, B, C} (ababaa) · J = {B}
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) A B C D ⊲ ⊲ ⊲ ⊳ a a b b a b b a
Bdet B̺
det
I J ABC ABCD a b a b D C B A a b b a a a b b B B A B C D D D a a b a b a a
I · a ∩ (ababaa) · J = {B}
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) A B C D ⊲ ⊲ ⊲ ⊳ a a b b a b b a
Bdet B̺
det
I J ABC ABCD a b a b D C B A a b b a a a b b B B A B C D D D a a b a b a a
I · (aa) = {A, B, C} (babaa) · J =?
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) A B C D ⊲ ⊲ ⊲ ⊳ a a b b a b b a
Bdet B̺
det
I J ABC ABCD a b a b D C B A a b b a a a b b A-rooted rev-det B-rooted rev-det C-rooted rev-det a b b a b a a b a b b a
(− → p , ← − q , − → r , a) (− → p , ← − q , − → r , b) (← − p , − → r , b) (− → r , a) A B C D ⊲ ⊲ ⊲ ⊳ a a b b a b b a
Bdet B̺
det
I J ABC ABCD a b a b D C B A a b b a a a b b finding the way : reads bab and come back to the position where the rev-det’s meet a b b a b a a b a b b a
Lower complexity Application to the equivalence problem for functional two-way transducers (Culik–Karhum¨ aki 1987)