SlideShare una empresa de Scribd logo
Estructura de Datos II
SAIA A
Alumno: Enmanuel Carvalho
Profesora: Yakirana Barrios
La más antigua referencia al Backtracking, es la historia de
Ariadna en la antigua mitología griega; en dicha historia el padre de
Ariadna, que era el rey Minos de Creta proyectaba su poder sobre su
isla y por conquista sobre Atenas, el tributo que pedía el rey a los
atenienses consistía en obligar a grupos de jóvenes que entraran a su
laberinto donde habitaba el Minotauro para que de esta manera murieran
a manos del mismo.
Sin embargo Ariadna se enamoró de héroe ateniense Teseo, el
cual fue dispuesto a entrar al laberinto, la princesa le regaló un ovillo de
hilo dorado para que no se perdiera en el laberinto, la intención era que
Teseo desenrollara el ovillo a medida que avanzara por el laberinto, de
manera que si llegaba a un callejón sin salida tenía que volver atrás y
enrollar el hilo hasta llegar al punto donde había escogido dicho camino
para intentar otra ruta, en esta ocasión la técnica del Backtracking
funcionó, Teseo puto asesinar al Minotauro y escapar del laberinto.
Por otra parte el termino «Backtrack» fue acuñado por primera
vez por el matemático estadounidense D. H. Lehmer en 1950
La idea principal de backtracking se refleja muy parecido a
un recorrido en profundidad dentro de un grafo dirigido, dicho grafo
suele ser un árbol, o en su defecto no contiene ciclos; sea cual sea
su estructura, existe sólo implícitamente, lo que se busca
principalmente del recorrido es encontrar soluciones para algún
problema, lográndose construyendo soluciones parciales a medida
que progresa el recorrido; estas soluciones parciales limitan las
regiones en las que se puede encontrar una solución completa,
finalmente el recorrido culmina con éxito si, procediendo de esta
forma, se puede definir por completo una solución.
El algoritmo en cuestión puede detenerse o seguir
buscando soluciones alternativas; el recorrido no finaliza con éxito si
en alguna de las etapas la solución parcial construida hasta el
momento no se puede completar. En dicho 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.
Existen diversos problemas que deben satisfacer un
determinado tipo de restricciones, los mismos son problemas completos,
en donde el orden de los elementos de la solución ejerce importancia;
dichos problemas consisten en un conjunto de variables a la que a cada
una se le asigna un valor que está sujeto a las restricciones del
problema.
Como dijimos anteriormente, la técnica backtracking va
creando todas las posibles combinaciones de elementos para obtener
una posible solución, su virtud principal es que en la mayoría de las
implementaciones nos podemos ahorrar combinaciones innecesarias,
estableciendo funciones de acotación o poda y reduciendo así
el tiempo de ejecución.
Una variedad de heurísticas son ampliamente utilizadas para
que de esta manera el proceso sea mas eficiente, al poder procesar las
variables en cualquier orden, por lo general es más rápido intentar ser lo
más restrictivo posible con las primeras; dicho proceso poda el árbol de
búsqueda antes de que se tome la decisión y se llame a la subrutina
recursiva.
Muchas implementaciones mas innovadoras utilizan una función
de cotas, que examina si es posible o no encontrar una solución a partir
de una solución parcial. Por otra parte se comprueba si la solución
parcial que falla puede elevar significativamente la eficiencia del
algoritmo.
Con la implementación de estas funciones de cota, se debe ser
muy minucioso en su uso de manera que sean poco eficientes
computacionalmente, ya que lo más común es que se ejecuten para
cada nodo o paso del algoritmo, debemos tener también en cuenta que
las cotas eficaces se crean de forma parecida a las
funciones heurísticas.
Un ejemplo típico en el que se puede aplicar método de vuelta
atrás son los laberintos, en los cuales debemos escoger el camino
correcto para así poder llegar a la meta, si elegimos un camino incorrecto
debemos Volver atrás y escoger otro camino aleatorio que nos lleve
hasta el final.
El Sudoku es otro ejemplo, en el cual debemos rellenar las 9
casillas de los 9 bloques que originalmente trae el juego con 9 números
distintos del 1 al 9 en cada fila y columna, en caso de que se cometa
algún error y se repita un numero en alguna fila o columna debemos
Volver atrás.
En el primer ejemplo tenemos una serie de elementos únicos,
cada uno con un volumen ocupado, y cada elemento nos da cierta
ganancia. Disponemos de una capacidad limitada, por lo que debemos
seleccionar aquellos que nos den la mayor ganancia posible.
Si tenemos n elementos disponibles, numerados de 0 a n-1 y dos arreglos,
uno p[n] que indica el peso de cada elemento y g[n] que indica la ganancia
que nos da el elemento, M indica la carga máxima que podemos llevar,
finalmente el código queda de la siguiente manera:
int carga ( int* g, int* p, int* sol, int M) {
int pos = 0; // Posicion actual en la recorrida de elementos.
int ganancia = 0; // Ganancia parcial acumulada.
int m_ganancia = 0; // Mejor ganancia encontrada
int disponible = M; // Espacio disponible restante.
int restante = 0; // Ganancia restante disponible
int * parcial = new int[n]; // Marcaremos con 1 si llevamos al i, o con 0 en caso contrario
for (int i=0; i<n; i++) {
parcial[i] = 0; // Inicializamos en cero los eltos elegido.
restante += g[i]; // Ganancia de los elementos restantes, para la poda.
}
Back(g, p, parcial, ganancia, m_ganancia, disponible, restante, pos, sol);
delete[] parcial;
return m_ganancia;
}
En el segundo tenemos un conjunto finito U y una familia de
subconjuntos {Tj} de U definimos una matriz A donde cada fila se
corresponde con un elemento ui de U y cada U pertenece a Tj y∈columna
de A con un subconjunto Tj . Ponemos aij=1 si ui aij=0 en caso contrario.
Interpretamos que xj=1 significa que elegimos Tj y 0 en caso contrario.
Se trata de averiguar si es factible Ax=1 donde A y x son binarias
y las componentes de 1 son unos. S0= un vector de ceros (raíz del árbol)
Cada nodo S del árbol es una sucesión x cuyas primeras k componentes le
han sido asignados un 1 o un 0 y el resto de componentes son ceros.
Reemplazamos S por 2 subproblemas Si (i=1,2) poniendo xk+1 =1 y
xk+1=0 respectivamente; el código nos queda:
if Ax=1 STOP
if Ax>1 DROP Si
if Ax<1 add Si to A
En el tercer ejemplo tenemos un tablero de ajedrez de tamaño NxN, y se
trata de colocar en él N reinas de manera que no se amenacen según las
normas del ajedrez.
proc NReinas (↕[1 . . . i ]: TSolución, ↓N: N, ↑ok: B)
variables j : N
inicio
si i=N entonces ok=CIERTO
en otro caso
ok=FALSO
j=1
mientras ¬ok ^ (j≤N) hacer
si EsFactible (R, j) entonces
R[i + 1]= j
NReinas (R, N, ok)
finsi
j=j+1
finmientras
finsi
fin
func EsFactible (↓R[1 . . . i ]: TSolución, ↓j : N): B
variables factible: B
inicio
factible=CIERTO
k=1
mientras factible ^ (k≤i) hacer
si (j=R[k])/(i+1−k= |j−R[k]|)
entonces
factible=FALSO
finsi
k=k+1
finmientras
devolver factible
Consiste en buscar todas las soluciones del problema, de esta manera
tendremos que recorrer el árbol de estados por completo; tal algoritmo
sería:
proc Bactracking Enum(↕X[1 . . . i ]: TSolución, ↑num: N)
variables L: ListaComponentes
inicio
si EsSolución (X) entonces num num+1
EscribeSolución (X)
en otro caso
L Candidatos (X)
mientras ¬Vacía (L) hacer
X[i + 1] Cabeza (L); L Resto (L)
BacktrackingEnum (X, num)
finmientras
finsi
fin
La técnica de Ramificación y poda o conocida en ingles como
Branch & Bound se deriva del Backtracking, generalmente se interpreta
como un árbol de soluciones en la cual cada rama nos lleva a una posible
solución posterior a la actual.
Debemos tomar en cuenta que la característica que diferencia
esta técnica con respecto a otras anteriores es que el algoritmo se ocupa
de detectar en qué ramificación las soluciones dadas ya no están siendo
óptimas, para podar así como su nombre lo indica esa rama del árbol que
no nos está siendo de utilidad y no seguir malgastando recursos y
procesos en casos que se alejan de la solución óptima.
La meta general es encontrar el valor mínimo de una función f(x)
donde fijamos x rangos sobre un determinado conjunto S de posibles
soluciones.

Más contenido relacionado

La actualidad más candente

Concurrencia interbloqueo e inanición
Concurrencia interbloqueo e inaniciónConcurrencia interbloqueo e inanición
Concurrencia interbloqueo e inanición
jhonfgarcia
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
Rosviannis Barreiro
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
Sara Martínez Gómez
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
Lutzo Guzmán
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
Cristopher Morales Ruiz
 
Métodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialMétodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia Artificial
Gregorys Gimenez
 
Ensayo Méotodos numéricos
Ensayo Méotodos numéricos Ensayo Méotodos numéricos
Ensayo Méotodos numéricos
Raí Lopez Jimenez
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
deff000001
 
Introducción a la Programación No Lineal
Introducción a la Programación No LinealIntroducción a la Programación No Lineal
Introducción a la Programación No Lineal
AngelCarrasquel3
 
Diferencia entre algoritmo de path finding y algoritmo de dijkstra
Diferencia entre algoritmo de path finding y algoritmo de dijkstraDiferencia entre algoritmo de path finding y algoritmo de dijkstra
Diferencia entre algoritmo de path finding y algoritmo de dijkstra
nacasma
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en Java
Ame Linares Vivas
 
Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)
Alejandro Salas Ledezma
 
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
Esperanza Terán Jiménez
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Salvador Fernández Fernández
 
Metodo de Paginaciòn
Metodo de PaginaciònMetodo de Paginaciòn
Metodo de Paginaciòn
Ingrid Karolina Parra
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
Luis Jherry
 
Diagramas de Secuencia.
Diagramas de Secuencia.Diagramas de Secuencia.
Diagramas de Secuencia.
Juan Raul Vergara
 
2.3 metodos de aproximacion
2.3 metodos de aproximacion2.3 metodos de aproximacion
2.3 metodos de aproximacion
morenito9001
 
Problema de las 8 reinas
Problema de las 8 reinasProblema de las 8 reinas
Problema de las 8 reinas
Esteban Gonzalez
 
Máquinas de Turing - Tipos y Aplicaciones
Máquinas de Turing - Tipos y AplicacionesMáquinas de Turing - Tipos y Aplicaciones
Máquinas de Turing - Tipos y Aplicaciones
Rosviannis Barreiro
 

La actualidad más candente (20)

Concurrencia interbloqueo e inanición
Concurrencia interbloqueo e inaniciónConcurrencia interbloqueo e inanición
Concurrencia interbloqueo e inanición
 
Automatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No DeterministicosAutomatas Finitos Deterministicos y No Deterministicos
Automatas Finitos Deterministicos y No Deterministicos
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
Cuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busquedaCuadro comparativo algoritmos de busqueda
Cuadro comparativo algoritmos de busqueda
 
Métodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia ArtificialMétodos de Búsquedas en Inteligencia Artificial
Métodos de Búsquedas en Inteligencia Artificial
 
Ensayo Méotodos numéricos
Ensayo Méotodos numéricos Ensayo Méotodos numéricos
Ensayo Méotodos numéricos
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
Introducción a la Programación No Lineal
Introducción a la Programación No LinealIntroducción a la Programación No Lineal
Introducción a la Programación No Lineal
 
Diferencia entre algoritmo de path finding y algoritmo de dijkstra
Diferencia entre algoritmo de path finding y algoritmo de dijkstraDiferencia entre algoritmo de path finding y algoritmo de dijkstra
Diferencia entre algoritmo de path finding y algoritmo de dijkstra
 
Herencia y Polimorfismo en Java
Herencia y Polimorfismo en JavaHerencia y Polimorfismo en Java
Herencia y Polimorfismo en Java
 
Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)Método de Vuelta Atrás (Backtracking)
Método de Vuelta Atrás (Backtracking)
 
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
 
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióNVarios Algoritmos Voraces De DecisióN Y OptimizacióN
Varios Algoritmos Voraces De DecisióN Y OptimizacióN
 
Metodo de Paginaciòn
Metodo de PaginaciònMetodo de Paginaciòn
Metodo de Paginaciòn
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Diagramas de Secuencia.
Diagramas de Secuencia.Diagramas de Secuencia.
Diagramas de Secuencia.
 
2.3 metodos de aproximacion
2.3 metodos de aproximacion2.3 metodos de aproximacion
2.3 metodos de aproximacion
 
Problema de las 8 reinas
Problema de las 8 reinasProblema de las 8 reinas
Problema de las 8 reinas
 
Máquinas de Turing - Tipos y Aplicaciones
Máquinas de Turing - Tipos y AplicacionesMáquinas de Turing - Tipos y Aplicaciones
Máquinas de Turing - Tipos y Aplicaciones
 

Similar a Backtracking (Método de Vuelta Atrás)

Slideshare nelson rodriguez
Slideshare nelson rodriguezSlideshare nelson rodriguez
Slideshare nelson rodriguez
nelro038
 
Enfoques
EnfoquesEnfoques
Enfoques
Jhoan Tenjo
 
8 reinas
8 reinas8 reinas
Enfoques
EnfoquesEnfoques
Funcion recursiva
Funcion recursivaFuncion recursiva
Funcion recursiva
cricaseco
 
Informe
InformeInforme
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
Francisco Lambert Obediente
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
Francisco Lambert Obediente
 
Inteligencia Artificial del Juego SUDOKU SAMURAI
Inteligencia Artificial del Juego SUDOKU SAMURAIInteligencia Artificial del Juego SUDOKU SAMURAI
Inteligencia Artificial del Juego SUDOKU SAMURAI
SNPP
 
Unidad 6 metodos
Unidad 6 metodosUnidad 6 metodos
Unidad 6 metodos
Oscar Martinez
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtracking
Cesar Mujica
 
Estructura de datos.ppt
Estructura de datos.pptEstructura de datos.ppt
Estructura de datos.ppt
CompusoftnetCiaLtda
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
Ascencion Esquivel
 
Dominio y rango de una funcion cuadratica
Dominio y rango de una funcion cuadraticaDominio y rango de una funcion cuadratica
Dominio y rango de una funcion cuadratica
WILLIAMBARRIOS16
 
Maximos y minimos funcion de varias variables
Maximos y minimos funcion de varias variablesMaximos y minimos funcion de varias variables
Maximos y minimos funcion de varias variables
RAQUEL CARDENAS GONZALEZ
 
Enfoques
EnfoquesEnfoques
Enfoques
Naylu Rincón
 
Unidad 2
Unidad 2Unidad 2
Asignacion 1
Asignacion 1Asignacion 1
Documento para el_facilitador_u2
Documento para el_facilitador_u2Documento para el_facilitador_u2
Documento para el_facilitador_u2
PEDRO LARA MALDONADO
 
clase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsxclase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsx
CesarR26
 

Similar a Backtracking (Método de Vuelta Atrás) (20)

Slideshare nelson rodriguez
Slideshare nelson rodriguezSlideshare nelson rodriguez
Slideshare nelson rodriguez
 
Enfoques
EnfoquesEnfoques
Enfoques
 
8 reinas
8 reinas8 reinas
8 reinas
 
Enfoques
EnfoquesEnfoques
Enfoques
 
Funcion recursiva
Funcion recursivaFuncion recursiva
Funcion recursiva
 
Informe
InformeInforme
Informe
 
Jflambert lyada - ayudantia matematicas discretas
Jflambert   lyada - ayudantia matematicas discretasJflambert   lyada - ayudantia matematicas discretas
Jflambert lyada - ayudantia matematicas discretas
 
