Secciones de la página

Iteración


Constraint. Action


Constraint. Queen


ChRules. Iterative

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









Programas con algoritmos iterativos

Programas con algoritmos iterativos, de lo que a veces podrá encontrar, también su versión recursiva.

A continuación se expone un breve resumen de cada uno de los progamas y, en cada programa, pulsando sobre el botón azul con flecha, a la derecha del título, se accede a su código completo.

make.tol de Constraint.Action

Programa de ejemplo de solucion de sistemas de restricciones del tipo (restriccion, accion correctora) programados de 3 formas diferentes a) por evaluacion iterativa, b) por recursion pura y c) por 2 funciones recursivas donde la primera se apoya en la segunda. De los 3 metodos es el iterativo el que puede resolver problemas con un mayor numero de

Programa de ejemplo de solucion de sistemas de restricciones del tipo (restriccion, accion correctora) programados de 3 formas diferentes a) por evaluacion iterativa, b) por recursion pura y c) por 2 funciones recursivas donde la primera se apoya en la segunda. De los 3 metodos es el iterativo el que puede resolver problemas con un mayor numero de pasos, el segundo con mas capacidad es el de 2 funciones recursivas (birecursivo) y el recursivo puro puede producir un desbordamiento de la pila cuando el numero de pasos (acciones y pruebas de restricciones) aumenta. Es un programa desarrollado en un solo fichero Tol en el que se declaran todas las funciones para hechos, restricciones, base de hechos y sus 3 formas de resolucion. En el metodo iterativo, la memoria entre las iteraciones, se implementa con un fichero interno de datos en formato Bst. Es una version basica de programacion con restricciones para uso formativo formativo donde: a) cada restriccion indica su solucion correctora, b) los hechos tienen como valor un solo numero y c) no existe un dominio para los valores de los hechos. Por ello puede resolver algunos problemas basicos de restricciones, en principio, sin circularidad en las restricciones, pero tiene problemas al resolver sistemas de restricciones mas complejos, si bien puede ser generalizable.

Con el metodo iterativo de Constraint.Action, el paso básico de comprobacion de la condicion asociada a una restriccion y aplicacion, en su caso, de la accion es el siguiente: a) Sea count el contador de restricciones que indica la restriccion que hay que comprobar. b) Sea initBase el estado actual de la base de hechos (memoria de trabajo) leida del fichero en formato Bst. c) Si la restriccion que indica count no se cumple, entonces hay que aplicar la accion de transformacion asociada a dicha restricción y volver a comprobar el conjunto de restricciones desde el principio (esto se hace volviendo a inicializar a 1 la variable de control del numero de restricciones, esto es, count:=1). Notese que el lenguaje Tol es un lenguaje de tipo declarativo donde la declaración de variables se realiza mediante el operador =, esto es que actuan como constantes, solo en algunos casos se utiliza el operador de resaignacion del valor :=, por ejemplo, esto suele suceder en las variables que controlan ciclos de iteracion While(), pero no suele ser necesario en los ciclos For() y EvalSet(). d) Si la restricción que indica la variable count se cumple, entonces no hay que cambiar la base de hechos y se debera proceder a comprobar la siguiente restriccion (esto se hace incrementando la variable de control de las restricciones comprobadas hasta ese momento, count:=count+1). e) Cuando hay algun cambio en la base de hechos se guarda en el fichero Bst el contenido de la base de hechos para que el cambio quede reflejado en la siguiente iteracion.

make.tol de Constraint.Queen

Solucionador del juego de las 8 reinas en un tablero de ajedrez como un sistema de restricciones con 3 componentes: a) restriccion que hay que cumplir, que es condicion logica, b) accion, que es una funcion correctora, c) reaccion, que es una funcion de backtrack frente a ciclos. Es un solucionador, programado de forma iterativa, desarrollado en un

