Camino Aleatorio en Programación Orientada a Objetos

Clase 5 de 24Curso de Estadística Computacional con Python

Resumen

¿Qué es la programación dinámica y estocástica?

La programación dinámica y estocástica es una técnica que se utiliza en el diseño de algoritmos para resolver problemas de optimización que se caracterizan por la incertidumbre y la necesidad de tomar decisiones secuenciales. Esta técnica es fundamental en la resolución de problemas en diversos campos como la ingeniería, la economía o las ciencias de la computación.

En este contexto, la profesora introduce un concepto interesante: el camino de borrachos. Descubramos cómo este concepto se materializa en un algoritmo de programación orientada a objetos.

¿Cómo se implementa el camino de borrachos?

El algoritmo del camino de borrachos se deriva de un problema que simula el movimiento aleatorio de un borracho que camina en un campo. Para entender cómo se desarrolla este concepto en programación, dividimos el problema en tres clases fundamentales:

  1. Borracho: Un objeto que representa a una persona que se mueve de manera aleatoria.
  2. Campo: Un objeto que define el entorno o mapa en el cual el borracho se mueve.
  3. Coordenada: Un concepto abstracto que sirve para definir la posición dentro del campo.

¿Cómo se representa a través de programación orientada a objetos?

La programación orientada a objetos permite modelar el mundo real creando clases y objetos. En el caso del camino de borrachos, las clases mencionadas se configuran de la siguiente manera:

  • Borracho: Puede imaginarse como un individuo que se mueve dentro de las coordenadas de un campo. Además, se pueden extender sus características para definir comportamientos específicos, como un "borracho tradicional" que se mueve aleatoriamente a uno de los lados cardinales.

  • Campo: Funciona como un mapa y contiene las disposiciones de las coordenadas, permitiendo que el borracho se desplace dentro de él.

  • Coordenada: Es como un marcador que señala la posición actual del borracho dentro del campo, similar a un pin en Google Maps.

¿Cómo se implementa el movimiento del borracho?

El borracho se mueve aleatoriamente dentro del campo a través de movimientos en los ejes X e Y. Estos movimientos pueden ser:

  • Hacia la izquierda: decremento en el eje X.
  • Hacia la derecha: incremento en el eje X.
  • Hacia arriba: incremento en el eje Y.
  • Hacia abajo: decremento en el eje Y.

Aquí les presento un fragmento del código en Python:

class Borracho:
    def __init__(self):
        pass

    def mover(self):
        return random.choice([(1,0), (0,1), (-1,0), (0,-1)])

class Campo:
    def __init__(self):
        pass

¿Cómo se integran estas clases en la función principal?

Para concretar el comportamiento del borracho y sus desplazamientos, es necesario definir una función principal o main, un punto de entrada común en la mayoría de los lenguajes de programación:

if __name__ == '__main__':
    # Implementación del movimiento del borracho
    # Código para crear instancias de las clases e interactuar con ellas

El main se encarga de gestionar el flujo del programa: crear objetos, iniciar movimientos y registrar resultados. Se pueden implementar simulaciones para ver cómo varía la posición del borracho tras un número determinado de pasos.

¿Cómo se evalúan los resultados de las simulaciones?

En programación estocástica, ejecutar una simulación una sola vez no proporciona suficiente información debido a su componente aleatorio. Por ello, es necesario realizar múltiples simulaciones para obtener resultados promedio más fiables.

  • Simulaciones Múltiples: Es importante ejecutar varias simulaciones (por ejemplo, 100) para cada número de pasos definido, obteniendo así la media de las distancias recorridas.

  • Distancias Máxima y Mínima: Evaluar la distancia máxima y mínima alcanzada por el borracho en las distintas simulaciones proporciona insights sobre el comportamiento y alcance de los movimientos.

En resumen, observar los caminos y las posiciones finales de manera gráfica lleva a un entendimiento más profundo del comportamiento del sistema. Herramientas de graficación como Bokeh pueden usarse para visualizar los trayectos.

Este fascinante algoritmo no sólo simboliza la aleatoriedad del camino de un borracho, sino que se convierte en una poderosa herramienta para estudiar patrones de movimiento y tomar decisiones bajo incertidumbre en programación dinámica. Continuad explorando y estudiando, ¡hay un mundo de conocimientos por descubrir!