SlideShare una empresa de Scribd logo
1 de 46
Búsqueda con retroceso ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Búsqueda con retroceso:  Introducción ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Búsqueda con retroceso:  Introducción
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Búsqueda con retroceso:  Introducción
[object Object],[object Object],Búsqueda con retroceso:  Introducción 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Búsqueda con retroceso:  Introducción 64 8        4 . 426 . 165 . 368
[object Object],[object Object],[object Object],Búsqueda con retroceso:  Introducción
Búsqueda con retroceso:  Introducción algoritmo  BackTracking( ent  k:entero;  entsal   X: vector [1..n] de  valor) {Pre: X[1..k-1] es completable}   variable  v:valor para todo  v  en  C i   hacer X[k]:=v; si   completable(X,k)  entonces si  Sol(X,k)  entonces   guardar(X,k) fsi ; si  k<n  entonces   BackTracking(k+1,X) fsi ; fsi fpara La llamada inicial es: ... BackTracking(1,X); ...
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Búsqueda con retroceso:  Introducción
[object Object],[object Object],[object Object],[object Object],Búsqueda con retroceso:  Introducción
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Búsqueda con retroceso:  Introducción
El problema de la suma de subconjuntos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],El problema de la suma de subconjuntos
[object Object],[object Object],[object Object],El problema de la suma de subconjuntos 16 13 12 6 7 8 2 1 x 1 =1 x 2 =2 x 2 =3 x 2 =4 14 15 10 9 3 4 5 x 1 =2 x 1 =3 x 1 =4 11 x 2 =3 x 2 =4 x 2 =4 x 3 =3 x 3 =4 x 3 =4 x 3 =4 x 4 =4
[object Object],[object Object],[object Object],El problema de la suma de subconjuntos 1 x 1 =1 30 31 28 29 24 25 22 23 16 17 14 15 10 11 8 9 26 27 20 21 12 13 6 7 18 19 4 5 2 3 x 1 =0 x 2 =1 x 2 =0 x 2 =1 x 2 =0 x 3 =1 x 3 =0 x 3 =1 x 3 =0 x 3 =1 x 3 =0 x 3 =1 x 3 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],El problema de la suma de subconjuntos
El problema de la suma de subconjuntos algoritmo  sumasub( ent  s,k,r:entero;  entsal  X: vector[1..n]de nat)  {k: siguiente variable a decidir Los w[j] están en orden creciente s=  w[j]*x[j]; r=  w[j] s+w[k]  M; s+  w[i]  M } X[k]:=1; si  s+w[k]=M  entonces  escribir(X[1..k]) sino   si  s+w[k]+w[k+1]  M  entonces   sumasub(s+w[k],k+1,r-w[k],X) fsi fsi si  (s+r-w[k]     M)  y  (s+w[k+1]    M)  entonces   X[k]:=0; sumasub(s,k+1,r-w[k],X) fsi fin
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],El problema de la suma de subconjuntos ... sumasub(0,1,  w[i])  ...
El problema de la suma de subconjuntos ,[object Object],[object Object],[object Object],[object Object],15,5,33 12,6,18 13,6,18 0,4,46 0,5,33 13,5,33 12,5,33 12,4,46 0,3,58 10,5,33 10,4,46 10,3,58 0,2,68 20,6,18 5,5,33 5,4,46 17,4,46 5,3,58 15,4,46 27,4,46 15,3,58 5,2,68 0,1,73 A C B x[1]=1 x[2]=1 x[3]=1 x[3]=0 x[4]=0 x[5]=1 x[2]=0 x[3]=1 x[3]=0 x[4]=1 x[4]=0 x[5]=1
Coloreado de grafos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Coloreado de grafos 1 2 3 4 5 5 4 3 1 2
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Coloreado de grafos x[1]=1 x[1]=2 x[1]=3 x[2]=1 x[2]=2 x[2]=3 x[3]=1 x[3] =2 x[3]= 3
Coloreado de grafos algoritmo  m_col( ent  k:entero;  entsal  X:vector[1..n]de nat) {Se usa una variable global g de tipo grafo.} para  v:=1..m  hacer X[k]:=v si  completable(X,k)  entonces si  k=n  entonces  escribir(X) sino  m_col(k+1,X) fsi fsi fpara fin funcion  Completable( entsal  x:sol; ent  k:entero)  variables  b:booleano; j:entero b:=verdad; j:=1; mientras  (j<k)    b  hacer si  g[k,j]  y  (x[k]=x[j])  entonces   b:=falso sino  j:=j+1 fsi fmientras retorna (b)
Ciclos hamiltonianos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],Ciclos hamiltonianos 8 1 2 3 4 5 6 7 5 1 2 3 4
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Ciclos hamiltonianos
[object Object],[object Object],Ciclos hamiltonianos algoritmo  hamiltoniano( ent  k:entero; entsal  X:vector[1..n] de nat) {Se usa una variable global g de tipo grafo.} para  v:=1..n  hacer X[k]:=v; si  completable(k,X)  entonces si  k=n  entonces escribir(X) sino  hamiltoniano(k+1,X) fsi fsi fpara funcion  completable( ent  k:entero; ent  X:vector[1..n] de nat) b:=g[X[k-1],X[k]]; para  i:=1..k-1  mientras  b  hacer si  X[i]=X[k]  entonces  b:=falso  fsi fpara si  k=n      g[X[n],X[1]]  entonces b:=falso   fsi retorna  b x[1]:=1; hamiltoniano(2,x);
Atravesar un laberinto ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],Atravesar un laberinto N M N N N N N N N N N N N N N N N N N N M M M M M M M M M M M M M M M M M N M N N M < < < < < < <
[object Object],[object Object],Atravesar un laberinto tipos   casilla = (libre,pared,camino,imposible)  laberinto =  vector [1..n,1..n]  de  casilla funcion  HayCamino( ent  x,y:entero; entsal  lab:laberinto) {Pre: Hemos encontrado un camino desde (1,1) hasta (x,y). Post: Devuelve cierto ssi se puede extender hasta (n,n)} ... HayCamino(1,1,lab) ...
Atravesar un laberinto funcion  HayCamino( ent  x,y:entero; entsal  lab:laberinto) {devuelve cierto ssi existe camino} si  (x<1)  (x>n)  (y<1)  (y>n)    lab[x,y]  libre  entonces   devuelve  falso sino lab[x,y]:=camino; si  (x=n)  (y=n)  entonces   escribir(lab); devuelve  cierto; sino b:= HayCamino(x+1,y,lab)     HayCamino(x,y+1,lab)   HayCamino(x-1,y,lab)   HayCamino(x,y-1,lab); si    b  entonces   lab[x,y]:= imposible; fsi devuelve  b; fsi fsi fin
El problema de la mochila 0-1 ,[object Object],[object Object],[object Object],[object Object],[object Object]
[object Object],[object Object],[object Object],El problema de la mochila 0-1 Elegimos ésta última representación. 1 x 1 =0 5 6 8 9 12 13 15 16 20 21 23 24 27 28 30 31 4 7 11 14 19 22 26 29 3 10 18 25 2 17 x 1 =1 x 2 =0 x 2 =1 x 2 =0 x 2 =1 x 3 =0 x 3 =1 x 3 =0 x 3 =1 x 3 =0 x 3 =1 x 3 =0 x 3 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1 x 4 =0 x 4 =1
[object Object],[object Object],[object Object],El problema de la mochila 0-1
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],El problema de la mochila 0-1
El problema de la mochila 0-1 función  cota(benef,peso:vectReal; cap,ben:real; k:entero)  devuelve  real {cap=capacidad aún libre de la mochila; ben=beneficio actual; k=índice del primer objeto a considerar} principio si  k>n  or  cap=0.0 entonces   devuelve  ben sino si  peso[k]>cap  entonces dev  ben+cap/peso[k]*benef[k] sino   dev  cota(benef,peso,cap-peso[k], ben+benef[k],k+1) fsi fsi fin tipo  vectReal= vector [1..n]  de  real {Pre:   i  1..n:peso[i]>0, benef[i]>0,   i  1..n-1:benef[i]/peso[i]  benef[i+1]/peso[i+1]}
El problema de la mochila 0-1 tipo  solución= vector [1..n]  de  0..1 {variables globales:  benef,peso:vectReal; cap:real} algoritmo  búsqueda( ent  solAct:solución; ent  benAct,pesAct:real; ent  k:entero; e/s  sol:solución; e/s  ben:real) para  v:=1  hasta  0  hacer solAct[k]:=v; benAct:=benAct+v*benef[k]; pesAct:=pesAct+v*peso[k]; si  pesAct  cap     ben<cota(benef,peso, cap-pesAct,benAct,k+1)  entonces si  k=n  entonces   si  benAct>ben  entonces sol:=solAct; ben:=benAct fsi sino  búsqueda(solAct,benAct,pesAct, k+1,sol,ben) fsi fsi fpara fin
[object Object],[object Object],[object Object],[object Object],[object Object],El problema de la mochila 0-1 algoritmo  mochila01( ent  benef,peso:vectReal; ent  cap:real; sal  sol:solución; sal  ben:real) variables  obj:entero; solAct:solución principio ben:=0.0; búsqueda(solAct,0.0,0.0,1,sol,ben) fin
[object Object],[object Object],[object Object],[object Object],[object Object],El problema de la mochila 0-1 89 139 99 149 101 151 109 159 66 106 56 96 33 63 68 108 35 65 12 32 1 11 164.88 155.11 157.44 159.76 154.88 160.22 157.55 157.11 162.44 164.66 163.81 139 149 151 159 161.63 160.18 158 159.79 159.33 157.63 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 162 0 0 1 0 ben=159 sol=(1,1,1,0,1,1,0,0)
[object Object],[object Object],[object Object],[object Object],[object Object],El problema de la mochila 0-1
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Backtracking genérico para problemas de optimización
Backtracking genérico para problemas de optimización algoritmo  BackTracking( ent  k:entero;  entsal   X: vector [1..n] de  valor) {Pre: X[1..k-1] es completable, c’(X,k-1)<MS}   para todo  v  en  C i   hacer X[k]:=v; si  (completable(X,k)   c’(X,k)<MS)  entonces si  Sol(X,k)  entonces   MejorSol:= X; MS:= Coste(X) fsi ; si  k<n  entonces   BackTracking(k+1,X) fsi ; fsi fpara
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Mejoras al esquema de Backtracking
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Mejoras al esquema de Backtracking
N- reinas algoritmo  n-reinas( ent  k:entero; ent  L:dominios;  entsal  X:vector[1..n]de nat) {k: numero de variables asignadas, X: asignación actual L: valores compatibles con la  asignación actual} L2:=L i:=Seleccionar_Variable(X,L); {selección arbitraria} para  v    L[i]  hacer  {orden arbitrario} X[i]:=v; si  anticipación(X,i,v,L2)  entonces si  k=n  entonces  escribir(X) sino  n-reinas(k+1,L2,X) fsi fsi L2:=L;  fpara X[i]:=0; fin
[object Object],[object Object],[object Object],N- reinas funcion  anticipacion( ent  X:sol; ent  i,v:entero;  entsal  L2:dominios)  variables  b:booleano; j:entero b:=cierto; j:=1; mientras  (j<n+1)    b  hacer si  X[j]=0  entonces para  u  L[j]  hacer  si  u=v    |i-j|=|u-v|  entonces borrar(L[j],v) fpara b:=falso sino  j:=j+1 fsi fmientras retorna (b)

Más contenido relacionado

La actualidad más candente

Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Mayra Villanueva
 
Backtracking (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)jessenmanuel
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidadrezzaca
 
Proyectos de bases de datos
Proyectos de bases de datosProyectos de bases de datos
Proyectos de bases de datosDavid Arroyo
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasJosé Antonio Sandoval Acosta
 
Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Stalin Eduardo Tusa Vitar
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensambladoreveTalavera
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosMiguel Rodríguez
 
Prolog ejercicios resueltos
Prolog ejercicios resueltosProlog ejercicios resueltos
Prolog ejercicios resueltosJansel M
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento internoFernando Solis
 
Cerradura
CerraduraCerradura
Cerradurarezzaca
 

La actualidad más candente (20)

Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.Problema de la ocho reinas. Implementación en Prolog.
Problema de la ocho reinas. Implementación en Prolog.
 
Backtracking (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)
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Estructura datos pilas y colas
Estructura datos pilas y colasEstructura datos pilas y colas
Estructura datos pilas y colas
 
Funciones recursivas
Funciones recursivasFunciones recursivas
Funciones recursivas
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 
Proyectos de bases de datos
Proyectos de bases de datosProyectos de bases de datos
Proyectos de bases de datos
 
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y libreriasTópicos Avanzados de Programación - Unidad 2 componentes y librerias
Tópicos Avanzados de Programación - Unidad 2 componentes y librerias
 
Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)Inserción,borrado y búsqueda en Arboles Binarios(Java)
Inserción,borrado y búsqueda en Arboles Binarios(Java)
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
Estructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafosEstructura de Datos - árboles y grafos
Estructura de Datos - árboles y grafos
 
Prolog ejercicios resueltos
Prolog ejercicios resueltosProlog ejercicios resueltos
Prolog ejercicios resueltos
 
Búsqueda A*
Búsqueda A*Búsqueda A*
Búsqueda A*
 
Problema 8 puzzle
Problema 8 puzzleProblema 8 puzzle
Problema 8 puzzle
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
control de concurrencia
control de concurrenciacontrol de concurrencia
control de concurrencia
 
3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno3. algoritmos de ordenamiento interno
3. algoritmos de ordenamiento interno
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Cerradura
CerraduraCerradura
Cerradura
 

Similar a Back Tracking

SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS jacqueline llamuca
 
Algoritmos de vuelta atrás
Algoritmos de vuelta atrásAlgoritmos de vuelta atrás
Algoritmos de vuelta atrásBeat Winehouse
 
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...J. Rogelio Yoyontzin Perez Buendia
 
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdfPRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdfpumadesalvador
 
Presentación de Álgebra lineal Ingenia UNI
Presentación de Álgebra lineal Ingenia UNIPresentación de Álgebra lineal Ingenia UNI
Presentación de Álgebra lineal Ingenia UNIKevinMartnez508420
 
Practica tres Física
Practica tres Física Practica tres Física
Practica tres Física Leyo Herdoiza
 
Sistema de Ecuaciones diferenciales
Sistema de Ecuaciones diferencialesSistema de Ecuaciones diferenciales
Sistema de Ecuaciones diferencialesKike Prieto
 
Soluciones por series
Soluciones por seriesSoluciones por series
Soluciones por seriesKike Prieto
 
Metodos de eliminacion gaussiana
Metodos de eliminacion gaussianaMetodos de eliminacion gaussiana
Metodos de eliminacion gaussianawilfredguedez
 
Solución de ecuaciones de primer orden por series.pptx
Solución de ecuaciones de primer orden por series.pptxSolución de ecuaciones de primer orden por series.pptx
Solución de ecuaciones de primer orden por series.pptxsopitamani1
 
Estructuras algebraicas, vectores y espacios vectoriales(4)
Estructuras algebraicas, vectores y espacios vectoriales(4)Estructuras algebraicas, vectores y espacios vectoriales(4)
Estructuras algebraicas, vectores y espacios vectoriales(4)Jorge Garcia
 

Similar a Back Tracking (20)

Sistema de ecuaciones lineales
Sistema de ecuaciones linealesSistema de ecuaciones lineales
Sistema de ecuaciones lineales
 
SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS SISTEMA DE ECUACIONES CUADRATICAS
SISTEMA DE ECUACIONES CUADRATICAS
 
Algoritmos de vuelta atrás
Algoritmos de vuelta atrásAlgoritmos de vuelta atrás
Algoritmos de vuelta atrás
 
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...
Cuando la Teoría de Números se encuentra con la Geometría Algebraica. Una inv...
 
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdfPRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
PRESENTACION_SISTEMAS_ECUACIONES_NO_LINEALES.pdf
 
Vuelta Atras
Vuelta AtrasVuelta Atras
Vuelta Atras
 
Teorema de fermat
Teorema de fermatTeorema de fermat
Teorema de fermat
 
Funcion cuadratic a
Funcion cuadratic aFuncion cuadratic a
Funcion cuadratic a
 
Ecuaciones Diferenciales Ordinarias
Ecuaciones Diferenciales OrdinariasEcuaciones Diferenciales Ordinarias
Ecuaciones Diferenciales Ordinarias
 
Presentación de Álgebra lineal Ingenia UNI
Presentación de Álgebra lineal Ingenia UNIPresentación de Álgebra lineal Ingenia UNI
Presentación de Álgebra lineal Ingenia UNI
 
Mr1i 753-2007-2
Mr1i 753-2007-2Mr1i 753-2007-2
Mr1i 753-2007-2
 
Practica tres Física
Practica tres Física Practica tres Física
Practica tres Física
 
Metodos deber
Metodos deberMetodos deber
Metodos deber
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Sistema de Ecuaciones diferenciales
Sistema de Ecuaciones diferencialesSistema de Ecuaciones diferenciales
Sistema de Ecuaciones diferenciales
 
Soluciones por series
Soluciones por seriesSoluciones por series
Soluciones por series
 
Teorema de kantorovich
Teorema de kantorovichTeorema de kantorovich
Teorema de kantorovich
 
Metodos de eliminacion gaussiana
Metodos de eliminacion gaussianaMetodos de eliminacion gaussiana
Metodos de eliminacion gaussiana
 
Solución de ecuaciones de primer orden por series.pptx
Solución de ecuaciones de primer orden por series.pptxSolución de ecuaciones de primer orden por series.pptx
Solución de ecuaciones de primer orden por series.pptx
 
Estructuras algebraicas, vectores y espacios vectoriales(4)
Estructuras algebraicas, vectores y espacios vectoriales(4)Estructuras algebraicas, vectores y espacios vectoriales(4)
Estructuras algebraicas, vectores y espacios vectoriales(4)
 

Más de Salvador Fernández Fernández

Ejemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónEjemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónSalvador Fernández Fernández
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John DaniSalvador Fernández Fernández
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John DaniSalvador Fernández Fernández
 

Más de Salvador Fernández Fernández (20)

Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Web services
Web servicesWeb services
Web services
 
Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)Ejemplo Base de Datos SQLite (Android)
Ejemplo Base de Datos SQLite (Android)
 
Práctica nominas
Práctica nominasPráctica nominas
Práctica nominas
 
Ejemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra funciónEjemplo de paso de funciones como parámetros a otra función
Ejemplo de paso de funciones como parámetros a otra función
 
Ejemplo usopunteros
Ejemplo usopunterosEjemplo usopunteros
Ejemplo usopunteros
 
Solucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectoresSolucion ejercicios punteros cadenas-vectores
Solucion ejercicios punteros cadenas-vectores
 
Ejercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectoresEjercicios punteros cadenas-vectores
Ejercicios punteros cadenas-vectores
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Introducción a Enterprise Java Beans
Introducción a Enterprise Java BeansIntroducción a Enterprise Java Beans
Introducción a Enterprise Java Beans
 
Colorear fotografias en blanco y negro
Colorear fotografias en blanco y negroColorear fotografias en blanco y negro
Colorear fotografias en blanco y negro
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
 
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
10 mentiras con las que siempre engañan a los diseñadores gráficos por John Dani
 
Wallpaper natural
Wallpaper naturalWallpaper natural
Wallpaper natural
 
SQL
SQLSQL
SQL
 
Cableado Estructurado de Red
Cableado Estructurado de RedCableado Estructurado de Red
Cableado Estructurado de Red
 
Redes De Computadores UOC
Redes De Computadores UOCRedes De Computadores UOC
Redes De Computadores UOC
 
Fundamentos Divide Y Venceras
Fundamentos Divide Y VencerasFundamentos Divide Y Venceras
Fundamentos Divide Y Venceras
 
Divide y Vencerás
Divide y VencerásDivide y Vencerás
Divide y Vencerás
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 

Back Tracking

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. Búsqueda con retroceso: Introducción algoritmo BackTracking( ent k:entero; entsal X: vector [1..n] de valor) {Pre: X[1..k-1] es completable}   variable v:valor para todo v en C i hacer X[k]:=v; si completable(X,k) entonces si Sol(X,k) entonces guardar(X,k) fsi ; si k<n entonces BackTracking(k+1,X) fsi ; fsi fpara La llamada inicial es: ... BackTracking(1,X); ...
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17. El problema de la suma de subconjuntos algoritmo sumasub( ent s,k,r:entero; entsal X: vector[1..n]de nat) {k: siguiente variable a decidir Los w[j] están en orden creciente s= w[j]*x[j]; r= w[j] s+w[k]  M; s+ w[i]  M } X[k]:=1; si s+w[k]=M entonces escribir(X[1..k]) sino si s+w[k]+w[k+1]  M entonces sumasub(s+w[k],k+1,r-w[k],X) fsi fsi si (s+r-w[k]  M) y (s+w[k+1]  M) entonces X[k]:=0; sumasub(s,k+1,r-w[k],X) fsi fin
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. Coloreado de grafos algoritmo m_col( ent k:entero; entsal X:vector[1..n]de nat) {Se usa una variable global g de tipo grafo.} para v:=1..m hacer X[k]:=v si completable(X,k) entonces si k=n entonces escribir(X) sino m_col(k+1,X) fsi fsi fpara fin funcion Completable( entsal x:sol; ent k:entero) variables b:booleano; j:entero b:=verdad; j:=1; mientras (j<k)  b hacer si g[k,j] y (x[k]=x[j]) entonces b:=falso sino j:=j+1 fsi fmientras retorna (b)
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31. Atravesar un laberinto funcion HayCamino( ent x,y:entero; entsal lab:laberinto) {devuelve cierto ssi existe camino} si (x<1)  (x>n)  (y<1)  (y>n)  lab[x,y]  libre entonces devuelve falso sino lab[x,y]:=camino; si (x=n)  (y=n) entonces escribir(lab); devuelve cierto; sino b:= HayCamino(x+1,y,lab)  HayCamino(x,y+1,lab)  HayCamino(x-1,y,lab)  HayCamino(x,y-1,lab); si  b entonces lab[x,y]:= imposible; fsi devuelve b; fsi fsi fin
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. El problema de la mochila 0-1 función cota(benef,peso:vectReal; cap,ben:real; k:entero) devuelve real {cap=capacidad aún libre de la mochila; ben=beneficio actual; k=índice del primer objeto a considerar} principio si k>n or cap=0.0 entonces devuelve ben sino si peso[k]>cap entonces dev ben+cap/peso[k]*benef[k] sino dev cota(benef,peso,cap-peso[k], ben+benef[k],k+1) fsi fsi fin tipo vectReal= vector [1..n] de real {Pre:  i  1..n:peso[i]>0, benef[i]>0,  i  1..n-1:benef[i]/peso[i]  benef[i+1]/peso[i+1]}
  • 37. El problema de la mochila 0-1 tipo solución= vector [1..n] de 0..1 {variables globales: benef,peso:vectReal; cap:real} algoritmo búsqueda( ent solAct:solución; ent benAct,pesAct:real; ent k:entero; e/s sol:solución; e/s ben:real) para v:=1 hasta 0 hacer solAct[k]:=v; benAct:=benAct+v*benef[k]; pesAct:=pesAct+v*peso[k]; si pesAct  cap  ben<cota(benef,peso, cap-pesAct,benAct,k+1) entonces si k=n entonces si benAct>ben entonces sol:=solAct; ben:=benAct fsi sino búsqueda(solAct,benAct,pesAct, k+1,sol,ben) fsi fsi fpara fin
  • 38.
  • 39.
  • 40.
  • 41.
  • 42. Backtracking genérico para problemas de optimización algoritmo BackTracking( ent k:entero; entsal X: vector [1..n] de valor) {Pre: X[1..k-1] es completable, c’(X,k-1)<MS}   para todo v en C i hacer X[k]:=v; si (completable(X,k)  c’(X,k)<MS) entonces si Sol(X,k) entonces MejorSol:= X; MS:= Coste(X) fsi ; si k<n entonces BackTracking(k+1,X) fsi ; fsi fpara
  • 43.
  • 44.
  • 45. N- reinas algoritmo n-reinas( ent k:entero; ent L:dominios; entsal X:vector[1..n]de nat) {k: numero de variables asignadas, X: asignación actual L: valores compatibles con la asignación actual} L2:=L i:=Seleccionar_Variable(X,L); {selección arbitraria} para v  L[i] hacer {orden arbitrario} X[i]:=v; si anticipación(X,i,v,L2) entonces si k=n entonces escribir(X) sino n-reinas(k+1,L2,X) fsi fsi L2:=L; fpara X[i]:=0; fin
  • 46.