III. BÚSQUEDA Y RESOLUCIÓN DE PROBLEMAS. III.3.

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

Download "III. BÚSQUEDA Y RESOLUCIÓN DE PROBLEMAS. III.3."

Transcripción

1 III. BÚSQUEDA Y RESOLUCIÓN DE PROBLEMAS. III.3. Búsquedas con retroceso. III.3.1. Búsquedas con retroceso a ciegas. III Procedimientos con retroceso. La búsqueda con retroceso, o backtracking, es una estrategia tentativa. El procedimiento lleva la cuenta de las reglas aplicadas. Si en el transcurso de la búsqueda se llega a un punto muerto, puede olvidar o "deshacer" la última regla aplicada y probar una nueva alternativa. Esto permite, en principio, explorar todos los caminos de un grafo a partir de un nodo inicial, siempre que sea finito y se compruebe la aparición de ciclos. El procedimiento RETROCESO recibe un estado inicial y devuelve: bien el camino de estados que lleva a un estado objetivo; o bien 'FRACASO' si no pudo encontrarse ningún camino solución. Aunque la idea de base es sencilla, pueden considerarse distintas implementaciones de la búsqueda con retroceso. Concretamente analizaremos dos versiones: La primera, que denominaremos backtrack, es una versión recursiva en la que la secuencia de nodos examinados se guarda en los entornos de las sucesivas llamadas recursivas. La segunda, que denominaremos retroceso, es una versión recursiva por la cola que manipula explícitamente una estructura de datos donde se guarda explícitamente el camino que se está examinando. a) Procedimiento BACKTRACK El procedimiento BACKTRACK recibe un estado e intenta encontrar un camino solución partiendo de él. Para ello genera un único sucesor y realiza una llamada recursiva. Si esta fracasa, se genera otro sucesor y se vuelve a realizar una llamada recursiva. Si las llamadas correspondientes a todos los sucesores fracasan, entonces se termina devolviendo FRACASO. Si en algún momento se encuentra un estado final, se termina con éxito, y la secuencia de retornos de las distintas llamadas construyen una lista con el camino solución. PROCEDIMIENTO BACKTRACK backtrack(e) Si finalp(e) entonces devolver (cons(e, NIL)); en otro caso, Para cada regla R aplicable a E E2 aplicar-regla(r,e); SOLUCION backtrack(e2); Si SOLUCION <> FRACASO entonces devolver (cons(e,solucion)); fin/para devolver ( FRACASO ); fin backtrack; b) Procedimiento RETROCESO El procedimiento RETROCESO realiza una exploración similar a la de BACKTRACK. La diferencia está en la implementación, que en el caso de RETROCESO responde a una función recursiva por la cola más versátil, y que permite la comprobación de ciclos. Para llevar la cuenta de los estados y reglas considerados, RETROCESO utiliza una lista de nodos. Cada nodo estará formado por dos elementos: un estado; una lista de las reglas aplicables a dicho estado y que aún no han sido probadas. Supondremos definidas las operaciones: hacer-nodo(e, LR), que recibe un estado E y una lista de reglas LR y devuelve un nodo. estado(n), que recibe un nodo N y devuelve el estado asociado. lista-reglas (N), que recibe un nodo N y devuelve la lista de reglas asociada. También supondremos que NIL denota la lista vacía, y que están definidas las operaciones sobre listas: añadir(x,l), que recibe un elemento X y una lista L, y devuelve una nueva lista cuyo primer elemento es X, y a continuación todos los de la lista L, es decir, en notación Prolog, la lista [X L]. cabeza(l), que recibe una lista L y devuelve su primer elemento. resto(l), que recibe una lista L y devuelve una lista igual que L tras eliminar su primer elemento. Apuntes IAlC 25/26 III.1 Dpto. Leng.Ciencias Comp., Univ.Málaga

2 vacío(l), que recibe una lista L y devuelve 'cierto' si L es la lista vacía, y 'falso' en otro caso. PROCEDIMIENTO RETROCESO retroceso(e); LR reglas-aplicables(e); N hacer-nodo(e, LR); CAMINO añadir(n, NIL); devolver(rtr(camino)); fin-retroceso. PROCEDIMIENTO RTR rtr(camino); NODO cabeza (CAMINO); E estado (NODO); LR lista-reglas (NODO); R cabeza (LR); según: vacío (CAMINO) : devolver ('FRACASO'); es-objetivo (E): devolver (CAMINO); vacío (LR): devolver (rtr (resto (CAMINO))); otro-caso: LR2 resto (LR); NODO2 hacer-nodo (E, LR2); fin-según; fin-rtr. NUEVO-CAM añadir(nodo2, resto (CAMINO)); devolver (rtr (avanzar (E,R, NUEVO-CAM))); Las cuatro condiciones de la estructura 'según' corresponden al fracaso, éxito, retroceso y avance respectivamente. Las dos primeras suponen la terminación de la búsqueda, mientras que las restantes la continúan. Nótese que cuando se prueba una regla de un nodo, la lista de reglas correspondiente debe ser actualizada. Nótese también que 'rtr' es una función recursiva por la cola. La función 'avanzar (E,R, CAM)' recibe un estado E, una regla R aplicable a E, y un camino CAM, y devuelve un camino igual que CAM, pero que además tiene a la cabeza el estado resultante de aplicar R a E. Según la naturaleza del problema que se pretenda resolver puede realizarse o no la comprobación de ciclos. Si los ciclos son imposibles, entonces comprobarlos es una pérdida de tiempo. Si los ciclos son posibles, no comprobarlos puede ser nefasto. Veamos versiones para ambas posibilidades: AVANZAR(E,R,CAMINO) ;versión que no comprueba ciclos E2 aplicar (R, E); LR2 reglas-aplicables (E2); NODO hacer-nodo (E2, LR2); devolver (añadir (NODO, CAMINO)); AVANZAR(E,R,CAMINO) ;versión que sí comprueba ciclos E2 aplicar (R, E); Si repetido(e2,camino) entonces devolver(camino); si-no LR2 reglas-aplicables (E2); NODO hacer-nodo (E2, LR2); devolver (añadir (NODO, CAMINO)); Apuntes IAlC 25/26 III.2 Dpto. Leng.Ciencias Comp., Univ.Málaga

3 donde la función 'repetido(e,camino)' devuleve: 'cierto' si el estado de algún nodo del CAMINO es igual a E; o 'falso' en otro caso. Ejemplo: Sea el grafo de la figura. El estado inicial es el etiquetado como E1, y el final el etiquetado como E4. Supongamos que las reglas se prueban siempre en el orden creciente (R1, R2, R3, R4, R5, R6). En este grafo (un árbol, en realidad) no se presentan ciclos, por lo que puede utilizarse sin peligro la primera versión de 'avanzar'. E 1 R 1 R 3 R 2 E 2 E 3 E 6 R 4 R 5 R 6 E 4 E 5 E 7 La llamada a 'retroceso(e1)' construye una lista formada por un único nodo: E1 (R1, R2, R3) A continuación se realiza la primera llamada a rtr, donde: NODO es E1 (R1, R2, R3) E es E1 LR es (R1, R2, R3) R es R1 El resultado es una segunda llamada recursiva a rtr con la lista: E2 ( ) E1 (R2, R3) y donde: NODO es E2 ( ) E es E2 LR es ( ) R no toma valor El resultado es una tercera llamada a rtr con la lista: Apuntes IAlC 25/26 III.3 Dpto. Leng.Ciencias Comp., Univ.Málaga

4 E1 (R2, R3) El resultado es una cuarta llamada a rtr con la lista: E3 (R4, R5) E1 (R3) El resultado es una quinta llamada a rtr con la lista: E4 ( ) E3 (R5) E1 (R3) Como E4 es el estado final, la búsqueda termina con éxito devolviendo el camino resultante. Apuntes IAlC 25/26 III.4 Dpto. Leng.Ciencias Comp., Univ.Málaga

5 III BÚSQUEDA CON PROFUNDIZACION PROGRESIVA. Consideremos un espacio de estados cuyo nodo s representa el estado inicial de un problema de búsqueda. El algoritmo de backtacking con profundización progresiva BID (Backtracking Iterative Deepening) se puede enunciar como sigue, dependiendo de la implementación de la búsqueda con retroceso empleada. a) BID (versión 1) Desarrollaremos primero una versión de BID partiendo del procedimiento BACKTRACK estudiado anteriormente: PROCEDIMIENTO BID (versión 1) bid (s) COTA ; Repetir SOLUCION backtrack-acotado(s, COTA, ); COTA COTA+1; hasta que SOLUCION <> FRACASO ; devolver (SOLUCION); fin-bid; PROCEDIMIENTO BACKTRACK-ACOTADO backtrack-acotado (E, COTA, PROF) Si finalp(e) entonces devolver (cons(e, NIL)); en otro caso, si PROF COTA entonces devolver ( FRACASO ); en otro caso, Para cada regla R aplicable a E E2 aplicar-regla(r,e); SOLUCION backtrack-acotado(e2, COTA, PROF+1); Si SOLUCION <> FRACASO entonces devolver (cons(e,solucion)); fin/para devolver ( FRACASO ); fin-backtrack-acotado; Nótese que 'backtrack-acotado' incorpora una nueva condición de retroceso respecto a 'backtrack': cuando la longitud del camino explorado supera un cierto límite. Es decir, primero se exploran todos los caminos de longitud 1; si ninguno lleva a un estado objetivo, se exploran los de longitud 2; y así hasta encontrar algún estado objetivo. Nótese que los nodos generados en un ciclo de profundización no se almacenan; en cada ciclo se vuelven a generar los nodos anteriormente generados. b) BID (versión 2) Desarrollaremos ahora una versión de BID aprovechando el procedimiento RTR descrito anteriormente. Nótese que la exploración realizada será la misma que con la versión anterior, siempre que no se comprueben ciclos. PROCEDIMIENTO BID (versión 2) bid(s); LR reglas-aplicables(s); N hacer-nodo(s, LR); CAMINO añadir(n, NIL); D ; repetir SOLUCION rtr-acotado(d, CAMINO, 1); D D+1 hasta que SOLUCION <> 'FRACASO'; devolver(solucion); fin-bid. Apuntes IAlC 25/26 III.5 Dpto. Leng.Ciencias Comp., Univ.Málaga

6 PROCEDIMIENTO RTR-ACOTADO rtr-acotado(lim_prof, CAMINO, PROF); NODO cabeza (CAMINO); E estado (NODO); LR lista-reglas (NODO); R cabeza (LR); según: vacío (CAMINO) : devolver ('FRACASO'); /*FRACASO*/ es-objetivo (E): devolver (CAMINO); /*ÉXITO*/ (PROF LIM-PROF) or (vacío (LR)): /*RETROCESO*/ devolver (rtr-acotado (LIM_PROF, resto(camino), PROF-1)); otro-caso: LR2 resto (LR); /*AVANCE*/ NODO2 hacer-nodo (E, LR2); NUEVO-CAM añadir(nodo2, resto (CAMINO)); devolver (rtr-acotado (LIM_PROF, avanzar (E,R, NUEVO-CAM) PROF+1)); fin-según; fin-rtr-acotado. Nótese que 'rtr-acotado' incorpora una nueva condición de retroceso respecto a 'rtr': cuando la longitud del camino explorado supera un cierto límite. Es decir, primero se exploran todos los caminos de longitud 1; si ninguno lleva a un estado objetivo, se exploran los de longitud 2; y así hasta encontrar algún estado objetivo. Nótese que los nodos generados en un ciclo de profundización no se almacenan; en cada ciclo se vuelven a generar los nodos anteriormente generados. c) Propiedades Ambas versiones de BID realizan la misma exploración (suponiendo que ninguno comprueba ciclos). Por tanto las propiedades son aplicables a ambos. Prop. Si hay una solución, el algoritmo BID acaba y encuentra una solución. Dem. Supongamos que hay una solución. Sea D el mínimo número de arcos que la conectan con s en el grafo. Es evidente que cada ciclo de profundización acaba, luego se llegará a alcanzar el ciclo con profundidad d=d, y en él se encontrará la solución y el algoritmo acabará. Consideremos ahora que el grafo es un árbol con factor de ramificación constante b. Prop. El número máximo Nm de nodos mantenidos en memoria simultáneamente por BID en función de la profundidad D a la que se encuentra el estado objetivo más superficial es de la forma O(D). Dem. El algoritmo de backtracking mantiene una sóla rama de búsqueda. La máxima longitud de esta rama es D, y a cada nivel de profundidad se ha generado 1 sucesor del nodo en el nivel anterior, luego en total se mantienen en el peor caso D nodos, que es de la forma O(D). Prop. El número máximo Ng de nodos generados por BID en función de la profundidad D a la que se encuentra el estado objetivo más superficial es de la forma O(b D ). Dem. Cada nodo a profundidad D se generará una sola vez (en el último ciclo de profundización); los nodos a profundidad D-1 se generarán 2 veces (en el último y el penúltimo ciclo);...; los nodos a profundidad 1 se generarán D veces, luego en total se generan o sea b D + 2b D-1 + 3b D (D-1)b 2 + Db nodos b D (1 + 2b b (D-1)b 1-(D-1) + Db 1-D ) y llamando x = 1/b b D (1 + 2x + 3x (D-1)x D-2 + Dx D-1 ) que es menor que la serie infinita b D Σ n x n y recordando que para -1 < x < 1 es Σ n x n = 1/(1-x) 2 Apuntes IAlC 25/26 III.6 Dpto. Leng.Ciencias Comp., Univ.Málaga

