Caracterización mediante programas de ciertas clases de funciones

Anuncio
Caracterización mediante programas de ciertas clases de
funciones difusas
José-Luis Pérez-de-la-Cruz
Dpto. Lenguajes y Ciencias de la Computación
Facultad de Informática
Universidad de Málaga
e-mail: [email protected]
Rafael Morales-Bueno
Dpto. Lenguajes y Ciencias de la Computación
Facultad de Informática
Universidad de Málaga
e-mail: [email protected]
Ricardo Conejo
Dpto. Lenguajes y Ciencias de la Computación
Facultad de Informática
Universidad de Málaga
e-mail: [email protected]
Buenaventura Clares
Dpto. Lenguajes y Sistemas Informáticos
Facultad de Ciencias
Universidad de Granada
Resumen
En este trabajo estudiamos, desde el punto de vista de la
Teoría de la Calculabilidad, algunas posibilidades que
surgen cuando al escribir programas difusos en el
lenguaje XL se emplean en las asignaciones únicamente
funciones difusas pertenecientes a ciertos subconjuntos
finitos. De está forma conseguimos caracterizar las
clases WRG de Gerla y CONS de Morales et al.
Palabras clave: Lenguaje, programación, calculabilidad, difuso.
1 Introducción
En recientes trabajos hemos definido el lenguaje de
programación XL. Puesto que se permite emplear en la
sentencia de asignación cualquier W-función calculable
(en el sentido de [8]), la semántica de XL no está
completamente definida. En este trabajo estudiamos
algunas posibilidades que surgen cuando solamente se
permite en las asignaciones el empleo de ciertos
subconjuntos de W-funciones. Más concretamente,
mostramos en la sección 4 una familia finita de
funciones cuyo empleo en las sentencias de asignación
de XL es suficiente para generar precisamente la clase
de W-funciones construibles [5], y análogamente en la
sección 5 para la clase de W-funciones con grafo
recursivo [2].
Para que este trabajo resulte autocontenido,
introducimos en secciones previas algunos conceptos ya
aparecidos en la literatura: en la sección 2 realizamos
una presentación parcialmente informal del lenguaje
XL, y en la sección 3 definimos las W-máquinas de
Turing multicinta y recordamos las definiciones de las
clases de W-funciones construibles y con grafo
recursivo.
2 El lenguaje XL
El lenguaje XL opera sobre datos que son subconjuntos
borrosos de (Z+)n. Hay dos instrucciones de asignación
nítida ( X:=0, X:=suc(Y) ) y una instrucción de
asignación borrosa. Hay dos estructuras de control: a)un
bucle tipo "FOR" que representamos por "REPEAT x
TIMES ... SEMIT"; b)un bucle indefinido con una
condición de control del tipo x_0 que representamos
WHILE x_0 DO ... OD. La variable x, como es habitual,
se denomina variable de control del bucle. La
instrucción de control condicional "IF" se puede
programar en términos de asignaciones y bucles "FOR" .
Debido a entradas borrosas o asignaciones borrosas,
el programa puede alcanzar un punto a partir del cual
cada instrucción debe ejecutarse de manera borrosa.
Esto es especialmente importante al considerar
estructuras repetitivas o condicionales. Cuando acaba la
ejecución se obtiene un conjunto de salidas cada una con
su grado. Es decir, el programa produce como salida un
conjunto borroso.
La ejecución de un programa nítido se puede ver
como la generación de una sucesión de “configuraciones
nítidas”. Cada configuración representa el valor de cada
variable del programa. En el caso de programas en XL,
la sucesión no es única; a partir de cierto punto, hay
varias ramas de cálculo cada una con su grado. De esta
forma, las configuraciones generadas por la ejecución
de un programa en XL son subconjuntos borrosos de
“configuraciones nítidas”. En lo que sigue usaremos el
término “elemento de la configuración” para referirnos a
estas “configuraciones nítidas”.
El significado de un programa en XL está definido
en [6] mediante una semántica operacional, esto es,
viendo el programa como un dispositivo que calcula una
función. Cada programa en XL tiene dos conjuntos de
variables distinguidas - variables de entrada y variables
de salida- y calcula una W-función de las variables de
entrada en las variables de salida.
Sea Xr la variable de control del bucle. Para cada
elemento en la configuración con Xr_0, el cuerpo del
bucle se ejecuta una vez. Los resultados se agrupan con
los elementos de la configuración de partida con Xr=0,
formando una configuración intermedia. Este proceso se
repite hasta que todos los elementos en la configuración
tengan Xr=0. Si una tal configuración no se alcanza, el
proceso continua indefinidamente. Nótese que esta
instrucción “while” borrosa, cuando se usa con datos
nítidos, se comporta como un bucle indefinido nítido.
En [4] se demostró que cada programa en XL sin
bucles indefinidos define una W-función total, en el
sentido de que para cada configuración inicial dada se
alcanza una y sólo una configuración final. Con
programas con bucles indefinidos la situación es
diferente; puede haber programas en los que no se
alcanza una configuración final. Estos programas no
terminan para ciertos datos de entrada.
La asignación difusa en XL es Xi:=FUZZn(Xj). Una
W-función fn de Z+ en Z+ está asociada a esta
asignación. Sin embargo, es demasiado optimista
suponer que cualquier W-función está disponible para
las asignaciones.
Definición 1. Sea H un conjunto de W-funciones
recursivas. Una W-function f es XL(H)- programable sii
existe un XL-programa P que calcula f, supuesto que
todas las asignaciones en P, Xi:=FUZZn(Xj), están
asociadas a W-funciones fn∈H. La clase de las funciones
XL(H)-programables se denotará por F(XL(H)). Nótese
que una función programable puede ser parcial.
Definimos también FT(XL(H)) = {fP / P es un XL(H)
programa con una ata para toda configuración inicial}.
Por tanto, si f∈FT(XL(H)), entonces existe un XL(H)programa P que termina para toda entrada.
El caso más simple será H={I}, donde I es la
identidad de Z+ en Z+. XL({I}) es la versión nítida de
XL, es decir, el lenguaje SAL definido y estudiado en
[9].
3 W-Máquinas de Turing multicinta, CONS y
WRG
En esta sección definimos el concepto de W-TM
multicinta. Hablando informalmente, una máquina
multicinta lee y escribe en varias cintas. Estas
construcciones son bien conocidas en la teoría de la
calculabilidad nítida.
Definición 2. Una W-TM de k-cintas es una
cuádrupla Z=(V, S, p, s0) donde V y S son conjuntos
finitos no vacíos, V∩S = ∅; s0∈S y p es una W-función
de S×(V)k en (V∪{L, R})k×(S∪{h}); L,R∈V, h∈S.
Una descripción elemental de Z es una k+1-upla (q,
u1a1v1, ..., ukakvk) donde q∈S∪{h} y uiaivi∈(V{#})V*)V(V*(V-{#})∪{e})
Una descripción elemental es final cuando q=h.
Los conceptos de descripción, descripción final,
cálculo y parada se definen de manera enteramente
análoga a la del caso de una cinta [10].
Definición 3. Sea f una W-función de (I*)r en (O*)s.
Diremos que T=(V,S,p,s0) construye f sii:
a) I,O ⊆V
b) Para cada x∈(I*)r, T se para con entrada x y la
descripción final que se alcanza es D tal que f(x,y)=
_mD(d), donde _ representa la aplicación de ⊕ al
conjunto de todas las descripciones elementales d tales
que mD(d)_0, d=(h, c1, ...,ck) y ci=yi#, i=1,..,s,
y=(y1,..,ys)
Una W-función f es construible sii existe una W-TM
que construye f. CONS(r,s) denotará la clase de las Wfunciones construibles de (Z+)r en (Z+)s. CONS será la
unión de todos los CONS(r,s) (r,s∈Z+, s>0). Nótese que
esta definición coincide con la dada en [5] a partir de
máquinas de una cinta.
Definición 4. Sea f una W-función de I* en O*. Sea
Im(f,x)= {y∈O*:f(x,y)_0}. Sea sup(f,x)=sup(Im(f,x))
respecto al orden lexicográfico. Definimos la función
nítida sf: I*→O* como sf(x)=sup(f,x).
Definición 5. [2] Sea f una W-función de I* en O*.
f∈WRG (f es una función con grafo recursivo) sii su
función de pertenencia µf:I* × O*→W es recursiva
total.
Proposición 1. [5] La condición necesaria y
suficiente para que una W-función con grafo recursivo
sea construible es que la función nítida sf sea recursiva.
Entre los XL-programas y las W-máquinas se puede
establecer
una
correspondencia
natural.
Nos
concentraremos en las máquinas con alfabeto V={I,#},
es decir, que calculan la clase CONS(r,s).
Notación. Sea c=(c1, ..., ck) ∈ (Z+)k. El par (q, c)
representará una descripción elemental de la W-TM con
k cintas (q, c'1#, c'2#, ..., c'k#) donde c'i= I...I (ci
veces).
Definición 6. Sea C una configuración de un kprograma en XL y sea D la descripción de una W-TM
con k cintas. C and D son equivalentes sii existen un
subconjunto finito {b1,...,bn}⊂ (Z+)k, una sucesión (a1,
..., an) en W, y un estado q tales que
C = a1/b1+a2/b2+...+an/bn
y
D =a1/(q,b1)+a2/(q,b2)+...+an/(q,bn)
Definición 7. Sea P un k-programa en XL y sea M
una W-TM con k cintas, M=(V,S,p,s0). P y M son
equivalentes sii para todo a, b∈(Z+)k se tiene i) o ii):
i) WP(a,b) no está definida y M no se para con
entrada a.
ii) WP(a,b)=b y M se para con entrada a alcanzando
una descripción final D tal que mD(b)=b
Comentario. Si P y M son equivalentes, entonces
hay una correspondencia biunívoca entre los pares
(descripción inicial, descripción final) en M y los pares
(valcoin(e), valcofi(e)) en el árbol de derivación de P.
En otras palabras, si valcoin(e) y la descripción inicial
son equivalentes, entonces P y M o bien se embarcan
ambos en una computación sin fin o bien se paran
ambos y, si se paran ambos, valcofi(e) y la descripción
final de M son equivalentes.
4 Caracterización de CONS mediante programas XL
Necesitaremos para las demostraciones de esta sección
un teorema formulado y probado en [9] cuyas raíces se
remontan a los trabajos de Wang [10] y Böhm-Jacopini
[1] (vd. por ejemplo [7]). Con nuestra notación, el
teorema es el siguiente:
Proposición 2. [9] Una función (nítida) f es
recursiva sii f es XL({I})-programable.
Definición 8.- Sean I1, ..., Ir y y01 las siguientes Wfunciones Z+ en Z+ :
si y = x
l i
I i ( x, y) = 
 0 en otro caso
