Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Expo Algoritmos
Expo Algoritmos
Backtracking (o b usqueda atr as) es una t ecnica de programaci on para hacer b usqueda sistem atica a trav es de todas las conguraciones posibles dentro de un espacio de b usqueda. Para lograr esto, los algoritmos de tipo backtracking construyen posibles soluciones candidatas de manera sistem atica. En general, dado una soluci on candidata s: 1. Verican si s es soluci on. Si lo es, hacen algo con ella (depende del problema). 2. Construyen todas las posibles extensiones de s, e invocan recursivamente al algoritmo con todas ellas. A veces los algoritmos de tipo backtracking se usan para encontrar una soluci on, pero otras veces interesa que las revisen todas (por ejemplo, para encontrar la m as corta).
21
22
24
Un ejemplo prctico
Supongamos que queremos un algoritmo para encontrar todos los subconjuntos de n elementos de un conjunto de m elementos. Supongamos, adem as, que los conjuntos est an implementados en un arreglo y que la variable s[] contiene al conjunto. Qu e es un candidato? Como un candidato es una soluci on parcial, y representa a un conjunto que tiene a lo m as n elementos. El candidato se representa por un vector binario (a1, . . . , ak ) donde ai = 1 ssi el i- esimo elemento de s est a en el subconjunto representado. Cu ales son las formas de extender un candidato (a1, . . . , ak )? Agregando un 0 o un 1 al nal de este. Cu ando un candidato es una soluci on? Si
k i=0 ak
=nyk=m
25
26
Modicaciones menores
Y si ahora queremos mostrar todos los conjuntos? S olo tenemos que cambiar la funci on solucion para que retorne verdadero cuando el vector es una soluci on completa. Implementaci on: demo.
27
28