SlideShare uma empresa Scribd logo
1 de 11
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

Mais conteúdo relacionado

Mais procurados

Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)luzenith_g
 
Metodos de Programacion no lineal
Metodos de Programacion no linealMetodos de Programacion no lineal
Metodos de Programacion no linealluisatero
 
Algoritmos Voraces - Dijkstra
Algoritmos Voraces - DijkstraAlgoritmos Voraces - Dijkstra
Algoritmos Voraces - DijkstraCarlos Uscamayta
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de softwareAlex Hurtado
 
Lenguaje de simulación
Lenguaje de simulaciónLenguaje de simulación
Lenguaje de simulaciónJeicod Tupapa
 
Teoria de grafos. introducción
Teoria de grafos. introducciónTeoria de grafos. introducción
Teoria de grafos. introducciónAlejandra Guzman
 
Investigacion de Operaciones No. 2 - R. Campillo
Investigacion de Operaciones No. 2 - R. CampilloInvestigacion de Operaciones No. 2 - R. Campillo
Investigacion de Operaciones No. 2 - R. CampilloRafael Campillo Rodriguez
 
Tecnicas de estimacion de software
Tecnicas de estimacion de softwareTecnicas de estimacion de software
Tecnicas de estimacion de softwareAdes27
 
Alfabetos teoria de_lenguajes_y_automatas
Alfabetos teoria de_lenguajes_y_automatasAlfabetos teoria de_lenguajes_y_automatas
Alfabetos teoria de_lenguajes_y_automatasAilin Osiris Rodríguez
 
administracion de entrada, salida y procesos
administracion de entrada, salida y procesosadministracion de entrada, salida y procesos
administracion de entrada, salida y procesosSamir Barrios
 
Algoritmo congruencial multiplicativo y prueba de medias u otavalo
Algoritmo congruencial multiplicativo y prueba de medias u otavaloAlgoritmo congruencial multiplicativo y prueba de medias u otavalo
Algoritmo congruencial multiplicativo y prueba de medias u otavaloRoberth Burgos
 

Mais procurados (20)

Interbloqueo
InterbloqueoInterbloqueo
Interbloqueo
 
Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)Algoritmos Voraces (Greedy)
Algoritmos Voraces (Greedy)
 
Algoritmo de Dijkstra
Algoritmo de DijkstraAlgoritmo de Dijkstra
Algoritmo de Dijkstra
 
Metodos de Programacion no lineal
Metodos de Programacion no linealMetodos de Programacion no lineal
Metodos de Programacion no lineal
 
Algoritmos Voraces - Dijkstra
Algoritmos Voraces - DijkstraAlgoritmos Voraces - Dijkstra
Algoritmos Voraces - Dijkstra
 
Topicos de ingeniería de software
Topicos de ingeniería de softwareTopicos de ingeniería de software
Topicos de ingeniería de software
 
Lenguaje de simulación
Lenguaje de simulaciónLenguaje de simulación
Lenguaje de simulación
 
Teoria de grafos. introducción
Teoria de grafos. introducciónTeoria de grafos. introducción
Teoria de grafos. introducción
 
Programación dinámica
Programación  dinámicaProgramación  dinámica
Programación dinámica
 
Investigacion de Operaciones No. 2 - R. Campillo
Investigacion de Operaciones No. 2 - R. CampilloInvestigacion de Operaciones No. 2 - R. Campillo
Investigacion de Operaciones No. 2 - R. Campillo
 
Hilos con Posix
Hilos con PosixHilos con Posix
Hilos con Posix
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Tecnicas de estimacion de software
Tecnicas de estimacion de softwareTecnicas de estimacion de software
Tecnicas de estimacion de software
 
1.5 memoria dinamica
1.5 memoria dinamica1.5 memoria dinamica
1.5 memoria dinamica
 
Alfabetos teoria de_lenguajes_y_automatas
Alfabetos teoria de_lenguajes_y_automatasAlfabetos teoria de_lenguajes_y_automatas
Alfabetos teoria de_lenguajes_y_automatas
 
administracion de entrada, salida y procesos
administracion de entrada, salida y procesosadministracion de entrada, salida y procesos
administracion de entrada, salida y procesos
 
Unidad 3. Transporte y asignación
Unidad 3. Transporte y asignaciónUnidad 3. Transporte y asignación
Unidad 3. Transporte y asignación
 
Metodologia para el proyecto
Metodologia para el proyectoMetodologia para el proyecto
Metodologia para el proyecto
 
Algoritmo congruencial multiplicativo y prueba de medias u otavalo
Algoritmo congruencial multiplicativo y prueba de medias u otavaloAlgoritmo congruencial multiplicativo y prueba de medias u otavalo
Algoritmo congruencial multiplicativo y prueba de medias u otavalo
 
Uso de threads en C#
Uso de threads en C#Uso de threads en C#
Uso de threads en C#
 

Semelhante a Algoritmo de backtracking

Daniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDaniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDanielaMendoza117
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtrackingCesar Mujica
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtrackingWilmer Quintero
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtrackingWilmer Quintero
 
Monografia problema de la mochila
Monografia   problema de la mochilaMonografia   problema de la mochila
Monografia problema de la mochilavaneyui
 
Monografia - Problema de la Mochila
Monografia - Problema de la MochilaMonografia - Problema de la Mochila
Monografia - Problema de la Mochilavaneyui
 
Busquedas (ia)
Busquedas (ia)Busquedas (ia)
Busquedas (ia)Yamnibel
 
Backtracking
BacktrackingBacktracking
BacktrackingOmar Daza
 
Bac k t r ac k i n luis saltaren
Bac k t r ac k i n luis saltarenBac k t r ac k i n luis saltaren
Bac k t r ac k i n luis saltarenlszsaltarenzapata
 
clase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsxclase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsxCesarR26
 
Pro no num Prog dinamica
Pro no num Prog dinamicaPro no num Prog dinamica
Pro no num Prog dinamicaRuben Gonzalez
 

Semelhante a Algoritmo de backtracking (20)

Daniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosiiDaniela mendozaestructuradedatosii
Daniela mendozaestructuradedatosii
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtracking
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtracking
 
Esquema algorítmico del backtracking
Esquema algorítmico del  backtrackingEsquema algorítmico del  backtracking
Esquema algorítmico del backtracking
 
Monografia problema de la mochila
Monografia   problema de la mochilaMonografia   problema de la mochila
Monografia problema de la mochila
 
Monografia - Problema de la Mochila
Monografia - Problema de la MochilaMonografia - Problema de la Mochila
Monografia - Problema de la Mochila
 
Busquedas (ia)
Busquedas (ia)Busquedas (ia)
Busquedas (ia)
 
Backtracking
BacktrackingBacktracking
Backtracking
 
2. Recursividad
2. Recursividad2. Recursividad
2. Recursividad
 
Sistemas inteligentes
Sistemas inteligentesSistemas inteligentes
Sistemas inteligentes
 
Técnica del backtracking o vuelta atrás
Técnica del backtracking o vuelta atrásTécnica del backtracking o vuelta atrás
Técnica del backtracking o vuelta atrás
 
Backtracking
BacktrackingBacktracking
Backtracking
 
Bac k t r ac k i n luis saltaren
Bac k t r ac k i n luis saltarenBac k t r ac k i n luis saltaren
Bac k t r ac k i n luis saltaren
 
Backtracking
BacktrackingBacktracking
Backtracking
 
clase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsxclase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsx
 
Metodo quicksort
Metodo quicksortMetodo quicksort
Metodo quicksort
 
Pro no num Prog dinamica
Pro no num Prog dinamicaPro no num Prog dinamica
Pro no num Prog dinamica
 

Algoritmo de backtracking

  • 1.
  • 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.