Técnicas básicas de programación Prolog

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Técnicas básicas de programación Prolog"

Transcripción

1 Técnicas básicas de programación Prolog Programación Declarativa Pablo López 25 de octubre de Programación recursiva La recursión es una técnica fundamental en Prolog, tanto para representar los datos como para procesarlos. Esto se debe a que Prolog, como todos los lenguajes declarativos puros, carece de iteración. Aunque la programación recursiva es una técnica que nos resulta familiar, la recursión en Prolog exhibe ciertas particularidades que se apartan lo habitual. Por ejemplo, el caso base y el caso recursivo no tienen por qué ser excluyentes, lo que permite generar respuestas múltiples. Esta sección ilustra el empleo de la recursión en Prolog a través un ejemplo simple pero eficaz: la axiomatización de la aritmética de Peano. Los objetos a representar serán los números naturales {0, 1, 2, 3...} y las relaciones serán las operaciones aritméticas básicas: suma, resta, producto... Además de la recursión (de datos y código), introduciremos los conceptos de modo de un argumento, y uso, comportamiento y significado de un predicado. Ejemplo: Axiomatización de la aritmética de Peano El dominio de los naturales. inductivamente como sigue: El conjunto de los naturales N se define 1. 0 N [Caso Base] 2. si x N, entonces σ(x) N [Caso Recursivo] donde σ es la función sucesor σ : N N; es decir, σ(x) representa al sucesor de x. Las anteriores definiciones permiten construir el conjunto N partiendo del caso base (1), obteniendo nuevos elementos aplicando el caso recursivo (2): N = { 0 }{{} base, σ(0), σ(σ(0)), σ(σ(σ(0))),... }. } {{ } recursivo

2 T2.2 Técnicas básicas de programación Prolog Los naturales así definidos son recursivos: un natural mayor que 0 será de la forma σ(x); es decir, «contiene» otro natural x más pequeño que él. Por lo tanto, debemos encontrar una estructura de datos recursiva para representar los naturales. En la mayoría de los lenguajes imperativos la recursión de datos debe ser simulada mediante punteros o mecanismos similares. Por el contrario, la recursión de datos puede emplearse en Prolog de forma directa. En concreto, para representar los naturales en Prolog basta emplear términos Prolog recursivos que capturen la definición inductiva de N. El caso base de N nos asegura la existencia de un objeto concreto y único: el 0. Para representar este objeto en Prolog utilizaremos una constante c. El caso recursivo introduce una función σ : N N. La expresión σ(x) es un objeto compuesto que debe ser representado por una estructura de aridad 1. Tomaremos una estructura de functor s/1. Los naturales se representarán entonces por términos Prolog que se ajusten a la gramática G N : N ::= c [Caso Base] s(n) [Caso Recursivo] donde el functor s/1 es siempre aplicado a un término que representa un natural bien formado. Los siguientes son ejemplos de términos Prolog que representan naturales bien formados; es decir, que se ajustan a la gramática G N : c s(c) s(s((c))) s(s(s(c))) Un natural n N se representa aplicando n veces el functor s/1 a la constante c, lo que denotaremos de forma abreviada por s n (c). El programador no puede comunicar de ninguna forma a Prolog que tiene la intención de representar los naturales por términos que se ajusten a la gramática G N. Esto se debe a que Prolog carece de definiciones de tipos. Los siguientes son términos Prolog que no son naturales bien formados, pues el functor s/1 no siempre se aplica a un natural bien formado: s(s(f(c))) s(s(a)) Aunque no es posible restringir el functor s/1 de forma que siempre se aplique correctamente, sí podemos definir una relación es_natural/1 que se satisfaga cuando su único argumento sea un natural bien formado. El predicado es_natural/1 podría definirse extensionalmente (por enumeración de todos los casos):

3 Técnicas básicas de programación Prolog T2.3 es_natural(c). es_natural(s(c)). es_natural(s(s(c))).... El problema de esta definición es que deberíamos introducir un número infinito numerable de hechos para completarla. Parece más apropiado definir es_natural/1 intensionalmente, determinando las condiciones que debe cumplir un término Prolog para ser un natural bien formado. Basta razonar siguiendo la definición inductiva de N: 1. 0 N [Caso Base] El 0 es un elemento de N. Esto es cierto incondicionalmente, por lo que se traduce a Prolog el por hecho: es_natural(c). donde reemplazamos 0 por su representación Prolog, c. 2. si x N entonces σ(x) N [Caso Recursivo] Este enunciado incluye una condición y una conclusión, por lo que se traduce a Prolog por la regla: es_natural(s(x)):- es_natural(x). donde reemplazamos σ(x) por s(x). de donde obtenemos la definición: es_natural(s). es_natural(s(x)) :- es_natural(x). El predicado es_natural/1 así definido es una definición de dominio o tipo, pues define el conjunto de términos que representan un dominio (tipo) dado. Para comprobar el funcionamiento de es_natural/1, basta resolver el objetivo: :- es_natural(s(s(s(c)))). al que Prolog responderá afirmativamente. Por el contrario, Prolog responderá negativamente a los siguientes objetivos: :- es_natural(s(s(s(0)))). :- es_natural(s(f(s(0)))). También es posible plantear un objetivo donde aparezca una variable: :- es_natural(x).

4 T2.4 Técnicas básicas de programación Prolog es_natural(c). es_natural(s(x)):- es_natural(x). 1) es_natural(x) 1 - {X/c} 2 - {X/s(X1)} 2. éxito 3) es_natural(x1) {X/c} 1 - {X1/c} 2 - {X1/s(X2)} 4. éxito 5) es_natural(x2) {X/s(c)} 1 - {X2/c} 2 - {X2/s(X3)} 6. éxito {X/s(s(c))} 7) es_natural(x3)... Figura 1: Árbol de búsqueda del objetivo es_natural(x). Intuitivamente, estamos preguntando a Prolog si existe algún X tal que X es un natural bien formado. Obviamente, existen un número infinito numerable de términos X que son naturales bien formados, y vemos que Prolog los genera en orden creciente: :- es_natural(x). X= c; X= s(c); X= s(s(c));... La figura 1 muestra el árbol de búsqueda del objetivo es_natural(x). Puede apreciarse que la rama más a la derecha es infinita, por lo que el objetivo nunca termina. Además, cada respuesta computada se obtiene de forma progresiva, introduciendo variables (X i ) y sustituciones (X i /s(x i+1 )) intermedias. Para derivar o construir el natural n, basta descender n veces a la derecha (aplicando la regla recursiva) y descender finalmente a la izquierda (aplicando el caso base). Este comportamiento se debe a que al resolver los subobjetivos es_natural(x i ), el caso base y el caso recursivo no son excluyentes. Obtenemos un comportamiento similar si planteamos un objetivo con un argumento parcialmente instanciado: :- es_natural(s(s(x))). X= c; X= s(c); X= s(s(c));... Modo de un argumento. Los objetivos anteriores realizan funciones muy distintas a pesar de invocar al mismo procedimiento. La razón es que el

5 Técnicas básicas de programación Prolog T2.5 papel jugado por los argumentos pasados al procedimiento es diferente. Un argumento o parámetro actual de un procedimiento puede estar en dos modos: 1 Modo + el argumento no tiene variables libres o las variables que contiene no van a resultar instanciadas como resultado de la ejecución Modo - el argumento tiene variables libres que resultan instanciadas al ejecutar el procedimiento El argumento del objetivo es_natural(s(s(s(c)))) no contiene variables, por lo que está en modo +. Por el contrario, los argumentos de los objetivo es_natural(x) y es_natural(s(s(y))) contienen variables que resultan instanciadas en el proceso de resolución, por lo que están en modo -. Simplificando, podemos identificar el modo + con los parámetros de entrada y el modo - con los parámetros de salida y entrada/salida. En los lenguajes imperativos tradicionales, el que un parámetro sea de entrada o salida depende exclusivamente de cómo se defina el parámetro formal en la cabecera del procedimiento. Por el contrario, en Prolog, el que un parámetro sea de entrada o salida depende del propio parámetro actual y de cómo se defina el parámetro formal correspondiente en la cabecera del predicado. Esto es consecuencia de emplear la unificación como mecanismo para el paso de parámetros. Uso, comportamiento y significado de un predicado. Como hemos visto en el ejemplo anterior, un predicado puede comportarse de forma diferente e incluso no funcionar según el modo en que se encuentren sus parámetros actuales. Se llama uso de un predicado a la combinación de los modos de los parámetros actuales. Por ejemplo, el predicado es_natural tiene dos usos diferentes: es_natural(+) y es_natural(-), según su único argumento esté en modo + o -. Puesto que un parámetro puede estar en dos modos diferentes, un predicado con n argumentos puede tener hasta 2 n usos diferentes. La forma en que actúa un predicado para un uso concreto se denomina comportamiento. El comportamiento clasifica a los predicados según el número de respuestas que generan en test o generador. Un predicado se comporta como un test si la respuesta computada está vacía; es decir, no se instancia ninguna variable. Esto quiere decir que la única respuesta que se obtiene de un test es éxito o fracaso. Por ejemplo, el objetivo es_natural(s(s(c))) se comporta como un test, pues su único argumento está en modo +. El test corresponde siempre al uso en que 1 Estas definiciones de modo no se ajustan a las que aparecen en el estándar ISO de Prolog y no son completamente precisas. Para simplificar, nos ceñiremos a ellas a lo largo del curso.

6 T2.6 Técnicas básicas de programación Prolog todos los argumentos del predicado están en modo +, pues de lo contrario algún argumento resultaría instanciado y la respuesta computada no estaría vacía. Un predicado se comporta como un generador si las respuestas computadas no están vacías. Para ello, al menos un argumento debe estar en modo -. Según el número de respuestas computadas generadas, tendremos un generador único (una sola respuesta), acotado (un número finito de respuestas) o no acotado (infinitas respuestas). El objetivo es_natural(x) de la figura 1 se comporta como un generador no acotado. Llamaremos generador anómalo a aquel generador que es incapaz, por construcción, de generar la secuencia completa de respuestas computadas esperada (normalmente, porque el árbol de búsqueda incluye más de una rama infinita). Un ejemplo de generador anómalo es el predicado p/2: p(x,y) :- es_natural(x), es_natural(y). Intuitivamente, p(a,b) debería devolvernos todos los pares (A, B) tales que A, B N. Sin embargo, sólo nos devuelve pares (0, B) con B N:?- p(a,b). A= c B= c; A= c B= s(c); A= c B= s(s(c));... Por último, llamaremos significado a la acción particular llevada a cabo por el predicado en cierto uso. El significado suele describirse indicando la clase de términos para los que tiene éxito (en el caso de tests), o el patrón que siguen las respuestas computadas (en el caso de generadores.) Todos los posibles usos, comportamientos y significados de un predicado pueden recogerse en una tabla de comportamiento. Una tabla de comportamiento tiene tres columnas. En la primera aparece el uso, en la segunda el comportamiento y en la tercera y última el significado. La figura 2 muestra la tabla de comportamiento del predicado es_natural/1. Normalmente un programador Prolog competente suele anotar los usos admisibles de un predicado como parte de la documentación de un programa. Algunas implementaciones de Prolog disponen de la directiva mode para declarar los usos soportados por un predicado. La directiva: :- mode nombre_pred(modo_1,..., modo_n).

7 Técnicas básicas de programación Prolog T2.7 es_natural(x) uso comportamiento significado + test X N - generador no acotado X = c, s(c), s(s(c)),... Figura 2: Tabla de comportamiento de es_natural/1. declara un uso válido de nombre_pred/n, indicando para cada argumento el modo en que puede aparecer, que puede ser + o -. Si se intenta utilizar un predicado en un uso que no ha sido declarado mediante la correspondiente directiva mode, el compilador de Prolog puede generar una advertencia. 2 Podríamos declarar los usos válidos del predicado es_natural/1 mediante las directivas: :- mode es_natural(+). :- mode es_natural(-). que declaran que es_natural/1 puede emplearse en usos + o -. La directiva mode soporta una abreviatura,?, que indica que el argumento puede aparecer indistintamente en modo + o -, lo que permite especificar varios usos válidos con una sola directiva mode. Por ejemplo, los usos válidos de es_natural/1 se pueden declarar mediante la directiva: :- mode es_natural(?). puesto que el predicado funciona independientemente del modo en que se encuentre su argumento. Aunque una implementación de Prolog no soporte declaraciones de modo, es buena idea añadirlas al programa en forma de comentario: % :- mode es_natural(?). es_natural(c). es_natural(s(x)) :- es_natural(x). Así aparecen descritos los predicados en casi todas las librerías Prolog. 3 Ejercicios 1. Cómo se comporta es_natural/1 si intercambiamos el orden del hecho y la regla? es_natural(s(x)) :- es_natural(x). es_natural(c). 2 Son pocos los compiladores de Prolog que soportan la directiva mode y más escasos aún los que comprueban los usos correctos en tiempo de ejecución. 3 SWI-Prolog no soporta la directiva mode; sin embargo, emplea la notación +, -,? en la documentación de los parámetros de los predicados predefinidos.

8 T2.8 Técnicas básicas de programación Prolog En concreto, cómo afecta esto a las semánticas declarativa y operacional del programa? Influye el orden en que aparecen los hechos y reglas en un programa? 2. Qué representa el término s(s(x))? Cómo se comporta el objetivo es_natural(s(s(x)))? En qué modo se encuentra el argumento s(s(x))? 3. Define los predicados par/1 e impar/1 utilizando recursión directa y recursión mutua. Construye las tablas de comportamiento y compara las semánticas declarativa y operacional. Relaciones aritméticas básicas. Una vez representados los objetos (los naturales) mediante términos Prolog, parece razonable preguntarse qué tipo de relaciones entre naturales nos interesan y cómo podemos representarlas mediante procedimientos (hechos y reglas). Las relaciones entre naturales serán operaciones (+,,,...) y relaciones (<, >, =,...) aritméticas básicas. Estas operaciones y relaciones se definen habitualmente como funciones: + : N N N : N N N... Prolog no permite definir funciones, sino predicados o relaciones. Esto significa que debemos pasar de un estilo funcional a un estilo relacional. La ventaja del estilo relacional es que, como veremos, desaparecen los conceptos de entrada y salida. Comenzaremos definiendo la suma de naturales como una relación ternaria tal que suma(x,y,z) se satisface cuando Z = X + Y. Puesto que los objetos relacionados (naturales) son recursivos, lo normal será que la relación suma/3 sea recursiva. En general, para definir una relación recursiva aplicaremos recursión a algunos de sus argumentos (o a alguna relación entre sus argumentos). En el caso de suma/3, podemos aplicar recursión al primer argumento, que podrá ser c (caso base) o s(x) (caso recursivo), de donde obtenemos el esquema: suma(c,?,?) :-... suma(s(x),?,?) :-... [Caso Base] [Caso Recursivo] Ahora debemos determinar qué términos corresponden a los otros argumentos, señalados en el esquema con el símbolo?, así como las condiciones que debe verificar cada caso de la relación. El segundo argumento puede ser cualquier natural y no es necesario razonar según su valor. Por lo tanto, podemos utilizar una variable Y:

9 Técnicas básicas de programación Prolog T2.9 suma(c,y,?) :-... suma(s(x),y,?) :-... [Caso Base] [Caso Recursivo] El caso base es fácil de resolver: su tercer argumento es la suma de c e Y; es decir, Y. Además, 0 + Y = Y se satisface incondicionalmente, por lo que basta emplear un hecho: suma(c,y,y). suma(s(x),y,?) :-... [Caso Base] [Caso Recursivo] El caso recursivo es sólo un poco más complicado. Por ser recursivo, debe contener una llamada a sí mismo: suma(c,y,y). suma(s(x),y,?) :- suma(?,?,?),... [Caso Base] [Caso Recursivo] La cláusula recursiva se emplea para resolver (X + 1) + Y. La llamada recursiva debe resolver una suma menor, más próxima al caso base. En particular, puesto que estamos aplicando recursión sobre el primer argumento, X + 1, la invocación recursiva debe calcular la suma X + Y, de donde: suma(c,y,y). suma(s(x),y,?) :- suma(x,y,?),... [Caso Base] [Caso Recursivo] Supongamos que sabemos la solución de X + Y, a la que llamaremos Z. Entonces obtenemos: suma(c,y,y). suma(s(x),y,?) :- suma(x,y,z),... [Caso Base] [Caso Recursivo] Ahora bien, si X + Y = Z, entonces (X + 1) + Y = Z + 1, luego: suma(c,y,y). suma(s(x),y,s(z)) :- suma(x,y,z). [Caso Base] [Caso Recursivo] Podemos plantear ahora la resolución del objetivo:?- suma(s(s(c)),s(c),z). que devolverá como única respuesta computada Z=s(s(s(c))). A pesar de las apariencias, el predicado suma/3 no está correctamente definido. Para entender por qué, basta resolver el objetivo:?- suma(c, f(a), Z). que devuelve como única respuesta computada Z=f(a). Esto es incorrecto, pues la relación suma/3 sólo debe satisfacerse entre tres naturales. Prolog es incapaz de reconocer este error por carecer de tipos. Para subsanarlo basta añadir una comprobación de dominio al caso base: suma(c,y,y):- es_natural(y). suma(s(x),y,s(z)) :- suma(x,y,z). [Caso Base] [Caso Recursivo]

10 T2.10 Técnicas básicas de programación Prolog 1) suma(s(s(c)), s(c), s(s(s(c)))) 2 - {X1/s(c), Y1/s(c), Z1/s(s(c))} 2) suma(s(c), s(c), s(s(c))) 2 - {X2/c, Y2/s(c), Z2/s(c)} 3) suma(c, s(c), s(c)) 1 - {Y3/s(c)} 4) es_natural(s(c)) 4 - {X4/c} 5) es_natural(c) 3-6. éxito {} Figura 3: Uso (+,+,+) de suma/3. Cómo se construye una tabla de comportamiento. El predicado suma/3 tiene, en principio, 8 usos diferentes (2 3, 3 argumentos en modos + o -). Para obtener la tabla de comportamiento de suma/3 basta resolver objetivos que ilustren los distintos usos. El uso (+,+,+) es un test que comprueba que el tercer elemento de la relación es la suma de los dos primeros. El objetivo:?- suma(s(s(c)),s(c),s(s(s(c)))). Yes termina con éxito y da lugar al árbol de búsqueda de la figura 3. El caso recursivo va eliminando functores s/1 tanto de X como de Z. En el caso base, X se ha reducido a c y Y y Z deben ser idénticos. El uso (+,+,-) es un generador único que calcula la suma de los dos primeros argumentos:?- suma(s(s(c)),s(c),z). Z= s(s(s(c))) ; No La figura 4 muestra un uso (+,+,-) de suma/3. El caso recursivo va eliminando functores s/1 de X y construyendo progresivamente Z. Para ello,

11 Técnicas básicas de programación Prolog T2.11 1) suma(s(s(c)), s(c), Z) 2 - {X1/s(c), Y1/s(c), Z/s(Z1)} 2) suma(s(c), s(c), Z1) 2 - {X2/c, Y2/s(c), Z1/s(Z2)} 3) suma(c, s(c), Z2) 1 - {Y3/s(c), Z2/s(c)} 4) es_natural(s(c)) 4 - {X4/c} 5) es_natural(c) 3-6. éxito {Z/s(s(s(c)))} Figura 4: Uso (+,+,-) de suma/3. se introducen variables intermedias Z i y se construyen sustituciones de la forma {Z i /s(z i+1 )}. El caso base unifica Y con la última variable Z n introducida, donde n es el número de functores s/1 de X, completando la construcción de Z. Esta construcción progresiva de la solución mediante variables y sustituciones intermedias es típica de la programación lógica, por lo que es importante familiarizarse con este mecanismo. El uso (+,-,+) se comporta como un generador único que calcula la diferencia entre el tercer y el primer argumento:?- suma(s(s(c)),y,s(s(s(c)))). Y= s(c) ; No Lo interesante de este ejemplo es que estamos usando el mismo código para sumar y para restar. En el estilo funcional, los argumentos de la función son siempre entradas que se deben facilitar y el valor devuelto por la función es la salida. En el estilo relacional desaparece la dependencia de las salidas respecto de las entradas. Que un parámetro sea de entrada o salida depende de cuál sea su modo. El árbol de búsqueda se muestra en la figura 5. Como en el uso (+,+,+), el caso recursivo va eliminando functores de X y Z. Al llegar al caso base se unifica la incógnita Y con Z. El uso (-,+,+) es similar a (+,-,+). También es un generador único que sirve para restar. La diferencia es que en este caso el árbol (ver figura 6) contendrá una rama fallo adicional. Esto se debe a que cuando Y y

12 T2.12 Técnicas básicas de programación Prolog 1) suma(s(s(c)), Y, s(s(s(c)))) 2 - {X1/s(c), Y1/Y, Z1/s(s(c))} 2) suma(s(c), Y, s(s(c))) 2 - {X2/c, Y2/Y, Z2/s(c)} 3) suma(c, Y, s(c)) 1 - {Y3/s(c), Y/s(c)} 4) es_natural(s(c)) 4 - {X4/c} 5) es_natural(c) 3-6. éxito {Y/s(c)} Figura 5: Uso (+,-,+) de suma/3. 1) suma(x, s(s(c)), s(s(s(c)))) 2 - {X/s(X1), Y1/s(s(c)), Z1/s(s(c))} 2) suma(x1, s(s(c)), s(s(c))) 2 - {X1/s(X2), Y2/s(s(c)), Z2/s(c)} 1 - {X1/c, Y2/s(s(c))} 3) es_natural(s(s(c))) 7) suma(x2, s(s(c)), s(c)) 4 - {X3/s(c)} 2 - {X2/s(X3), Y3/s(s(c)), Z3/c} 4) es_natural(s(c)) 8) suma(x3, s(s(c)), c) fallo 4 - {X4/c} 5) es_natural(c) 3-6. éxito {X/s(c)} Figura 6: Uso (-,+,+) de suma/3.

13 Técnicas básicas de programación Prolog T2.13 1) suma(x, Y, s(s(c))) 1 - {X/c, Y1/s(s(c)), Y/s(s(c))} 2 - {X/s(X1), Y1/Y, Z1/s(c)} 2) es_natural(s(s(c))) 4 - {X2/s(c)} 6) suma(x1, Y, s(c)) 1 - {X1/c, Y2/s(c), Y/s(c)} 2 - {X1/s(X2), Y2/Y, Z2/c} 3) es_natural(s(c)) 4 - {X3/c} 4) es_natural(c) 3-5. éxito {X/c, Y/s(s(c))} 7) es_natural(s(c)) 4 - {X3/c} 8) es_natural(c) 3-9. éxito {X/s(c), Y/s(c)} 10) suma(x2, Y, c) 1 - {X2/c, Y3/c, Y/c} 11) es_natural(c) éxito {X/s(s(c)), Y/c} Figura 7: Uso (-,-,+) de suma/3. Z unifican, se pueden aplicar tanto el caso base como el caso recursivo. El primero completará la construcción de X y conducirá a la solución, mientras que el segundo acabará fallando al reducir Z a c. Aunque ambos usos sirven para restar, el uso (+,-,+) es preferible por ser más eficiente. El uso (-,-,+) se comporta como un generador acotado que descompone un natural dado Z en dos sumandos X e Y:?- suma(x,y,s(s(c))). X= c Y= s(s(c)) ; X= s(c) Y= s(c) ; X= s(s(c)) ; Y= c No Este caso ilustra la potencia que puede alcanzar el estilo relacional. El árbol de resolución se muestra en la figura 7. Puesto que el caso base y el recursivo no son excluyentes, la ejecución de este objetivo genera respuestas múltiples. Cuando se aplica el caso base, X se instancia a c y se unifican Y y Z, una forma trivial de satisfacer la relación. El caso recursivo elimina un

14 T2.14 Técnicas básicas de programación Prolog 1) suma(s(s(c)), Y, Z) 2 - {X1/s(c), Y1/Y, Z/s(Z1)} 2) suma(s(c), Y, Z1) 2 - {X2/c, Y2/Y, Z1/s(Z2)} 3) suma(c, Y, Z2) 1 - {Y3/Z2, Y/Z2} 4) es_natural(z2) 4 - {Z2/s(X4)} 3 - {Z2/c} 5. éxito {Y/c, Z/s(s(c))} 6) es_natural(x4) 4 - {X4/s(X5)} 3 - {X4/c} 7. éxito {Y/s(c), Z/s(s(s(c)))} 8) es_natural(x5)... Figura 8: Uso (+,-,-) de suma/3. functor s/1 de Z, y construye progresivamente X, introduciendo variables y sustituciones intermedias. El uso (+,-,-) es un generador no acotado:?- suma(s(s(c)),y,z). Y= c Z= s(s(c)) ; Y= s(c) Z= s(s(s(c))) ;... en Y obtenemos los naturales y en Z los naturales mayores o iguales que X. La figura 8 muestra el árbol de búsqueda. Al estar X en modo +, los casos base y recursivo de suma/3 son excluyentes y la recursión converge de forma determinista al caso base. El caso recursivo va eliminando functores s/1 de X y construyendo progresivamente Z. Una vez que se alcanza el caso base, se unifican la Y y la variable Z n, completando la construcción de Z. En los ejemplos anteriores, todas las comprobaciones de dominio es_natural/1 se han ejecutado en modo +. En este caso, como Y ha quedado libre, la comprobación de dominio es_natural se ejecuta en modo -, comportándose como un generador no acotado. La capacidad de generar respuestas múltiples de suma(+,-,-) proviene del uso en modo -

15 Técnicas básicas de programación Prolog T2.15 1) suma(x, s(c), Z) 1 - {X/c, Y1/s(c), Z/s(c)} 2 - {X/s(X1), Y1/s(c), Z/s(Z1)} 2) es_natural(s(c)) 5) suma(x1, s(c), Z1) 4 - {X2/c} 1 - {X1/c, Y2/s(c), Z1/s(c)} 2 - {X1/s(X2), Y2/s(c), Z1/s(Z2)} 3) es_natural(c) 6) es_natural(s(c)) 8) suma(x2, s(c), Z2) {X3/c} 1 - {X2/c, Y3/s(c), Z2/s(c)} 2 - {X2/s(X3), Y3/s(c), Z2/s(Z3)} 4. éxito {X/c, Z/s(c)} 7) es_natural(c)... 9) es_natural(s(c))... 10) suma(x3, s(c), Z3)... Figura 9: Uso (-,+,-) de suma/3. del predicado es_natural/1. El uso (-,+,-) es similar al uso (+,-,-):?- suma(x,s(s(c)),z). X= c Z= s(s(c)) ; X= s(c) Z= s(s(s(c))) ;... el árbol de resolución de la figura 9 muestra que, en este caso, se generan respuestas múltiples porque los casos base y recursivo de suma/3 no son excluyentes; mientras que es_natural/1 se comporta como un test. Finalmente, el uso (-,-,-) se comporta como un generador anómalo:?- suma(x,y,z). X= c Y= c Z= c ; X= c Y= s(c) Z= s(c) ;...

16 T2.16 Técnicas básicas de programación Prolog 1) suma(x, Y, Z) 1 - {X/c, Y1/Z, Y/Z} 2 - {X/s(X1), Y1/Y, Z/s(Z1)} 2) es_natural(z) 4 - {Z/s(X2)} 3 - {Z/c} 5) suma(x1, Y, Z1) 1 - {X1/c, Y2/Z1, Y/Z1} 2 - {X1/s(X2), Y2/Y, Z1/s(Z2)} 3. éxito {X/c, Y/c, Z/c} 4) es_natural(x2) 6) es_natural(z1) 7) suma(x2, Y, Z2) Figura 10: Uso (-,-,-) de suma/3. La semántica declarativa nos dice que este objetivo debería generar todas las tripletas (X, Y, Z) tales que Z = X + Y. Sin embargo, la ejecución del objetivo su semántica operacional genera tripletas de la forma (0, Y, Z), con Z = 0 + Y = Y. El problema, tal y como ilustra la la figura 10, es que hay más de una rama infinita. El objetivo suma(x,y,z) se puede resolver aplicando el caso base o el recursivo. Al aplicar el primero, X se instancia a c, se unifican Y y Z, y obtenemos el subojetivo es_natural(z), que se comporta como un generador no acotado. Puesto que la construcción del árbol se hace en profundidad, nunca se considera la posibilidad de aplicar el caso recursivo al objetivo inicial. La figura 11 muestra la tabla de comportamiento del predicado suma/3. Generadores, dominios y respuestas genéricas. Añadir comprobaciones de dominio a los predicados, tal como acabamos de hacer con suma/3, tiene ventajas e inconvenientes. Entre las ventajas podemos destacar que nos puede ayudar a encontrar errores en los programas al fracasar objetivos que devolverían respuestas computadas erróneas:

17 Técnicas básicas de programación Prolog T2.17 suma(x,y,z) uso comportamiento significado (+,+,+) test Z = X + Y (+,+,-) generador único suma: Z = X + Y (+,-,+) generador único resta: Y = Z X (-,+,+) generador único resta: X = Z Y (-,-,+) generador acotado {(X, Y)/X Z Y Z Z = X + Y} (+,-,-) generador no acotado {(Y, Z)/Y N Z = X + Y} (-,+,-) generador no acotado {(X, Z)/X N Z = X + Y} (-,-,-) generador anómalo X = 0, Y N, Z = Y Figura 11: Tabla de comportamiento de suma/3 con comprobación de dominio.?- suma(c,a,z). No Además, puesto que la definición de dominio es_natural/1 puede comportarse como un generador, el predicado suma/3 hereda esa capacidad generadora siempre que el segundo y tercer argumentos estén en modo -, tal como vimos al analizar el uso (+,-,-):?- suma(s(s(c)),y,z). Y = c Z = s(s(c)) ; Y = s(c) Z = s(s(s(c))) ; Y = s(s(c)) Z = s(s(s(s(c)))) ;... En cuanto a los inconvenientes de incorporar una comprobación de dominio, uno muy obvio es la ineficiencia. Además, conceptualmente estamos clasificando como falsos objetivos que quizá deberían interpretarse como errores y deberían por tanto ser rechazados por el sistema. Finalmente, al retener la capacidad generadora de es_natural/1, el predicado suma/3 pierde la posibilidad de devolver respuestas genéricas; es decir, respuestas que contengan variables libres. Si definimos el predicado sumag/3 omitiendo la comprobación de dominio en el caso base de suma/3: sumag(c,y,y). sumag(s(x),y,s(z)) :- sumag(x,y,z). para el siguiente objetivo :?- sumag(s(s(c)),y,z).

18 T2.18 Técnicas básicas de programación Prolog Z = s(s(y)) ; No obtenemos una respuesta genérica, pues Y queda libre. Las variables libres de las respuestas computadas se considera que están universalmente cuantificadas; es decir, que pueden reemplazarse por cualquier término. El objetivo pregunta a Prolog si existen Y y Z tales que Z = 2 + Y, y Prolog responde que Y puede ser cualquier natural, y Z será dos unidades superior a Y. 4 En general, prescindiremos de la comprobación de dominios, de manera que sacrificaremos la corrección para mejorar la eficiencia y obtener respuestas genéricas. Otras relaciones aritméticas. A continuación presentamos las definiciones y tablas de comportamiento de otras relaciones aritméticas típicas. iguales(x,y) se satisface si X = Y. Se puede definir aplicando recursión al primer argumento: iguales(c,c). iguales(s(x),s(y)) :- iguales(x,y). iguales(x,y) uso comportamiento significado (+,+) test X = Y (+,-) generador único copia: Y = X (-,+) generador único copia: X = Y (-,-) generador no acotado {(X, Y)/X = Y X N} Otra forma de definir iguales/2 consiste en emplear la unificación para forzar la igualdad entre los argumentos, y comprobar su sintaxis en el cuerpo de la regla: iguales(x,x) :- es_natural(x). menor(x,y) se satisface si X < Y. Podemos aplicar recursión sobre el primer argumento: menor(c,y) :- natural(y). menor(s(x),s(y)) :- menor(x,y). 4 En realidad Prolog responde que Y puede ser cualquier término, incluso uno que no sea un natural bien construido. Es el usuario el que interpreta que Y puede ser cualquier natural.

19 Técnicas básicas de programación Prolog T2.19 menor(x,y) uso comportamiento significado (+,+) test X < Y (+,-) generador no acotado {Y/Y > X} (-,+) generador acotado {X/X < Y} (-,-) generador anómalo Ejercicios 1. Construye la tabla de comportamiento el predicado sumag/3 y compárala con la de suma/3. 2. Qué ocurre al ejecutar el objetivo iguales(x,s(x))? 3. Qué ocurre si eliminamos la comprobación es_natural(y) en el caso base de menor/2? Cómo afecta esto a la tabla de comportamiento? 4. Define el predicado menor_igual(x,y), que se satisface si X Y. minimo(x,y,z) se satisface si Z = mín(x, Y). Basta aplicar recursión simultánea sobre los dos primeros argumentos. Esto permite reducir ambos argumentos hasta que uno de ellos se haga cero: minimo(c,y,c) :- es_natural(y). minimo(x,c,c) :- es_natural(x). minimo(s(x),s(y),s(z)) :- minimo(x,y,z). La definición anterior es incorrecta. Si ambos argumentos son iguales, obtenemos una respuesta repetida, lo que no tiene sentido pues el mínimo de dos naturales es único. Para solucionarlo, basta considerar explícitamente las tres posibilidades: que ambos argumentos se hagan cero simultáneamente, o que uno de ellos se haga cero y el otro no: minimo(c,c,c). minimo(c,s(y),c) :- es_natural(y). minimo(s(x),c,c) :- es_natural(x). minimo(s(x),s(y),s(z)) :- minimo(x,y,z). Esta definición sí es correcta, pero se puede hacer más concisa agrupando los dos primeros hechos: minimo(c,y,c) :- es_natural(y). minimo(s(x),c,c) :- es_natural(x). minimo(s(x),s(y),s(z)) :- minimo(x,y,z). Alternativamente, podemos evitar la recursión haciendo uso de las relaciones menor/2 y menor_igual/2:

20 T2.20 Técnicas básicas de programación Prolog minimo(x,y,x) :- menor_igual(x,y). minimo(x,y,y) :- menor(y,x). producto(x,y,z) se satisface si Z = X Y. La idea se basa en la siguiente definición recursiva de producto: Z = X Y = } X + X + X {{ + + X } Y veces = (X + X + + X) +X } {{ } (Y 1) veces = X (Y 1) + X Por lo tanto, hay que aplicar recursión sobre el segundo argumento: producto(x,c,c):- es_natural(x). producto(x,s(y),z) :- producto(x,y,t), suma(t,x,z). producto(x,y,z) uso comportamiento significado (+,+,+) test Z = X Y (+,+,-) generador único producto: Z = X Y (-,+,-) generador no acotado múltiplos de Y: {(X, Z)/X N Z = X Y} (+,-,-) generador no acotado múltiplos de X: {(Y, Z)/Y N Z = X Y} (+,-,+) no funciona cociente entero: Y = Z/X y no termina (-,+,+) no funciona cociente entero: X = Z/Y y no termina (-,-,+) no funciona si Z = 0 entonces X = Z, Y = 1 y no termina sino X N y Y = 0 (-,-,-) generador anómalo X N, Y = 0, Z = 0 El patrón de predicado recursivo. Todos los predicados recursivos que hemos definido, y la mayoría de los que definiremos a lo largo del curso, son instancias del siguiente patrón de predicado recursivo, resolver/2: resolver(problema_base,solucion_base) :- condiciones_base. [Caso Base] resolver(problema,solucion) :- reducir(problema, ProblemaReducido), resolver(problemareducido, SolucionReducida), componer(problema,solucionreducida,solucion). [Caso Recursivo]

Técnicas Básicas de Programación Prolog

Técnicas Básicas de Programación Prolog Técnicas Básicas de Programación Prolog Ingeniería Informática Ingeniería Técnica en Informática de Sistemas Departamento de Lenguajes y Ciencias de la Computación Universidad de Málaga Contenido 1. Programación

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

Problemas indecidibles

Problemas indecidibles Capítulo 7 Problemas indecidibles 71 Codificación de máquinas de Turing Toda MT se puede codificar como una secuencia finita de ceros y unos En esta sección presentaremos una codificación válida para todas

Más detalles

1 Agencia de viajes: enunciado

1 Agencia de viajes: enunciado 1 AGENCIA DE VIAJES: ENUNCIADO 1 1 Agencia de viajes: enunciado Una agencia de viajes mantiene una base de datos con exactamente N clientes y M destinos turísticos. En una situación real, estos valores

Más detalles

Ecuaciones de primer grado con dos incógnitas

Ecuaciones de primer grado con dos incógnitas Ecuaciones de primer grado con dos incógnitas Si decimos: "las edades de mis padres suman 120 años", podemos expresar esta frase algebraicamente de la siguiente forma: Entonces, Denominamos x a la edad

Más detalles

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Especificación algebraica ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS Un tipo abstracto de datos se determina por las operaciones asociadas, incluyendo constantes que se consideran como operaciones sin

Más detalles

1. Sintaxis de Prolog

1. Sintaxis de Prolog 1. Sintaxis de Prolog Términos: Constantes: enteros (Ejs: 3, 4), átomos (Ejs: juan, pi) (en minúscula). Variables: Ejs: X, Casa (en mayúscula) Estructuras: functor, seguido de uno o más argumentos, es

Más detalles

ALGEBRA LINEAL. Héctor Jairo Martínez R. Ana María Sanabria R.

ALGEBRA LINEAL. Héctor Jairo Martínez R. Ana María Sanabria R. ALGEBRA LINEAL Héctor Jairo Martínez R. Ana María Sanabria R. SEGUNDO SEMESTRE 8 Índice general. SISTEMAS DE ECUACIONES LINEALES.. Introducción................................................ Conceptos

Más detalles

Repaso de matrices, determinantes y sistemas de ecuaciones lineales

Repaso de matrices, determinantes y sistemas de ecuaciones lineales Tema 1 Repaso de matrices, determinantes y sistemas de ecuaciones lineales Comenzamos este primer tema con un problema de motivación. Problema: El aire puro está compuesto esencialmente por un 78 por ciento

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

Capítulo 4 MEDIDA DE MAGNITUDES. Autor: Santiago Ramírez de la Piscina Millán

Capítulo 4 MEDIDA DE MAGNITUDES. Autor: Santiago Ramírez de la Piscina Millán Capítulo 4 MEDIDA DE MAGNITUDES Autor: Santiago Ramírez de la Piscina Millán 4 MEDIDA DE MAGNITUDES 4.1 Introducción El hecho de hacer experimentos implica la determinación cuantitativa de las magnitudes

Más detalles

Nota 2. Luis Sierra. Marzo del 2010

Nota 2. Luis Sierra. Marzo del 2010 Nota 2 Luis Sierra Marzo del 2010 Cada mecanismo de definición de conjuntos que hemos comentado sugiere mecanismos para definir funciones y probar propiedades. Recordemos brevemente qué son las funciones

Más detalles

Divisibilidad y números primos

Divisibilidad y números primos Divisibilidad y números primos Divisibilidad En muchos problemas es necesario saber si el reparto de varios elementos en diferentes grupos se puede hacer equitativamente, es decir, si el número de elementos

Más detalles

Lenguajes y Compiladores

Lenguajes y Compiladores Información: http://www.cs.famaf.unc.edu.ar/wiki/ Profesores: Héctor Gramaglia, Miguel Pagano, Demetrio Vilela Régimen de regularidad y Promoción Se tomarán 2 parciales Promoción: obteniendo al menos 7

Más detalles

Factorización de polinomios

Factorización de polinomios Factorización de polinomios Polinomios Un polinomio p en la variable x es una expresión de la forma: px a 0 a 1 x a x a n1 x n1 a n x n donde a 0, a 1, a,, a n1, a n son unos números, llamados coeficientes

Más detalles

Introducción a los Tipos Abstractos de Datos

Introducción a los Tipos Abstractos de Datos Página 1 de 8 Introducción a los Tipos Abstractos de Datos Introducción: Concepto de abstracción Abstracción funcional y abstracción de datos Construcción de tipos abstractos de datos Especificación de

Más detalles

Matemáticas. 1 o ESO. David J. Tarifa García. info@esobachilleratouniversidad.com.es

Matemáticas. 1 o ESO. David J. Tarifa García. info@esobachilleratouniversidad.com.es Matemáticas 1 o ESO David J. Tarifa García info@esobachilleratouniversidad.com.es 1 Matemáticas - 1 o ESO 2 Índice 1 Tema 1. Los números naturales 6 1.1 Suma de números naturales................................

Más detalles

Receta general para resolver problemas de sincronización con semáforos

Receta general para resolver problemas de sincronización con semáforos Receta general para resolver problemas de sincronización con semáforos La primera vez que te enfrentas a la tarea de implementar una solución a un problema de sincronización entre procesos, es normal que

Más detalles

TEMA II: ÁLGEBRA DE CONMUTACIÓN

TEMA II: ÁLGEBRA DE CONMUTACIÓN TEMA II: ÁLGEBRA DE CONMUTACIÓN En este capítulo veremos los métodos matemáticos que se disponen para las operaciones relacionadas con los circuitos digitales, así como las funciones más básicas de la

Más detalles

3.2 Operaciones aritmético-lógicas en Pascal

3.2 Operaciones aritmético-lógicas en Pascal 3.2 Operaciones aritmético-lógicas en Pascal Operadores Los operadores sirven para combinar los términos de las expresiones. En Pascal, se manejan tres grupos de operadores : 1. ARITMÉTICOS 2. RELACIONALES

Más detalles

Espacios Vectoriales

Espacios Vectoriales Espacios Vectoriales Departamento de Matemáticas, CCIR/ITESM 4 de enero de 2 Índice 3.. Objetivos................................................ 3.2. Motivación...............................................

Más detalles

Tema 2: Sistemas de representación numérica

Tema 2: Sistemas de representación numérica 2.1 Sistemas de Numeración Definiciones previas Comenzaremos por definir unos conceptos fundamentales. Existen 2 tipos de computadoras: Analógicas: actúan bajo el control de variables continuas, es decir,

Más detalles

1.3 Números racionales

1.3 Números racionales 1.3 1.3.1 El concepto de número racional Figura 1.2: Un reparto no equitativo: 12 5 =?. Figura 1.3: Un quinto de la unidad. Con los números naturales y enteros es imposible resolver cuestiones tan simples

Más detalles

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena (luis.rodriguez@upsam.net)

Tema 2. Recursividad. Fundamentos de Programación II. Luís Rodríguez Baena (luis.rodriguez@upsam.net) Fundamentos de Programación II Tema 2. Recursividad Luís Rodríguez Baena (luis.rodriguez@upsam.net) Universidad Pontificia de Salamanca (campus Madrid) Escuela Superior de Ingeniería y Arquitectura Naturaleza

Más detalles

DIAGRAMAS DE FLUJO: DFD

DIAGRAMAS DE FLUJO: DFD DIAGRAMAS DE FLUJO: DFD DFD es un programa de libre disposición para ayuda al diseño e implementación de algoritmos expresados en diagramas de flujo (DF). Además incorpora opciones para el depurado de

Más detalles

construcción de programas Prof. Eliana Guzmán U.

construcción de programas Prof. Eliana Guzmán U. Unidad II. Metodología para la construcción de programas Prof. Eliana Guzmán U. Semestre: A-2015 Introducción Resolver un problema con una computadora conduce a la escritura de un programa y a su ejecución.

Más detalles

Tema 10: Límites y continuidad de funciones de varias variables

Tema 10: Límites y continuidad de funciones de varias variables Tema 10: Límites y continuidad de funciones de varias variables 1 Funciones de varias variables Definición 1.1 Llamaremos función real de varias variables atodafunciónf : R n R. Y llamaremos función vectorial

Más detalles

MATEMÁTICAS para estudiantes de primer curso de facultades y escuelas técnicas

MATEMÁTICAS para estudiantes de primer curso de facultades y escuelas técnicas Universidad de Cádiz Departamento de Matemáticas MATEMÁTICAS para estudiantes de primer curso de facultades y escuelas técnicas Tema 3 Ecuaciones y sistemas. Inecuaciones Elaborado por la Profesora Doctora

Más detalles

Matrices equivalentes. El método de Gauss

Matrices equivalentes. El método de Gauss Matrices equivalentes. El método de Gauss Dada una matriz A cualquiera decimos que B es equivalente a A si podemos transformar A en B mediante una combinación de las siguientes operaciones: Multiplicar

Más detalles

Arreglos. // Incluir E/S y Librerías Standard #include #include

Arreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h> Arreglos Introducción. En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en

Más detalles

Ejemplos y problemas resueltos de análisis complejo (2014-15)

Ejemplos y problemas resueltos de análisis complejo (2014-15) Variable Compleja I (3 o de Matemáticas y 4 o de Doble Titulación) Ejemplos y problemas resueltos de análisis complejo (04-5) Teoremas de Cauchy En estos apuntes, la palabra dominio significa, como es

Más detalles

El proyecto realizado consiste en un resolutor de sudokus mediante CSP.

El proyecto realizado consiste en un resolutor de sudokus mediante CSP. Introducción El proyecto realizado consiste en un resolutor de sudokus mediante CSP. El problema del sudoku fue inventado por Howard Garns en 1979 y se volvió muy popular en Japón en 1986. En España ha

Más detalles

Materia: Informática. Nota de Clases Sistemas de Numeración

Materia: Informática. Nota de Clases Sistemas de Numeración Nota de Clases Sistemas de Numeración Conversión Entre Sistemas de Numeración 1. EL SISTEMA DE NUMERACIÓN 1.1. DEFINICIÓN DE UN SISTEMA DE NUMERACIÓN Un sistema de numeración es un conjunto finito de símbolos

Más detalles

Codd propuso estos tres lenguajes como base teórica de cualquier lenguaje que quisiera cumplir con los requisitos formales del modelo.

Codd propuso estos tres lenguajes como base teórica de cualquier lenguaje que quisiera cumplir con los requisitos formales del modelo. 16/05/2012 1 Todo modelo de datos debe definir un lenguaje de definición de datos para crear las estructuras donde se almacenará la información y un lenguaje de manipulación de datos con el que acceder

Más detalles

EXPRESIONES ALGEBRAICAS

EXPRESIONES ALGEBRAICAS EXPRESIONES ALGEBRAICAS Un grupo de variables representadas por letras junto con un conjunto de números combinados con operaciones de suma, resta, multiplicación, división, potencia o etracción de raíces

Más detalles

PROGRAMACIÓN BÁSICA DE LA COMPUTADORA. 1 Introducción. Tabla 1: Instrucciones MIPS

PROGRAMACIÓN BÁSICA DE LA COMPUTADORA. 1 Introducción. Tabla 1: Instrucciones MIPS PROGRAMACIÓN BÁSICA DE LA COMPUTADORA 1 Introducción Un sistema de computadora total incluye tanto circuitería (hardware) como programación (software). El hardware consta de los componentes físicos y todo

Más detalles

Polinomios y Ecuaciones

Polinomios y Ecuaciones Ejercicios de Cálculo 0 Prof. María D. Ferrer G. Polinomios y Ecuaciones.. Polinomios: Un polinomio o función polinómica es una epresión de la forma: n n n P a a a a a a = n + n + n + + + + 0 () Los números

Más detalles

Números Reales. MathCon c 2007-2009

Números Reales. MathCon c 2007-2009 Números Reales z x y MathCon c 2007-2009 Contenido 1. Introducción 2 1.1. Propiedades básicas de los números naturales....................... 2 1.2. Propiedades básicas de los números enteros........................

Más detalles

Fundamentos de Investigación de Operaciones Asignación y Vendedor Viajero

Fundamentos de Investigación de Operaciones Asignación y Vendedor Viajero Fundamentos de Investigación de Operaciones y Vendedor Viajero 23 de mayo de 2004 Si bien la resolución del problema de transporte mediante tableau parece ser muy expedita, existen ciertos tipos de problemas

Más detalles

Programación Lineal Entera

Programación Lineal Entera Programación Lineal Entera P.M. Mateo y David Lahoz 2 de julio de 2009 En este tema se presenta un tipo de problemas formalmente similares a los problemas de programación lineal, ya que en su descripción

Más detalles

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008

INTRODUCCIÓN. Estructura de Datos Tipos Abstractos de Datos (TAD S) Profs. Lorna Figueroa M. Mauricio Solar F. UTFSM 1 / 2008 INTRODUCCIÓN Estructura de Datos Tipos Abstractos de Datos (TAD S) Para poder obtener un programa que resuelva un problema dado, son necesarios varios pasos : La formulación y especificación del problema

Más detalles

Apuntes de Matemática Discreta 9. Funciones

Apuntes de Matemática Discreta 9. Funciones Apuntes de Matemática Discreta 9. Funciones Francisco José González Gutiérrez Cádiz, Octubre de 004 Universidad de Cádiz Departamento de Matemáticas ii Lección 9 Funciones Contenido 9.1 Definiciones y

Más detalles

Tipos Abstractos de Datos

Tipos Abstractos de Datos Objetivos Repasar los conceptos de abstracción de datos y (TAD) Diferenciar adecuadamente los conceptos de especificación e implementación de TAD Presentar la especificación algebraica como método formal

Más detalles

Tema 2. Espacios Vectoriales. 2.1. Introducción

Tema 2. Espacios Vectoriales. 2.1. Introducción Tema 2 Espacios Vectoriales 2.1. Introducción Estamos habituados en diferentes cursos a trabajar con el concepto de vector. Concretamente sabemos que un vector es un segmento orientado caracterizado por

Más detalles

Tema 3. Problemas de valores iniciales. 3.1. Teoremas de existencia y unicidad

Tema 3. Problemas de valores iniciales. 3.1. Teoremas de existencia y unicidad Tema 3 Problemas de valores iniciales 3.1. Teoremas de existencia y unicidad Estudiaremos las soluciones aproximadas y su error para funciones escalares, sin que ésto no pueda extenderse para funciones

Más detalles

Sistemas de numeración

Sistemas de numeración Sistemas de numeración Un sistema de numeración es un conjunto de símbolos y reglas que permiten representar datos numéricos. Los sistemas de numeración actuales son sistemas posicionales, que se caracterizan

Más detalles

Capítulo 4 Procesos con estructuras de repetición

Capítulo 4 Procesos con estructuras de repetición Estructura de contador Capítulo 4 Procesos con estructuras de repetición Esta es una operación que incrementa en una unidad el valor almacenado en la variable c, cada vez que el flujo del diagrama pasa

Más detalles

Tema 3. El modelo Relacional

Tema 3. El modelo Relacional Tema 3. El modelo Relacional Juan Ignacio Rodríguez de León Resumen Presenta el modelo entidad-relación. Visión de alto nivel de las cuestiones referentes a diseño de bases de datos y los problemas encontrados

Más detalles

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN Ejercicio 1. Diseñar una planilla EXCEL que tome como dato de entrada un número entero y devuelva la representación en base 2. Testearla con los números 23, 245, 673,

Más detalles

Tema 2. La Información y su representación

Tema 2. La Información y su representación Tema 2. La Información y su representación 2.1 Introducción. Un ordenador es una máquina que procesa información. La ejecución de un programa implica la realización de unos tratamientos, según especifica

Más detalles

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS UNA SESIÓN EN SPSS INTRODUCCIÓN. SPSS (Statistical Product and Service Solutions) es un paquete estadístico orientado, en principio, al ámbito de aplicación de las Ciencias sociales, es uno de las herramientas

Más detalles

Operaciones Booleanas y Compuertas Básicas

Operaciones Booleanas y Compuertas Básicas Álgebra de Boole El álgebra booleana es la teoría matemática que se aplica en la lógica combinatoria. Las variables booleanas son símbolos utilizados para representar magnitudes lógicas y pueden tener

Más detalles

Sistema Incremental Generador de Oraciones y de Descodificación Lingüística. José Luciano Maldonado. luzmalvy@telcel.net.ve maldonaj@faces.ula.

Sistema Incremental Generador de Oraciones y de Descodificación Lingüística. José Luciano Maldonado. luzmalvy@telcel.net.ve maldonaj@faces.ula. Sistema Incremental Generador de Oraciones y de Descodificación Lingüística. José Luciano Maldonado. luzmalvy@telcel.net.ve maldonaj@faces.ula.ve Resumen: se describe la implementación experimental de

Más detalles

SECRETARIA DE EDUCACIÓN PÚBLICA SUBSECRETARIA DE EDUCACIÓN MEDIA SUPERIOR DIRECCIÓN DE BACHILLERATOS ESTATALES Y PREPARATORIA ABIERTA

SECRETARIA DE EDUCACIÓN PÚBLICA SUBSECRETARIA DE EDUCACIÓN MEDIA SUPERIOR DIRECCIÓN DE BACHILLERATOS ESTATALES Y PREPARATORIA ABIERTA SECRETARIA DE EDUCACIÓN PÚBLICA SUBSECRETARIA DE EDUCACIÓN MEDIA SUPERIOR DIRECCIÓN DE BACHILLERATOS ESTATALES Y PREPARATORIA ABIERTA DEPARTAMENTO DE PREPARATORIA ABIERTA MATEMÁTICAS II GUIA DE ESTUDIO

Más detalles

Problemas Resueltos de Desigualdades y Programación Lineal

Problemas Resueltos de Desigualdades y Programación Lineal Universidad de Sonora División de Ciencias Exactas y Naturales Departamento de Matemáticas. Problemas Resueltos de Desigualdades y Programación Lineal Para el curso de Cálculo Diferencial de Químico Biólogo

Más detalles

= x + x + x + 1 por definición de exponente 2

= x + x + x + 1 por definición de exponente 2 Equivalencia de expresiones algebraicas En este documento exploramos un concepto simple, en apariencia, enseñado en escuelas de nivel secundaria: la equivalencia de dos expresiones algebraicas Empecemos

Más detalles

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos.

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos. 28/04/2012 La teoría de la normalización va perdiendo peso con el paso de los años como herramienta de diseño de bases de datos relacionales en favor de modelos de datos más ricos en su representación,

Más detalles

UNIDAD I: LÓGICA PROPOSICIONAL

UNIDAD I: LÓGICA PROPOSICIONAL UNIDAD I: LÓGICA PROPOSICIONAL ASIGNATURA: INTRODUCCIÓN A LA COMPUTACIÓN CARRERAS: LICENCIATURA Y PROFESORADO EN CIENCIAS DE LA COMPUTACIÓN DEPARTAMENTO DE INFORMÁTICA FACULTAD DE CIENCIAS FÍSICO MATEMÁTICA

Más detalles

Capítulo 4 PROLOG 4.1 Introducción

Capítulo 4 PROLOG 4.1 Introducción 4.1 Introducción PROLOG es un lenguaje declarativo e interpretado, en este tipo de lenguajes se representan los conocimientos sobre un determinado dominio y sus relaciones. A partir de ese conocimiento,

Más detalles

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CÓRDOBA EL LENGUAJE DE LOS DATOS EN LA PC Y SU FORMA DE ALMACENAMIENTO

UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CÓRDOBA EL LENGUAJE DE LOS DATOS EN LA PC Y SU FORMA DE ALMACENAMIENTO UNIVERSIDAD TECNOLÓGICA NACIONAL FACULTAD REGIONAL CÓRDOBA EL LENGUAJE DE LOS DATOS EN LA PC Y SU FORMA DE ALMACENAMIENTO TRABAJO REALIZADO COMO APOYO PARA LA CATEDRA INFORMATICA I Autora: Ing. Ing. Sylvia

Más detalles

Nombre del polinomio. uno monomio 17 x 5 dos binomio 2x 3 6x tres trinomio x 4 x 2 + 2

Nombre del polinomio. uno monomio 17 x 5 dos binomio 2x 3 6x tres trinomio x 4 x 2 + 2 SISTEMA DE ACCESO COMÚN A LAS CARRERAS DE INGENIERÍA DE LA UNaM III. UNIDAD : FUNCIONES POLINÓMICAS III..1 POLINOMIOS La expresión 5x + 7 x + 4x 1 recibe el nombre de polinomio en la variable x. Es de

Más detalles

CURSO 2010-2011 TECNOLOGÍA TECNOLOGÍA 4º ESO TEMA 5: Lógica binaria. Tecnología 4º ESO Tema 5: Lógica binaria Página 1

CURSO 2010-2011 TECNOLOGÍA TECNOLOGÍA 4º ESO TEMA 5: Lógica binaria. Tecnología 4º ESO Tema 5: Lógica binaria Página 1 Tecnología 4º ESO Tema 5: Lógica binaria Página 1 4º ESO TEMA 5: Lógica binaria Tecnología 4º ESO Tema 5: Lógica binaria Página 2 Índice de contenido 1. Señales analógicas y digitales...3 2. Código binario,

Más detalles

Definición 1.1.1. Sea K un cuerpo. Un polinomio en x, con coeficientes en K es toda expresión del tipo

Definición 1.1.1. Sea K un cuerpo. Un polinomio en x, con coeficientes en K es toda expresión del tipo POLINOMIOS 1.1. DEFINICIONES Definición 1.1.1. Sea K un cuerpo. Un polinomio en x, con coeficientes en K es toda expresión del tipo p(x) = a i x i = a 0 + a 1 x + a 2 x 2 + + a n x n + ; a i, x K; n N

Más detalles

ETS Caminos Santander. Curso 2012. Ejercicios de introducción a la programación.

ETS Caminos Santander. Curso 2012. Ejercicios de introducción a la programación. Ejercicio 1. Saludo. El programa preguntará el nombre al usuario y a continuación le saludará de la siguiente forma "Hola, NOMBRE" donde NOMBRE es el nombre del usuario. Ejercicio 2. Suma. El programa

Más detalles

TEMA I: INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL

TEMA I: INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL TEMA I: INTRODUCCIÓN A LA ELECTRÓNICA DIGITAL 1. Electrónica Digital Antes de empezar en el tema en cuestión, vamos a dar una posible definición de la disciplina que vamos a tratar, así como su ámbito

Más detalles

TEMA 2: Grupos. El grupo Simétrico.

TEMA 2: Grupos. El grupo Simétrico. Álgebra y Estructuras Discretas Grupo B de la Ingeniería Técnica de Sistemas TEMA 2: Grupos. El grupo Simétrico. 1. Definición de Grupo. Propiedades Básicas. Definición 1. Dado un conjunto no vacío G,

Más detalles

INDICE. XVII Prólogo a la edición en español. XXI 1. Calculo proporcional 1.1. Argumentos y proporciones lógicas

INDICE. XVII Prólogo a la edición en español. XXI 1. Calculo proporcional 1.1. Argumentos y proporciones lógicas INDICE Prologo XVII Prólogo a la edición en español XXI 1. Calculo proporcional 1.1. Argumentos y proporciones lógicas 1 1.1.1. Introducción 1.1.2. Algunos argumentos lógicos importantes 2 1.1.3. Proposiciones

Más detalles

Datos del autor. Nombres y apellido: Germán Andrés Paz. Lugar de nacimiento: Rosario (Código Postal 2000), Santa Fe, Argentina

Datos del autor. Nombres y apellido: Germán Andrés Paz. Lugar de nacimiento: Rosario (Código Postal 2000), Santa Fe, Argentina Datos del autor Nombres y apellido: Germán Andrés Paz Lugar de nacimiento: Rosario (Código Postal 2000), Santa Fe, Argentina Correo electrónico: germanpaz_ar@hotmail.com =========0========= Introducción

Más detalles

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: 5 10 2 2 10 1 8 10 0 =528 8 10 3 2 10 2 4 10 1 5 10 0 9 10 1 7 10 2 =8245,97

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: 5 10 2 2 10 1 8 10 0 =528 8 10 3 2 10 2 4 10 1 5 10 0 9 10 1 7 10 2 =8245,97 SISTEMAS DE NUMERACIÓN Un sistema de numeración es un conjunto de símbolos y reglas que permiten representar datos numéricos. La norma principal en un sistema de numeración posicional es que un mismo símbolo

Más detalles

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR

UNIDAD 3: ARITMÉTICA DEL COMPUTADOR UNIDAD 3: ARITMÉTICA DEL COMPUTADOR Señor estudiante, es un gusto iniciar nuevamente con usted el desarrollo de esta tercera unidad. En esta ocasión, haremos una explicación más detallada de la representación

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

8. Sentencia return y métodos

8. Sentencia return y métodos 92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente

Más detalles

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS ESTRUCTURA DE COMPUTADORES Pag. 8.1 LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS 1. Circuitos de multiplicación La operación de multiplicar es mas compleja que la suma y por tanto se

Más detalles

La suma y la resta. Introducción. Capítulo

La suma y la resta. Introducción. Capítulo Capítulo II La suma y la resta Introducción En el capítulo anterior, vimos que los números permiten expresar la cantidad de objetos que tiene una colección. Juntar dos o más colecciones, agregar objetos

Más detalles

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011

Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011 Módulo 2. Fundamentos de Programación Informática y Programación Escuela de Ingenierías Industriales y Civiles Curso 2010/2011 1 CONTENIDO Tema 1. Conceptos generales de algorítmica Tema 2. Sentencias

Más detalles

Tema 3: Problemas de Satisfacción de Restricciones

Tema 3: Problemas de Satisfacción de Restricciones Tema 3: Problemas de Satisfacción de Restricciones Universidad de Granada Tema 3: Satisfacción de Restricciones Contenido Problemas de satisfacción de restricciones Métodos de búsqueda Búsqueda local para

Más detalles

3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES

3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES 3 ESTRUCTURAS DE CONTROL REPETITIVAS. BUCLES 3.1 Estructuras de repetición Una estructura de repetición, también llamada lazo o bucle, hace posible la ejecución repetida de secciones específicas de código.

Más detalles

Resolución de Problemas

Resolución de Problemas Resolución de Problemas con algoritmos Colaboratorio de Computación Avanzada (CNCA) 2015 1 / 27 Contenidos 1 Introducción 2 Elementos de algoritmos Elementos Variables Estructuras de Control Condicionales

Más detalles

MATEMÁTICAS II APUNTES DE TEORÍA CURSO ACADÉMICO 2012-13. Carlos Ivorra

MATEMÁTICAS II APUNTES DE TEORÍA CURSO ACADÉMICO 2012-13. Carlos Ivorra MATEMÁTICAS II APUNTES DE TEORÍA CURSO ACADÉMICO 2012-13 Carlos Ivorra Índice 1 Introducción a la optimización 1 2 Programación entera 18 3 Introducción a la programación lineal 24 4 El método símplex

Más detalles

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas Departamento de Informática PROGRAMACIÓN DIDÁCTICA Curso 11-12 1 CONSEJERÍA DE EDUCACIÓN I.E.S. NERVIÓN Departamento de Informática CICLO FORMATIVO: TÉCNICO SUPERIOR EN DESARROLLO DE APLICACIONES MULTIPLATAFORMA.

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

Basic Object Oriented Programming (BOOP) Gramática del Lenguaje. Ever Mitta Flores

Basic Object Oriented Programming (BOOP) Gramática del Lenguaje. Ever Mitta Flores Ever Mitta Flores Índice 1. Clase @Principal...3 2. Comentarios...3 3. Definición de Atributos...3 4. Definición de Métodos...4 5. Declaración de Variables...4 6. Asignación de Valores...5 7. Definición

Más detalles

Estructura de Datos. Unidad I Tipos de Datos

Estructura de Datos. Unidad I Tipos de Datos Estructura de Datos Unidad I Tipos de Datos Conceptos Básicos Algoritmo: es una secuencia finita de pasos o instrucciones ordenadas crono-lógicamente que describen un método para resolver un problema específico.

Más detalles

El Ábaco. Descripción. Para qué sirve?

El Ábaco. Descripción. Para qué sirve? El Ábaco El ábaco es un instrumento que sirve para facilitar al alumno el aprendizaje del concepto de sistema posicional de numeración (en cualquier base), cómo se forman las distintas unidades que lo

Más detalles

Anillos Especiales. 8.1 Conceptos Básicos. Capítulo

Anillos Especiales. 8.1 Conceptos Básicos. Capítulo Capítulo 8 Anillos Especiales 8.1 Conceptos Básicos En este capítulo nos dedicaremos al estudio de algunos anillos especiales que poseen ciertas condiciones adicionales, aparte de las propias de la definición,

Más detalles

Introducción. Paradigma de Lógica Gran importancia en la I.A. Origen: prueba de teoremas y razonamiento deductivo. Lógica.

Introducción. Paradigma de Lógica Gran importancia en la I.A. Origen: prueba de teoremas y razonamiento deductivo. Lógica. Tema 2: Lógica y Razonamiento Automático tico Introducción Lógica Proposicional Lógica de Predicados Axiomas Unificación Razonamiento automático e Inferencias lógicas Resolución Regla de Inferencia Refutación

Más detalles

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014 Tecnologías en la Educación Matemática jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR 1 Datos Los algoritmos combinan datos con acciones. Los datos de entrada

Más detalles

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación. Descripción de la semántica de ALFA En esta descripción sólo se mencionarán los aspectos en los que el lenguaje de programación ALFA pueda diferir de otros lenguajes de programación de alto nivel. Se sobreentienden

Más detalles

Ejemplos: Sean los conjuntos: A = { aves} B = { peces } C = { anfibios }

Ejemplos: Sean los conjuntos: A = { aves} B = { peces } C = { anfibios } La Teoría de Conjuntos es una teoría matemática, que estudia básicamente a un cierto tipo de objetos llamados conjuntos y algunas veces, a otros objetos denominados no conjuntos, así como a los problemas

Más detalles

Notas de Clase para IL

Notas de Clase para IL Notas de Clase para IL 5. Deducción en Lógica de Primer Orden Rafel Farré, Robert Nieuwenhuis, Pilar Nivela, Albert Oliveras, Enric Rodríguez, Josefina Sierra 3 de septiembre de 2009 1 1. Formas normales

Más detalles

Representación de Datos. Una Introducción a los Sistemas Numéricos

Representación de Datos. Una Introducción a los Sistemas Numéricos Representación de Datos Una Introducción a los Sistemas Numéricos Tipos de Datos Datos Texto Número Imagen Audio Video Multimedia: Información que contiene números, texto, imágenes, audio y video. Como

Más detalles

Tema 1 Generalidades sobre Ecuaciones Diferenciales Ordinarias (E.D.O.)

Tema 1 Generalidades sobre Ecuaciones Diferenciales Ordinarias (E.D.O.) Tema 1 Generalidades sobre Ecuaciones Diferenciales Ordinarias (E.D.O.) 1.1 Definiciones Se llama ecuación diferencial a toda ecuación que contiene las derivadas de una o más variables dependientes respecto

Más detalles

Sistemas de producción y búsqueda de soluciones. Area de Computación e Inteligencia Artificial 1

Sistemas de producción y búsqueda de soluciones. Area de Computación e Inteligencia Artificial 1 Sistemas de producción y búsqueda de soluciones Area de Computación e Inteligencia Artificial 1 Técnicas de búsqueda Resolución de problemas en Inteligencia Artificial. En general, podemos afirmar que

Más detalles

{} representa al conjunto vacío, es decir, aquel que no contiene elementos. También se representa por.

{} representa al conjunto vacío, es decir, aquel que no contiene elementos. También se representa por. 2. Nociones sobre Teoría de Conjuntos y Lógica Para llevar a cabo nuestro propósito de especificar formalmente los problemas y demostrar rigurosamente la correctitud de nuestro programas, introduciremos

Más detalles

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases Programación Avanzada para Sistemas de Telecomunicación Objetos y clases Juan Carlos Cruellas cruellas@ac.upc.es Objetos y clases Concepto de objeto. Concepto de clase. Clases, objetos y programas. Clases

Más detalles

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1 Fundamentos de Investigación de Operaciones Investigación de Operaciones de agosto de 200. Estandarización Cuando se plantea un modelo de LP pueden existir igualdades y desigualdades. De la misma forma

Más detalles

Búsqueda heurística Prof. Constantino Malagón

Búsqueda heurística Prof. Constantino Malagón Búsqueda heurística Prof. Constantino Malagón Area de Computación e Inteligencia Artificial 1 Búsqueda heurística Los métodos de búsqueda heurística disponen de alguna información sobre la proximidad de

Más detalles

30 = 2 3 5 = ( 2) 3 ( 5) = 2 ( 3) ( 5) = ( 2) ( 3) 5.

30 = 2 3 5 = ( 2) 3 ( 5) = 2 ( 3) ( 5) = ( 2) ( 3) 5. 11 1.3. Factorización Como ya hemos mencionado, la teoría de ideales surgió en relación con ciertos problemas de factorización en anillos. A título meramente ilustrativo, nótese que por ejemplo hallar

Más detalles

Dependencia lineal de vectores y sus aplicaciones a la resolución de sistemas de ecuaciones lineales y de problemas geométricos.

Dependencia lineal de vectores y sus aplicaciones a la resolución de sistemas de ecuaciones lineales y de problemas geométricos. Dependencia lineal de vectores y sus aplicaciones a la resolución de sistemas de ecuaciones lineales y de problemas geométricos. Prof. D. Miguel Ángel García Hoyo. Septiembre de 2011 Dependencia lineal

Más detalles

Caracterización de los campos conservativos

Caracterización de los campos conservativos Lección 5 Caracterización de los campos conservativos 5.1. Motivación y enunciado del teorema Recordemos el cálculo de la integral de línea de un gradiente, hecho en la lección anterior. Si f : Ω R es

Más detalles