Solucionador del juego de las 8 reinas en un tablero de ajedrez como un sistema de restricciones con 3 componentes: a) restriccion que hay que cumplir, que es condicion logica, b) accion, que es una funcion correctora, c) reaccion, que es una funcion de backtrack frente a ciclos. Es un solucionador, programado de forma iterativa, desarrollado en un solo fichero Tol en el que se declaran: a) todas las funciones para las reinas, b) para sus restricciones de no estar ni en la misma fila ni en diagonal y c) que asume como punto de partida que cada reina esta en una columna diferente a las otras. Este metodo iterativo que: a) para guardar memoria del estado en curso utiliza la reasignacion := de Tol y b) ademas tiene una variable de memoria de texto, ver seccion blackboard, que conserva todos los estados del proceso de solucion. La memoria (QueMemory) permite detectar ciclos y ademas generar una traza para que un simulador Javascript reproduzca visualmente el proceso de resolucion en Tol. El contenido de la memoria a partir de un estado inicial INI podria ser el siguiente 11111111INIT| 12111111A2:2| 13111111A2:3| 13211111A3:2|... 13524111R6:1|... como resultado de aplicar acciones (A) y reacciones (R) que mueven una reina a una fila, por ejemplo, A2:3, es la accion de mover la reina 2 a la fila 3. Esta comprobado el funcionamiento de Constraint.Queen para las versiones de Tol 1.1.5, 1.1.6 y 2.0.1, pero funciona con la version 1.1.1. Una posible razon son los 5 usos de la reasignacion := que se realizadan en este programa Tol cuando lo usual, y recomendable, es ninguno.

Constraint.Queen es una version basica de programacion con restricciones, casi para uso formativo formativo, donde: a) Cada restriccion logica tiene una funcion correctora, que es siempre del mismo estilo, que consiste en que la reina que no cumple la restriccion avance un paso, esto es que suba a su fila superior. b) Los hechos son para cada reina son su posicion de fila y columna, si bien la columna no cambia en todo el proceso de resolucion. c) El dominio de los valores, de las posiciones 1 a 8, esta subsumido en la funcion que avanza a las reinas de fila 1 :- 2, 2 :- 3,..., 7 :- 8 y 8 :- 1. d) La restriccion, ademas de su accion correctora, incluye una funcion llamada de reaccion, que se ejecuta solo cuando se detecta que de aplicar la accion se entraria en un ciclo que se detecta porque se guarda memoria de todos los pasos dados en el proceso de resolucion. Notese que no es habitual encontrar este tipo de restricciones que incluyan una funcion correctora (accion) y una funcion equiparable a un backtrack (reaccion) como las que implementa el programa Constraint.Queen. Dentro de esta programacion se denomina reina esclava, slave queen, a la reina restringida por la condicion logica y reinas maestras, masters queen, a las que restringen. Para facilitar la declaracion de las restricciones cada reinas esclava es restringida por todas las que están a su izquierda, esto es, por sus reinas maestras.

make.tol de ChRules.Iterative

ChRules.Iterative es un programa iterativo de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area para alcanzar un cierto objetivo, como por ejemplo, solucionar un

ChRules.Iterative es un programa iterativo de aplicacion de reglas de reescritura que: a) aplica a un area rectangular de caracteres, b) reglas de transformacion de areas rectangulares de caracteres y c) que juntas forman una base de reglas de transformacion del contenido de ese area para alcanzar un cierto objetivo, como por ejemplo, solucionar un problema Las reglas de ChRules.Iterative son del tipo [condicion, accion], esto es: a) si se cumple la condicion, el rectangulo condicion de la regla equipara con alguna subarea del area de trabajo b) entonces se aplica la accion de transformacion cambiando el contenido de la antigua subarea del area de trabajo por el nuevo rectangulo que proporciona la parte de la accion de la regla.

ChRules.Iterative es un programa que se clasifica como: a) Iterativo y existiendo su version recursiva. b) De reglas, en este caso de ragas de areas rectangulares de caracteres, c) Que implementa, entre otros ejemplos, un automata celular. d) Con un comportamiento que, ademas de determinista, puede ser aleatorio o pseudoaleatorio. e) Que en el caso de los robots dentro de un laberinto, realiza una busqueda con el objetivo de encontrar, desde un punto, la salida. f) En sedimentacion implementa, parcialmente, un proceso de orden por el metodo de la burbuja. Se ha probado su funcionamiento para las versiones de Tol 1.1.1, 1.1.5, 1.1.6 y 2.0.1.

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol