SlideShare una empresa de Scribd logo
Algoritmo de backtracking
ALGORITMO DE BACKTRACKING
En su forma básica, la idea de backtracking se
asemeja a un recorrido en profundidad dentro de un
grafo dirigido. El grafo en cuestión suele ser un árbol,
o por lo menos no contiene ciclos. Sea cual sea su
estructura, existe sólo implícitamente. El objetivo del
recorrido es encontrar soluciones para algún
problema.
El recorrido tiene éxito si, procediendo de esta forma,
se puede definir por completo una solución. En este
caso el algoritmo puede bien detenerse (si lo único
que se necesita es una solución del problema) o bien
seguir buscando soluciones alternativas (si deseamos
examinarlas todas). Por otra parte, el recorrido no tiene
éxito si en alguna etapa la solución parcial construida
hasta el momento no se puede completar. En tal caso,
el recorrido vuelve atrás exactamente igual que en un
recorrido en profundidad, eliminando sobre la marcha
los elementos que se hubieran añadido en cada fase.
Cuando vuelve a un nodo que tiene uno o más vecinos
sin explorar, prosigue el recorrido de una solución
ALGORITMO DE BACKTRACKING
proc Backtracking (↕X[1 . . . i ]: TSolución, ↑ok: B)
variables L: ListaComponentes
iniciosi EsSolución (X) entonces
ok CIERTO
de lo contrario
ok FALSO
L=Candidatos (X)
mientras ¬ok ^ ¬Vacía (L) hacer
X[i + 1] Cabeza (L); L Resto (L)
Backtracking (X, ok)
fin mientras
fin si
fin
ENFOQUES
ALGORITMO DE BACKTRACKING
Los problemas que deben satisfacer un determinado tipo de
restricciones son problemas completos, donde el orden de los
elementos de la solución no importa. estos problemas consisten en
un conjunto (o lista) de variables a la que a cada una se le debe
asignar un valor sujeto a las restricciones del problema. la técnica va
creando todas las posibles combinaciones de elementos para
obtener una solución. su principal virtud es que en la mayoría de las
implementaciones se puede evitar combinaciones, estableciendo
funciones de acotación (o poda) reduciendo el tiempo de ejecución.
vuelta atrás está muy relacionado con la
búsquedas binarias .
DISEÑO E IMPLEMENTACIÓN
BACKTRACKING
Esencialmente, la idea es encontrar la mejor combinación
posible en un momento determinado, por eso, se dice que este
tipo de algoritmo es una búsqueda en profundidad.
Normalmente, se suele implementar este tipo de
algoritmos como un procedimiento recursivo.
La diferencia con la búsqueda en profundidad es que se
suelen diseñar funciones de cota, de forma que no se
generen algunos estados si no van a conducir a ninguna
solución, o a una solución peor de la que ya se tiene. De
esta forma se ahorra espacio en memoria y tiempo de
ejecución.
Algunas heurísticas son comúnmente usadas para
acelerar el proceso. Como las variables se pueden
procesar en cualquier orden, generalmente es más
eficiente intentar ser lo más restrictivo posible con
las primeras (esto es, las primeras con menores
valores posibles). Este proceso poda el árbol de
búsqueda antes de que se tome la decisión y se
llame a la subrutina recursiva.
HEURÍSTICAS
ALGORITMO DE BACKTRACKING
EJEMPLOS DE PROBLEMAS COMUNES
RESUELTOS USANDO VUELTA ATRÁS
Sudoku
Problema de los
movimientos de un
caballo
Las ocho reinas
Algoritmo de Backtracking
Backtracking Recursivo
Backtracking es una técnica algorítmica
que consiste en la resolución de
problemas mediante la búsqueda
sistemática de soluciones exhaustivas.
Comúnmente, esta técnica hace uso de la
recursividad, y es importante que
domines la implementación de las
llamadas recursivas con destreza antes de
continuar. Te invitamos a que leas el
tutorial: Recursividad: La guía definitiva, y
aunque no lo consideres necesario puede
que te sean útiles algunos consejos que te
ayudarán en la formación como
programador.
GRACIAS
Víctor Romero

Más contenido relacionado

PPTX
Analisis de algoritmos complejidad en tiempo y espacio
PDF
TABLA DE SÍMBOLOS
PPT
PPTX
Circuito de Hamilton
DOCX
Calculo vectorial - unidad 5 (integracion)
PPT
Modelos uml compras v4
PDF
Persistencia de datos en Java
PPTX
Noción de archivo real y virtual
Analisis de algoritmos complejidad en tiempo y espacio
TABLA DE SÍMBOLOS
Circuito de Hamilton
Calculo vectorial - unidad 5 (integracion)
Modelos uml compras v4
Persistencia de datos en Java
Noción de archivo real y virtual

La actualidad más candente (20)

PPSX
Planificación por prioridad
PPTX
Memoria Estatica
 
PPT
resolucion de problemas: Algoritmos y programas
PPTX
Theory of computation Lec7 pda
PPTX
3. algoritmos de ordenamiento interno
PPT
Nondeterministic Finite Automata
PPTX
hashing y colisiones
PPTX
Tipos de datos y operaciones
PPT
Estructura datos pilas y colas
PPTX
DIAGRAMA DE COMPONENTES
PDF
Arboles de derivacion
PPTX
Ejercicios de búsqueda a Ciegas y Búsqueda informada
DOCX
Cuadro comparativo algoritmos de busqueda
PPTX
Recursividad directa e indirecta
PPTX
Automatas de estado finito
DOCX
Arboles En Estructura de Datos
PDF
Fases de resolucion de problemas
PPTX
Exposicion Caminos de euler
PPTX
Tipos de búsqueda en Inteligencia Artificial
PPT
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA
Planificación por prioridad
Memoria Estatica
 
resolucion de problemas: Algoritmos y programas
Theory of computation Lec7 pda
3. algoritmos de ordenamiento interno
Nondeterministic Finite Automata
hashing y colisiones
Tipos de datos y operaciones
Estructura datos pilas y colas
DIAGRAMA DE COMPONENTES
Arboles de derivacion
Ejercicios de búsqueda a Ciegas y Búsqueda informada
Cuadro comparativo algoritmos de busqueda
Recursividad directa e indirecta
Automatas de estado finito
Arboles En Estructura de Datos
Fases de resolucion de problemas
Exposicion Caminos de euler
Tipos de búsqueda en Inteligencia Artificial
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA
Publicidad

Similar a Algoritmo de backtracking (20)

PPTX
Vuelta atrás (backtraking)
PPTX
3.1.5 Backtracking.pptx
PPTX
Backtracking
PPTX
Backtracking
PPTX
Backtracking
PPTX
Método de Vuelta Atrás (Backtracking)
PPTX
Backtracking
PPTX
Backtracking mario palma
DOCX
Busqueda por backtracking
PPTX
Backtracking (Método de Vuelta Atrás)
PPTX
Bac k t r ac k i n luis saltaren
DOCX
Slideshare nelson rodriguez
PPTX
Algorítm0 del
PPTX
Técnica del backtracking o vuelta atrás
PPTX
Esquema algorítmico del backtracking
PPTX
Esquema algorítmico del backtracking
PPTX
Daniela mendozaestructuradedatosii
PPTX
Enfoques
Vuelta atrás (backtraking)
3.1.5 Backtracking.pptx
Backtracking
Backtracking
Backtracking
Método de Vuelta Atrás (Backtracking)
Backtracking
Backtracking mario palma
Busqueda por backtracking
Backtracking (Método de Vuelta Atrás)
Bac k t r ac k i n luis saltaren
Slideshare nelson rodriguez
Algorítm0 del
Técnica del backtracking o vuelta atrás
Esquema algorítmico del backtracking
Esquema algorítmico del backtracking
Daniela mendozaestructuradedatosii
Enfoques
Publicidad

Algoritmo de backtracking

  • 2. ALGORITMO DE BACKTRACKING En su forma básica, la idea de backtracking se asemeja a un recorrido en profundidad dentro de un grafo dirigido. El grafo en cuestión suele ser un árbol, o por lo menos no contiene ciclos. Sea cual sea su estructura, existe sólo implícitamente. El objetivo del recorrido es encontrar soluciones para algún problema.
  • 3. El recorrido tiene éxito si, procediendo de esta forma, se puede definir por completo una solución. En este caso el algoritmo puede bien detenerse (si lo único que se necesita es una solución del problema) o bien seguir buscando soluciones alternativas (si deseamos examinarlas todas). Por otra parte, el recorrido no tiene éxito si en alguna etapa la solución parcial construida hasta el momento no se puede completar. En tal caso, el recorrido vuelve atrás exactamente igual que en un recorrido en profundidad, eliminando sobre la marcha los elementos que se hubieran añadido en cada fase. Cuando vuelve a un nodo que tiene uno o más vecinos sin explorar, prosigue el recorrido de una solución
  • 4. ALGORITMO DE BACKTRACKING proc Backtracking (↕X[1 . . . i ]: TSolución, ↑ok: B) variables L: ListaComponentes iniciosi EsSolución (X) entonces ok CIERTO de lo contrario ok FALSO L=Candidatos (X) mientras ¬ok ^ ¬Vacía (L) hacer X[i + 1] Cabeza (L); L Resto (L) Backtracking (X, ok) fin mientras fin si fin
  • 5. ENFOQUES ALGORITMO DE BACKTRACKING Los problemas que deben satisfacer un determinado tipo de restricciones son problemas completos, donde el orden de los elementos de la solución no importa. estos problemas consisten en un conjunto (o lista) de variables a la que a cada una se le debe asignar un valor sujeto a las restricciones del problema. la técnica va creando todas las posibles combinaciones de elementos para obtener una solución. su principal virtud es que en la mayoría de las implementaciones se puede evitar combinaciones, estableciendo funciones de acotación (o poda) reduciendo el tiempo de ejecución. vuelta atrás está muy relacionado con la búsquedas binarias .
  • 6. DISEÑO E IMPLEMENTACIÓN BACKTRACKING Esencialmente, la idea es encontrar la mejor combinación posible en un momento determinado, por eso, se dice que este tipo de algoritmo es una búsqueda en profundidad. Normalmente, se suele implementar este tipo de algoritmos como un procedimiento recursivo. La diferencia con la búsqueda en profundidad es que se suelen diseñar funciones de cota, de forma que no se generen algunos estados si no van a conducir a ninguna solución, o a una solución peor de la que ya se tiene. De esta forma se ahorra espacio en memoria y tiempo de ejecución.
  • 7. Algunas heurísticas son comúnmente usadas para acelerar el proceso. Como las variables se pueden procesar en cualquier orden, generalmente es más eficiente intentar ser lo más restrictivo posible con las primeras (esto es, las primeras con menores valores posibles). Este proceso poda el árbol de búsqueda antes de que se tome la decisión y se llame a la subrutina recursiva. HEURÍSTICAS ALGORITMO DE BACKTRACKING
  • 8. EJEMPLOS DE PROBLEMAS COMUNES RESUELTOS USANDO VUELTA ATRÁS Sudoku Problema de los movimientos de un caballo Las ocho reinas
  • 10. Backtracking Recursivo Backtracking es una técnica algorítmica que consiste en la resolución de problemas mediante la búsqueda sistemática de soluciones exhaustivas. Comúnmente, esta técnica hace uso de la recursividad, y es importante que domines la implementación de las llamadas recursivas con destreza antes de continuar. Te invitamos a que leas el tutorial: Recursividad: La guía definitiva, y aunque no lo consideres necesario puede que te sean útiles algunos consejos que te ayudarán en la formación como programador.