Una funcion -mixta sera llamada -efectivamente computable si hay un procedimiento efectivo tal que
(1) El conjunto de datos de entrada de es
(2) El conjunto de datos de salida esta contenido en .
(3) Si , entonces se detiene partiendo de , dando como dato de salida .
(4) Si , entonces no se detiene partiendo desde
Analogamente una funcion -mixta sera llamada -efectivamente computable si hay un procedimiento efectivo tal que
(1) El conjunto de datos de entrada de es
(2) El conjunto de datos de salida esta contenido en .
(3) Si , entonces se detiene partiendo de , dando como dato de salida .
(4) Si , entonces no se detiene partiendo desde
Cuando un procedimiento cumpla los items (1), (2), (3) y (4) de arriba diremos que computa a la funcion o que es computada por .
Notese que esta definicion para el caso tiene a priori cierta ambiguedad ya que cualesquiera sean y tenemos que ya que y . De todas maneras, cualesquiera sean los y elejidos, siempre hay un procedimiento efectivo que computa a , i.e. un procedimiento que nunca se detiene, cualesquiera sea el dato de entrada de . Es decir que la funcion es -efectivamente computable cualesquiera sea el alfabeto . Cabe destacar que para el caso de una funcion , nuestra definicion es inambigua ya que hay unicos y tales que .
Veamos algunos ejemplos:
E La funcion es -efectivamente computable, cualquiera sea el alfabeto ya que el procedimiento enseñado en la escuela primaria para sumar numeros en notacion decimal es efectivo y computa esta funcion. Tambien las funciones y son -efectivamente computables via los procedimientos clasicos enseñados en la escuela primaria.
E La funcion es -efectivamente computable ya que el siguiente procedimiento con conjunto de datos de entrada la computa:
- Independientemente de quien sea el dato de entrada , terminar y dar como salida el numero
E La funcion es -efectivamente computable ya que el siguiente procedimiento con conjunto de datos de entrada la computa:
- Dado el dato de entrada , terminar y dar como salida la palabra
E es -efectivamente computable. Para realizar el procedimiento efectivo que compute a necesitaremos el procedimiento de la escuela primaria que dado un numero no nulo , expresado en notacion decimal, calcula el numero , en notacion decimal. Llamemos a dicho procedimiento. El siguiente procedimiento (con conjunto de datos de entrada igual a ) computa a :
Dado como dato de entrada un elemento , realizar lo siguiente:
Etapa 1
Si , entonces ir a Etapa 3, en caso contrario ir a Etapa 2.
Etapa 2
Correr con dato de entrada obteniendo como dato de salida. Detenerse y dar como dato de salida.
Etapa 3
Si , entonces ir a Etapa 1.
Como puede notarse el procedimiento anterior es efectivo ya que debemos entender que en la Etapa 2, los sucesivos pasos efectuados al correr son todos simples y efectivamente realizables ya que es efectivo. Por supuesto si uno quisiera ser mas prolijo, deberia reemplazar la Etapa 2 por las distintas instrucciones de , referidas a .
E El predicado es -efectivamente computable cualquiera sea el alfabeto . Describiremos con palabras un procedimiento que computa a . Su conjunto de datos de entrada es . Dado un par , el procedimiento primero compara las longitudes de las palabras que en notacion decimal representan a y . Por supuesto esto lo hace borrando de a un simbolo y viendo si alguna se termina primero. Si resultan de distinta longitud, es facil darse cuenta como sigue. En caso de que las palabras resulten de igual longitud, entonces se hace el procedimiento clasico de ir comparando digitos de izquierda a derecha.
(E) Veamos que la funcion es -efectivamente computable. Como en los lenguajes de programacion, usaremos variables y asignaciones para diseñar el procedimiento. Ademas llamemos a el procedimiento de la escuela primaria que dado un numero no nulo , expresado en notacion decimal, calcula el numero , en notacion decimal. Sea el siguiente procedimiento.
Dado como dato de entrada un elemento , realizar lo siguiente:
Etapa 1: Hacer las siguientes asignaciones e ir a Etapa 2.
Etapa 2: Si no es , ir a Etapa 3. En caso contrario terminar y dar como salida .
Etapa 3: Correr con dato de entrada igual al contenido de , obteniendo como salida. Hacer la asignacion e ir a Etapa 2.
Dejamos como ejercicio convenserse que el uso de asignaciones puede realizarse usando solo lapiz y papel. Imagine como lo haria en este ejemplo y corrobore que dicho procedimiento es efectivo y ademas computa a
(E) Si es el orden total sobre dado por , entonces veremos que la funcion es -efectivamente computable. Primero es importante notar que cualquiera sea , se cumple Usaremos estas ecuaciones para dar un procedimiento efectivo (con conjunto de datos de entrada igual a ) que compute a .
Etapa 1: Dado el dato de entrada , hacer las siguientes asignaciones e ir a Etapa 2.
Etapa 2: Si comiensa con , entonces hacer las siguientes asignaciones e ir a la Etapa 2. En caso contrario ir a la Etapa 3.
Etapa 3: Si comiensa con , entonces hacer las siguientes asignaciones e ir a la Etapa 2. En caso contrario ir a la Etapa 4.
Etapa 4: Dar como salida
E Usando que es -efectivamente computable podemos ver que tambien lo es ya que es definida con las ecuaciones
Dejamos como ejercico para el lector diseñar procedimientos efectivos que computen las funciones:
- divide a
-
-
(Utilice en el diseño de los respectivos procedimientos a los procedimientos que computan las funciones , y )
Nota Importante: en lo que sigue muchas veces nos permitiremos trabajar con procedimientos que son efectivos en terminos de otros que ya se han dado, es decir daremos procedimientos que en principio no es claro que sean efectivos pero los cuales se volverian efectivos si reemplazaramos ciertas instrucciones por la manera efectiva de simularlas. Para hacer mas dinamico el discurso no distinguiremos entre este tipo de procedimientos (efectivisables) y los efectivos propiamente dichos.