sábado, 16 de julio de 2011

Juego de La Peregrinación del Caballo de Ajedrez

ESTRATEGIA DE RESOLUCIÓN
La Peregrinación del Caballo de Ajedrez consiste en hacer que el Caballo pase por todas las casillas del tablero sin pasar dos veces por la misma, utilizando los movimientos del caballo del ajedrez: Dos casillas horizontales y una vertical o a la inversa. Cuando desde la última casilla el Caballo pueda saltar a la primera (casilla desde donde se comenzó el recorrido) se trata de una "peregrinación cerrada".     
La dinámica para la resolución del juego se basa principalmente en la metodología del Ensayo y Error; de la cual debe valerse el usuario (jugador) para lograr completar el reto que plantea el juego.
Para lograr lo expuesto anteriormente el juego debe básicamente restringir los movimientos que el usuario le puede dar al Caballo, esto implica que el algoritmo empleado debe ser capaz de calcular todos los movimientos posibles del Caballo desde la ubicación actual (esto se debe a que el jugador puede comenzar desde cualquiera de las 64 casillas del tablero), y una vez calculados dichos movimientos saber cuáles son válidos ya que como se dijo antes, el caballo no puede pasar dos veces por una misma casilla; para lograr dicho algoritmo se ha empleado un algoritmo iterativo basado en el método del Backtracking o Vuelta atrás debido a que, si en caso de que el jugador se quede sin movimientos posibles antes de completar el tablero, puede regresar el o los últimos saltos dados para de esa manera crear un recorrido distinto y poder hallar una solución al problema planteado.

Backtracking

  Existen problemas para los que no parece haber una forma, teoría o regla fija de cálculo; que nos lleve a obtener la solución buscada, y lo único que se puede hacer es recurrir a una búsqueda exhaustiva para identificar la o las soluciones válidas entre el conjunto de todas las posibles (prueba y error, o tanteo sistemático). Es un esquema muy útil de prueba y error –Método de resolución de problemas basado en el tanteo sistemático y exhaustivo, en el cual la solución del problema se divide en pasos – las posibles soluciones se forman de manera progresiva (solución parcial), comprobando en cada paso o etapa si la solución que se está construyendo puede llevar o no a una solución satisfactoria.
  Se consideran problemas cuyas soluciones son construibles por etapas o subareas, de forma que cada una de ellas admita varias soluciones o decisiones:
·       Una solución será expresable en forma de tupla (X1, …., Xn), donde cada XiSi representa la decisión tomada en la etapa i-ésima, de entre un conjunto finito de alternativas (Si).
·       La solución buscada deberá minimizar, maximizar o satisfacer cierta función criterio o función objetivo (condiciones a cumplir para ser una solución satisfactoria o válida).
·        Existirán Predicados acotadores o funciones objetivo parciales: Pi(x1, …., xi), que indiquen si (x1, …., xi) puede conducir a una solución.
Existirán dos categorías de restricciones:
o         Restricciones Explícitas: indican los conjuntos Si, es decir, el conjunto finito de alternativas entre las cuales puede tomar valor cada una de las componentes de la tupla solución.
o          Restricciones Implícitas: serán las relaciones que se han de establecer entre las componentes de la tupla solución (decisiones tomadas en cada etapa) para satisfacer la función objetivo (llevar a obtener una solución válida).
TABLERO
  El planteamiento del juego se basa en un tablero usual de ajedrez, es decir, en un tablero de dimensión 8×8, lejos de complicarse, como parecería normal, el problema se simplifica enormemente. En efecto, es bastante conocido, al menos desde el siglo IX, el problema del recorrido de un caballo sobre un tablero de ajedrez, que puede enunciarse así:
“Encontrar la sucesión de movimientos consecutivos que ha de hacer un caballo de ajedrez, siguiendo las reglas usuales, para que, saliendo desde cualquier casilla del tablero ordinario, pase una única vez por todas las casillas del tablero
Cada solución de este problema se llama recorrido, paseo o peregrinación del caballo. Si, además, el recorrido cumple que desde la última casilla visitada por el caballo se puede acceder a la primera, con un único movimiento del caballo, entonces el recorrido se llama cerrado.
FUNCIONES UTILIZADAS
  El juego realiza lo siguiente: Se da un tablero de 8x8 con 8*8 casillas. Un caballo -que puede moverse según las reglas del ajedrez- se sitúa en cualquier casilla del tablero. Se pide encontrar, si existe, un recorrido del tablero completo, o sea, calcular un circuito  de n*n-1 movimientos de forma que cada casilla del tablero sea visitada sólo una vez.
         La función más importante es imgTablero_Click() cuyo pseudocódigo es el siguiente:
 <PRINCIPIO imgTablero_Click>
  CALCULAR casilla seleccionada por el usuario
  SI tablero no esta vacío ENTONCES
              MARCAR  casilla como no válida {la casilla no está vacía}
              REPETIR buscar casilla válida
                          SI casilla válida ENTONCES
                                      MARCAR casilla como válida
                                      SALIR DE REPETIR
                          FINSI
              HASTA fin de movimientos posibles
  SINO
              MARCAR  casilla como válida {la casilla está vacía}
  FINSI
  SI casilla no válida ENTONCES {la casilla no está vacía}
              <FIN> {salir de la función porque el usuario seleccionó una casilla no válida o no vacía}
  FINSI
  CARGAR los 8 posibles movimientos del caballo
  REPETIR mostrar los siguientes movimientos válidos desde la ubicación actual
              SI columna y fila <1≤8 ENTONCES
                          SI casilla no ocupada ENTONCES
                                      Sugerir casilla como nuevo movimiento
                          SINO
                                      Marcar casilla como no válida
                          FINSI
              SINO
                          Marcar casilla como no válida
              FINSI
  HASTA recorrer los 8 posibles movimientos del caballo desde la casilla actual
  Marcar casilla actual como ocupada
  Guardar último movimiento
  Actualizar contador de caballos puestos en el tablero
  SI tablero lleno ENTONCES
              Juego completado
  SINO
              SI no hay movimientos posibles desde la casilla actual ENTONCES
                          Reiniciar juego o volver a juego actual y deshacer movimiento(s) para intentar otra solución
              FINSI
  FINSI
<FIN>
OPINIONES PERSONALES
  El algoritmo de resolución del juego está basado en el Método de Tanteo Sistemático (Intento y Error) Backtracking convertido en una función iterativa debido a la forma en que está implementado en la construcción del juego, ha sido una solución idónea debido a las limitaciones encontradas en el lenguaje utilizado en su construcción; esta conversión supone un ahorro de cálculos que el programa debe realizar para, de manera interactiva con el usuario (jugador) ir encontrando una solución al problema de La Peregrinación del Caballo de Ajedrez.
  El lenguaje utilizado –Visual Basic 6- fue elegido para este proyecto entre otras razones, por el hecho de ser un lenguaje visual, ya esto supone la libertad de darle al usuario un entorno gráfico amigable. Esto se ha logrado utilizando imágenes que muestran la figura del Caballo dentro del tablero del juego, además de mostrar de manera clara y agradable a la vista las sugerencias de los próximos movimientos válidos para el Caballo. 

 A continuación está el enlace para que pueda acceder al juego explicado anteriormente:



  Instrucciones para accesar al Juego:

  1. Hacer Clic en el enlace anterior, el cual lo llevará a otra página Web.
  2. Cuando esté en la pagina Web, se encontrará con un archivo llamado LPCA.
  3. Darle Clic al archivo mencionado, para iniciar la descarga.
  4. Cuando se halla finalizado la descarga, podrá abrirlo.
  5. Aparecerá una ventana en la que seleccionará el botón Ejecutar.
  6. Y por último, podrá jugar la Peregrinación del Caballo de Ajedrez.

viernes, 3 de junio de 2011

Beneficios De La Tecnología En El Cuidado Del Ambiente

Desde hace ya varios años atrás, la protección del ambiente se ha convertido en una prioridad a nivel mundial, este ya no solo es un deber sino una necesidad. Cumplir con fines extraordinarios como el ambiental, depende en gran parte de la capacidad económica y tecnológica del país y de sus respectivos sectores productivos. Lo primero que hay que tener en cuenta, es la importancia de que se tome conciencia ecológica, ya que el medio ambiente es de todos y para todos; siendo esto necesario para que se entienda la importancia de toda actividad relacionada al cuidado del entorno ambiental.
Por otra parte, la tecnología es transformar el entorno humano (natural y social), para adaptarlo mejor a las necesidades y deseos humanos. En ese proceso se usan recursos naturales (terreno, aire, agua, materiales, fuentes de energía,…) y personas que proveen la información, mano de obra y mercado para las actividades tecnológicas. La tecnología, como parte de la ciencia moderna es considerada como el elemento principal para el desarrollo humano.

Ahora bien, se conoce que la tecnología podría ocasionar algún daño en el medio ambiente, pero si no se deja que avance, se estaría impidiendo que ella misma busque una solución a esos supuestos daños que podrían ocasionar. Al final de cuentas, no es la tecnología la que influye negativamente en el medio ambiente, sino que es el modo en el que se emplea y donde se emplea.
En la actualidad, la tecnología esta comprometida a seguir procesos que no atenten contra el medio ambiente y así evitar el deterioro de los recursos naturales. Como por ejemplo, se han desarrollado técnicas para filtrar el aire, depurar el agua y tratamientos de residuos sólidos peligrosos. Conocimientos que se transmitieron de la industria del proceso a la industria del medio ambiente.

De igual manera, otra aplicación de la tecnología al cuidado del medio ambiente, es el uso del correo electrónico como medio de transporte de documentos (ofertas, catálogos, entre otros) que está siendo fundamental en el ahorro de papel.
Las tecnologías de la información facilitan el teletrabajo, es decir que las personas sin estar físicamente en la oficina pueden seguir trabajando como si lo estuvieran. Las videoconferencias están siendo un elemento clave en este proceso. Básicamente lo que se consigue es reducir el número de desplazamientos y la optimización de los recorridos, esto ocasiona que se recorran menos kilómetros y por lo tanto que se consuma menos carburante y en consecuencia se contamine menos.
Otro ejemplo del uso de la tecnología en el entorno ambiental es la predicción de incendios forestales, que se lleva a cabo mediante satélites artificiales. Los modernos métodos de detección permiten advertir la presencia de incendios poco tiempo después de producirse. También, esta el reciclaje de determinados materiales como el vidrio, el papel, que puede evitar la sobreexplotación de algunas materias primas (madera, entre otros). Así como también la utilización de fuentes de energía alternativas como la energía solar, la eólica o la geotérmica que no se agotan y en general, contaminan menos que las fuentes no renovables, como el carbón o el petróleo.

       Para finalizar, la ciencia y la tecnología están aportando grandes beneficios, no solo al ser humano sino también al cuidado del entorno ambiental, hay que tener en cuenta que la tecnología no fue hecha para destruir sino para desarrollar y que cada día, estas innovaciones tecnológicas se están apegando mas al hecho de crear un equilibrio ecológico sin causar daños a los recursos naturales y así ayudar a cuidar de este gran planeta en el que vivimos.



Direcciones Webs en las que se basó este ensayo: