Analizador aritmtico
=====================

Versin: 2.1
Autor:   Pedro Reina
Fecha:   X.11.2.1998


Objetivo del programa
---------------------

Este analizador aritmtico resuelve un problema real que se presenta en el
concurso televisivo "Cifras y letras" utilizando tcnicas de inteligencia
artificial de bsquedas en espacios de estados. El enunciado del problema es:

A partir de 6 nmeros obtenidos del conjunto {1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
25, 50, 75, 100} (se pueden repetir) hay que obtener otro nmero natural
perteneciente al intervalo [100,999]. Se pueden utilizar las cuatro operaciones
elementales entre los nmeros y cada nmero slo puede ser utilizado como
mximo una vez. El ganador es el concursante que ms se aproxima al nmero (por
defecto o por exceso).

El programa implementa una bsqueda por un rbol de estados que tiene un nmero
mximo de aproximadamente 3 millones y medio de nodos.


Derechos
--------

El programa se presenta con fines educativos y ldicos y todos los derechos de
utilizacin y comercializacin quedan reservados a "EQ sistemas inteligentes" y
Pedro Reina.

Se puede obtener el cdigo fuente, as como conectar con el autor:

Pedro Reina
c/ Marquesa de Argeso 4
28019 Madrid
Espaa

Telfono: 91 565 17 59
Correo electrnico: pedro@anit.es
Web: www.anit.es/pedro


Uso del programa
----------------

El programa puede funcionar en un QL o en un PC, y no exige ningn
requerimiento especial.

Para arrancar el programa en el QL, ste debe estar en modo de alta resolucin
(MODE 4); hay que teclear

EXEC_W Anarit_exe

Se puede usar cualquier orden equivalente a EXEC_W, como por ejemplo EW.

En el PC se teclea

Anarit

El programa se dirige desde un men horizontal que se encuentra permanentemente
en la parte superior de la pantalla. Veremos el significado de cada opcin del
men, examinando tambin los submens que van apareciendo:

Salida. Permite concluir la ejecucin del programa.

Explica. Para recibir distintas explicaciones acerca del programa.

Analiza. La opcin principal, que permite analizar un determinado problema.
  Tiene cinco opciones que permiten definir un problema y todas ellas
  desembocan en el anlisis del problema y posteriormente, en su grabacin
  (optativa). Las opciones son:

  Introduccin de problema: permite definir un problema cualquiera como los que
    aparecen en el concurso televisivo.

  Introduccin de problema extendido: permite definir un problema con datos
    mucho ms complicados que los que se admiten en el concurso. La lgica
    interna del programa no hace ninguna diferencia con los dos tipos de
    problema.

  Generacin de problema: el programa genera aleatoriamente un problema.

  Generacin de problema: el programa genera aleatoriamente un problema con
    datos complicados.

  Lectura de problema: se puede leer un problema de una base de datos. El
    nombre de la base de datos se puede especificar en la opcin Fichero del
    men Opciones.

Opciones. Para definir el comportamiento del programa en varios aspectos.
  Presenta estas posibilidades:

  Sonido: activa o inactiva la emisin de pequeas seales acsticas.

  Grabacin: especifica cundo se grabarn los problemas una vez estn
    analizados; hay tres posibilidades: automtica (los problemas siempre se
    graban), manual (en cada problema se pregunta si hay que grabarlo) y nunca
    (no se graban).

  Fichero: seala el nombre de la base de datos que se utiliza para leer y
    grabar problemas.


Base de datos
-------------

El programa se entrega con una base de datos (en formato estndar xBase) que
contiene varios casos reales tomados del concurso de Televisin Espaola. Todos
ellos tienen algo en comn: en el concurso no se lleg a encontrar la solucin
exacta.

La recopilacin de los datos se debe a la paciencia de Natalia Ortega Sez.


Gnesis del programa
--------------------

Este programa es fruto de una pequea casualidad. Por un lado, me encontraba
estudiando la asignatura "Conceptos Fundamentales II", impartida por Martn
Molina (de "EQ sistemas inteligentes") en el curso "Sistemas expertos en la
empresa" impartido en el CETICAM durante el ao acadmico 1991-92 y por otro
lado a la hora de comer me gustaba pasar un rato con el programa "Cifras y
letras", de Televisin Espaola (por La 2).

Pronto me di cuenta de que el problema propuesto en el programa se poda
resolver usando las tcnicas de inteligencia artificial que explicaba Martn
Molina. Me puse manos a la obra en cuanto mi manejo del C fue lo
suficientemente fiable. Por cierto, aprend mucho C mientras escriba el
programa.

Fui escribiendo el cdigo en ratos libres, algunas veces mientras mis alumnas
de Matemticas de C.O.U. se estaban examinando.

La idea principal para implementar el programa me la ofreci el propio Martn
Molina. Luego tuve que optimizar el algoritmo, lo que constituy un magnfico
ejercicio de programacin real.

Lo escrib en un PC porttil (un 386sx a 20 MHz) con la intencin de que en esa
mquina llegara a resolver el problema en tiempo real, es decir: en los 45
segundos que se ofrecen en TV. Una vez conseguido eso, dej de preocuparme por
la velocidad de ejecucin. Por lo tanto, el rendimiento puede ser muy malo en
una mquina inferior (un 8088, por ejemplo) o magnfico en una mquina rpida.
Este es un programa que mejora con el procesador y con su velocidad.

Durante el desarrollo del programa tuve muchos nimos de mis profesores en el
curso de Sistemas Expertos (sealo especialmente a Antonio Salmern), de mis
compaeros en el curso, de mis alumnos de educacin secundaria (especialmente
Natalia Ortega Sez) y de mi novia Julia sin cuya compresin y ayuda no hubiera
podido terminar nunca el programa.