7 tenemos que el número de nodos es a lo sumo b D /(1-x) 2 o sea b D b 2 /(b-1) 2 que es de la forma O(b D ) Figura 1. 5 Ejemplo: Sea el grafo de la figura 1. El estado inicial es el etiquetado con y el objetivo el etiquetado con 5. Supongamos que los sucesores se generan siempre de izquierda a derecha y que no se comprueba la aparición de ciclos. En estas circunstancias, el algoritmo BID genera la siguiente sucesión de caminos (por simplicidad se muestran sólo los estados): d=; d=1; d= solución. Nótese que el algoritmo acaba pese a la existencia de un ciclo en el grafo. Ejercicio propuesto: Nótese que las versiones presentadas de BID no terminan en grafos finitos cuando no hay solución. Realizar las modificaciones necesarias para que BID termine con fracaso en un número finito de pasos en tales situaciones. Apuntes IAlC 25/26 III.7 Dpto. Leng.Ciencias Comp., Univ.Málaga

8 III SATISFACCION DE RESTRICCIONES. III a Definiciones. Un problema de satisfacción de restricciones queda definido por los siguientes elementos: -un conjunto finito de variables {X1,..., Xn}. -para cada variable Xi, un conjunto finito Di llamado dominio. -un conjunto finito de restricciones {C1,..., Cp}. Cada restricción Cj se define mediante una lista sin repeticiones de variables [Xj1,..., Xja(j)] y un subconjunto Vj del producto cartesiano Dj1... Dja(j). El valor a(j) es la aridad de la restricción Cj y el subconjunto Vj es el conjunto de asignaciones permitidas por la restricción Cj. Habitualmente, una restricción Cj no viene dada explícitamente por enumeración de sus asignaciones permitidas, sino por una expresión booleana que para cada asignación de sus variables dará el valor verdadero o el valor falso. El planteamiento del problema es el siguiente: encontrar un valor vi para cada variable Xi tal que: i) vi Di ii) (vj1,..., vja(j)) Vj para toda restricción Cj cuyas variables sean [Xj1,..., Xja(j)], y cuyo conjunto de asignaciones permitidas sea Vj. EJEMPLO: Sean 3 variables X1, X2, X3, con el mismo dominio D1=D2=D3={1,2,3}. Supongamos dos restricciones C1, C2 dadas por las expresiones X1<X2, X2<X3. Más explícitamente, serán C1: [X1, X2], V1= {(1,2), (1,3), (2,3)} C2: [X2, X3], V2= {(1,2), (1,3), (2,3)} Es evidente que la única solución a este problema viene dada por la asignación (X1 1), (X2 2), (X3 3) III b Búsqueda en árbol. Es posible plantear un problema de satisfacción de restricciones como una búsqueda en cierto espacio de estados, definido de la siguiente forma: -los estados son las asignaciones parciales admisibles de valores a un subconjunto de variables {X1,..., Xk}, k n. Una asignación parcial {(X1, v1)..., (Xk, vk)} (k n) es admisible cuando para toda restricción C cuyas variables (Xc1,..., Xcj) están todas en {X1,..., Xk}, las correspondientes tuplas (vc1,..., vcj) C. -el estado inicial es la asignación vacía. -Sea un estado s en el que se han asignado valores hasta la variable Xi. Los sucesores de s son las asignaciones admisibles en las que además de las variables consideradas en s, se ha dado un valor a la variable Xi+1. -los estados objetivo son las asignaciones en las cuales toda variable ha recibido un valor. El espacio así definido es un árbol, cuyas hojas serán todas las asignaciones de variables que satisfacen todas las restricciones. EJEMPLO: Con el ejemplo anterior, el espacio de estados es el de la figura 3. X1 1 X1 2 X1 3 X2 2 X2 3 X2 3 X3 3 Figura 3. Apuntes IAlC 25/26 III.8 Dpto. Leng.Ciencias Comp., Univ.Málaga

9 Es claro que una estrategia de búsqueda con retroceso permitirá generar de forma completa el árbol anterior. El algoritmo puede ser como sigue: Supongamos definidas una ordenación de las variables en una lista variables, y según ella las siguientes definidicones de las funciones variable(n), dominio(var) y la constante NUM-VAR variable(n) la variable n-ésima dominio(var) el dominio de la variable var NUM-VAR el número de variables del problema Representaremos las asignaciones por listas de pares (variable, valor). Supongamos también una función test(asignaciones) que, dada una asignación parcial de valores, devuelve verdadero, si es admisible, y falso en otro caso. La llamada inicial será RA(()), es decir, con la lista de asignaciones vacía. Supondremos también definidas las siguientes operaciones sobre listas: long(l) longitud de la lista L primero(l) primer elemento de la lista L resto(l) una lista como L, pero sin su primer elem. lista(a,b) una lista de la forma [A,B] añadir(e,l) una lista de la forma [E L] RA2(lista-asigs); ALGORITMO RA. si no test(lista-asigs) /*no se cumple alguna restr. */ entonces, devolver(fracaso); si long(lista-asigs) = NUM-VAR entonces, devolver(lista-asigs); num 1 + long(lista-asigs); /*num. orden de la sig. var */ var variable(num); valores dominio(var); loop si valores = [] entonces, devolver(fracaso); valor primero(valores); valores resto(valores); sig-asig lista(var, valor); sig-lista añadir(sig-asig, lista-asigs); resultado RA2(sig-lista); si resultado FRACASO entonces, devolver(resultado); fin-loop; fin-ra2; Cuando en una llamada se cumple la condición test(asignaciones), pero ninguna de las llamadas posteriores se llega a completar una solución, decimos que esa llamada es una llamada improductiva a RA. Ello corresponde a generar una asignación parcial admisible que no se puede completar de forma admisible. Por ello, a su nivel no se produce inmediatamente retroceso; sin embargo, ninguna de las llamadas que se originen a partir de ella producirá una salida. Por ejemplo, el el árbol anterior el nodo (X1, 2) se origina en una llamada improductiva; por el contrario, el nodo (X1, 1) se origina en una llamada productiva. III c. Consistencia en arcos. Otro enfoque para el problema de satisfacción de restricciones viene dado por los algoritmos de consistencia en arcos, también llamados de filtrado o relajación. En estos algoritmos se realiza un procesamiento de los dominios Di previamente a la búsqueda en un árbol de asignaciones parciales. Consideramemos únicamente el caso de restricciones binarias (que afectan a dos variables). El caso más general se puede abordar mediante un procedimiento análogo (consistencia en hiperarcos). Un conjunto de restricciones binarias define un grafo de restricciones en el cual los nodos son las variables con sus dominios y existe un arco (i,j) siempre que haya una restricción binaria C que afecta a las variables Xi y Xj. Al aplicar un algoritmo de consistencia en arcos, se comienza considerando el grafo con todos los dominios completos. En cada paso se intenta eliminar algún elemento de algún dominio. En efecto, si existe una restricción C que Apuntes IAlC 25/26 III.9 Dpto. Leng.Ciencias Comp., Univ.Málaga

10 afecta a las variables Xi y Xj con un conjunto de asignaciones permitidas V, y el valor vk Di es tal que para ningún elemento vm Dj se tiene (vk, vm) V, entonces podremos eliminar vk de Di, ya que no puede formar parte de ninguna solución. En el mejor de los casos, la búsqueda en árbol no será necesaria pues los dominios quedarán reducidos de forma que su producto cartesiano genere todas las soluciones, y precisamente éstas. Si no es así, al menos se habrá reducido el tamaño original de los dominios, y la búsqueda será más sencilla. 1, 2, 3 X1 X3 x1<x2 X2 1, 2, 3 1, 2 X1 X3 x1<x2 X2 1, 2, 3 1, 2, 3 x2<x3 1, 2, 3 x2<x3 1, 2 X1 X3 x1<x2 X2 2, 3 1 X1 X3 x1<x2 X2 2, 3 1, 2, 3 x2<x3 3 x2<x3 1 X1 X3 x1<x2 2 X2 3 x2<x3 Figura 4. Aclaremos el procedimiento aplicándolo al ejemplo anterior (figura 4). Representaremos cada dominio por una caja en cuyo interior figuren todos los posibles valores. Comenzamos llenando cada caja con todos los elementos del dominio. Consideremos el arco (1,2); el valor 3 de X1 es incompatible con todos los valores de X2, pues es 3<1, 3<2, 3<3. Por tanto, eliminamos el valor 3 de la caja de X1. De la misma forma, considerando el mismo arco en sentido contrario, el valor 1 de X2 es incompatible con todos los valores de X1, por lo que se puede eliminar. Considerando de nuevo el arco (1,2) vemos que el valor 2 de X1 es incompatible con los valores que quedan en X2, así que también lo eliminamos. Por otra parte, si atendemos al arco (2,3) en sentido inverso, los valores 1 y 2 de X3 son incompatibles con los valores de X2. Por último, observamos que el valor 2 de X2 es incompatible con el único valor que queda en X3. El procesamiento ha acabado y la única solución es la que queda en el grafo: (X1 1), (X2 2), (X3 3). Nótese que no hemos definido por completo un algoritmo, pues no se ha dicho el orden en que se realizan las comprobaciones ni el paso en el que dejan de realizarse. Una posibilidad es la siguiente: Llamemos Q al conjunto de pares (r,s) tales que existe una restricción C que afecta a [Xr, Xs] (lógicamente tambien pertenecerá a Q el par (s, r) si exite restricción que afecte a [Xs, Xr]). Para cada elemento (r,s) Q llamemos Vrs al conjunto de pares (v,w) que satisfacen la restricción correspondiente al arco C. Apuntes IAlC 25/26 III.1 Dpto. Leng.Ciencias Comp., Univ.Málaga

11 ALGORITMO AC DE CONSISTENCIA DE ARCOS. repetir cambio falso para todo arco (i,j) Q para todo valor v Di eliminación verdadero; para todo w Dj si (v,w) Vij eliminación falso; salir para-todo w fin-si fin-para todo; si eliminación Di Di - {v}; cambio verdadero; fin-si fin-para todo fin-para todo hasta que cambio = falso Prop. El algoritmo AC termina. Efectivamente, se parte de conjuntos finitos de valores en un conjunto finito de dominios. En cada ejecución del ciclo repetir (única fuente posible de no terminación) se eliminan uno o más valores, salvo en la última, donde no se elimina ninguno. Por tanto, el ciclo repetir se ejecutará a lo sumo un número de veces igual al producto de los cardinales de cada dominio inicial. Cuando se alcanza la condición de terminación, para todo valor v de un dominio D y para todo dominio D conectado con D, existe al menos un valor w D tal que (v,w) satisface la restricción correspondiente al arco. Esta condición es la denominada 2-consistencia o consistencia en arcos. Prop. Si el grafo de restricciones es un árbol, y las variables se enumeran según el preorden del árbol, y los dominios son 2-consistentes, entonces la llamada inicial al algoritmo RA no produce ninguna llamada improductiva. Dem: se omite. EJEMPLO: Sean tres subconjuntos de N, X={5, 2, 4, 6}, Y={2, 4, 6, 1}, Z={5, 2, 4, 6}. Se pide escoger un número de cada conjunto de forma que el número escogido de Z divida tanto al escogido de X como al escogido de Y. El grafo de restricciones puede representarse por un árbol, por ejemplo 5, 2, 4, 6 X Z 5, 2, 4, 6 2, 4, 6, 1 Y El preorden del árbol considerado es (Z, X, Y). Aplicando el procedimiento AC comprobamos que el grafo es 2-consistente. Por tanto, si realizamos una búsqueda comenzando las asignaciones por la variable Z, el árbol generado no tendrá nodos improductivos: Apuntes IAlC 25/26 III.11 Dpto. Leng.Ciencias Comp., Univ.Málaga

12 Z= X= Y= Por el contrario, si realizamos la búsqueda con la ordenación (X, Y, Z), que no corresponde a ningún preorden del grafo de restricciones, el árbol tiene nodos improductivos: X= Y= Z= Existen otros algoritmos que no realizan todas las comprobaciones que efectúa AC (algoritmos de retroceso con precomprobación y de retroceso con previsión parcial). También los hay que realizan más comprobaciones (algoritmos de k-consistencia). Apuntes IAlC 25/26 III.12 Dpto. Leng.Ciencias Comp., Univ.Málaga

13 III.3.2. Búsquedas heurísticas con retroceso: IDA* El algoritmo IDA* (Iterative Deepening A* - A* con Profundización Iterativa) es un algoritmo de búsqueda con retroceso que admite el mismo tipo de información heurística que el algoritmo de búsqueda con árbol A*. Consideremos un grafo G cuya raíz s representa el estado inicial de un problema de búsqueda. El algoritmo A* con profundización progresiva IDA* se puede enunciar como sigue: PROCEDIMIENTO IDA* poda f(s); sig-poda ; Camino [s]; REPETIR si Camino=[] y sig-poda = devolver('fracaso') en otro casi si Camino=[] poda sig-poda; empezar de nuevo; en otro caso si f(último(camino)) > poda actualizar sig-poda; retroceder; en otro caso si último(camino) Objetivos devolver(camino); en otro caso si otros-sucesores(último(camino))=[] retroceder; en otro caso avanzar; HASTA QUE FALSO. donde avanzar y retroceder tienen el significado habitual de la búsqueda con retroceso; empezar de nuevo supone volver al nodo inicial y emprender una nueva búsqueda con una nueva cota (sig-poda) para la poda; y sig-poda se va tomando como el menor de los valores encontrados que superan la actual cota de poda. Es decir, primero se exploran todos los caminos de coste hasta f(s); si ninguno lleva a un estado objetivo, se exploran los de coste c menor o igual que el menor de los costes anteriormente hallados que rebasaban la anterior cota de coste; y así hasta encontrar algún estado objetivo. Nótese que los nodos generados en un ciclo de profundización no se almacenan; en cada ciclo se vuelven a generar los nodos anteriormente generados. A diferencia del algoritmo A*, IDA* no mantiene las listas CERRADOS y ABIERTOS, ya que realiza una búsqueda con retroceso. Propiedades Prop. Admisibilidad. Si hay una solución y la función h(n) es una estimación optimista de h*(n), el algoritmo IDA* acaba y encuentra una solución de mínimo coste. Demostración. La cota de poda inicial es h(s) h*(s)=f*(s)=c*. Además, en cada nuevo ciclo de búsqueda la cota de poda es el mínimo valor que excedió la anterior cota, y siempre algún nodo n que yace en el camino solución tiene f(n) C*. Por tanto, la cota de poda llegará a ser exactamente C*, y en el correpondiente ciclo de búsqueda se encontrará un camino con coste C*. Prop. El número máximo Nm de nodos mantenidos en memoria simultáneamente por IDA* en función del coste óptimo C* y del coste mínimo de un arco c es de la forma O(C*/c). Llamemos factor de ramificación heurístico de un problema al factor B correspondiente a la aplicación de A* a dicho problema. Prop. Si el factor de ramificación heurístico es mayor que 1 y el espacio de estados es un árbol, entonces cuando crece la longitud de la solución el número de nodos generados por IDA* tiende asintóticamente al número de nodos generados por A*. Demostración. En el peor caso, el último ciclo de búsqueda de IDA* expande los mismos nodos que A*. Si el espacio es un árbol, cada nodo se expande a lo sumo una vez. Por otra parte, un argumento análogo al del algoritmo BID muestra que los nodos expandidos por IDA* en anteriores ciclos de búsqueda no afectan al valor asintótico del número total de nodos expandidos. Apuntes IAlC 25/26 III.13 Dpto. Leng.Ciencias Comp., Univ.Málaga

14 EJEMPLO. Sea el grafo de la figura 2. El estado inicial es el, el objetivo el 5, los costes de los arcos son los indicados. La función h toma los valores h()=2, h(1)=1, h(2)=1, h(3)=2, h(4)=1, h(5)=. 1 3, , , La aplicación de IDA* genera los caminos: Figura 2. poda= f()=2; f()=2 f(1)=2 f()=4 sig-poda se actualiza a 4. 2 f(2)=2,5 sig-poda se actualiza a 2,5. 3 f(3)=4 4 f(4)=5,4 2 f(2)=4 poda=2,5 f()=2 f(1)=2 f()=4 sig-poda se actualiza a 4. 2 f(2)=2,5 24 f(4)=4, f(5)=2,5 solución. Apuntes IAlC 25/26 III.14 Dpto. Leng.Ciencias Comp., Univ.Málaga

Restricciones. Inteligencia Artificial. Ingeniería Superior en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani

Restricciones. Inteligencia Artificial. Ingeniería Superior en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani Restricciones Ingeniería Superior en Informática, 4º Curso académico: 2011/2012 Profesores: Ramón Hermoso y Matteo Vasirani 1 Tema 2: Agentes basados en Búsqueda Resumen: 2. Agentes basados en búsqueda

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

Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas).

Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas). TEMA 5.- GRAFOS 5.1.- DEFINICIONES BÁSICAS Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas). Gráficamente representaremos

Más detalles

3. Consideremos el puzzle-8 descrito en clase y sea el estado objetivo, como de costumbre,

3. Consideremos el puzzle-8 descrito en clase y sea el estado objetivo, como de costumbre, E.T.S.I. INFORMÁTICA 4º CURSO. INTELIGENCIA ARTIFICIAL. UNIVERSIDAD DE MÁLAGA Dpto. Lenguajes y Ciencias de la Computación RELACIÓN DE PROLEMAS. ÚSQUEDAS CON ÁROL.. Un móvil puede situarse en los nodos

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

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

Resolución de Problemas

Resolución de Problemas Introducción Resolución de Problemas La resolución de problemas es una capacidad que consideramos inteligente Somos capaces de resolver problemas muy diferentes Encontrar el camino en un laberinto Resolver

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

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

Arboles Binarios de Búsqueda

Arboles Binarios de Búsqueda Arboles Binarios de Búsqueda Algoritmos y Estructuras de Datos Departamento de Electricidad y Electrónica (UPV/EHU) Arboles Binarios de Búsqueda p.1/52 Arboles Binarios Arbol binario: árbol ordenado de

Más detalles

Satisfacción de Restricciones

Satisfacción de Restricciones Satisfacción de Restricciones Introducción Componentes del estado: Variables Dominios (valores posibles para las variables) Restricciones binarias entre las variables Objetivo: Encontrar un estado que

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

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

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores

Árboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,

Más detalles

Problemas de Satisfacción de Restricciones

Problemas de Satisfacción de Restricciones Problemas de Satisfacción de estricciones José Luis uiz eina José Antonio Alonso Jiménez Franciso J. Martín Mateos María José Hidalgo Doblado Dpto. Ciencias de la Computación e Inteligencia Artificial

Más detalles

Apuntes de Matemática Discreta 6. Relaciones

Apuntes de Matemática Discreta 6. Relaciones Apuntes de Matemática Discreta 6. Relaciones Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 6 Relaciones Contenido 6.1 Generalidades.....................................

Más detalles

DEPARTAMENTO DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN OPCIÓN I

DEPARTAMENTO DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN OPCIÓN I 1INSTITUTO TECNOLÓGICO DE CIUDAD MADERO DEPARTAMENTO DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN OPCIÓN I TESIS: Desarrollo de Algoritmos de Retroceso Aplicados a la solución del Problema del Diseño de la

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

árbol como un conjunto de nodos y líneas

árbol como un conjunto de nodos y líneas ÁRBOLES CAPÍTULO 6 ÁRBOLES Desde el punto de vista conceptual, un árbol es un objeto que comienza con una raíz (root) y se extiende en varias ramificaciones o líneas (edges), cada una de las cuales puede

Más detalles

Estructuras de datos: Árboles binarios de

Estructuras de datos: Árboles binarios de Estructuras de datos: Árboles binarios de búsqueda, Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge santiago.jorge@udc.es Árboles binarios de búsqueda, Table of Contents

Más detalles

Apuntes de Matemática Discreta 7. Relaciones de Orden

Apuntes de Matemática Discreta 7. Relaciones de Orden Apuntes de Matemática Discreta 7. Relaciones de Orden Francisco José González Gutiérrez Cádiz, Octubre de 2004 Universidad de Cádiz Departamento de Matemáticas ii Lección 7 Relaciones de Orden Contenido

Más detalles

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006 ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los

Más detalles

Tema 5: Problemas de satisfacción de restricciones

Tema 5: Problemas de satisfacción de restricciones Tema 5: Problemas de satisfacción de restricciones José Luis uiz eina José Antonio Alonso Franciso J. Martín Mateos María José Hidalgo Departamento de Ciencias de la Computación e Inteligencia Artificial

Más detalles

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas:

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas: Estructuras de Datos Tema. 1. Definiciones básicas 2. Implementación. Operaciones con montículos 4. Definiciones básicas: En un árbol binario completo todos los niveles del árbol (excepto tal vez el último)

Más detalles

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009 Árboles Ejemplos de estructuras arborescentes: con forma de árbol Regla de Alcance: los objetos visibles en un procedimiento son aquellos declarados en él mismo o en cualquier ancestro de él (cualquier

Más detalles

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres ESTRUCTURAS DE DATOS 2006 Prof. DEFINICIÓN Un grafo consta de un conjunto de nodos(o vértices) y un conjunto de arcos (o aristas). Cada arco de un grafo se especifica mediante un par de nodos. Denotemos

Más detalles

EJERCICIOS RESUELTOS PROGRAMACIÓN III

EJERCICIOS RESUELTOS PROGRAMACIÓN III EJERCICIOS RESUELTOS PROGRAMACIÓN III Curso 2008 2009 Ejercicios resueltos de programación 3 Tema 3. Notación asintótica. Alumna: Alicia Sánchez Centro: UNED-Las Rozas (Madrid) El índice de los ejercicios

Más detalles

2 Métodos combinatorios

2 Métodos combinatorios 2 Métodos combinatorios Las pruebas pueden aplicarse de muchas maneras, es decir, existen diferentes formas de preparar casos de prueba. En este capítulo se presentan dos formas de prueba muy fáciles de

Más detalles

Analisis de algoritmos

Analisis de algoritmos Analisis de algoritmos Eficiencia Es la capacidad de disponer de un recurso. En el caso de los algoritmos, la eficiencia se logra haciendo el mejor uso posible de los recursos del sistema. Recursos Qué

Más detalles

Hoja de Problemas Tema 6 Búsqueda con estados estructurados: Restricciones

Hoja de Problemas Tema 6 Búsqueda con estados estructurados: Restricciones Ejercicio 1: 1.1. Si se resuelve un problema de satisfacción de restricciones mediante búsqueda con asignaciones parciales, entonces (a) (b) (c) (d) (e) Un estado siempre asigna un valor a todas las variables

Más detalles

Problemas de satisfacción de restricciones.

Problemas de satisfacción de restricciones. Problemas de satisfacción de restricciones. In whitch we see how treating states as more than just little black boxes leads to the invention of a range of powerful new search methods and a deeper understanding

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

Apuntes de Grafos. 1. Definiciones

Apuntes de Grafos. 1. Definiciones Apuntes de Grafos Un grafo es una entidad matemática introducida por Euler en 736 para representar entidades (vértices) que pueden relacionarse libremente entre sí, mediante el concepto de arista Se puede

Más detalles

Ingeniería Técnica en Informática de Gestión

Ingeniería Técnica en Informática de Gestión Departamento de Informática Universidad Carlos III de Madrid Ingeniería Técnica en Informática de Gestión Inteligencia Artificial Febrero 2006. 1 a parte Normas generales del examen El tiempo para realizar

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

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

El modelo relacional y el álgebra relacional

El modelo relacional y el álgebra relacional El modelo relacional y el álgebra relacional Introducción Esta unidad didáctica está dedicada al estudio del modelo de datos relacional y del álgebra relacional. El concepto de modelo de datos se ha presentado

Más detalles

Algoritmos sobre Grafos

Algoritmos sobre Grafos Sexta Sesión 27 de febrero de 2010 Contenido Deniciones 1 Deniciones 2 3 4 Deniciones sobre Grafos Par de una lista de nodos y una lista de enlaces, denidos a su vez como pares del conjunto de nodos.

Más detalles

Ingeniería en Informática

Ingeniería en Informática Departamento de Informática Universidad Carlos III de Madrid Ingeniería en Informática Aprendizaje Automático Junio 2007 Normas generales del examen El tiempo para realizar el examen es de 3 horas No se

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 III. Capítulo 2. Sistemas generadores. Sistemas libres. Bases.

Tema III. Capítulo 2. Sistemas generadores. Sistemas libres. Bases. Tema III Capítulo 2 Sistemas generadores Sistemas libres Bases Álgebra Lineal I Departamento de Métodos Matemáticos y de Representación UDC 2 Sistemas generadores Sistemas libres Bases 1 Combinación lineal

Más detalles

BASES DE DATOS TEMA 4 DISEÑO DE BASES DE DATOS RELACIONALES

BASES DE DATOS TEMA 4 DISEÑO DE BASES DE DATOS RELACIONALES BASES DE DATOS TEMA 4 DISEÑO DE BASES DE DATOS RELACIONALES El modelo relacional se basa en dos ramas de las matemáticas: la teoría de conjuntos y la lógica de predicados de primer orden. El hecho de que

Más detalles

Restricciones sobre dominios finitos con Gprolog

Restricciones sobre dominios finitos con Gprolog Autores: Rubén García Portal Nikolai Smirnov Restricciones sobre dominios finitos con Gprolog Introducción. Este documento explicará brevemente las funciones que se utilizan en Gprolog para resolución

Más detalles

ESTRUCTURAS ALGEBRAICAS 1

ESTRUCTURAS ALGEBRAICAS 1 ESTRUCTURAS ALGEBRAICAS Se da la relación entre dos conjuntos mediante el siguiente diagrama: (, ) (2, 3) (, 4) (, 2) (7, 8) (, ) (3, 3) (5, ) (6, ) (, 6)........ 5 6......... 2 5 i) Observa la correspondencia

Más detalles

Optimización de consultas Resumen del capítulo 14

Optimización de consultas Resumen del capítulo 14 Optimización de consultas Resumen del capítulo 14 Libro: Fundamentos de Bases de Datos Silberschatz et al. 5ed. Dr. Víctor J. Sosa Agenda 1. Visión general 2. Estimación de las estadísticas de los resultados

Más detalles

Capítulo 12: Indexación y asociación

Capítulo 12: Indexación y asociación Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación

Más detalles

Estructuras de Datos Abstractas en Lenguaje Java

Estructuras de Datos Abstractas en Lenguaje Java Universidad de Santiago de Chile Facultad de Ingeniería Departamento de Ingeniería Industrial Estructuras de Datos Abstractas en Lenguaje Java Listas Enlazadas, Colas, Pilas y Árboles Binarios Creado por

Más detalles

Algoritmos para CSP 1

Algoritmos para CSP 1 Algoritmos para CSP 1 1. Técnicas de Consistencia, o Inferenciales I. Inferencia, o consistencia completa Proceso que permite la síntesis de todas las restricciones de un problema en una única restricción

Más detalles

Problemas de satisfacción de restricciones. Javier Ramírez Rodríguez Departamento de Sistemas Universidad Autónoma Metropolitana

Problemas de satisfacción de restricciones. Javier Ramírez Rodríguez Departamento de Sistemas Universidad Autónoma Metropolitana Problemas de satisfacción de restricciones Javier Ramírez Rodríguez Departamento de Sistemas Universidad Autónoma Metropolitana La programación con restricciones (PR) ha generado gran expectación entre

Más detalles

Ampliación de Estructuras de Datos

Ampliación de Estructuras de Datos Ampliación de Estructuras de Datos Amalia Duch Barcelona, marzo de 2007 Índice 1. Diccionarios implementados con árboles binarios de búsqueda 1 2. TAD Cola de Prioridad 4 3. Heapsort 8 1. Diccionarios

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

Razonamiento. con. Restricciones. Esquema Global. Tutorial CAEPIA 2003. 1. Introducción - Definiciones - Ejemplos

Razonamiento. con. Restricciones. Esquema Global. Tutorial CAEPIA 2003. 1. Introducción - Definiciones - Ejemplos Esquema Global Razonamiento con Restricciones Tutorial CAEPIA 2003 Javier Larrosa Dep. LSI, UPC, Barcelona Pedro Meseguer IIIA, CSIC, Bellaterra 1. Introducción - Definiciones - Ejemplos 2. Métodos de

Más detalles

Programación Genética

Programación Genética Programación Genética Programación Genética consiste en la evolución automática de programas usando ideas basadas en la selección natural (Darwin). No sólo se ha utilizado para generar programas, sino

Más detalles

Resumen de técnicas para resolver problemas de programación entera. 15.053 Martes, 9 de abril. Enumeración. Un árbol de enumeración

Resumen de técnicas para resolver problemas de programación entera. 15.053 Martes, 9 de abril. Enumeración. Un árbol de enumeración 5053 Martes, 9 de abril Ramificación y acotamiento () Entregas: material de clase Resumen de técnicas para resolver problemas de programación entera Técnicas de enumeración Enumeración completa hace una

Más detalles

Descripción inicial del sistema. Descripción final del sistema. Estado 1 Estado 2 Estado n

Descripción inicial del sistema. Descripción final del sistema. Estado 1 Estado 2 Estado n Búsqueda en Inteligencia Artificial Fernando Berzal, berzal@acm.org Búsqueda en I.A. Introducción Espacios de búsqueda Agentes de búsqueda Uso de información en el proceso de búsqueda Búsqueda sin información

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

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

Tablas. Estas serán las tablas que usaremos en la mayoría de ejemplos. Empleado

Tablas. Estas serán las tablas que usaremos en la mayoría de ejemplos. Empleado Álgebra Relacional Un álgebra es un sistema matemático constituido por Operandos: objetos (valores o variables) desde los cuales nuevos objetos pueden ser construidos. Operadores: símbolos que denotan

Más detalles

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad:

El programa que permite el manejo de la base de datos tiene la siguiente funcionalidad: El TAD Diccionario Cuando se usa un conjunto en el diseño de un algoritmo podría no ser necesario contar con operaciones de unión o intersección. A menudo lo que se necesita es simplemente manipular un

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

Estructura de datos Tema 6: Tablas de dispersión (hashing)

Estructura de datos Tema 6: Tablas de dispersión (hashing) Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 6: Tablas de dispersión (hashing) Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Funciones hash

Más detalles

EJERCICIOS DE FUNCIONES REALES

EJERCICIOS DE FUNCIONES REALES EJERCICIOS DE FUNCIONES REALES.- La ley que relaciona el valor del área de un cuadrado con la longitud de su lado es una función. Sabemos que la epresión que nos relacionas ambas variables es. Observa

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

Capitulo 12. Tira de bits

Capitulo 12. Tira de bits Capitulo 12. Tira de bits 12.1 Representación de números naturales (enteros positivos) base 10 base 2 base 16 decimal binario hexadecimal 0 0 0 1 1 1 2 10 2 3 11 3 4 100 4 5 101 5 6 110 6 7 111 7 8 1000

Más detalles

Subconjuntos destacados en la

Subconjuntos destacados en la 2 Subconjuntos destacados en la topología métrica En este capítulo, introducimos una serie de conceptos ligados a los puntos y a conjuntos que por el importante papel que juegan en la topología métrica,

Más detalles

Análisis amortizado El plan:

Análisis amortizado El plan: Análisis amortizado El plan: Conceptos básicos: Método agregado Método contable Método potencial Primer ejemplo: análisis de tablas hash dinámicas Montículos agregables (binomiales y de Fibonacci) Estructuras

Más detalles

TAD Lineales: Pila, Cola y Lista

TAD Lineales: Pila, Cola y Lista TAD Lineales: Pila, Cola y Lista Objetivos! Dar a conocer los TAD lineales pila, cola y lista! Presentar la especificación de cada uno de los TAD! Discutir implementaciones alternativas para cada uno de

Más detalles

Capítulo 6. ÁRBOLES.

Capítulo 6. ÁRBOLES. 67 Capítulo 6. ÁRBOLES. 6.1 Árboles binarios. Un árbol binario es un conjunto finito de elementos, el cual está vacío o dividido en tres subconjuntos separados: El primer subconjunto contiene un elemento

Más detalles

Proyecto Unico Interpretador de SetCalc

Proyecto Unico Interpretador de SetCalc Universidad Simón Bolívar Dpto. de Computación y Tecnología de la Información CI3721 - Traductores e Interpretadores Abril-Julio 2008 Proyecto Unico Interpretador de SetCalc A continuación se describe

Más detalles

