pdfs/suffix tree_2014-02-12-13-25

Sepinoud Azimi
Exact string matching with reaction
systems
TUCS Technical Report
No 1104, February 2014
Exact string matching with reaction
systems
Sepinoud Azimi
Åbo Akademi University, Department of Computer Science
Joukahaisenkatu 3-5A, 20520 Turku, Finland
[email protected]
TUCS Technical Report
No 1104, February 2014
Abstract
Reaction systems are a formal framework with underlying rationale adopted from
the biochemical reactions. There are two main assumptions behind every reaction system:1) if a reactant is present in a state, it is sufficiently present, and 2)
if a reactant does not take part in any running reaction of the systems’s current
state, it vanishes from the environment. This study is an attempt to expand the
investigation of reaction systems from an applicative point of view. To this end,
two reaction systems are defined through whose interactive processes, the corresponding suffix tree to a given string is obtained, which is subsequently employed
for the exact string matching. It is concluded that reaction systems are expressive
enough to be used as a modeling framework in multidisciplinary applications.
Keywords: reaction systems, suffix trees, string matching.
TUCS Laboratory
Computational Biomodeling Laboratory (Combio Lab)
1
Introduction
Reaction systems is a formal framework, first introduced in [2], to capture the
interactions between chemical reactions with a qualitative approach. Reaction
systems are built based on the biochemical reactions intuition. Each reaction is
a triplet a = (R, I, P ), such that R, I and P are finite, non-empty sets where R
and I are disjoint. The sets R, I and P represent the set of reactants, the set of
inhibitors, and the set of products, respectively. In any reaction systems, two main
assumptions are considered. First the threshold supply assumption, stating that,
either a reactant is present and then there is enough amount of it to facilitate the
enabling of the corresponding reactions or it is not present and consequently no
reaction having this element within its set of reactants can take place. The second
assumption is called no permanency and indicates that a reactant which is not
sustained by any reaction disappears from the environment.
In this work, we show the expressive power of reaction systems when dealing with one of the well known problems in computer science, i.e., exact string
matching, using the concept of suffix trees. Suffix trees were first introduced in [5]
and the more simplified version was proposed in [3]. In order to prove the expressiveness of reaction systems we build a suffix tree for a given string using the
framework of the reaction systems and furthermore use it to do the exact string
matching for two arbitrary strings.
This paper is organized as follows. In Section 2 we recall the basic notation and terminology concerning reaction systems and suffix trees. In Section 3
we discuss a representation of suffix trees using reaction systems and apply this
knowledge to do the exact string matching in Section 4. Finally, we conclude with
some discussion in Section 5.
2
Preliminaries
We recall in this section some of the basic definitions we need throughout the
paper.
A suffix tree of a given string is a rooted tree which includes the following information: (i) the number of its branches, the corresponding suffix to each branch,
(iii) if a branch is broken and (iv) where it is broken. The formal definition of a
suffix tree is provided in Definition 1.
Definition 1. [3] A suffix tree Tu for a string u[1 . . . n] of length n is a rooted tree
with exactly n leaves labeled 1, . . . , n. A branch denoted by t(i), is a path from
a node to a leaf which is corresponding to the suffix u[i . . . n] of string u, where
i is the label of the leaf on the tree. There are no two edges out of a node which
starts with the same character and two branches t(i) and t(j), for i < j, intersect
on their first t letters where u[i . . . i + t] = u[j . . . j + t], then we say, the branch
labeled i is broken on its tth letter.
1
Figure 1: The suffix tree corresponding to string acbace.
Various algorithms have been proposed to build a suffix tree for a given string
(e.g., see [3], [4]). The algorithm proposed in [3] has a better conceptual simplicity
comparing to the one of [4], although the latter have a better time complexity. We
have chosen to employ the algorithm of [3] in this paper, due to the fact that our
purpose here is to prove the expressive power of reaction systems and complexity
is not the main concern. Therefore, we decided to choose the more elementary
one which is presented in Algorithm 1.
Algorithm 1. [3] Let u be a string of length n and Tu its corresponding suffix
tree. Tu is built applying the following steps:
Step 1 Add a root and a leaf and number the leaf by 1. Connect the root and leaf
number 1 by an edge labeled u.
Step i, 1<i ≤ n for suffix u[i . . . n], find the path j from the root intersecting with
the first t letters of u[i . . . n]. If no such an intersection can be found, add a
new branch from the root and label it by u[i . . . n] and number its leaf by i,
otherwise split the branch j on its t + 1 letter and number the new branch’s
leaf by i.
Example 1. Let u = acbace be a string, the tree given in Figure 1 is its corresponding suffix tree.
Reaction systems have been introduced in [2] as a formal framework for the
analysis of biochemical networks. Here we provide the formal definition of the
reaction systems framework.
Definition 2. [1] A reaction is a triplet a = (R, I, P ), where R, I, P are finite
nonempty sets with R ∩ I = ∅. If S is a set such that R, I, P ⊆ S, then a is a
reaction in S and rac(S) denotes the set of all reactions in S.
2
Definition 3. [1] Let T be a finite set,
i. Let a be a reaction. Then a is enabled by T , denoted by ena (T ), if Ra ⊆ T
and Ia ∩ T = ∅. The result of a on T , denoted by resa (T ), is defined by:
resa (T ) = Pa if ena (T ) is enabled, and resa (T ) = ∅ otherwise.
ii. Let A be a finite set of reactions.
The result of A on T , denoted by resA (T ),
∪
is defined by: resA (T ) = a∈A resa (T ).
Definition 4. [1] A reaction system is an ordered pair A = (S, A) such that S is
a finite set, and A ⊆ rac(S).
Definition 5. [1] Let A = (S, A) be a reaction system and let n > 0 be an integer.
An (n-step) interactive process in A is a pair π = (γ, δ) of finite sequences such
that γ = C1 , . . . , Cn and δ = D1 , . . . , Dn , where C1 , . . . , Cn , D1 , . . . , Dn ⊆
S, D1 = ∅, and Di = resA (Di ∪ Ci ) for all i ∈ {2, . . . , n}. Ci is called context of
step i.
3
Reaction system representation of a suffix tree
In this section our goal is to present a reaction system which builds the suffix tree
of a string u.
In the following definition, a notion is proposed to give the exact positions of
every letter a in a string u.
Definition 6. Let u be a string of length n. For every a ∈ u, we define occu (a)
to be the set of positions on which a appears in u, O(u) = {(a, occu (a)) | a ∈ u}
and l(O(u)) = n.
Example 2. Let u = acbace be a string of length 6,
O(u) = {(a, {1, 4}), (b, {3}), (c, {2, 5}), (e, {6})}.
Definition 7. Let u and v be two different strings. We say O(u) ⊆∗ O(v) if and
only if for every (a, L) ∈ O(u), (a, L′ ) ∈ O(v), L ⊆ L′ and for every k1 ∈ L and
k2 ∈ L′ \ L, k1 < k2 .
Definition 8. Let u and v be two strings. We define ∩∗ as follows:
(c, L) ∈ O(u) ∩∗ O(v) if and only if (c, Li ) ∈ O(u), (c, Lj ) ∈ O(v) and
Li ∩ Lj = L.
In Definition 9, we propose a reaction system through which the corresponding
suffix tree of a given string can be produced.
The intuition behind the reaction system presented in Definition 9 is to have all
the information provided by the suffix tree in the result state, i.e., (i) the number
of branches of the tree, (ii) the corresponding suffix of the branch, (iii) if a branch
is broken and (iv) where it is broken.
3
Definition 9. Let u be a string of length n and A = (S, A) be a reaction system
where:
S = {(O(u[i · · · n]), i, K)|1 ≤ i ≤ n} ∪ {1, · · · , n} ∪ {final} s.t.,
K is a set where ∀j ∈ K : j = s(t) such that s, t ∈ N.
A = {a1 , · · · , an+1 } is the set of reactions, where:
a1 = ({(O(u), 1, ∅), 1}, {final}, {(O(u), 1, ∅)}),
ai = (Rai , Iai , Pai ) for 2 ≤ i ≥ n s.t.,
• Rai = {(O(u[1 · · · n]), 1, K1 ), (O(u[2 · · · n]), 2, K2 ), . . . , (O(u[i−1 · · · n]),
i − 1, Ki−1 ), (O(u[i · · · n]), i, Ki ), i};
• Iai = {final};
• Pai = {(O(u[1 · · · n]), 1, K1 ), (O(u[2 · · · n]), 2, K2 ), . . . , (O(u[i−1 · · · n]),
i − 1, Ki−1 ), (O(u[i · · · n]), i, Ki′ )}), s.t.:
{s} = min{m | O(u[i · · · n]) ⊆∗ O(u[m · · · n])} where m ∈ {1, · · · , i−1},
r = l(O(u[i · · · n]) ∩∗ O(u[m · · · n]) and
{
{s(r)}, {s} =
̸ ∅;
Ki′ =
∅,
otherwise.
an+1 = ({(O(v), i, K), final}, {dI }, {(O(v), i, K), final}).
The products of different states of a reaction system are given by a set. Therefore, we need a set representing the suffix tree of a string. In Definition 10 such a
representation is proposed.
Definition 10. Let u be a string of length n, Tu be a suffix tree corresponding to
it and t(i) the branch of Tu corresponding to u[i . . . n]. The set SST (Tu ) is called
the set representation of suffix tree Tu where:
SST (Tu ) = {SSTi (Tu )|1 ≤ i ≤ n}
and SSTi (Tu ) = (O(u[i . . . n]), i, K) is a tuple corresponding to branch t(i),
where O(u[i . . . n]) corresponds to the suffix of t(i), i is the label of the branch
and K represents the position on which t(i) is broken. The definition of K is as
follows:

 {s(t)}, u[s . . . n] is the longest suffix of u such that
u[i . . . t] = u[s . . . s + t] and s < i;
K=

∅,
otherwise.
Example 3. The set representation of the suffix tree given in Figure 1 is as follows:
SST (Tu ) = {({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅), ({(a, {3}), (c, {1, 4})
, (b, {2}), (e, {5})}, 2, ∅), ({(a, {2}), (c, {3}), (b, {1}), (e, {4})}, 3, ∅), ({(a, {1}), (c, {2}),
(e, {3})}, 4, {1(2)}), ({(c, {1}), (e, {2})}, 5, {2(1)}), ({(e, {1})}, 6, ∅)}.
4
Theorem 1. Let A be the reaction system of Definition 9, u a string of length
n, C(m) = {(O([m . . . n]), m, ∅)} ∪ {m} the context added to A in state m, for
m ≤ n and C(n + 1) = {final} the context of state n + 1. PA (n + 1) is the set
representation of the suffix tree corresponding to string u.
Proof.
Claim 1. Let u be a string of length n, and Tu the corresponding suffix tree. For
every i ≤ n, PA (i) = {SSTj (Tu )|j ∈ {1, . . . , i}}.
Proof of Claim by induction:
• If i = 1, then C(1) = {(O(u[1 . . . n]), 1, ∅)} ∪ {1}. Reaction a1 is enabled
and {(u[1 . . . n], 1, ∅)} = {SST1 (T )} = PA (1).
• If i = k − 1, then by induction hypothesis PA (k − 1) = {SSTj (T )|j ∈
{1, . . . , k − 1}}.
• If i = k, then C(k) = {(O(u[k . . . n]), k, ∅)} ∪ {k}. There are two possible
cases:
i. There is no j < k such that u[j . . . j + t] = u[k . . . k + t],
ii. j is the smallest integer such that u[j . . . j + t] = u[k . . . k + t] and
j < k.
Case i Reactions a1 and ak are enabled, therefore:
PA (k) = PA (k − 1) ∪ {O((u[k . . . n]), k, ∅)}.
Case ii Reactions a1 and ak are enabled, therefore:
PA (k) = PA (k − 1) ∪ {(O((u[k . . . n]), i, {j(k)})}.
In the (n + 1)th state, reaction an+1 is enabled.
Therefore, PA (n + 1) = {SST1 (T ), . . . , SSTn (T )} = SST (T ).
Example 4. Let u = acbace and ∀m ≤ 6, C(m) = {(O(u[m . . . 6]), m, ∅)}∪{m}
and C(7) = {final}. The interactive process presented in the Tables 1, 2, 3 and
4 shows that the product of the seventh state of the system is the same as the set
representation in Example 3.
4
String matching with reaction systems
Exact String matching is to try to find a place where one or several occurrences of string v
are found within a larger string u. In this case we say, string v is matched with string u. In
this section, we aim to do exact string matching through a reaction system. The reaction
system presented in Definition 11 is used to achieve such a goal.
5
i
Wi
Ci
Di
C i ∪ Di
1
∅
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {1, 4}), (c, {2, 5}), (b, {3})}, 1, ∅),
({(a, {1, 4}), (c, {2}), (b, {3})}, 1, ∅),
({(a, {1}), (c, {2}), (b, {3})}, 1, ∅),
({(a, {1}), (c, {2})}, 1, ∅),
({(a, {1})}, 1, ∅),
1
∅
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {1, 4}), (c, {2, 5}), (b, {3})}, 1, ∅),
({(a, {1, 4}), (c, {2}), (b, {3})}, 1, ∅),
({(a, {1}), (c, {2}), (b, {3})}, 1, ∅),
({(a, {1}), (c, {2})}, 1, ∅),
({(a, {1})}, 1, ∅),
1
2
∅
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {3}), (c, {1, 4}), (b, {2})}, 2, ∅),
({(a, {3}), (c, {1}), (b, {2})}, 2, ∅),
({(c, {1}), (b, {2}))}, 2, ∅),
({(c, {1})}, 2, ∅),
2
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅)
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {3}), (c, {1, 4}), (b, {2})}, 2, ∅),
({(a, {3}), (c, {1}), (b, {2})}, 2, ∅),
({(c, {1}), (b, {2}))}, 2, ∅),
({(c, {1})}, 2, ∅),
2
Table 1: The interactive process of Example 4.
Reactions enabled
i
Wi
Ci
Di
Ci ∪ Di
a1
3
∅
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {2}), (c, {1, 3})}, 3, ∅),
({(a, {2}), (c, {1})}, 3, ∅),
({(c, {1})}, 3, ∅),
3
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅)
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {2}), (c, {1, 3})}, 3, ∅),
({(c, {1})}, 3, ∅),
3
a1 , a2
4
∅
({(a, {1}), (c, {2}), (e, {3})}, 4, ∅),
({(a, {1}), (c, {2})}, 4, ∅),
({(a, {1})}, 4, ∅),
4
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅)
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, ∅),
({(a, {1}), (c, {2})}, 4, ∅),
({(a, {1})}, 4, ∅),
4
Table 2: The interactive process of Example 4.
6
i
Wi
Ci
Di
C i ∪ Di
5
∅
({(c, {1}), (e, {2})}, 5, ∅),
({(c, {1}), 5, ∅),
5
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
6
∅
({(e, {1})}, 6, ∅),
6
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}),
({(c, {1}), (e, {2})}, 5, ∅),
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(c, {1}), 5, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅), ({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}),
5
({(e, {1})}, 6, ∅),
6
Table 3: The interactive process of Example 4.
i
Wi
Ci
Di
C i ∪ Di
7
∅
(final, {6})
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}),
({(e, {1})}, 6, ∅),
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}),
({(e, {1})}, 6, ∅),
(final, {6})
8
∅
∅
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}),
({(e, {1})}, 6, ∅),
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
({(a, {2}), (c, {1, 3}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}),
({(e, {1})}, 6, ∅)
Table 4: The interactive process of Example 4.
7
Definition 11. Let u and v be two strings and SST (Tu ) the set representation of the suffix
tree corresponding to u. Let Ap = (Sp , Ap ) be a reaction system where
• Sp = SST (Tu ) ∪ {O(v)} ∪ {matching}
• Ap = {a1 , . . . , an } s.t. for every 1 ≤ i ≤ n:
– Rai = {O(v)} ∪ SSTi (Tu );
– Iai = dI ;
{
∅,
O(v) ∩∗ O(u[i . . . n]) ̸= O(v);
– Pai =
{matching , i}, O(v) ∩∗ O(u[i . . . n]) = O(v).
Theorem 2. If u and v are two strings and {SST (Tu ), O(v)} the initial state of the
reaction system in Definition 11, then the second state of the reaction system represents
the exact string matching of string v with u.
Proof. Let u = b1 b2 . . . bn and v = c1 c2 . . . cm . There are two possible cases:
i. v is not matched with u: @SSTi (Tu ) : (bi , L) ∈ O(u[i . . . n]), 1 ∈ L and bi = c1
⇒ @SSTi (Tu ) : (c1 , L′1 ) ∈ O(u[i . . . n]) ⇒ ∀i, O(v) ∩∗ O(u[i . . . n]) = ∅ ⇒
There is no matching.
ii. v is matched with u on k positions: Let j ∈ {i1 , i2 , . . . , ik } be one of the positions
on which v is matched with u. Therefore, u′ = bj bj+1 . . . bj+m = c1 c2 . . . cm = v.
Hence, the O(u′ ) = O(v). Also, from the definition of set representation of the
suffix tree we have:
O(u′ ) ∩∗ O(u[i . . . n]) = O(u′ ) = O(v)
and consequently {Matching, j} ∈ D2 . With similar argument, it is easy to show
that {matching, i1 , i2 , . . . , ik } ∈ D2 . Since for every i ̸= i1 , i2 , . . . , ik , O(v) ∩∗
O(u[i . . . n]) = ∅, therefore D2 = {matching, i1 , i2 , . . . , ik } and hence D2 provides all the positions on which v is matched with u.
Example 5. Let O(u) = {(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})} and O(v) =
{(a, {1}), (c, {2}, (e, {3})}. In order to match O(v) with O(u) we run the corresponding interactive process for two consecutive states. The interactive process is presented in
Table 5.
Hence, v is matched with u on its fourth position.
5
Conclusion
We demonstrated in this work the expressive power and the flexibility of reaction systems
as a modeling tool for computer science applications. In Section 3 we exploited reaction
systems to build a suffix tree and used it to do exact string matching. We proved that,
8
i
0
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
Wi
({(a, {2}), (c, {3}), (b, {1}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}), ({(e, {1}), 6, ∅)}
,{(a, {1}), (c, {2}, (e, {3})}
Ci
∅
({(a, {1, 4}), (c, {2, 5}), (b, {3}), (e, {6})}, 1, ∅),
({(a, {3}), (c, {1, 4}), (b, {2}), (e, {5})}, 2, ∅),
Di
({(a, {2}), (c, {3}), (b, {1}), (e, {4})}, 3, ∅),
({(a, {1}), (c, {2}), (e, {3})}, 4, {1(2)}),
({(c, {1}), (e, {2})}, 5, {2(1)}), ({(e, {1}), 6, ∅)}
,{(a, {1}), (c, {2}, (e, {3})}
Note O(v) ∩∗ S4 [4 . . . 6] = O(v)
1
{matching, 4}
∅
{matching, 4}
Table 5: The interactive process of Example 5.
the suffix tree built through the interactive processes of a specific reactions system corresponds to the one obtained via regular computer science algorithms. Furthermore, we
showed that it is possible to do exact string matching using the reaction systems framework. In conclusion, our intention was to deepen the investigation of reaction systems
from an applicative point of view and to confirm the feasibility and the expressive power
as a modeling framework in multidisciplinary applications.
References
[1] R. Brijder, A. Ehrenfeucht, M. Main, and G. Rozenberg. A tour of reaction systems.
International Journal of Foundations of Computer Science, 22(07):1499–1517, 2011.
[2] Andrzej Ehrenfeucht and Grzegorz Rozenberg. Reaction systems. Fundamenta Informaticae, 75(1):263–280, 2007.
[3] Edward M McCreight. A space-economical suffix tree construction algorithm. Journal of the ACM (JACM), 23(2):262–272, 1976.
[4] Esko Ukkonen. On-line construction of suffix trees. Algorithmica, 14(3):249–260,
1995.
[5] Peter Weiner. Linear pattern matching algorithms. In Switching and Automata Theory,
1973. SWAT’08. IEEE Conference Record of 14th Annual Symposium on, pages 1–11.
IEEE, 1973.
9
Joukahaisenkatu 3-5 A, 20520 TURKU, Finland | www.tucs.fi
University of Turku
Faculty of Mathematics and Natural Sciences
• Department of Information Technology
• Department of Mathematics
Turku School of Economics
• Institute of Information Systems Sciences
Åbo Akademi University
• Department of Computer Science
• Institute for Advanced Management Systems Research
ISBN 978-952-12-3024-0
ISSN 1239-1891