Jflambert lyada - ayudantia ordenamiento y teo maestro
Jflambert   lyada - ayudantia ordenamiento y teo maestroJflambert   lyada - ayudantia ordenamiento y teo maestro
Jflambert lyada - ayudantia ordenamiento y teo maestro
 
Inteligencia Artificial del Juego SUDOKU SAMURAI
Inteligencia Artificial del Juego SUDOKU SAMURAIInteligencia Artificial del Juego SUDOKU SAMURAI
Inteligencia Artificial del Juego SUDOKU SAMURAI
 
Unidad 6 metodos
Unidad 6 metodosUnidad 6 metodos
Unidad 6 metodos
 
Busqueda por backtracking
Busqueda por backtrackingBusqueda por backtracking
Busqueda por backtracking
 
Estructura de datos.ppt
Estructura de datos.pptEstructura de datos.ppt
Estructura de datos.ppt
 
Informe ordenamiento
Informe ordenamientoInforme ordenamiento
Informe ordenamiento
 
Dominio y rango de una funcion cuadratica
Dominio y rango de una funcion cuadraticaDominio y rango de una funcion cuadratica
Dominio y rango de una funcion cuadratica
 
Maximos y minimos funcion de varias variables
Maximos y minimos funcion de varias variablesMaximos y minimos funcion de varias variables
Maximos y minimos funcion de varias variables
 
Enfoques
EnfoquesEnfoques
Enfoques
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Asignacion 1
Asignacion 1Asignacion 1
Asignacion 1
 
Documento para el_facilitador_u2
Documento para el_facilitador_u2Documento para el_facilitador_u2
Documento para el_facilitador_u2
 
clase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsxclase1_TecDiseño_2021.ppsx
clase1_TecDiseño_2021.ppsx
 

Último

Estilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdf
Estilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdfEstilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdf
Estilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdf
ElisaLen4
 
Sistema de sobrealimentacion de un motor
Sistema de sobrealimentacion de un motorSistema de sobrealimentacion de un motor
Sistema de sobrealimentacion de un motor
mauriciok961
 
tintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdf
tintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdftintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdf
tintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdf
MishelBautista4
 
TIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdfTIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdf
ArmandoSarco
 
tema alcanos cicloalcanos de quimica.pdf
tema alcanos cicloalcanos de quimica.pdftema alcanos cicloalcanos de quimica.pdf
tema alcanos cicloalcanos de quimica.pdf
veronicaluna80
 
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOSSISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
micoltadaniel2024
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
jemifermelgarejoaran1
 
1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf
1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf
1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf
jlupo2024
 
Aletas (Superficies extendidas) y aislantes térmicos
Aletas (Superficies extendidas) y aislantes térmicosAletas (Superficies extendidas) y aislantes térmicos
Aletas (Superficies extendidas) y aislantes térmicos
FrancelisFernandez
 
aplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdfaplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdf
MiguelZapata93
 
Ducto Barras para instalaciones electricas
Ducto Barras para instalaciones electricasDucto Barras para instalaciones electricas
Ducto Barras para instalaciones electricas
Edgar Najera
 
Propiedades Electricas de los Materiales
Propiedades Electricas de los MaterialesPropiedades Electricas de los Materiales
Propiedades Electricas de los Materiales
rogeliorodriguezt
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
MaraManuelaUrribarri
 
Características de los suelos como los histosoles.pptx
Características de los suelos como los histosoles.pptxCaracterísticas de los suelos como los histosoles.pptx
Características de los suelos como los histosoles.pptx
MONICADELROCIOMUNZON1
 
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtualSESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
JuanGavidia2
 
Clase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieriaClase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieria
leonidasbajalquepuch
 
PRINCIPALES CARACTERISTICAS DE EL PH.pptx
PRINCIPALES CARACTERISTICAS DE EL PH.pptxPRINCIPALES CARACTERISTICAS DE EL PH.pptx
PRINCIPALES CARACTERISTICAS DE EL PH.pptx
MONICADELROCIOMUNZON1
 
Presentación transferencia de calor Jesus Morales.pdf
Presentación transferencia de calor Jesus Morales.pdfPresentación transferencia de calor Jesus Morales.pdf
Presentación transferencia de calor Jesus Morales.pdf
jdcumarem02
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
DanielaLoaeza5
 
CURSO FINAL CONMINUCION-CHANCADO Y MOLIENDA
CURSO FINAL CONMINUCION-CHANCADO Y MOLIENDACURSO FINAL CONMINUCION-CHANCADO Y MOLIENDA
CURSO FINAL CONMINUCION-CHANCADO Y MOLIENDA
KruggerCossio1
 

Último (20)

Estilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdf
Estilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdfEstilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdf
Estilo Arquitectónico Ecléctico e Histórico, Roberto de la Roche.pdf
 
Sistema de sobrealimentacion de un motor
Sistema de sobrealimentacion de un motorSistema de sobrealimentacion de un motor
Sistema de sobrealimentacion de un motor
 
tintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdf
tintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdftintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdf
tintura-de-fibras-celulc3b3sicas-con-colorantes-reactivos-ii (1).pdf
 
TIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdfTIA portal Bloques PLC Siemens______.pdf
TIA portal Bloques PLC Siemens______.pdf
 
tema alcanos cicloalcanos de quimica.pdf
tema alcanos cicloalcanos de quimica.pdftema alcanos cicloalcanos de quimica.pdf
tema alcanos cicloalcanos de quimica.pdf
 
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOSSISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
SISTEMA AUTOMATIZADO DE LIMPIEZA PARA ACUARIOS
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
 
1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf
1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf
1-AAP-RENAV-PyM Capacitación del Reglamento Nacional de Vehiculos.pdf
 
Aletas (Superficies extendidas) y aislantes térmicos
Aletas (Superficies extendidas) y aislantes térmicosAletas (Superficies extendidas) y aislantes térmicos
Aletas (Superficies extendidas) y aislantes térmicos
 
aplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdfaplicacion de la termodinamica en la reacciones quimicas.pdf
aplicacion de la termodinamica en la reacciones quimicas.pdf
 
Ducto Barras para instalaciones electricas
Ducto Barras para instalaciones electricasDucto Barras para instalaciones electricas
Ducto Barras para instalaciones electricas
 
Propiedades Electricas de los Materiales
Propiedades Electricas de los MaterialesPropiedades Electricas de los Materiales
Propiedades Electricas de los Materiales
 
Infografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - ConstrucciónInfografia - Hugo Hidalgo - Construcción
Infografia - Hugo Hidalgo - Construcción
 
Características de los suelos como los histosoles.pptx
Características de los suelos como los histosoles.pptxCaracterísticas de los suelos como los histosoles.pptx
Características de los suelos como los histosoles.pptx
 
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtualSESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
SESIÓN 3 ÓXIDOS-HIDRÓXIDOS trabajo virtual
 
Clase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieriaClase Isometricos parA circuitos de ingenieria
Clase Isometricos parA circuitos de ingenieria
 
PRINCIPALES CARACTERISTICAS DE EL PH.pptx
PRINCIPALES CARACTERISTICAS DE EL PH.pptxPRINCIPALES CARACTERISTICAS DE EL PH.pptx
PRINCIPALES CARACTERISTICAS DE EL PH.pptx
 
Presentación transferencia de calor Jesus Morales.pdf
Presentación transferencia de calor Jesus Morales.pdfPresentación transferencia de calor Jesus Morales.pdf
Presentación transferencia de calor Jesus Morales.pdf
 
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomomRinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
Rinitis alérgica-1.pdfuhycrbibxgvyvyjimomom
 
CURSO FINAL CONMINUCION-CHANCADO Y MOLIENDA
CURSO FINAL CONMINUCION-CHANCADO Y MOLIENDACURSO FINAL CONMINUCION-CHANCADO Y MOLIENDA
CURSO FINAL CONMINUCION-CHANCADO Y MOLIENDA
 

