Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Capitulo 3-Teoria de La Computacion
Capitulo 3-Teoria de La Computacion
Introducci
on a la Teora de la Computacion
II Semestre 2014
Rodrigo De Castro K.
Captulo 3
Otras propiedades de los lenguajes regulares
1.
(1.1)
b
(definicion de )
(hipotesis de induccion)
(definicion de )
(definicion de b1 y b2 ).
F1 o qj
/ F2 }, entonces para toda cadena w ,
(b1 (q1 , w), b2 (q2 , w)) F
b1 (q1 , w) F1 b2 (q2 , w)
/ F2
w L(M1 ) w
/ L(M2 )
w L(M1 ) L(M2 ) = L1 L2 .
Ejemplo Utilizar el Teorema 1.1 para construir un AFD que acepte el lenguaje L de
todas las cadenas sobre el alfabeto = {a, b} que tienen un n
umero par de
aes y un n
umero par de bes.
nar, por ensayo y error, un
Solucion. En un ejercicio del captulo anterior se pidio dise
AFD para aceptar este lenguaje. Ahora podemos proceder sistematicamente siguiendo el
metodo del teorema Teorema 1.1 ya que el lenguaje L se puede escribir como L = L1 L2
donde L1 es el lenguaje de las cadenas con un n
umero par de aes y L2 es el lenguaje de
las cadenas con un n
umero par de bes. Esto nos permite utilizar la parte (ii) del teorema
a partir de automatas que acepten a L1 y L2 , respectivamente.
AFD M1 que acepta L1 (cadenas con un n
umero par de aes):
b
b
a
q1
q3
a
a
b
q2
q4
b
(q1 , q4 )
b
a
b
(q3 , q2 )
(q3 , q4 )
b
Ejemplo Utilizar el Teorema 1.1 para construir un AFD que acepte el lenguaje L de
todas las cadenas sobre el alfabeto = {a, b} que tienen un n
umero par de
bes pero que no contienen la subcadena bb.
Este problema se puede resolver de dos maneras ya que el lenguaje L se puede expresar ya
sea como una diferencia o como una interseccion de lenguajes. Consideremos los lenguajes:
L1 = lenguaje de todas las cadenas que tienen un n
uumero par de bes.
L2 = lenguaje de todas las cadenas que contienen la subcadena bb.
L3 = lenguaje de todas las cadenas que no contienen la subcadena bb.
Entonces L = L1 L2 y tambien L = L1 L3 .
Solucion 1. Utilizamos la parte (iii) del Teorema 1.1 expresando L como L = L1 L2 .
Para ello encontramos facilmente un AFD M1 que acepta el lenguaje L1 :
a
a
b
q1
q3
b
4
a
b
q2
q4
q5
a
Entonces L = L(M1 ) L(M2 ) = L1 L2 . El producto cartesiano M1 M2 tiene 6 estados:
(q1 , q2 ), (q1 , q4 ), (q1 , q5 ), (q3 , q2 ), (q3 , q4 ) y (q3 , q5 ). Los estados de aceptacion son (q1 , q2 ) y
(q1 , q4 ) ya que q1 es de aceptacion en M1 mientras que q2 y q4 no son de aceptacion en M2 .
Utilizando la definicion de la funcion de transicion de M1 M2 se obtiene el siguiente
AFD:
a
(q1 , q2 )
a
b
(q1 , q4 )
(q3 , q2 )
b
a
(q3 , q4 )
b
b
(q3 , q5 )
(q1 , q5 )
b
a
Se observa que los estados (q3 , q5 ) y (q1 , q5 ) son estados limbo que no conducen a la
aceptacion. El automata simplificado se reduce al mostrado en el siguiente diagrama.
(q1 , q2 )
(q1 , q4 )
(q3 , q2 )
(q3 , q4 )
Solucion 2. Utilizamos la parte (ii) del Teorema 1.1 expresando L como L = L1 L3 . Para
obtener un AFD que acepte L3 basta intercambiar los estados de aceptacion con los de
no-aceptacion en el AFD M2 (mostrado en la pagina anterior). Obtenemos as el siguiente
AFD M3 :
a, b
a
b
q2
q4
q5
a
Al formar el producto cartesiano M1 M3 obtenemos exactamente el mismo AFD con
seis estados que aparece en la pagina anterior. Los estados de aceptacion son los pares
(q1 , q2 ) y (q1 , q4 ) formados por los estados de aceptacion de M1 y M3 .
Ejercicios de la secci
on 1
Utilizar el Teorema 1.1 para construir AFD que acepten los siguientes los siguientes
lenguajes sobre el alfabeto {0, 1}:
(i) El lenguaje L de todas las cadenas que tienen longitud par o que terminan en
10.
(ii) El lenguaje L de todas las cadenas que tienen longitud impar y que terminan
en 01.
(iii) El lenguaje L de todas las cadenas que tienen longitud impar y que no terminan
en 11.
Utilizar el Teorema 1.1 para construir AFD que acepten los siguientes los siguientes
lenguajes sobre el alfabeto {a, b, c}:
(i) El lenguaje L de todas las cadenas que tienen longitud par y terminan en a.
6
(ii) El lenguaje L de todas las cadenas que tienen longitud par o que tienen un
n
umero impar de cs.
(iii) El lenguaje L de todas las cadenas que tienen longitud impar y que tienen un
n
umero par de ces.
(iv) El lenguaje L de todas las cadenas que tienen longitud impar y que no terminan
en c.
(v) El lenguaje L de todas las cadenas de longitud impar que tengan exactamente
dos aes.
En el contexto del Teorema 1.1, dados dos AFD, M1 = (, Q1 , q1 , F1 , 1 ) y
M2 = (, Q2 , q2 , F2 , 2 ) tales que L(M1 ) = L1 y L(M2 ) = L2 , escoger adecuadamente el conjunto de estados de aceptacion F para que el producto cartesiano
M1 M2 = (, Q1 Q2 , (q1 , q2 ), F, ) acepte la diferencia simetrica L1 L2 . Recuerdese que la diferencia simetrica se define como
L1 L2 = (L1 L2 ) (L1 L2 ) = (L1 L2 ) (L2 L1 ).
2.
Las propiedades de clausura afirman que a partir de lenguajes regulares se pueden obtener
otros lenguajes regulares por medio de ciertas operaciones entre lenguajes. Es decir, la
regularidad es preservada por ciertas operaciones entre lenguajes; en tales casos se dice
que los lenguajes regulares son cerrados bajo las operaciones.
Inicialmente presentamos las propiedades de clausura para automatas. El siguiente
teorema resume los procedimientos algortmicos que han sido presentados en secciones
anteriores para la construccion de nuevos automatas finitos.
2.1 Teorema. Sean M , M1 y M2 automatas finitos (ya sean AFD o AFN o AFN-)
tales que L(M ) = L, L(M1 ) = L1 , L(M2 ) = L2 . Se pueden construir automatas finitos
que acepten los siguientes lenguajes:
(1)
(2)
(3)
(4)
L1 L2 .
L1 L2 .
L .
L+ .
(5)
(6)
(7)
(8)
L = L.
L1 L2 .
L1 L2 .
L1 L2 .
aceptacion, tal como se indico en el Teorema 1.1. Tambien se puede usar el producto
cartesiano para aceptar L1 L2 .
Finalmente, los procedimientos de construccion de (1), (6) y (7) se pueden combinar
para obtener un automata que acepte el lenguaje L1 L2 .
Puesto que, seg
un el Teorema de Kleene, los lenguajes regulares son precisamente los
lenguajes aceptados por automatas finitos, el Teorema 2.1 se puede presentar en terminos
de lenguajes regulares.
2.2 Teorema. Si L, L1 y L2 son lenguajes regulares sobre un alfabeto , tambien son
regulares los siguientes lenguajes:
(1)
(2)
(3)
(4)
3.
L1 L2 .
L1 L2 .
L .
L+ .
(5)
(6)
(7)
(8)
L = L.
L1 L2 .
L1 L2 .
L1 L2 .
3.1 Definici
on. Sea un alfabeto dado y L un lenguaje sobre (i.e., L ). Dos
cadenas u, v son distinguibles con respecto a L (o L-distinguibles) si
(x ) (ux L y vx
/ L) o (ux
/ L y vx L) .
(3.1)
Es decir, u y v son L-distinguibles si existe x en tal que una de las cadenas ux o vx
esta en L y la otra no.
Si dos cadenas u, v no son distinguibles con respecto a L, se dice que son indistinguibles con respecto a L o L-indistiguibles. Afirmar que u y v son L-indistinguibles
equivale a negar (3.1); as que u, v son L-indistinguibles si
(x ) (ux L vx L) .
Ejemplo Sea = {0, 1} y L el lenguaje de las cadenas que terminan en 10. Las cadenas
u = 01 y v = 00 son L-distinguibles ya que 010 L pero 001
/ L. En otros
terminos, ux L pero vx
/ L cuando x = 0.
Pero las cadenas 0 y 00 son indistiguibles con respecto a L porque si 0x L, tambien
se tendra 00x L.
3.2 Proposici
on. Sea M = (, Q, q0 , F, ) un AFD tal que L(M ) = L. Si u, v son
b 0 , u) 6= (q
b 0 , v).
L-distinguibles entonces (q
Demostracion. Como u y v son L-distinguibles, existe una cadena x tal que una
de las cadenas ux o vx esta en L y la otra no. Puesto que L(M ) = L, se tiene ux
b 0 , ux) o (q
b 0 , vx)
o vx es aceptada por M y la otra no. Entonces, uno de los estados (q
b 0 , ux) 6= (q
b 0 , vx). Esto implica que
es de aceptacion y el otro no. Por consiguiente, (q
b
b
b
b
(q0 , u) 6= (q0 , v) ya que si (q0 , u) = (q0 , v) se tendra
b 0 , ux) = (
b (q
b 0 , u), x) = (
b (q
b 0 , v), x) = (q
b 0 , vx),
(q
b 0 , ux) 6= (q
b 0 , vx).
lo cual contradice el hecho de que (q
El enunciado de la Proposicion 3.2 lo podemos expresar diciendo que si u y v son
L-distinguibles, cualquier AFD M que acepte a L, distingue las cadenas u y v; o sea,
para M no es lo mismo procesar a u que procesar a v.
3.3 Teorema. Sea un alfabeto dado y L . Si hay n cadenas u1 , u2 , . . . , un en
que L-distinguibles dos a dos (es decir, ui y uj son L-distinguibles para todo i 6= j,
i, j = 1, . . . , n), entonces cualquier AFD M que acepte a L debe tener por lo menos n
estados.
Demostracion. Sea M = (, Q, q0 , F, ) un AFD que acepte a L. Por la Proposicion 3.2,
b 0 , ui ) 6= (q
b 0 , uj ) para todo i 6= j. Entonces los n estados
(q
b 0 , u1 ), (q
b 0 , u2 ), . . . , (q
b 0 , un )
(q
son diferentes entre s (diferentes dos a dos) y, por lo tanto, M tiene por lo menos n
estados.
3.4 Corolario. Sea un alfabeto dado y L . Si L es regular entonces en existe
a lo sumo un n
umero finito de cadenas L-distinguibles dos a dos.
un el Teorema
Demostracion. Sea M un AFD tal que L(M ) = L. Si M tiene n estados, seg
3.3, hay a lo sumo n cadenas L-distinguibles dos a dos (ya que si hay n + 1 cadenas Ldistinguibles, M tendra al menos n + 1 estados).
3.5 Corolario. (Criterio de no regularidad). Sea un alfabeto dado y L . Si
en hay infinitas cadenas L-distinguibles dos a dos, entonces L no es regular.
Demostracion. El enunciado es la implicacion contra-recproca del Corolario 3.4.
Seg
un este criterio, para concluir que L no es regular basta exhibir infinitas cadenas en
que sean L-distinguibles dos a dos. En la mayora de los casos sera suficiente mostrar
que a, a2 , a3 , . . . son infinitas cadenas L-distinguibles dos a dos (en el caso en el que a ).
En algunos problemas resulta conveniente mostrar que las potencias pares, a2 , a4 , a6 , . . .
son infinitas cadenas L-distinguibles dos a dos. Los siguientes ejemplos ilustran el uso de
esta tecnica.
Utilizar el criterio
de no regularidad para demostrar que el lenguaje L =
Ejemplo
an2 : n 1 no es regular. L est
a formado por cadenas de aes cuya longitud
es un cuadrado perfecto, sobre el alfabeto = {a}.
Solucion. Vamos a comprobar que las cadenas de L, o sea, a, a4 , a9 , a16 , a25 , . . ., son L2
2
distinguibles dos a dos. Sean i, j 1, con i < j; queremos mostrar que ai y aj son
2
2
2
L-distinguibles. Si escogemos x = a2i+1 , se tendra que ai x = ai a2i+1 = ai +2i+1 =
2
2
2
2
a(i+1) L. De otro lado, aj x = aj a2i+1 = aj +2i+1
/ L ya que
j 2 < j 2 + 2i + 1 < j 2 + 2j + 1 = (j + 1)2 .
2
n m
Si lo fuera, a b L tambien
Ejemplo L = {a b : n, m 0, n 6= m} no es regular.
lo sera, por el Teorema 2.2 (7). Pero a b L = {an bn : n 0} que no es un
lenguaje regular, seg
un se demostro en la pagina anterior.
Ejercicios de la secci
on 3
Utilizar el criterio de no regularidad (Corolario 3.5) para demostrar que los siguientes
lenguajes no son regulares:
(i) L = {an b2n : n 0}, sobre = {a, b}.
10
4.
Minimizaci
on de aut
omatas
En la presente seccion presentaremos un procedimiento general para encontrar un automata con el menor n
umero de estados posible, equivalente a un AFD dado. Se trata de un
procedimiento algortmico en el que se identifican estados equivalentes, en un sentido que se precisara detalladamente, lo cual permite colapsar estados en el automata
original y de esta manera reducir el n
umero de estados hasta el mnimo posible.
4.1 Definici
on. Dado un AFD M = (, Q, q0 , F, ) se define sobre el conjunto de estados
Q la relacion p q:
b w) F (q,
b w) F ].
p q si y solo si (w )[(p,
Es facil comprobar que la relacion es reflexiva, simetrica y transitiva; es decir, para
todos los estados p, q, r de Q se cumple:
Reflexividad. p p.
Simetra. Si p q entonces q p.
Transitividad. Si p q y q r entonces p r.
Por lo tanto, es una relacion de equivalencia sobre el conjunto de estados Q. Si p q
se dice que p y q son estados equivalentes. La clase de equivalencia de un estado p se
denotara con [p]; es decir,
[p] := {q Q : p q}.
Se define el aut
omata cociente, M/, identificando entre s los estados equivalentes
seg
un la relacion . Formalmente, M/ = (, Q0 , q00 , F 0 , 0 ) donde:
Q0 = {[p] : p Q},
q00 = [q0 ],
F 0 = {[p] : p F },
0 ([p], a) = [(p, a)], para todo a .
Hay que verificar que tanto F 0 como la funcion de transicion 0 estan bien definidas, es
decir, que no dependen del representante escogido en la clase de equivalencia. Esto se hace
en la siguiente proposicion.
4.2 Proposici
on.
(i) 0 esta bien definida, es decir, si [p] = [q] (o sea, si p q) entonces (p, a) (q, a),
para todo a .
(ii) F 0 esta bien definido, es decir, si q F y p q entonces p F .
12
(iii) p F [p] F 0 .
b w)] para toda cadena w .
(iv) b0 ([p], w) = [(p,
Demostracion.
(i) Si p q, entonces
b aw) F (q,
b aw) F ],
(w )(a )[(p,
de donde
b a), w) F ((q,
b
(w )[((p,
a), w) F ],
para todo a . Por la definicion de la relacion , se concluye que (p, a) (q, a).
b ) F si y solo si
(ii) Tomando w = en la definicion de p q, se tiene que p = (p,
b ) F . Puesto que q F , se concluye que p F .
q = (q,
(iii) La direccion () se sigue de la definicion de F 0 . Para demostrar la otra direccion,
sea [p] F 0 . Entonces [p] = [q], con q F ; de donde p q. De (ii) se sigue que
p F.
(iv) Se demuestra por induccion sobre w.
Usando las propiedades de la Proposicion 4.2 se puede deducir que M y M/ aceptan
el mismo lenguaje, tal como se demuestra en el siguiente teorema.
4.3 Teorema. Los automatas M y M/ aceptan el mismo lenguaje, es decir, L(M ) =
L(M/).
Demostracion.
w L(M/) b0 ([q0 ], w) F 0
b 0 , w)] F 0
[(q
b 0 , w) F
(q
w L(M ).
Reflexividad. u IL u.
Simetra. Si u IL v entonces v IL u.
Transitividad. Si u IL v y v IL w entonces u IL w.
Cada clase de equivalencia contiene cadenas que son L-indistinguibles entre s, mientras
que dos cadenas pertenecientes a clases de equivalencia diferentes son L-distinguibles entre
s. Seg
un el Corolario 3.4, si L es regular existe a lo sumo un n
umero finito de cadenas
L-distinguibles dos a dos. Esto quiere decir que si L es regular, el conjunto cociente /IL
formado por todas las clases de equivalencia inducidas por la relacion IL es finito. Se ha
demostrado as la siguiente proposicion.
4.4 Proposici
on. Si L es regular, la relacion de indistinguibilidad IL tiene ndice finito;
es decir, el conjunto cociente /IL es finito.
La siguiente proposicion establece la conexion entre las dos relaciones de equivalencia
definidas en el presente captulo: la relacion p q entre los estados de un AFD y la
relacion u IL v entre cadenas, con respecto a un lenguaje dado L.
4.5 Proposici
on. Sea M = (, Q, q0 , F, ) un AFD tal que L(M ) = L. Sean u, v
b 0 , u) = p y (q
b 0 , v) = q. Entonces
dos cadenas tales que (q
p q u IL v.
(4.1)
p 6 q u y v son L-distinguibles.
(4.2)
b w) F (q,
b w) F ].
p q significa (w )[(p,
u IL v significa (w ) (uw L vw L) .
(4.3)
En consecuencia,
Demostracion.
(4.4)
b 0 , u) = p y (q
b 0 , v) = q, para toda cadena w se tiene que
Puesto que (q
b w) = (
b (q
b 0 , u), w) = (q
b 0 , uw),
(p,
b w) = (
b (q
b 0 , v), w) = (q
b 0 , vw).
(q,
(4.5)
(4.6)
(por 4.3)
(por 4.6)
vw L(M ) vw L.
14
(por 4.6).
Para la demostracion del siguiente teorema se requiere que en un AFD dado todos
los estados sean accesibles desde el estado inicial. Un estado q es accesible si existe una
b 0 , w) = q. Un estado inaccesible q es completamente
cadena de entrada w tal que (q
in
util ya que la unidad de control del automata nunca ingresara al estado q al iniciar el
procesamiento de una cadena cualquiera desde el estado inicial q0 . Los estados inaccesibles
se pueden encontrar facilmente haciendo una b
usqueda por profundidad en el diagrama
de estados y luego se deben eliminar.
4.6 Teorema. Sea M un AFD cuyos estados son todos accesibles. M/ es un automata
determinista equivalente a M , con el mnimo n
umero de estados posible para aceptar el
lenguaje L(M ).
Demostracion. Sea M el AFD M = (, Q, q0 , F, ). Los estados del automata cociente
b 0 , w) = q
(, Q0 , q00 , F 0 , 0 ) son todos accesibles. En efecto, dado q Q, existe w tal que (q
b 0 , w)] = [q] y, por lo tanto [q] es
ya que q es accesible en M . Se sigue que b0 ([q0 ], w) = [(q
accesible.
Supongase ahora que M/ tiene n estados diferentes, [q0 ], [q1 ], . . . , [qn1 ], formados
por clases de equivalencia del automata M . Como los estados q0 , q1 , . . . , qn1 de M son
b 0 , x0 ) = q0 , (q
b 0 , x1 ) = q1 , . . . ,
accesibles, existen cadenas x0 , x1 , . . . , xn1 tales que (q
b 0 , xn1 ) = qn1 . Puesto que pi 6 pj si i 6= j, se sigue de (4.2) que xi es distinguible
(q
de xj si i 6= j. Por lo tanto, x0 , x1 , . . . , xn1 son n cadenas distinguibles dos a dos. Por
el Teorema 3.3, cualquier AFD que acepte a L debe tener por lo menos n estados. En
consecuencia, n es el mnimo n
umero de estados posible.
Dado un AFD M , se dispone de un algoritmo para encontrar el automata cociente
M/, y se le conoce como algoritmo de minimizacion por llenado de tabla. Es muy importante tener presente que para aplicar este algoritmo se requiere que todos los estados
de M dado sean accesibles. Ademas, siendo un automata determinista, M debe ser completo, es decir, para cada estado q y cada smbolo a , la transicion (q, a) debe estar
definida. Por consiguiente, en el diagrama de estados de M se deben mostrar todos los
estados, incluyendo los llamados estados limbo.
El algoritmo se ejecuta llenando una tabla que muestra todos los pares de estados
{p, q}; el proposito es determinar cuales son equivalentes y cuales no. Puesto que en el
par {p, q} no importa el orden de los estados, basta trabajar en una tabla de formato
triangular como la siguiente:
15
q0
q1
q2
..
.
qn2
qn1
qn
16
q5
a
a
q0
q4
q1
q3
a
a
q2
Solucion. Primero marcamos con X las casillas {p, q} para las cuales p es un estado de
aceptacion y q no lo es, o viceversa:
q0
X
q1
X
X
q2
q3
X
q4
X
q5
{q2 , q3 } {q3 , q4 }
{q0 , q3 } {q1 , q4 }
{q2 , q5 } {q3 , q0 }
{q3 , q5 } {q4 , q0 }
{q0 , q5 } {q1 , q0 }
a
{q1 , q4 } {q2 , q5 }
a
q1
X
X
q2
q3
X
X
X
X
q4
X
q5
mod 3}.
{q2 , q5 }
a
{q0 , q3 }
{q1 , q4 }
q1
q3
a
b
q0
a
q2
q4
q5
18
b
b
q1
q3
b
q0
a
q2
q4
Al marcar con X las casillas {p, q} para las cuales p es un estado de aceptacion y q no lo
es, o viceversa, obtenemos la tabla:
q0
q1
q2
q3
X
q4
{q0 , q3 } {q2 , q4 }
{q1 , q3 } {q4 , q4 }
{q0 , q1 } {q1 , q1 }
{q0 , q3 } {q1 , q1 }
{q1 , q3 } {q1 , q1 }
{q0 , q2 } {q2 , q4 }
{q1 , q2 } {q4 , q4 }
{q2 , q3 } {q4 , q4 }
{q1 , q2 } {q1 , q2 }
{q2 , q3 } {q2 , q1 }
{q0 , q2 } {q1 , q2 }
a
b
a
b
q1
q2
q3
X
q4
19
{q0 }
a, b
{q1 , q2 , q3 }
b
{q4 }
a
Ejemplo Sea = {a, b}. Demostrar que el lenguaje L de todas las cadenas que tienen
un n
umero par de aes y un n
umero par de bes no puede ser aceptado por un
AFD con menos de cuatro estados.
Ya conocemos un AFD para aceptar este lenguaje:
a
q0
q1
a
a
q2
q3
a
q1
q2
q3
{q1 , q2 } {q0 , q3 }
{q1 , q3 } {q0 , q3 }
20
{q2 , q3 } {q0 , q1 }
llegamos a la tabla
q0
X
X
X
q1
q2
X
X
q3
en la cual todas las casillas han sido marcadas. Esto quiere decir que no hay pares de
estados diferentes que sean equivalentes entre s, o sea, un estado es solo equivalente a
s mismo. Por lo tanto, el automata no se puede minimizar mas y no es posible aceptar el
lenguaje L con menos de cuatro estados.
Ejercicios de la secci
on 4
b
q0
q1
a, b
q2
a
q3
a
q4
q5
b
q6
(2)
a
q1
a
q3
b
q0
q5
b
b
b
q2
21
q4
(3)
b
b
q0
q1
q4
q2
q5
q6
q3
q7
(4)
1
1
q2
1
0
q0
q1
q5
0
q4
0
q7
0
0
q3
q6
1
(5)
a
q0
a
q1
c
a
q2
a
a
q3
c
c
q4
q5
c
22
q6
Sea = {a, b}. Demostrar que el lenguaje L = a+ b a no puede ser aceptado por un
AFD con menos de seis estados (contando el estado limbo).
Sea = {a, b}. Demostrar que el lenguaje L = a b b a no puede ser aceptado por
un AFD con menos de siete estados (contando el estado limbo).
Sea = {0, 1} y L el lenguaje
L = {w : |w| 3 y el tercer smbolo de w, de derecha a izquierda, es 1}.
Demostrar que L no puede ser aceptado por un AFD con menos de ocho estados
(contando el estado limbo).
23