1 si ( y = 0) o ( y = 1)
ψ 01 ( x, y) = 
en otro caso
0
Demostración: Sea f una W-función construible de
+
Z en Z+; entonces, según se probó en [5], f∈WRG, y
por la definición 4, f es una función recursiva total de
Z+× Z+ en W, y hay un XL({I}) programa (nítido) que
calcula f. Sea P1=(2,1,Q1) este programa; P1 es también
un XL(C) programa. Considerando P1 como
identificador de este programa, puede usarse como una
macro en la forma
Xi := P1(Xj, Xk)
cuya ejecución produce el siguiente resultado: dados
a,b∈Z+ , valores para Xj y Xk respectivamente, Xi
almacena el grado f(a,b) codificado por un entero
positivo 0,..,r.
Por otra parte, la función sf: Z+→Z+ es nítida y
recursiva y hay otro XL({I}) programa que la calcula.
Sea P2=(1,1,Q2) este programa. Usaremos P2 para
identificarlo como macro.
Ahora es posible escribir un XL(C)-programa
P3=(1,1,Q3) que calcula f (el concepto de macro
expansion se describe por completo en [4]):
P3;
begin
1
X2:= P2(X1);
2
REPEAT X2 TIMES
3
IF X5_1 THEN
4
X4:= P1(X1,X3);
5
IF X4_0 THEN
6
X5:= FUZZ0(X4);
7
IF X5=1 THEN
8
X6:= FLATTEN(X3,X4)
9
FI
10
FI
11
FI;
12
X3:=suc(X3)
13
SEMIT;
14
IF X5_1 THEN
15
X4:= P1(X1,X3);
16
X6:=FLATTEN(X3,X4)
17
FI;
18
X1:=X6
end
En este programa, la función asociada a FUZZ0 es
ψ01. La macro FLATTEN está asociada al programa
P=(2,1, Q) cuyo código Q es:
(i=1,..,r)
Definimos la familia C como C = { I1, ..., Ir , ψ01}.
Nótese que
a) C es finita y tiene r+1 elementos;
b) C⊂CONS;
c) {I}⊂C.
Proposición 3. Sea f una W-función construible de
+
Z en Z+. Entonces f es XL(C)- programable.
FLATTEN;
begin
IF
X2=1
THEN
X1:=FUZZ1(X1)
IF
X2=2
THEN
X1:=FUZZ2(X1)
FI;
FI;
.............
IF X2=r THEN X1:=FUZZr(X1) FI
end
Las W-funciones asociadas a FUZZi (i=1,..,r) son Ii.
Una demostración formal de la equivalencia de este
programa con la W-función f es tediosa. En lugar de
ella, mostraremos cuáles son las configuraciones al
principio, en un punto intermedio, y al final del cómputo
de P3 aplicado a un ejemplo. Señalemos primeramente
el papel de cada variable de P3:
X1: almacena la entrada y la salida (línea 18).
X2: almacena el valor de sf(X1) y controla el ciclo
principal (2-13)
X3: toma todos los valores desde 0 a sf(X1); aquellos
con f(X1,X3)_0 constituyen la salida.
X4: almacena el grado f(X1,X3) codificado como un
entero positivo.
X5: almacena 0 ó 1 para controlar una bifurcación.
X6:almacenamiento auxiliar para la salida.
Ejemplo 1. Sea f una W-función construible
+
f:Z ×Z+→W tal que para el argumento 9 la imagen es:
f(9,0)=0, f(9,1)=0, f(9,2)=l4, f(9,3)=l6, f(9,4)=l1,
f(9,5)=0, f(9,6)=l3, para todo x>6, f(9,x)=0 . Mostremos
que fP (9)=f(9).
La configuración inicial es: 1/(9,0,0,0,0,0)
Tras ejecutar 1, es 1/(9,6,0,0,0,0)
Ahora, el bucle definido (2-13) se repite 6 veces para
X3=0,..,5 (instrucción 12). El valor final de X3 es 6.
Según 3, X5=0≠1, por tanto se ejecuta 4; ya que
f(9,0)=0, la configuración no se cambia. Puesto que
X4=0, la siguiente sentencia debe ser 12, cuya ejecución
produce
1/(9,6,1,0,0,0)
y volvemos a 3. Como f(9,1)=0, el proceso se repite y
tras 12 tenemos:
1/(9,6,2,0,0,0)
De nuevo en 3, se tiene que X5≠1, se ejecuta 4, se
calcula para X4 el valor 4 (que codifica el grado l4), y la
configuración queda:
1/(9,6,2,4,0,0)
Ahora, en 5 se tiene queX4≠0, se ejecuta 6 y queda:
1/(9,6,2,4,1,0) + 1/(9,6,2,4,0,0)
La condición de 7 (X5=1) es satisfecha por la primera
configuración elemental y tras ejecutar 8 queda:
l4/(9,6,2,4,1,2) + 1/(9,6,2,4,0,0)
Sólo X3 cambiará en la primera configuración
elemental; sin embargo, el grado y el valor de X6 no
cambian. Ahora es la segunda configuración elemental
la que cambia. Tras 12 tenemos:
l4/(9,6,3,4,1,2) + 1/(9,6,3,4,0,0)
Para X5≠1, tras la ejecución de 4, X4 almacena el valor
6 (que codifica el valor l6), y tenemos:
l4/(9,6,3,4,1,2) + 1/(9,6,3,6,0,0)
X4≠0, y tras ejecutar 6 tenemos:
l4/(9,6,3,4,1,2) + 1/(9,6,3,6,1,0)+ 1/(9,6,3,6,0,0)
Para la segunda configuración elemental X5=1, luego la
línea 8 se ejecuta dando:
l4/(9,6,3,4,1,2) + l6/(9,6,3,6,1,3)+ 1/(9,6,3,6,0,0)
Tras la siguiente ejecución del ciclo tendremos:
l4/(9,6,4,4,1,2) + l6/(9,6,4,6,1,3)+ l1/(9,6,4,1,1,4) +
1/(9,6,4,1,0,0)
Ahora X3 se incrementa en 12, y será:
l4/(9,6,5,4,1,2) + l6/(9,6,5,6,1,3)+ l1/(9,6,5,1,1,4) +
1/(9,6,5,1,0,0)
Sólo la última configuración satisface X5≠1. Tras 4 será:
l4/(9,6,5,4,1,2) + l6/(9,6,5,6,1,3)+ l1/(9,6,5,1,1,4) +
1/(9,6,5,0,0,0)
y X4≠0 no se satisface; la línea 12 se ejecuta y la
configuración queda:
l4/(9,6,6,4,1,2) + l6/(9,6,6,6,1,3)+ l1/(9,6,6,1,1,4) +
1/(9,6,6,0,0,0)
El bucle principal (2-13) se ha ejecutado 6 veces; en
la línea 14 se cumple que X5≠1 en la última
configuración elemental. Se ejecuta la línea 15 y
tenemos:
l4/(9,6,6,4,1,2) + l6/(9,6,6,6,1,3)+ l1/(9,6,6,1,1,4) +
1/(9,6,6,3,0,0)
Tras 16 obtenemos:
l4/(9,6,6,4,1,2) + l6/(9,6,6,6,1,3)+ l1/(9,6,6,1,1,4) +
l3/(9,6,6,3,0,6)
Finalmente, tras 18:
l4/(2,6,6,4,1,2) + l6/(3,6,6,6,1,3)+ l1/(4,6,6,1,1,4) +
l3/(6,6,6,3,0,6)
La única variable de salida es X1 y por tanto la
salida del programa es
l4/2 + l6/3+ l1/4 + l3/6
Por
tanto
fP(9,2)=l4,
fP(9,3)=l6,
fP(9,4)=l1,
fP(9,6)=l3; y en otro caso fP(9,x)=0; el programa
produce los mismos valores que f para entrada 9.
Proposición 4.-CONS ⊆ FT(XL(C))
Demostración: Sea f una W-función construible de
+
(Z )n en (Z+)k. Consideremos las codificaciones de
Cantor (vd. por ejemplo [9]) cn: (Z+)n → Z+ y ck:(Z+)k
→ Z+ . Tanto estas como sus inversas son funciones
recursivas nítidas. Entonces podemos considerar f' de Z+
en Z+ definida por f'(x,y)=f(cn-1(x),ck-1(y)).
Obviamente, f' es una función construible y por el
teorema 4, f' es XL(C)-programable, por tanto f(u,v) =
f'(cn(u),ck(v)) es también XL(C)-programable, es decir,
f∈F(XL(C)). Puesto que toda f∈CONS es total,
f∈FT(XL(C))
Ahora probaremos la inclusión contraria, es decir,
que FT(XL(C))⊆ CONS. Para cada programa P,
mostraremos una máquina equivalente M, en el sentido
de la definición 7 (lema 4). La prueba del lema 4 se hará
por inducción estructural sobre P, a partir de los
programas con una sola instrucción (lema 3), simulando
la secuencia (lema 1) y el anidamiento (lema 2). Puesto
que los ciclos “repeat ... times” pueden sustituirse con
ciclos “while”, consideraremos únicamente éstos.
Lema 1. Sea P1 un k-programa en XL con código
P1; begin B1 end.
Sea P2 un k-programa en XL con código
P2; begin B2 end.
Supongamos que hay dos W-máquinas T1 y T2
equivalentes respectivamente a P1 y P2. Entonces hay
una máquina T equivalente al XL-programa P cuyo
código es
P12;begin B1;B2 end
Demostración: Sea Ti=(V,Si,pi,s0i) (i=1,2) la W-MT
equivalente al programa Pi.
Entonces la W-TM T=(V,S,p,s0) se define como
sigue:
S=S1 ∪ S2
p(q,c,c',q') = p1(q,c,c',q')
si q,q’∈S1 y q'_h
p(q,c,c',s02)= p1(q,c,c',h)
si q∈S1
p(q,c,c',q') = p2(q,c,c',q')
si q,q’∈S2
s0=s01
Las transiciones de T son, aproximadamente, las de
T1 más las de T2: sin embargo, en las transiciones de
parada de T1, h se sustituye por s02. T comienza en el
estado inicial de T1; opera como T1 hasta que T1 se
pararía (simulando así P1); luego opera como T2
(simulando así P2). Es fácil verificar que T es
equivalente a P.
En lo sucesivo, la máquina T así definida se
representará por T1oT2 (T1 concatenada con T2)
Lema 2. Sea P1 un k-programa en XL con código
P1; begin B1 end.
Supongamos una máquina T1 equivalente a P1.
Entonces hay una máquina T equivalente al k-program P
cuyo código es
P1i; begin while Xi_0 do B1 od end
Demostración: Sea T1=(V,S1,p1,s01) la W-MT
equivalente al programa P1. Entonces la W-TM
T=(V,S,p,s0) se define como sigue:
S= S1 ∪ {s0, s’},
(s0, s’∈S1)
p(s0,#(i), L(i), s’)=1
p(s’,|(i),R(i),s01)=1
p(s’,#(i),R(i),h)=1
p(q,c,c’,q’)= p1(q,c,c’,q’)
si q,q’∈S1 y q'_h
p(q,c,c’,s0)= p1(q,c,c’,h)
si q∈S1
Es decir, T comprueba si el contenido de la i-ésima cinta
es _0; en ese caso, el estado de T es el estado s01 -estado
inicial de T1- y T opera como T1 hasta que T1 se
hubiera parado, sustituyendo el estado de parada h por el
estado inicial s0; en otro caso, T se para. Evidentemente,
T y P son equivalentes : T termina sii P se para y, si P se
para, la descripción final alcanzada por T es equivalente
a la configuración final de P tras la ejecución de
begin while Xi_0 do B1 od end
En lo sucesivo, la máquina T así definida se representará
por w(T,i).
Lema 3. Para todo programa P sin bucles, hay una
W-TM equivalente.
Demostración:
Consideremos
primeramente
programas de una instrucción, y posteriormente
secuencias de instrucciones. Supongamos que P es
ident; begin <asignación> end
y <asignación> es Xi:=0. T es equivalente a P:
T=(V,S,p,s0),
S = {s0, s1, s2 },
y p se define como sigue:
p(s0, #(i), L(i), s1) = 1 p(s1, |(i), #(i), s2)= 1
p(s1, #(i), #(i), h) = 1 p(s2, #(i), L(i), s1)=1
Supongamos ahora que <asignación> es
Xi:=suc(Xj); la máquina T definida más abajo es
equivalente al programa P:
T=(V,S,p,s0), S = {s0, ..., s6 }
p(s0, #(i), L(i), s1) = p(s1, |(i), #(i), s2) =1
p(s1, #(i), #(i), s3) = 1 p(s2, #(i), L(i), s1)=1
p(s3, #(j), L(j), s4)= 1 p(s4, #(j), R(j),s5)=1
p(s4, |(j), L(j), s4) = 1 p(s5, |(j), |(i), s6) =1
p(s5, #(j), |(i), s6) = 1 p(s6, |(j), R(i,j),s5)=1
p(s6, |(i), R(i), h) = 1
Las primeras 4 líneas borran la i-ésima cinta. Las
transiciones con estados s3 y s4 ponen la máquina al
comienzo del contenido aj de la j-ésima cinta. Las
transiciones con estados s5 y s6 copian el contenido de
la j-ésima cinta en la i-ésima. Finalmente, otro "|" se
escribe en la i-ésima cinta.
Sea ahora <asignación> Xi:=FUZZ0(Xj).
Recordemos que la función asociada a FUZZ0 es ψ01.
La máquina T es equivalente a P:
T=(V,S,p,s0), S = {s0, ..., s3 }
p(s0, #(i), L(i), s1) = 1 p(s1, |(i), #(i), s2) =1
p(s1, #(i), #(i), h) = 1 p(s1, #(i), |(i), s3) =1
p(s2, #(i), L(i), s1) = 1 p(s3, |(i), R(i), h) =1
La W-función ψ01 siempre produce las imágenes 0
(grado 1) y 1 (grado 1). En efecto, T borra la i-ésima
cinta y entonces a) se para con grado 1 y b) escribe un
solo "|" y se para con grado 1.
Supongamos ahora que <asignación> es
Xi:=FUZZk(Xj). Recordemos que la W-función
asociada a FUZZk is Ik. La máquina T es equivalente a
P:
T=(V,S,p,s0), S = {s0, ..., s6 }
p(s0, #(i), L(i), s1) = 1 p(s1, |(i), #(i), s2) =1
p(s1, #(i), #(i), s3) = 1 p(s2, #(i), L(i), s1)=1
p(s3, #(j), L(j), s4)= 1 p(s4, #(j), R(j),s5)=1
p(s4, |(j), L(j), s4) = 1 p(s5, |(j), |(i), s6) =1
p(s5, #(j), #(i), h) = lk p(s6, |(j), R(i,j),s5)=1
La W-función Ik produce x (grado lk) con entrada x.
En efecto, las únicas acciones que T realiza son copiar xj
en la i-ésima cinta y pararse con grado lk.
Supongamos ahora que P es
<ident>;
begin
<asignación>;
...
<asignación>;
end
Nótese que basta probar el lema para secuencias de
dos instrucciones. Pero por el lema 1 ello está probado.
Por consiguiente, el lema 3 está también demostrado.
Lema 4. Para todo XL(C)-programa existe una WTM equivalente.
Demostración: Supongamos que el programa no tiene
bucles anidados. Por el lema 3, tal máquina existe.
Supongamos que la proposición es verdadera para
todos los programas con bucles anidados b o menos
niveles. Debemos demostrar que el teorema es verdadero
para los programas con b+1 niveles de anidamiento. Sea
P uno de ellos; P puede escribirse como
<ident>; begin S1; S2 ;... Sn end
donde cada Si es o una asignación o un bucle
while Xi_0 do Qi od
y el programa Pi
<ident> begin Qi end
tiene bucles anidados a b o menos niveles. Si Si es una
asignación entonces, por el lema 3, hay una máquina Mi
equivalente a
<ident> begin Si end
si Si es un bucle while, entonces, por el lema 2 y la
hipótesis de inducción, hay también una máquina
Ti=w(T,i) equivalente a
<ident> begin while Xi_0 do Qi od end.
En cualquier caso, un razonamiento similar al del lema 1
muestra que T=T1oT2o...oTn es equivalente a P.
Proposición 5. FT(XL(C))⊆ CONS
Demostración: Sea f una W-función de FT(XL(C)).
Por el lema 4, hay una W-TM M equivalente a P. Como
f es total, P termina con cualquier entrada. Por tanto, M
se para siempre en un número finito de pasos y
f∈CONS.
5. Caracterización de la clase WRG mediante
programas XL.
Definiremos una familia finita de W-funciones G y
probaremos que es suficiente para programar cualquier
función f∈WRG.
Definición 9. Sean I1, ..., Ir las W-funciones de Z+
en Z+ de la definición 10, y sea ψ∞ la siguiente Wfunción de Z+ en Z+: ∀x,y∈Z+ ψ∞(x,y)=1.
La familia G es G = { I1, ..., Ir , ψ∞ }
Nótese que
a) G es finita y tiene r+1 elementos;
b) G⊂WRG;
c) {I}⊂G
Proposición 6. Sea f una W-función con grafo recursivo
de Z+ en Z+. Entonces, f es XL(G)- programable.
Demostración: Sea f una W-función con grafo
recursivo; en ese caso, por la definición 9, f es una
función recursiva total de Z+× Z+ en W,, y existe un
XL({I}) programa que calcula f. Usando los mismos
identificadores de la sección anterior, el siguiente
XL(G)- programa P3=(1,1,Q3) calcula f:
P3;
begin
X3:= FUZZ0(X1);
X4:= P1(X1,X3);
X6:= FLATTEN(X3,X4);
X1:= X6
end
donde la única diferencia con la sección anterior es la
W-función asociada a FUZZ0, que es ψ∞ .
El papel jugado por las variables es el mismo; sin
embargo, nótese que X2 y X5 no se usan en el programa
y sus valores son 0 a lo largo de toda la ejecución. Sea
f(a,i)=ai∈W, i∈Z+.
Con entrada a, la configuración inicial es
1/(a,0,0,0,0,0). Tras la ejecución de X3:= FUZZ0(X1),
la configuración es:
1/(a,0,0,0,0,0) + 1/(a,0,1,0,0,0) + ...+ 1/(a,0,k,0,0,0)+
...
Entonces se ejecuta X4:= P1(X1,X3), produciendo
la configuración:
1/(a,0,0,n0,0,0)
+
1/(a,0,1,n1,0,0)
+
...+
1/(a,0,k,nk,0,0)+ ...
y tras ejecutar la siguiente instrucción X6:=
FLATTEN(X3,X4) tendremos:
a0/(a,0,0,n0,0,0) + a1/(a,0,1,n1,0,1) + ...+
ak/(a,0,k,nk,0,k)+ ...
Finalmente, se ejecuta X1:=X6 y la configuración
final es:
a0/(0,0,0,n0,0,0) + a1/(1,0,1,n1,0,1) + ...+
ak/(k,0,k,nk,0,k)+ ...
Por tanto, la W-función semántica asociada con P3,
fP:Z+×Z+→W, satisface fP(a,i)=ai = f(a,i) ,i∈Z+, es
decir, f =fP y f is XL(G)-programable.
Proposición 7.- WRG⊆ F(XL(G))
Demostración: Como en el corolario 1.
6 Conclusiones
En este trabajo estudiamos la caracterización mediante
programas de ciertas aproximaciones al concepto de "Wfunción calculable" anteriormente propuestas en la
literatura. Desde un punto de vista teórico, la
calculabilidad difusa es una materia algo compleja que
se ha tratado desde varios puntos de vista [3], [8],
algunos de ellos demasiado extensivos. En este trabajo
consideramos los dos enfoques más restringidos: la clase
WRG de G. Gerla [2] y nuestra clase CONS [5].
Considerando la familia de lenguajes de programación
XL(H) generada al restringir la asignación a funciones
de H, se han definido dos familias de funciones
F(XL(C)) y F(XL(G)) tales que C⊂CONS, CONS =
FT(XL(C)), y G ⊂ WRG, WRG ⊆ F(XL(G)).
Referencias
[1] Böhm, C., Jacopini, G., Flow diagrams, Turing
machines and languages with only two formation
rules. Comm. ACM 9 (1966), 366-371.
[2] Gerla, G., Turing L-Machines and Recursive Computability for L-Maps. Studia Logica XLVIII (2)
(1989), 179-192.
[3] Harkleroad, L., Fuzzy Recursion, Ret’s and Isols.
Zeitschr. f. math. Logik und Grundlagen d. Math, 30
(1984), 425-436.
[4] Morales-Bueno, R. et al., An elementary fuzzy
programming language. Fuzzy Sets and Systems 58
(1993), 55-73.
[5] Morales-Bueno, R. et al., Estudio de una clase de
W-funciones calculables, III Congreso Español
sobre Tecnologías y Lógica fuzzy, Santiago de
Compostela 1993, pp. 153-160.
[6] Morales-Bueno, R. et al., El lenguaje de programación borrosa XL, V Congreso Español sobre
Tecnologías y Lógica fuzzy, Murcia 1995.
[7] Odifreddi, P., Classical Recursion Theory. NorthHolland, 1992.
[8] Santos, E.S., Fuzzy algorithms. Inform. Contr. 17
(1970), 326-339.
[9] Sommerhalder, R., van Westrhenen, S.C., The
Theory of Computability. Addison-Wesley, 1988.
[10]Wang, H., A variant of Turing’s theory of
calculating machines. Journal ACM 4(1957) 63-92.
Documentos relacionados
Descargar