Backtracking (Método de Vuelta Atrás)

  • 1. Estructura de Datos II SAIA A Alumno: Enmanuel Carvalho Profesora: Yakirana Barrios
  • 2. La más antigua referencia al Backtracking, es la historia de Ariadna en la antigua mitología griega; en dicha historia el padre de Ariadna, que era el rey Minos de Creta proyectaba su poder sobre su isla y por conquista sobre Atenas, el tributo que pedía el rey a los atenienses consistía en obligar a grupos de jóvenes que entraran a su laberinto donde habitaba el Minotauro para que de esta manera murieran a manos del mismo. Sin embargo Ariadna se enamoró de héroe ateniense Teseo, el cual fue dispuesto a entrar al laberinto, la princesa le regaló un ovillo de hilo dorado para que no se perdiera en el laberinto, la intención era que Teseo desenrollara el ovillo a medida que avanzara por el laberinto, de manera que si llegaba a un callejón sin salida tenía que volver atrás y enrollar el hilo hasta llegar al punto donde había escogido dicho camino para intentar otra ruta, en esta ocasión la técnica del Backtracking funcionó, Teseo puto asesinar al Minotauro y escapar del laberinto. Por otra parte el termino «Backtrack» fue acuñado por primera vez por el matemático estadounidense D. H. Lehmer en 1950
  • 3. La idea principal de backtracking se refleja muy parecido a un recorrido en profundidad dentro de un grafo dirigido, dicho grafo suele ser un árbol, o en su defecto no contiene ciclos; sea cual sea su estructura, existe sólo implícitamente, lo que se busca principalmente del recorrido es encontrar soluciones para algún problema, lográndose construyendo soluciones parciales a medida que progresa el recorrido; estas soluciones parciales limitan las regiones en las que se puede encontrar una solución completa, finalmente el recorrido culmina con éxito si, procediendo de esta forma, se puede definir por completo una solución. El algoritmo en cuestión puede detenerse o seguir buscando soluciones alternativas; el recorrido no finaliza con éxito si en alguna de las etapas la solución parcial construida hasta el momento no se puede completar. En dicho 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.
  • 4. Existen diversos problemas que deben satisfacer un determinado tipo de restricciones, los mismos son problemas completos, en donde el orden de los elementos de la solución ejerce importancia; dichos problemas consisten en un conjunto de variables a la que a cada una se le asigna un valor que está sujeto a las restricciones del problema. Como dijimos anteriormente, la técnica backtracking va creando todas las posibles combinaciones de elementos para obtener una posible solución, su virtud principal es que en la mayoría de las implementaciones nos podemos ahorrar combinaciones innecesarias, estableciendo funciones de acotación o poda y reduciendo así el tiempo de ejecución.
  • 5. Una variedad de heurísticas son ampliamente utilizadas para que de esta manera el proceso sea mas eficiente, al poder procesar las variables en cualquier orden, por lo general es más rápido intentar ser lo más restrictivo posible con las primeras; dicho proceso poda el árbol de búsqueda antes de que se tome la decisión y se llame a la subrutina recursiva. Muchas implementaciones mas innovadoras utilizan una función de cotas, que examina si es posible o no encontrar una solución a partir de una solución parcial. Por otra parte se comprueba si la solución parcial que falla puede elevar significativamente la eficiencia del algoritmo. Con la implementación de estas funciones de cota, se debe ser muy minucioso en su uso de manera que sean poco eficientes computacionalmente, ya que lo más común es que se ejecuten para cada nodo o paso del algoritmo, debemos tener también en cuenta que las cotas eficaces se crean de forma parecida a las funciones heurísticas.
  • 6. Un ejemplo típico en el que se puede aplicar método de vuelta atrás son los laberintos, en los cuales debemos escoger el camino correcto para así poder llegar a la meta, si elegimos un camino incorrecto debemos Volver atrás y escoger otro camino aleatorio que nos lleve hasta el final. El Sudoku es otro ejemplo, en el cual debemos rellenar las 9 casillas de los 9 bloques que originalmente trae el juego con 9 números distintos del 1 al 9 en cada fila y columna, en caso de que se cometa algún error y se repita un numero en alguna fila o columna debemos Volver atrás.
  • 7. En el primer ejemplo tenemos una serie de elementos únicos, cada uno con un volumen ocupado, y cada elemento nos da cierta ganancia. Disponemos de una capacidad limitada, por lo que debemos seleccionar aquellos que nos den la mayor ganancia posible. Si tenemos n elementos disponibles, numerados de 0 a n-1 y dos arreglos, uno p[n] que indica el peso de cada elemento y g[n] que indica la ganancia que nos da el elemento, M indica la carga máxima que podemos llevar, finalmente el código queda de la siguiente manera: int carga ( int* g, int* p, int* sol, int M) { int pos = 0; // Posicion actual en la recorrida de elementos. int ganancia = 0; // Ganancia parcial acumulada. int m_ganancia = 0; // Mejor ganancia encontrada int disponible = M; // Espacio disponible restante. int restante = 0; // Ganancia restante disponible int * parcial = new int[n]; // Marcaremos con 1 si llevamos al i, o con 0 en caso contrario for (int i=0; i<n; i++) { parcial[i] = 0; // Inicializamos en cero los eltos elegido. restante += g[i]; // Ganancia de los elementos restantes, para la poda. } Back(g, p, parcial, ganancia, m_ganancia, disponible, restante, pos, sol); delete[] parcial; return m_ganancia; }
  • 8. En el segundo tenemos un conjunto finito U y una familia de subconjuntos {Tj} de U definimos una matriz A donde cada fila se corresponde con un elemento ui de U y cada U pertenece a Tj y∈columna de A con un subconjunto Tj . Ponemos aij=1 si ui aij=0 en caso contrario. Interpretamos que xj=1 significa que elegimos Tj y 0 en caso contrario. Se trata de averiguar si es factible Ax=1 donde A y x son binarias y las componentes de 1 son unos. S0= un vector de ceros (raíz del árbol) Cada nodo S del árbol es una sucesión x cuyas primeras k componentes le han sido asignados un 1 o un 0 y el resto de componentes son ceros. Reemplazamos S por 2 subproblemas Si (i=1,2) poniendo xk+1 =1 y xk+1=0 respectivamente; el código nos queda: if Ax=1 STOP if Ax>1 DROP Si if Ax<1 add Si to A
  • 9. En el tercer ejemplo tenemos un tablero de ajedrez de tamaño NxN, y se trata de colocar en él N reinas de manera que no se amenacen según las normas del ajedrez. proc NReinas (↕[1 . . . i ]: TSolución, ↓N: N, ↑ok: B) variables j : N inicio si i=N entonces ok=CIERTO en otro caso ok=FALSO j=1 mientras ¬ok ^ (j≤N) hacer si EsFactible (R, j) entonces R[i + 1]= j NReinas (R, N, ok) finsi j=j+1 finmientras finsi fin func EsFactible (↓R[1 . . . i ]: TSolución, ↓j : N): B variables factible: B inicio factible=CIERTO k=1 mientras factible ^ (k≤i) hacer si (j=R[k])/(i+1−k= |j−R[k]|) entonces factible=FALSO finsi k=k+1 finmientras devolver factible
  • 10. Consiste en buscar todas las soluciones del problema, de esta manera tendremos que recorrer el árbol de estados por completo; tal algoritmo sería: proc Bactracking Enum(↕X[1 . . . i ]: TSolución, ↑num: N) variables L: ListaComponentes inicio si EsSolución (X) entonces num num+1 EscribeSolución (X) en otro caso L Candidatos (X) mientras ¬Vacía (L) hacer X[i + 1] Cabeza (L); L Resto (L) BacktrackingEnum (X, num) finmientras finsi fin
  • 11. La técnica de Ramificación y poda o conocida en ingles como Branch & Bound se deriva del Backtracking, generalmente se interpreta como un árbol de soluciones en la cual cada rama nos lleva a una posible solución posterior a la actual. Debemos tomar en cuenta que la característica que diferencia esta técnica con respecto a otras anteriores es que el algoritmo se ocupa de detectar en qué ramificación las soluciones dadas ya no están siendo óptimas, para podar así como su nombre lo indica esa rama del árbol que no nos está siendo de utilidad y no seguir malgastando recursos y procesos en casos que se alejan de la solución óptima. La meta general es encontrar el valor mínimo de una función f(x) donde fijamos x rangos sobre un determinado conjunto S de posibles soluciones.