El modelo relacional y el álgebra relacional

El modelo relacional y el álgebra relacional El modelo relacional y el álgebra relacional Dolors Costal Costa P06/M2109/02148 FUOC P06/M2109/02148 El modelo relacional y el álgebra relacional Índice Introducción... 5 Objetivos... 6 1. Introducción

Más detalles

El Teorema de existencia y unicidad de Picard

El Teorema de existencia y unicidad de Picard Tema 2 El Teorema de existencia y unicidad de Picard 1 Formulación integral del Problema de Cauchy El objetivo del presente Tema, y del siguiente, es analizar el Problema de Cauchy para un SDO de primer

Más detalles

VI Colas de prioridad

VI Colas de prioridad VI Colas de prioridad Una cola de prioridad (cat: cua de prioritat; ing: priority queue) es una colección de elementos donde cada elemento tiene asociado un valor susceptible de ordenación denominado prioridad.

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 IV Programación lógica con estructuras

Tema IV Programación lógica con estructuras Tema IV Programación lógica con estructuras Programación Lógica - E.T.S.I. Informática - Málaga 1 Términos La estructura de datos básica en PROLOG es el término. Los términos se clasifican en : variables

Más detalles

Una (muy) breve introducción a la teoría de la computación

Una (muy) breve introducción a la teoría de la computación Una (muy) breve introducción a la teoría de la computación Marcelo Arenas M. Arenas Una (muy) breve introducción a la teoría de la computación 1 / 48 Ciencia de la computación Cuál es el objeto de estudio

Más detalles

Introducción a la Teoría de Probabilidad

Introducción a la Teoría de Probabilidad Capítulo 1 Introducción a la Teoría de Probabilidad Para la mayoría de la gente, probabilidad es un término vago utilizado en el lenguaje cotidiano para indicar la posibilidad de ocurrencia de un evento

Más detalles

Algoritmos: Diseño de algoritmos por inducción

Algoritmos: Diseño de algoritmos por inducción Algoritmos: Diseño de algoritmos por inducción Alberto Valderruten LFCIA - Departamento de Computación Facultad de Informática Universidad de A Coruña, España www.lfcia.org/alg www.fi.udc.es Contenido

Más detalles

Introducción a los Autómatas Finitos

Introducción a los Autómatas Finitos Teoría de Introducción a los Un modelo de Computación. Universidad de Cantabria Esquema Introducción Teoría de 1 Introducción 2 Teoría de 3 4 5 El Problema Introducción Teoría de Nuestro objetivo en este

Más detalles

EJERCICIOS RESUELTOS DE SECUENCIALES

EJERCICIOS RESUELTOS DE SECUENCIALES EJERCICIOS RESUELTOS DE SECUENCIALES 1) El sistema de apertura de una caja fuerte está compuesto por dos teclas A y B, un circuito secuencial a diseñar y un temporizador que mantiene la caja fuerte abierta

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

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

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

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO 1º) Considérese un número estrictamente positivo del sistema de números máquina F(s+1, m, M, 10). Supongamos que tal número es: z = 0.d 1 d...d s 10 e Responde

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

Problemas Resueltos del Tema 1

Problemas Resueltos del Tema 1 Tema 1. Probabilidad. 1 Problemas Resueltos del Tema 1 1- Un estudiante responde al azar a dos preguntas de verdadero o falso. Escriba el espacio muestral de este experimento aleatorio.. El espacio muestral

Más detalles

Congruencias de Grado Superior

Congruencias de Grado Superior Congruencias de Grado Superior Capítulo 3 3.1 Introdución En el capítulo anterior vimos cómo resolver congruencias del tipo ax b mod m donde a, b y m son enteros m > 1, y (a, b) = 1. En este capítulo discutiremos

Más detalles

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no

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

TÉCNICAS DE PLANIFICACIÓN Y CONTROL DE PROYECTOS 1

TÉCNICAS DE PLANIFICACIÓN Y CONTROL DE PROYECTOS 1 Técnicas de planificación y control de proyectos Andrés Ramos Universidad Pontificia Comillas http://www.iit.comillas.edu/aramos/ Andres.Ramos@comillas.edu TÉCNICAS DE PLANIFICACIÓN Y CONTROL DE PROYECTOS

Más detalles

Relaciones entre conjuntos

Relaciones entre conjuntos Relaciones entre conjuntos Parejas ordenadas El orden de los elementos en un conjunto de dos elementos no interesa, por ejemplo: {3, 5} = {5, 3} Por otra parte, una pareja ordenada consiste en dos elementos,

Más detalles

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

Registro (record): es la unidad básica de acceso y manipulación de la base de datos. UNIDAD II 1. Modelos de Bases de Datos. Modelo de Red. Representan las entidades en forma de nodos de un grafo y las asociaciones o interrelaciones entre estas, mediante los arcos que unen a dichos nodos.

Más detalles

SOLUCIÓN CASO CÁLCULO DE GASTOS DE VIAJE

SOLUCIÓN CASO CÁLCULO DE GASTOS DE VIAJE SOLUCIÓN CASO CÁLCULO DE GASTOS DE VIAJE La cumplimentación del parte de dietas requerirá de la introducción de algunos datos como: el nombre del empleado, la fecha de inicio del viaje, la fecha de finalización,

Más detalles

Espacio afín. Transformaciones afines y movimientos

Espacio afín. Transformaciones afines y movimientos Capítulo Espacio afín. Transformaciones afines y movimientos. Espacio afín y espacio afín métrico Definición. El espacio afín (tridimensional) está constituido por los siguientes elementos. El espacio

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

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

Clase 11. Análisis dinámico, 2ª parte.

Clase 11. Análisis dinámico, 2ª parte. Clase 11. Análisis dinámico, 2ª parte. Continuamos con el mismo tema de la clase anterior, pero esta vez nos ocuparemos principalmente de la fase de prueba. Nos detendremos brevemente en algunas de las

Más detalles

Universidad Nacional de Quilmes Ing. en Automatización y Control Industrial Cátedra: Visión Artificial Agosto de 2005

Universidad Nacional de Quilmes Ing. en Automatización y Control Industrial Cátedra: Visión Artificial Agosto de 2005 Extracción de Frontera (Boundary Extraction) La frontera de un conjunto A, escrita como β(a), se puede obtener erosionando A por B y luego calcular la diferencia entre A y su erosión. Esto es β ( A) =

Más detalles

Introducción a la Teoría de Grafos

Introducción a la Teoría de Grafos Introducción a la Teoría de Grafos Flavia Bonomo fbonomo@dc.uba.ar do. Cuatrimestre 009 Árboles Un árbol es un grafo conexo y acíclico (sin ciclos). Un bosque es un grafo acíclico, o sea, una unión disjunta

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