Before formally defining what a timed automaton is, some examples are given.
Consider the language L {\displaystyle {\mathcal {L}}} of timed words w {\displaystyle w} over the unary alphabet { a } {\displaystyle \{a\}} such that there is an a {\displaystyle a} during the first time unit, and there is less than one time unit between two successive a {\displaystyle a} . A timed automaton recognizing this language, pictured nearby, uses a single clock x {\displaystyle x} , which should never be equal to one. This clock counts the time since the start of the run if no a {\displaystyle a} were emitted, or from the last a {\displaystyle a} emitted otherwise. This means that each time an a {\displaystyle a} is emitted, this clock is reset to zero.
Consider the language L {\displaystyle {\mathcal {L}}} of timed words w {\displaystyle w} over the binary alphabet { a , b } {\displaystyle \{a,b\}} such that each a {\displaystyle a} is followed by a b {\displaystyle b} in the next time unit. The timed automaton recognizing this language, pictured nearby, recalls whether or not there was an a {\displaystyle a} that was not yet followed by a b {\displaystyle b} . If it is not the case, it accepts the run, otherwise it rejects it. Furthermore, when there is such a a {\displaystyle a} , it has a clock x {\displaystyle x} that records the time elapsed since the first such a {\displaystyle a} was emitted. In this case, a b {\displaystyle b} cannot be emitted if the clock is at least equal to one, and thus the run fails.
Formally, a timed automaton is a tuple A = ⟨ Σ , L , L 0 , C , F , E ⟩ {\displaystyle {\mathcal {A}}=\langle \Sigma ,L,L_{0},C,F,E\rangle } that consists of the following components:
An edge ( ℓ , σ , g , r , ℓ ′ ) {\displaystyle (\ell ,\sigma ,g,r,\ell ')} from E {\displaystyle E} is a transition from locations ℓ {\displaystyle \ell } to ℓ ′ {\displaystyle \ell '} with action σ {\displaystyle \sigma } , guard g {\displaystyle g} and clock resets r {\displaystyle r} .
A pair with a location ℓ {\displaystyle \ell } and a clock valuation ν {\displaystyle \nu } is called either an extended state or a state.
Note that the word state is thus ambiguous, since, depending on the author, it may mean either a pair or an element of L {\displaystyle L} . For the sake of the clarity, this article will use the term location for element of L {\displaystyle L} and the term extended location for pairs.
Here lies one of the biggest difference between timed automata and finite automata. In a finite automaton, at some point of the execution, the state is entirely described by the number of letter read and by a finite number of possible values, which are actually called "states". That means that, given a state and a suffix of the word to read, the remaining of the run is totally determined. Thus, the word "finite" in the name "finite automata". However, as it is explained in the section "run" below, clocks are used to determine which transitions can be taken. So, in order to know the state of the automaton, it must both be known the location and the clock valuation.
Given a timed word w = ( σ 1 , t 1 ) , ( σ 2 , t 2 ) , … , {\displaystyle w=(\sigma _{1},t_{1}),(\sigma _{2},t_{2}),\dots ,} with σ i ∈ Σ {\displaystyle \sigma _{i}\in \Sigma } , ( t i ) i {\displaystyle (t_{i})_{i}} an increasing sequence of non-negative number, and a timed automaton A {\displaystyle {\mathcal {A}}} as above, a run is a sequence of the form ( ℓ 0 , ν 0 ) → t 1 σ 1 ( ℓ 1 , ν 1 ) … {\displaystyle (\ell _{0},\nu _{0}){\xrightarrow[{t_{1}}]{\sigma _{1}}}(\ell _{1},\nu _{1})\dots } satisfying the following constraint:
The notion of accepting run is defined as in finite automata for finite words and as in Büchi automata for infinite words. That is, if w {\displaystyle w} is finite of length n {\displaystyle n} , then the run is accepting if ℓ n ∈ F {\displaystyle \ell _{n}\in F} . If the word is infinite, then the run is accepting if and only if there exists an infinite number of position i {\displaystyle i} such that ℓ i ∈ F {\displaystyle \ell _{i}\in F} .
As in the case of finite and Büchi automaton, a timed automaton may be deterministic or non-deterministic. Intuitively, being deterministic has the same meaning in each of those case. It means that the set of start locations is a singleton, and that, given a state s {\displaystyle s} , and a letter a {\displaystyle a} , there is only one possible state which can be reached from s {\displaystyle s} by reading a {\displaystyle a} . However, in the case of timed automaton the formal definition is slightly more complex. Formally, a timed automaton is deterministic if:
The class of languages recognized by non-deterministic timed automata is:
The computational complexity of some problems related to timed automata are now given.
The emptiness problem for timed automata can be solved by constructing a region automaton and checking whether it accepts the empty language. This problem is PSPACE-complete.5: 207
The universality problem of non-deterministic timed automaton is undecidable, and more precisely Π11. However, when the automaton contains a single clock, the property is decidable; however, it is not primitive recursive.6 This problem consists of deciding whether every word is accepted by a timed automaton.
Ingólfsdóttir, Anna; Srba, Jiri; Larsen, Kim Guldstrand; Aceto, Luca, eds. (2007), "Timed automata", Reactive Systems: Modelling, Specification and Verification, Cambridge: Cambridge University Press, pp. 175–192, ISBN 978-0-521-87546-2, retrieved 2025-05-10 978-0-521-87546-2 ↩
Rajeev Alur, David L. Dill. 1994 A Theory of Timed Automata. In Theoretical Computer Science, vol. 126, 183–235, pp. 194–1955 http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.51.1093 ↩
Modern Applications Of Automata, page 118 https://books.google.com/books?id=a-TFCgAAQBAJ&dq=timed+automaton+closure+intersection&pg=PA117 ↩
Lasota, SƗawomir; Walukiewicz, Igor (2008). "Alternating Timed Automata". ACM Transactions on Computational Logic. 9 (2): 1–26. arXiv:cs/0512031. doi:10.1145/1342991.1342994. S2CID 12319. /wiki/ACM_Transactions_on_Computational_Logic ↩