Edición de «Práctica 3 (LyC Verano)»

De Cuba-Wiki
Advertencia: no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.

Puedes deshacer la edición. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces publica los cambios para así efectuar la reversión.

Revisión actual Tu texto
Línea 1: Línea 1:
__NOTOC__
{{Back|Lógica y Computabilidad}}
{{Back|Lógica y Computabilidad}}
== Ejercicio 1 ==
== Ejercicio 1 ==
Sea <math>f: \mathbb{N} \rightarrow \mathbb{N}</math> computable.  
 
Sea f: N -> N computable.  


=== Item A ===
=== Item A ===
Línea 8: Línea 9:
Demostrar que la función
Demostrar que la función


<math> g(x) = \begin{cases} min_y\; f(y) = x & \textrm{si existe } y \textrm{ tal que } f(y) = x \\
g(x) = min {y : f(y) = xsi existe y tal que f(y) = x
\uparrow & \textrm{si no}
        se cuelga          si no
\end{cases}
</math>


es parcialmente computable.
es parcialmente computable.
Línea 20: Línea 19:


  Z1 <- X1
  Z1 <- X1
  [A] Z3 <- f(Z2)  //Dado que f es computable, supongo que tengo el programa homónimo que la calcula,  
  [A] Z3 <- f(Z2)  //Dado que f es computable, supongo que tengo el progama homónimo que la calcula,  
                   //y además sé que no se cuelga.
                   //y además sé que no se cuelga.
  IF Z3 = Z1 GOTO B
  IF Z3 = Z1 GOTO B
Línea 28: Línea 27:


La idea es sencillamente chequear si f(y) = x, empezando con y = 0 e incrementando de a uno. Si en algún momento esto ocurre, ese y es el que busca la minimización de la primer rama de g. Si no ocurre nunca, el programa sigue incrementando el valor chequeado infinitamente, o sea se cuelga.
La idea es sencillamente chequear si f(y) = x, empezando con y = 0 e incrementando de a uno. Si en algún momento esto ocurre, ese y es el que busca la minimización de la primer rama de g. Si no ocurre nunca, el programa sigue incrementando el valor chequeado infinitamente, o sea se cuelga.


=== Item B ===
=== Item B ===


Demostrar que si f es además biyectiva, <math>f^{-1}</math> es computable.  
Demostrar que si f es además biyectiva, f^-1 es computable.  


'''Solución'''
'''Solución'''


<math>f^{-1}(x) = min_y\; f(y) = x</math>
Notar que el programa que dimos computa f^-1. Como f es biyectiva, es inyectiva. Esto asegura que el resultado de la expresión min{y:f(y) = x} devuelve no sólo el mínimo y, sino el único. Además, la sobreyectividad nos asegura la existencia de tal y, con lo cual el programa no puede colgarse.
 
Notar que el programa que dimos computa <math>f^{-1}</math>. Como f es biyectiva, es inyectiva. Esto asegura que el resultado de la expresión min {y:f(y) = x} devuelve no sólo el mínimo y, sino el único. Además, la sobreyectividad nos asegura la existencia de tal y, con lo cual el programa no puede colgarse.


== Ejercicio 2 ==
== Ejercicio 2 ==


Sea <math>f: \mathbb{N} \rightarrow \mathbb{N}</math> una función computable y sobreyectiva. Probar que existe una función computable e inyectiva <math>g: \mathbb{N} \rightarrow \mathbb{N}</math> tal que <math>g(f(x)) \le x</math> para todo x perteneciente a <math>\mathbb{N}</math>.
Sea f: N -> N una función computable y sobreyectiva. Probar que existe una función computable e inyectiva g: N -> N tal que g(f(x)) <= x para todo x perteneciente a N.


'''Solución'''
'''Solución'''


Es casi el mismo problema que en el ejercicio 1. Podríamos ver a g como una especie de generalización de <math>f^{-1}</math>. Si f es inyectiva y sobreyectiva (i.e. biyectiva) se puede definir una <math>f^{-1}</math> tal que <math>f^{-1}(x) = g(f(x)) = x</math>, para todo x natural.
Es casi el mismo problema que en el ejercicio 1. Podríamos ver a g como una especie de generalización de f^-1. Si f es inyectiva y sobreyectiva (i.e. biyectiva) se puede definir una f^-1 tal que f^-1(x) = g(f(x)) = x, para todo x natural.


Si debilitamos la hipótesis sobre f, y sólo pedimos que sea sobreyectiva, pasa a haber más de un <math>x_i</math> tal que <math>g(f(x_i)) = x</math>. Pero siempre habrá un único <math>x_1</math> tal que <math>g(f(x_1)) = x</math> y además <math>x_1</math> es más chico que todos los <math>x_i</math>. Este <math>x_1</math> se encuentra con la minimización:
Si debilitamos la hipótesis sobre f, y sólo pedimos que sea sobreyectiva, pasa a haber más de un xi tal que g(f(xi)) = x. Pero siempre habrá un único x1 tal que g(f(x1)) = x y además x1 es más chico que todos los xi. Este x1 se encuentra con la minimización:


<math>min_y\; f(y) = x</math>
min{y : f(y) = x}


Por otra parte, esta minimización es computable, dado que está garantizado por la sobreyectividad de f la existencia de al menos un y que verifique f(y) = x. Nuevamente, esta función se computa con el programa del ejercicio 1, item A. Por último, g es inyectiva porque en la expresión f(y) = x, dos valores <math>x_1</math> y <math>x_2</math> distintos no pueden provenir del mismo y, dado que esto violaría la definición de función.
Por otra parte, esta minimización es computable, dado que está garantizado por la sobreyectividad de f la existencia de al menos un y que verifique f(y) = x. Nuevamente, esta función se computa con el programa del ejercicio 1, item A. Por último, g es inyectiva porque en la expresión f(y) = x, dos valores x1 y x2 distintos no pueden provenir del mismo y, dado que esto violaría la definición de función.


== Ejercicio 3 ==
== Ejercicio 3 ==
Sea <math>f: \mathbb{N} \rightarrow \mathbb{N}</math> una función computable biyectiva. Probar que Halt(f(x), x) no es computable. Sugerencia: considerar la función:


<math>
Sea f: N -> N una función computable biyectiva. Probar que Halt(f(x), x) no es computable. Sugerencia: considerar la función:
h(x) = \begin{cases} 1 & \textrm{si\ } \neg\textrm{HALT}(x, f^-1(x)) \\
\uparrow & \textrm{si no}
\end{cases}
</math>


'''Solucion'''
h(x) = 1 si      fi(x, f^-1(x)) se cuelga
        se cuelga  en otro caso


El siguiente programa computa h, suponiendo que HALT(f(x),x) sea computable:
El siguiente programa computa h, suponiendo que HALT(f(x),x) sea computable:
Línea 74: Línea 68:
  Y <- 1
  Y <- 1


Llamemos P a este programa, entonces existe e tal que #(P) = e
Llamemos P a este programa, entonces existe e perteneciente a N tal que #(P) = e


Ahora bien, por la definición de HALT:
Ahora bien, por la definición de HALT:


<math>HALT(f(e), e)  \Longleftrightarrow h(f(e)) \downarrow</math>
HALT(f(e), e)  <=> P(f(e)) termina


Y por la definición de h:
Y por el código de P:


<math>h(f(e))\downarrow \;\Longleftrightarrow \neg HALT(f(e), e)</math>
P(f(e)) termina <=> -(HALT(f(e), e)


Lo que nos lleva a un absurdo, que proviene de la única suposición que hicimos, que es que HALT(f(x), x) es computable.
Lo que nos lleva a un absurdo, que proviene de la única suposición que hicimos, que es que HALT(f(x), x) es computable.
Línea 90: Línea 84:
Sean f, g y h las funciones dadas por:
Sean f, g y h las funciones dadas por:


<math> f(x) = \begin{cases} \Phi(x,x) + 1 & si\; \Phi(x,x)\downarrow \\
f(x) = fi(x,x) + 1   si fi(x,x) termina
\uparrow & sino
        se cuelga    si no
\end{cases}
</math>
 
<math> g(x) = \begin{cases} 1 & \textrm{si\ } x \in Dom(f) \\
\uparrow & sino
\end{cases}
</math>
 
<math> h(x) = \begin{cases} 0 & \textrm{si\ } \Phi(x,x)\downarrow \\
\uparrow & sino
\end{cases}
</math>


Probar que son parcialmente computables.
g(x) = 1            si x pertenece al dominio de f
        se cuelga    si no


'''Solucion'''
h(x) = 0            si fi(x,x) termina
        se cuelga    si no


Para resolver esto es suficiente con dar 3 programas que computen cada una de estas funciones.
Para resolver esto es suficiente con dar 3 programas que computen cada una de estas funciones.
Línea 123: Línea 107:


  Y <- not(g(x))
  Y <- not(g(x))


== Ejercicio 5 ==
== Ejercicio 5 ==
Línea 128: Línea 113:
Probar que la siguiente función es primitiva recursiva:
Probar que la siguiente función es primitiva recursiva:


<math> f(x) = \begin{cases} 1 & \textrm{si\ } x = \langle\langle a,b\rangle ,c\rangle \; y\; \Phi(b,a) \textrm{\ termina\ en\ menos\ de\ c\ pasos} \\
f(x) = 1 si x = <<a,b>,c> y fi(b,a) termina en menos de c pasos
         0 & sino
         0 en otro caso
\end{cases}
</math>


'''Solución'''
'''Solución'''


f(x) es pr porque tanto los valores que devuelve como las funciones utilizadas en las guardas lo son. La decodificación de x en a, b y c es pr. y el predicado "<math>\phi(b,a)</math> termina en menos de c pasos" es computado por el programa STP(b,a,c), que es pr.
f(x) es pr porque tanto los valores que devuelve como las funciones utilizadas en las guardas lo son. La decodificación de x en a, b y c es pr. y el predicado "fi(b,a) termina en menos de c pasos" es computado por el programa STP(b,a,c), que es pr.
 


== Ejercicio 6 ==
== Ejercicio 6 ==


Decimos que una funcion parcialmente computable f es extensible si existe g computable tal que g(x) = f(x) para todo x en el dominio de f. Probar que existe una funcion f parcialmente computable que no es extensible.
Decimos que una funcion parcialmente computable f es extensible si existe g computalbe tal que g(x) = f(x) para todo x en el dominio de f. Probar que existe una funcion f parcialmente computable que no es extensible.


'''Solucion'''
¿<math>f(x) = \Phi _x(x)</math>?


Sea <math>f(x_1, \dots, x_n, y) = \begin{cases} min_t STP(x_1,\dots,x_n,y,t)\ si \  \Phi_y (x_1,\dots,x_n) \downarrow \\
Sea <math>g(x_1, \dots, x_n, y) = \begin{cases} min_t STP(x_1,\dots,x_n,y,t)\ si \  \Phi_y (x_1,\dots,x_n) \downarrow \\
\uparrow \ sino \end{cases}</math>
\uparrow \ sino \end{cases}</math>


Supongamos ahora <math>f</math> es extensible y sea <math>g</math> computable la función que la extiende. Podríamos reescribir la función HALT con <math>g</math> de la siguiente manera:
Supongamos ahora <math>g</math> es extensible y sea <math>f</math> computable la función que la extiende. Pero entonces, podríamos reescribir la función <math>Halt</math> con <math>f</math>
 
<math>Halt(x_1,\dots,x_n,y) = STP(x_1,\dots,x_n,y, g(x_1,\dots,x_n,y))</math>
 
Lo cual es absurdo, ya que HALT no es computable y con esta definición es claramente computable.


La idea es que como ''f'' te devuelve el número de pasos necesarios para terminar la ejecución de ''y'' termina, no importa qué te devuelva la extensión ''g'' ya que podés chequear si es efectivamente el número de pasos o si es uno de los casos en que ''f'' se colgaba y ''g'' llenó el agujero.
<math>Halt(x_1,\dots,x_n,y) = STP(x_1,\dots,x_n,y,f(x_1,\dots,x_n,y))</math>
Lo cual es absurdo, ya que <math>Halt</math> no es computable y con esta definición es claramente computable. (la idea es que como <math>g</math> te devuelve en qué número de "iteración" <math>y</math> termina, no importa qué te devuelva la extensión <math>f</math> ya que podés chequear si es fruta o es uno de los valores de <math>g</math>, chequeando con <math>STP</math> si efectivamente <math>x</math> terminó en la cantidad de pasos que te dijo f)


== Ejercicio 7 ==
== Ejercicio 7 ==
Probar que existen funciones ''g'' y ''h'' primitivas recursivas tal que
# <math>g: \mathbb{N}^3 \rightarrow \mathbb{N}, \Phi_z(u,v,w) = \Phi_{g(u,v,w)}(z)</math>
# <math>h: \mathbb{N} \rightarrow \mathbb{N}, \Phi_{h(n,m)}(x) = \Phi_n(x) + \Phi_m(x)</math>
'''Solucion Item 1'''
Definimos una función <math>\xi(z, u, v, w) = \Phi_z(u,v,w)\,\!</math>
Esta función es parcialmente computable por lo tanto existe un programa que la computa y un número ''e'' asociado a tal programa. Ahora sabemos que se cumple la igualdad
<math>\Phi_e(z, u,v,w) = \Phi_z(u,v,w)\,\!</math>
Usando el teorema del parámetro sabemos que existe una función ''f'' tal que
<math>\Phi_{f(e, u, v, w)}(z) = \Phi_e(z, u,v,w) = \Phi_z(u,v,w)\,\!</math>
La función ''f'' es PR ya que es la que nos dá el Teorema del Parámetro. Esta función toma 4 parámetros pero como nosotros ya conocemos el ''e'' del programa anterior podemos definir la función ''g''
<math>g(u,v,w) = f(e,u,v,w)\,\!</math>
Y así nos queda una función ''g'' primitiva recursiva con la aridad necesaria que cumple
<math>\Phi_{f(e, u, v, w)}(z) = \Phi_{g(u,v,w)}(z) = \Phi_z(u,v,w)\,\!</math>
'''Solucion Item 2'''
De la misma manera que en el punto anterior definimos <math>\xi(x, n, m) = \Phi_n(x) + \Phi_m(x)\,\!</math>
Y como es parcialmente computable sabemos que existe un programa P con número ''e'' que la computa. Entonces
<math>\Phi_e(x, n, m) = \Phi_n(x) + \Phi_m(x)\,\!</math>
Usando el Teorema del Parámetro existe una función ''f'' primitiva recursiva tal que
<math>\Phi_{f(e,n,m)}(x) = \Phi_e(x, n, m) = \Phi_n(x) + \Phi_m(x)\,\!</math>
Definimos la función
<math>h(n,m) = f(e,n,m)\,\!</math>
que cumple con lo pedido.


== Ejercicio 8 ==
== Ejercicio 8 ==
Probar que las siguientes funciones no son computables
<math>
f_1(x) =
\begin{cases}
1 & si\ \Phi_x(x) \neq x \\
0 & \textrm{sino}
\end{cases}
</math>
<math>
f_2(x,y) =
\begin{cases}
1 & si\ y \in \textrm{ran}\ \Phi_x \\
0 & \textrm{sino}
\end{cases}
</math>
'''Solución del primer caso'''
Definimos una función
<math>
g(x,y) =
\begin{cases}
x & si\ f_1(x) \\
x + 1 & \textrm{sino}
\end{cases}
</math>
Por el teorema de la recursión sabemos que existe un ''e'' tal que
<math>\Phi_e(y) = g(e,y) =
\begin{cases}
e & si\ f_1(e) \\
e + 1 & \textrm{sino}
\end{cases}
</math>
Como la igualdad debe valer para todo ''y''' podemos fijar y = e. Entonces podemos deducir que hay dos casos
1. <math>\Phi_e(e) \neq e \Longleftrightarrow g(e, e) \neq e \Longleftrightarrow \neg f_1(e) \Longleftrightarrow \Phi_e(e) = e</math>. '''Absurdo!'''
2. <math>\Phi_e(e) = e \Longleftrightarrow g(e, e) = e \Longleftrightarrow f_1(e) \Longleftrightarrow \Phi_e(e) \neq e</math>. '''Absurdo!'''
La función no puede ser computable.
'''Solución del segundo caso'''
Si fuera computable podemos escribir a HALT(x,y) = <math>f_2</math>(x,y). No puede ser computable.


== Ejercicio 9 ==
== Ejercicio 9 ==
Línea 257: Línea 145:
0 \ sino \end{cases}</math>
0 \ sino \end{cases}</math>


Sugerencia: considerar la funcion
sugerencia: considerar la funcion
 


<math>g(x, y) = \begin{cases} x\ si \  f(x,y) = 1 \\
<math>g(x, y) = \begin{cases} x\ si \  f(x,y) = 1 \\
x + 1 \ sino \end{cases}</math><br>
x + 1 \ sino \end{cases}</math><br>


'''Solucion'''
'''Solucion:'''<br>
 
supongo f computable, entonces g tambien lo es.<br>
Supongo f computable, entonces g tambien lo es. Por el teorema de la recursion se que existe e tal que <math>\Phi_e(y) = g(e,y)\,\!</math>, pero entonces:
por el teorema de la recursion se que existe e tal que <math>\Phi_e(y) = g(e,y)</math>, pero entonces:<br><br>


<math>g(e, y) = \begin{cases} e\ si \  f(e,y) = 1\\
<math>g(e, y) = \begin{cases} e\ si \  f(e,y) = 1\\
Línea 276: Línea 165:


== Ejercicio 10 ==
== Ejercicio 10 ==
Probar que las siguientes funciones no son computables
Probar que las siguientes funciones no son computables


==== Item A ====
==== Item A ====
<math>
 
f(x) =
f(x) = 1 si <math>\Phi _x(x) = 2x</math>
\begin{cases}
        0  si no
1 & si\ \Phi _x(x) = 2x \\
0 & \textrm{sino}
\end{cases}
</math>


Supongo f es computable, por ende es total
Supongo f es computable, por ende es total


Sea g(x,y) tal que
Sea g(x,y) tal que
<math>
g(x,y) = 2x+1 si f(x)
g(x,y) =
          2x   si no
\begin{cases}
2x+1 & si f(x) \\
2x & \textrm{sino}
\end{cases}
</math>


Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>
Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>
Línea 311: Línea 192:


==== Item B ====
==== Item B ====
<math>
 
  f(x) =
  f(x) = 1 si <math>dom(\Phi _x) = \emptyset</math>
\begin{cases}
        0  si no
1 & si\ dom(\Phi _x) = \emptyset \\
0 & \textrm{sino}
\end{cases}
</math>


Supongo f es computable
Supongo f es computable


Sea g(x,y) tal que
Sea g(x,y) tal que
<math>
g(x,y) = 1 si f(x)
g(x,y) =
          <math>\uparrow</math> si no
\begin{cases}
1 & si\ f(x) \\
\uparrow & \textrm{sino}
\end{cases}
</math>


Por teorema de la recursion, <math>\exists e / \Phi _e = g(e)</math>
Por teorema de la recursion, <math>\exists e / \Phi _e = g(e)</math>
Línea 335: Línea 207:


==== Item C ====
==== Item C ====
<math>
 
  f(x,y) =
  f(x,y) = 1  si <math>\Phi _x = \Phi _y</math>
\begin{cases}
          0  si no
& si\ \Phi _x = \Phi _y \\
0 & \textrm{sino}
\end{cases}
</math>


Supongo f es computable, por ende tambien total
Supongo f es computable, por ende tambien total


Sea g(x,y) tal que
Sea g(x,y) tal que
<math>
g(x,y) = <math>\Phi _y + 1</math> si f(x,y)
g(x,y) =
          <math>\Phi _y</math> si no
\begin{cases}
\Phi _y + 1 & si\ f(x,y) \\
\Phi _y & \textrm{sino}
\end{cases}
</math>


Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>
Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>
Línea 363: Línea 226:


==== Item D ====
==== Item D ====
<math>
 
f(x) =
f(x) = 1 si <math>Im(\Phi _x)</math> es infinita
\begin{cases}
        0 si no
1 & si\ Im(\Phi _x)\ \textrm{es\ infinita} \\
0 & \textrm{sino}
\end{cases}
</math>


Supongo f es computable, por ende tambien es total
Supongo f es computable, por ende tambien es total


Sea g(x,y) tal que
Sea g(x,y) tal que
<math>
g(x,y) = 0 si f(x)
g(x,y) =
          y si no
\begin{cases}
0 & si\ f(x) \\
y & \textrm{sino}
\end{cases}
</math>


Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>
Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>


Supongo <math>Im(\Phi _e)</math> infinita,
Supongo <math>Im(\Phi _e) infinita</math>,
<math>\Rightarrow f(e) \Rightarrow (\forall y) g(e,y) = \Phi _e(y) = 0 \Rightarrow Im(\Phi _e) = {0}</math>
<math>\Rightarrow f(e) \Rightarrow (\forall y) g(e,y) = \Phi _e(y) = 0 \Rightarrow Im(\Phi _e) = {0}</math>


Supongo <math>Im(\Phi _e)</math> finita,
Supongo <math>Im(\Phi _e) no infinita</math>,
<math>\Rightarrow \alpha(f(e)) \Rightarrow (\forall y) g(e,y) = \Phi _e(y) = y \Rightarrow Im(\Phi _e) = \mathbb{N}</math>
<math>\Rightarrow \alpha(f(e)) \Rightarrow (\forall y) g(e,y) = \Phi _e(y) = y \Rightarrow Im(\Phi _e) = Naturales</math>


==== Item E ====
==== Item E ====
<math>
 
  f(x) =  
  f(x) = 1 si <math>1 \in dom(\Phi _x)</math>
\begin{cases}
        0  si no
1 & si\ 1 \in dom(\Phi _x) \\
0 & \textrm{sino}
\end{cases}
</math>


La condicion equivale a decir que <math>\Phi _x(1)\downarrow</math>
La condicion equivale a decir que <math>\Phi _x(1)\downarrow</math>
Línea 404: Línea 254:


Sea g(x,y) tal que
Sea g(x,y) tal que
<math>
  g(x,y) = <math>\uparrow</math>  si f(x)
  g(x,y) =
          0 si no
\begin{cases}
\uparrow & si\ f(x) \\
0 & \textrm{sino}
\end{cases}
</math>


Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>
Por teorema de la recursion, <math>\exists e / \Phi _e(y) = g(e,y)</math>


Evaluando g en (e,y) para todo y, se llega al absurdo
Evaluando g en (e,y) para todo y, se llega al absurdo


== Ejercicio 11 ==
== Ejercicio 11 ==
Probar que la siguiente función es parcialmente computable:
<math>
f_2(x,y) =
\begin{cases}
1 & si\ y \in \textrm{ran}\ \Phi_x \\
\uparrow & \textrm{sino}
\end{cases}
</math>
(comparar con la funcion f2 del Ejercicio 8)
'''Solución'''
La función es computada por el programa
<math>\Phi_x(y)</math><br>
Y <- 1
== Ejercicio 12 ==


Analizar la validez de las siguientes afirmaciones
Analizar la validez de las siguientes afirmaciones
Línea 465: Línea 291:
Idem anterior, pero si la cantidad de conjuntos es infinita.
Idem anterior, pero si la cantidad de conjuntos es infinita.


'''Solucion'''
'''Solucion 1'''
 
Verdadero.
 
Se deberia poder construir un programa utilizando la tecnica de Dove Tailing que vimos en la teorica.<br/>
Es decir, para determinar si ''x'' pertenece, evaluo ''STP(b1, x, 1)''.<br/>
Si es falso, pruebo con ''STP(b1, x, 2)'' y ''STP(b2, x, 2)''.<br/>
Si dan falso, pruebo con ''STP(b1, x, 3)'', ''STP(b2, x, 3)'' y ''STP(b3, x, 3)''.<br/>
Asi sucesivamente hasta hallar un valor que verifique, o colgarse si no pertenece al conjunto.
 
En forma recursiva, la funcion seria:
<math>U(x) = (\exists t)(\exists y) STP(B_y, x, t)</math><br/>
Como la minimizacion es no acotada (ni tampoco propia), el programa es parcialmente computable y caracteriza un conjunto r.e.
 
'''Solucion 2'''


Falso.
Falso.
Línea 475: Línea 315:
Pero sabemos que existen conjuntos de naturales que no son r.e. (por ejemplo el complemento de <math>K</math>). Por lo tanto, la proposición debe ser falsa.
Pero sabemos que existen conjuntos de naturales que no son r.e. (por ejemplo el complemento de <math>K</math>). Por lo tanto, la proposición debe ser falsa.


== Ejercicio 13 ==
 
==== Item D ====
 
Encontrar el error en alguna de las soluciones del item C.
 
== Ejercicio 12 ==


Sea B un conjunto infinito
Sea B un conjunto infinito
Línea 521: Línea 366:
Como f es computable, entonces B lo es.
Como f es computable, entonces B lo es.


== Ejercicio 14 ==
== Ejercicio 13 ==


Probar que todo conjunto re infinito contiene un subconjunto computable infinito.
Probar que todo conjunto re infinito contiene un subconjunto computable infinito.
Línea 537: Línea 382:
Como g es computable y creciente, entonces su imagen define un conjunto, contenido en B, que es computable e infinito (vale por ej 12).
Como g es computable y creciente, entonces su imagen define un conjunto, contenido en B, que es computable e infinito (vale por ej 12).


== Ejercicio 15 ==
== Ejercicio 14 ==


Probar que si B es re y f es una funcion parcialmente computable, entonces <math>A = \{x : f(x) \in B\}</math> es re.
Probar que si B es re y f es una funcion parcialmente computable, entonces <math>A = {x : f(x) \in B}</math> es re.


'''Solución'''


Como B es re, existe g parcialmente computable tal que  
Como B es re, existe g parcialmente computable tal que  
<math>B = \{x : g(x)\downarrow\}</math>
<math>B = {x : g(x)\downarrow}</math>


Para que A sea re, tiene que existir una funcion h parcialmente computable tal que <math>A = \{x : h(x)\downarrow\}</math>.
Para que A sea re, tiene que existir una funcion h parcialmente computable tal que <math>A = {x : h(x)\downarrow}</math>.


Sea h = g(f(x)), parcialmente computable por ser composicion de pc.  
Sea h = g(f(x)), parcialmente computable por ser composicion de pc.  
Línea 552: Línea 396:


Entonces A es re.
Entonces A es re.
== Ejercicio 15 ==


== Ejercicio 16 ==
== Ejercicio 16 ==
== Ejercicio 17 ==


<br> =>) Sea A = We = {x: Φx↓} => x є A si existe un tiempo t tal que Φe(x)↓, entonces
<br> =>) Sea A = We = {x: Φx↓} => x є A si existe un tiempo t tal que Φe(x)↓, entonces
Línea 574: Línea 418:
Con lo cual B = dom f => B es RE
Con lo cual B = dom f => B es RE


== Ejercicio 18 ==
== Ejercicio 17 ==


Definir un predicado pr P tal que <math>A = {x : (\forall y)P(x,y)}</math> no sea re.
Definir un predicado pr P tal que <math>A = {x : (\forall y)P(x,y)}</math> no sea re.
Línea 583: Línea 427:
<math>B=\{x | \Phi_x (x)\uparrow\}</math>  , o sea, es el complemento del famoso conjunto <math>K</math> (x tal que Halt(x,x)), que ya sabíamos que no es r.e. porque lo probamos en la teórica/práctica.
<math>B=\{x | \Phi_x (x)\uparrow\}</math>  , o sea, es el complemento del famoso conjunto <math>K</math> (x tal que Halt(x,x)), que ya sabíamos que no es r.e. porque lo probamos en la teórica/práctica.


== Ejercicio 19 ==
== Ejercicio 18 ==


Sea <math>B=\{ x \ : \  \Phi_x \ es\ una\ funcion\ total\}</math>
Sea <math>B=\{ x \ : \  \Phi_x \ es\ una\ funcion\ total\}</math>
Línea 611: Línea 455:
Pero entonces superabsurdo, que partió de suponer que A era un conjunto r.e.
Pero entonces superabsurdo, que partió de suponer que A era un conjunto r.e.


==Ejercicio 20 ==
==Ejercicio 19==
Probar que existe un <math>e</math> tal que <math>W_e=\{e\}</math>.
Probar que existe un <math>e</math> tal que <math>W_e=\{e\}</math>.
Tal e existe,por definición de <math>W_e</math>, si y sólo si existe un <math>e</math> tal que <math>\{e\}=\{x \in N\ |\ \Phi_e(x)\downarrow\}</math>.


'''Solucion'''


Definimos
Tal e existe,por definición de <math>W_e</math>, si y sólo si existe un <math>e</math> tal que <math>\{e\}=\{x \in N\ |\ \Phi_e(x)\downarrow\}</math>.


[... EN CONSTRUCCIÓN ...]
<br><br>
''Posible resolucion'' '''(Sin verificar)'''
<br><br>
<math>f(x,y) = \begin{cases} 1\ si\ y = x \\ \uparrow\ sino \end{cases}</math>
<math>f(x,y) = \begin{cases} 1\ si\ y = x \\ \uparrow\ sino \end{cases}</math>
Por el teorema de la recursión, existe un e tal que:
Por el teorema de la recursión, existe un e tal que:
<math>\Phi_e(y) = f(e,y)</math>, pero entonces:
<math>\Phi_e(y) = f(e,y)</math>, pero entonces:
Línea 626: Línea 471:
<math>\Phi_e(y)</math> estará definida solo si y=e, es decir, el dominio de <math>\Phi_e(y)</math> será e, eso significa que <math>W_e=\{e\}</math> que era lo que queriamos probar.
<math>\Phi_e(y)</math> estará definida solo si y=e, es decir, el dominio de <math>\Phi_e(y)</math> será e, eso significa que <math>W_e=\{e\}</math> que era lo que queriamos probar.


== Ejercicio 21 ==
== Ejercicio 20 ==


Demostrar que las funciones definidas en el Ejercicio 10 no son computables aplicando el Teorema de Rice
Demostrar que las funciones definidas en el Ejercicio 10 no son computables aplicando el Teorema de Rice
Ten en cuenta que todas las contribuciones a Cuba-Wiki pueden ser editadas, modificadas o eliminadas por otros colaboradores. Si no deseas que las modifiquen sin limitaciones, no las publiques aquí.
Al mismo tiempo, asumimos que eres el autor de lo que escribiste, o lo copiaste de una fuente en el dominio público o con licencia libre (véase Cuba-Wiki:Derechos de autor para más detalles). ¡No uses textos con copyright sin permiso!

Para editar esta página, responde la pregunta que aparece abajo (más información):

Cancelar Ayuda de edición (se abre en una ventana nueva)

Plantilla usada en esta página: