Introducción

Algoritmos para juegos, parte del Grado en Diseño y Desarrollo de Videojuegos, se presenta como una de las asignaturas más desafiantes de tercer año (o cuarto, si estás en el doble grado). Probablemente ya te hayan contado como funciona, por estudiantes de cursos superiores que ya han pasado por la asignatura. Seguro que has oído historias de terror de ejercicios imposibles, exámenes de mucha presión y “jueces” que no perdonan ni una.

No te voy a engañar — la asignatura es difícil, en gran medida por el tiempo limitado, la gran cantidad de algoritmos a estudiar y la compaginación con otras asignaturas del mismo cuatrimestre (¿oigo por ahí Entornos Multijugador?), pero quiero que este año sea diferente. Por eso he preparado esta selección de apuntes, ejercicios y contenidos multimedia. Mi objetivo es que no solo consigas aprobar la asignatura, sino que además, en la medida de lo posible, sientas que estás aprendiendo algo útil, y disfrutes mientras refuerzas tus habilidades de programación.

Esto es Algoritmos para juegos. Mucha suerte y ánimo.

Distribución de contenidos

Durante los próximos días habrá más novedades, incluyendo más applets, las soluciones de los ejercicios y un simulacro de examen.

Contenidos de teoría

Introducción a Python

Antes de meterte de lleno en el mundo de los algoritmos, tendrás que aprender los entresijos del lenguaje de programación Python, que es el que usaremos a lo largo de la asignatura.

  • Te damos la bienvenida a Python
  • Sintaxis y consideraciones generales
  • Condicionales y bucles
  • Estructuras de datos básicas
  • Todo sobre entradas y salidas
  • Interpretando ejercicios
  • Funciones

Algoritmos sobre grafos

Caminos, ciclos, árboles... Quién iba a decir que un puñado de puentes hace 300 años iba a dar tanto de qué hablar...

  • Introducción a la teoría de grafos
  • Matrices y listas de adyacencia
  • Recorrido en profundidad
  • Recorrido en anchura
  • Ordenación topológica (toposort)
  • Componentes conexas
  • Puntos de articulación

Algortimos voraces

Estos algoritmos tienen hambre, pero de eficiencia. En ocasiones no son perfectos, pero pueden hallar soluciones rápidas a una multitud de problemas en pocos pasos y de forma sencilla.

  • Introducción a los algoritmos voraces
  • Contando monedas
  • Problema de la mochila
  • Tiempos de espera
  • Planificación

Voraces sobre grafos

Es hora de demostrar los conocimientos que has adquirido en los temas de algoritmos sobre grafos y voraces, porque aquí vamos a combinar ambos conceptos para crear algoritmos bastante interesantes y con muchas aplicaciones prácticas.

  • Introducción a los voraces sobre grafos
  • Algoritmo de Dijkstra
  • Algoritmo de Prim
  • Algoritmo de Kruskal

Divide y vencerás

¿Cómo podemos resolver un problema muy grande? Fácil, dívidelo a la mitad. Y vuelve a dividirlo. Y otra vez. Y una vez más si hace falta.

  • Introducción a los algoritmos de divide y vencerás
  • Multiplicación y potencias de números grandes
  • Búsqueda binaria

Vuelta atrás

En la vida real no puedes retroceder, arreglar tus errores y cambiar el destino, pero en estos problemas con algoritmos de vuelta atrás sí que puedes. Todas las veces que quieras, además.

  • Introducción a los algoritmos de vuelta atrás
  • Mochila binaria (cero-uno)
  • Laberintos
  • Problema de las ocho reinas
  • Caminos y ciclos hamiltonianos

Ejercicios

Tema 0: Introducción a Python

0.1 - ¡Hola, Python! 0.2 - Pirámide de cajas 0.3 - Calificaciones 0.4 - Playlists 0.5 - La calculadora humana 0.6 - Habitaciones de hotel 0.7 - Tres en línea

Tema 1: Algoritmos sobre grafos

1.1 - Peajes 1.2 - Caverna oscura 1.3 - Genealogía intrincada

Tema 2: Algoritmos voraces

2.1 - ¿Cuántas pesetas? 2.2 - Mad Hot Festival

Tema 3: Voraces sobre grafos

3.1 - SimCity 3.2 - Recogida de pedidos

Tema 4: Divide y vencerás

4.1 - El precio justo 4.2 - Voy en un coche 4.3 - ¡Descalificados!

Tema 5: Vuelta atrás

5.1 - Juegos de Steam 5.2 - Lámparas de Layton 5.3 - Sudoku 5.4 - Tranvía de Móstoles

Applets interactivos

Se recomienda acceder a estos applets desde un navegador de escritorio o una tablet.

Tema 1: Algoritmos sobre grafos

Recorrido en profundidad (DFS) Recorrido en anchura (BFS) Ordenación topológica (toposort)

Tema 2: Algoritmos voraces

Mochila Monedas

Tema 3: Voraces sobre grafos

Algoritmo de Dijkstra Algoritmo de Prim

Tema 4: Divide y vencerás

Búsqueda binaria

Tema 5: Vuelta atrás (backtracking)

Mochila 0-1 Sudoku