SlideShare una empresa de Scribd logo
Algoritmos de BúsquedaAlgoritmos de Búsqueda
“Backtracking y Branch and Bound”“Backtracking y Branch and Bound”
Antonio Paredes RisueñoAntonio Paredes Risueño
Índice

 Backtracking
 Backtracking en paralelo
 Branch and Bound
 Branch and Bound paralelo
Introducción
Introducción
 Los algoritmos de Backtracking y Branch and Bound se
suelen aplicar en la resolución de un gran número de
problemas, muy especialmente en los de optimización.
 Estos algoritmos realizan una búsqueda exhaustiva y
sistemática en el espacio de soluciones del problema.
 Suelen ser muy ineficientes.
Introducción
 Se utilizan para resolver problemas para los que no existe un
algoritmo eficiente para resolverlos.
 Mediante la programación paralela se intentará reducir el
tiempo de ejecución de estos algoritmos
Índice
 Introducción

 Backtracking en paralelo
 Branch and Bound
 Branch and Bound paralelo
Backtracking
Backtracking
 Técnica general de resolución de problemas, que suele
aplicarse sobre todo a juegos y problemas de óptimización.
 Realiza una búsqueda exhaustiva y sistemática en el espacio
de soluciones del problema.
 La solución de un problema de backtracking se puede
expresar como una tupla (x1,x2,…,xn), que satisface una
restricciones R(x1,x2,…,xn) y a veces optimizando una función
objetivo.
Backtracking
 En cada momento el algoritmo se encontrará en un cierto
nivel k, con una solución parcial (x1,x2,…,xk) (con k<=n).
 Si puede añadirse un elemento xk+1 a la solución parcial se avanza
al nivel k+1.
 Si no se prueban otros valores válidos para xk.
 Si no existe ningún valor que sea válido por probar, se retrocede al
nivel anterior k-1.
 Se continua con este proceso hasta que la solución parcial sea una
solución del problema o hasta que no queden más posibilidades
por probar (en el caso de que no se encuentre ninguna solución o
se busquen todas las soluciones del problema).
Backtracking
 En definitiva, el algoritmo realiza una búsqueda en
profundidad en el árbol de soluciones del problema.
x1
x2
x3
Backtracking
 En definitiva, el algoritmo realiza una búsqueda en
profundidad en el árbol de soluciones del problema.
1
2 10 14
3 6 7 11 12 15 16
4 5 8 9 13 17 18
x1
x2
x3
Backtracking. Complejidad
 Por realizar una búsqueda exhaustiva en el espacio de
soluciones del problema, los algoritmos de backtracking son
bastante ineficientes.
 En general, se tienen tiempos con órdenes de complejidad
factoriales o exponenciales.
 Por esto, los algoritmos de backtracking se utilizan en
problemas para los que no existen un algoritmo eficiente
que los resuelva.
Backtracking. Ejemplo
Problema N-Reinas
 El problema de las N-Reinas consiste en colocar n reinas en
un tablero de ajedrez de tamaño n*n de forma la reinas no se
amenacen según las normas del ajedrez. Se busca encontrar
una solución o todas las soluciones posibles.
 Este problema puede resolverse utilizando un esquema de
backtracking.
 Cualquier solución del problema estará formada por una
n-tupla (x1,x2,…,xn), dónde cada xi indica la columna donde
la reina de la fila i-ésima es colocada.
 Las restricciones para este problema consisten en que dos
reinas no pueden colocarse en la misma fila, ni en la misma
columna ni en la misma diagonal.
 Por ejemplo, el problema de las 4-Reinas tiene dos posibles
soluciones: [2,4,1,3] y [3,1,4,2].
Backtracking. Ejemplo
Problema N-Reinas
Backtracking. Ejemplo
Problema N-Reinas
1
2
3
4
5
6
7
8
9
11
10
12
13
14
15
16
17
Soluciones
Backtracking. Ejemplo
Problema N-Reinas
Índice
 Introducción
 Backtracking

 Branch and Bound
 Branch and Bound paralelo
Backtracking paralelo
Backtracking paralelo
 Esquema no puramente paralelo, es un esquema utilizado en
programación secuencial que se intenta paralelizar.
 Esto supone que la ganancia de tiempo no sea tan elevada
como se pudiera esperar a priori.
 Se intenta distribuir el espacio de búsqueda entre los
distintos procesadores, de forma que cada uno busque la
solución del problema en un subespacio de soluciones
distinto.
 Así se exploran varias ramas del árbol de soluciones al
mismo tiempo por distintos procesadores.
 Aumentan las posibilidades de encontrar la solución del
problema en menor tiempo.
Backtracking paralelo
Backtracking paralelo
P0
P1
Backtracking paralelo
 Un factor crítico a la hora de formular un algoritmo de
backtracking en paralelo es cómo se realizará la distribución
del espacio de búsqueda entre los distintos procesadores.
 Dos alternativas:
 Asignación estática
 Asignación dinámica
 Un procesador expande el nodo raíz y genera varios nodos.
 A cada procesador se le asigna un número de estos nodos.
 Así se divide el espacio de búsqueda global entre los
distintos procesadores.
 Cada procesador comienza a buscar la solución en el
espacio de búsqueda que le corresponda, siguiendo el
proceso normal de backtracking.
 No se necesitan comunicaciones entre procesos.
Backtracking Paralelo
Asignación estática
 Problema: No se sabe a priori si se divide el espacio de
búsqueda equitativamente entre los distintos
procesadores.
 Puede haber desequilibrio entre la carga de trabajo de los
procesadores.
 A un procesador puede que se le asigne poco trabajo y
este la mayor parte de tiempo inactivo.
Backtracking Paralelo
Asignación estática
P0 P1
Backtracking Paralelo
Asignación estática
P0
P1
Backtracking Paralelo
Asignación estática
 Cada procesador trabaja en una parte del espacio de
búsqueda.
 Cuando un procesador termina de trabajar, solicita más
trabajo a otro procesador que tiene más trabajo.
 Proceso:
 Cada procesador dispone una pila en su espacio local para
guardar nodos no expandidos.
 Cuando un procesador expande un nodo, los nuevos nodos
que se crean se introducen en la pila.
 Cuando la pila de un procesador esta vacía, el procesador
solicita nodos de la pila de otro procesador.
Backtracking Paralelo
Asignación dinámica
 Al principio, el espacio total de búsqueda es asignado a un
procesador y a los demás procesadores no se les asigna
ningún trabajo.
 Ese procesador será el encargado de distribuir
inicialmente el trabajo cuando los demás procesadores se
lo soliciten.
 A los procesos que envían trabajo se les denomina
donadores y a los que lo solicitan y lo reciben se les
denomina receptores.
Backtracking Paralelo
Asignación dinámica
 Un procesador puede estar en 2 estados:
 Activo: Esta realizando algún trabajo.
 Inactivo: Al procesador no le queda ningún nodo por explorar
en su pila y esta solicitando trabajo a otros procesadores.
 Estado inactivo:
 El procesador selecciona un procesador donador y le envía
una petición de trabajo.
 Si recibe trabajo del donador, se activa y comienza a trabajar.
 Si recibe un mensaje de reject (el procesador donador esta
inactivo), selecciona a otro procesador donador para enviarle
una petición de trabajo.
Backtracking Paralelo
Asignación dinámica
 Estado inactivo:
 Este proceso se repite hasta que el procesador recibe trabajo
del donador o hasta que todos los procesadores entran en
estado inactivo.
Backtracking Paralelo
Asignación dinámica
 Estado activo:
 El procesador realiza una cantidad de trabajo fijo (expande un
nº determinado de nodos).
 Cuando termina de realizar el trabajo, chequea si existen
peticiones de trabajo a cargo de los demás procesadores.
 Si recibe alguna petición de trabajo, el procesador donador
particiona en dos partes su pila de nodos, y envía una parte al
procesador que realizo la petición.
 Cuando el procesador ha recorrido todo su espacio de
búsqueda (su pila esta vacía), entra en estado inactivo.
Backtracking Paralelo
Asignación dinámica
Procesador
Activo
Servicio pendiente de
recibir mensajes
Realizar una cantidad
de trabajo fija
Seleccionar un
procesador y solicitarle
trabajo
Servicio pendiente de
recibir mensajes
Procesador
Inactivo
Termina el
trabajo
disponible
Comienza a
trabajar
Enviar una petición
No existe trabajo
disponible
Backtracking Paralelo
Asignación dinámica
 Cuando un procesador encuentra la solución, envía un
mensaje de broadcast a todos procesadores para estos
paren la búsqueda.
 Si no se recibe este mensaje, el algoritmo terminará cuando
todos los procesos estén en estado inactivo.
Backtracking Paralelo
Asignación dinámica
 Los algoritmos paralelos de búsqueda en un árbol de
soluciones tienen 2 características fundamentales que
determinan su rendimiento:
 La estrategia utilizada para dividir el trabajo de un procesador
cuando éste recibe una petición de trabajo.
 El esquema usado para determinar el procesador donador
cuando un procesador entra en estado inactivo.
Backtracking Paralelo
Estrategia de División del trabajo
 Cuando un procesador donador recibe una petición de
trabajo de otro procesador y tiene nodos su pila, el
procesador donador divide su pila en dos y una de ellas se
envía al proceso que realizo la petición.
 Si se envía poco trabajo, el receptor rápidamente pasa a
estar en estado inactivo.
 Si se envía demasiado trabajo, el donador entrará
rápidamente en estado inactivo.
 Lo ideal sería dividir la pila en dos partes iguales de modo
que el espacio de búsqueda representado por cada una sea
el mismo.
 A este método se le llama “División por la mitad”.
 Pero la dificultad reside en estimar el tamaño que tendrán
los subarboles asociados a cada uno de los nodos que se
encuentran en la pila.
 Normalmente los nodos cercanos al fondo de la pila (nodos
con profundidad cercana al nodo raíz del procesador)
tienen más posibilidades de generar árboles de mayor
tamaño.
 Los nodos más cercanos al tope de la pila (nodos que están
a mayor profundidad) tienen más posibilidades de generar
árboles de menor tamaño.
Backtracking Paralelo
Estrategia división de trabajo
 Para evitar mandar cantidades pequeñas de trabajo, los
nodos de la pila que están más allá de una determinada
profundidad no son enviados.
 A esta profundidad se le llama “cota de profundidad”.
 Algunas estrategias posible para la división del trabajo son:
 Enviar nodos cercanos al fondo de la pila
 Enviar nodos cercanos a la cota de profundidad.
 Enviar la mitad de los nodos que están entre el fondo de la
pila y la cota de profundidad.
 La idoneidad de una estrategia u otra dependerá de la
naturalidad del espacio de búsqueda.
Backtracking Paralelo
Estrategia división de trabajo
Cota de
profundidad
1
2 3
4
6 7
5
8
12 13
9
10 11
14
3
5
7
9
11
13
14
Pila
Backtracking Paralelo
Estrategia división de trabajo
 Los esquemas de balanceo de carga se utilizan para decidir
que procesador donador se elige cuando un procesador
entra en estado inactivo.
 Algunos esquemas posibles son los siguientes:
 Round Robin Asíncrono
 Round Robin Global
 Selección aleatoria
Backtracking Paralelo
Esquemas de balanceo de carga
Round Robin Asíncrono
 Cada procesador mantiene una variable local llamada
“target”.
 Cuando un procesador termina de trabajar, usa el valor de
su variable “target” para determinar el procesador donador
al que enviar la petición de trabajo.
 Cada vez que se envía una petición, se incrementa en una
unidad el valor de la variable “target” del procesador:
target = ((target+1) modulo p)
 El valor inicial de target será:
target0 = ((nº procesador+1) modulo p)
Round Robin Global
 Existe una única variable “target” almacenada en el
procesador P0.
 Cuando un procesador necesita trabajo, solicita y recibe el
valor de la variable target de P0.
 Una vez que se sabe cual es el procesador donador, el
procesador le envía una petición de trabajo.
 Luego, P0 incrementa la variable target antes de responder a
otra petición.
target = ((target+1) modulo p)
Round Robin Global
 Este esquema garantiza que sucesivas peticiones de
trabajo se distribuyen uniformemente entre todos los
procesadores.
 La desventaja principal de este esquema es que el
procesador P0 debe gestionar todas las peticiones de
acceso a la variable target, y esto puede convertirse en un
cuello de botella.
Selección aleatoria
 Es el esquema más simple de todos
 Cuando un procesador entra en estado inactivo, se elige un
procesador al azar.
 Cada procesador tiene la misma probabilidad de ser
seleccionado como donador.
 Así se asegura que las peticiones se distribuyan
uniformemente.
 Cuando un procesador encuentra una solución del
problema se envía un mensaje de broadcast a todos los
procesadores para indicarle que terminen.
 Pero cuando no se encuentra ninguna solución. ¿Cómo
detectar cuando termina el proceso de búsqueda?
 A continuación se describen dos algoritmos para detectar la
terminación de la búsqueda.
 Algoritmo de terminación de Dijkstra´s.
 Algoritmo de terminación basado en árbol.
Backtracking Paralelo
Detección de terminación
Algoritmo de terminación de Dijkstra´s
 Los procesadores se organizan en un anillo lógico y se irán
pasando un token.
 Un procesador puede estar en dos estados: blanco o negro.
 Un token también puede estar en dos estados: blanco o
negro.
 Inicialmente todos los procesadores están en estado
blanco.
Algoritmo de terminación de Dijkstra´s
 El algoritmo es el siguiente:
 Cuando P0 esta inactivo, el procesador crea un token y envía
un token blanco al procesador P1.
 Si el procesador Pi envía trabajo al procesador Pj (i>j), el
procesador Pi cambia a estado negro.
 Si el procesador Pi tiene el token y esta inactivo, pasa el token
al Pi+1. Si Pi está en estado negro, el color del token se
establecerá a negro antes de pasarlo a Pi+1. Si Pi esta en
estado blanco, el token se pasa sin cambiarlo.
 Cuando Pi pasa el token a Pi+1 pasa a estado blanco.
 El algoritmo termina cuando a P0 le llega un token blanco.
Algoritmo de terminación basado en árbol
 Se asocia un peso a cada procesador.
 Inicialmente, P0 tiene todo el trabajo y se le asocia un peso
de 1.
 Cuando Pi particiona y manda trabajo a otro procesador, Pi
se queda con la mitad del peso y la otra mitad se la envía al
otro procesador.
 Cuando un procesador termina su trabajo, se devuelve el
peso al procesador del que se recibió el trabajo.
 El algoritmo termina cuando el peso del procesador P0
vuelve a ser 1.
Algoritmo de terminación basado en árbol
w0=0.5
w1=0.5
Algoritmo de terminación basado en árbol
w0=0.5
w1=0.5
w0=0.5
w1=0.25
w2=0.25
Algoritmo de terminación basado en árbol
w0=0.5
w1=0.5
w0=0.5
w1=0.25
w2=0.25
w1=0.25
w2=0.25
w0=0.25
w3=0.25
Algoritmo de terminación basado en árbol
w0=0.5
w1=0.5
w0=0.5
w1=0.25
w2=0.25
w1=0.25
w2=0.25
w0=0.25
w3=0.25
w1=0.5
w0=0.25
w3=0.25
Algoritmo de terminación basado en árbol
w0=0.5
w1=0.5
w0=0.5
w1=0.25
w2=0.25
w1=0.25
w2=0.25
w0=0.25
w3=0.25
w1=0.5
w0=0.25
w3=0.25 w1=0.5
w0=0.5
Algoritmo de terminación basado en árbol
w0=0.5
w1=0.5
w0=0.5
w1=0.25
w2=0.25
w1=0.25
w2=0.25
w0=0.25
w3=0.25
w1=0.5
w0=0.25
w3=0.25 w1=0.5
w0=0.5
w0=1
Índice
 Introducción
 Backtracking
 Backtracking paralelo

 Branch and Bound paralelo
Branch and Bound
Branch and Bound
 Técnica similar a Backtracking
 Suele utilizarse en problemas de optimización.
 Este esquema puede verse como una mejora del esquema
de backtracking.
 Al igual que en backtracking, el algoritmo realiza una
búsqueda sistemática en un árbol de soluciones.
Branch and Bound
 Pero Branch and Bound añade dos características nuevas:
 Estrategia de ramificación: La búsqueda se guiará por
estimaciones de beneficio que se harán en cada nodo.
 Estrategia de poda: Para eliminar nodos que no lleven a a la
solución óptima. Estimación de cotas de beneficio en cada
nodo.
 Para cada nodo tendremos la siguiente información:
 Cota inferior (CI) y cota superior (CS) de beneficio que se
puede obtener a partir del nodo. Determinan cuando se puede
realizar una poda.
 Estimación del beneficio que se puede encontrar a partir del
nodo. Ayuda a decidir el orden de evaluación de los nodos.
Estrategia de poda
 Suponemos un problema de maximización. Se han recorrido
varios nodos y ha estimado la cota inferior y superior de cada
uno de ellos.
1
2 3
4 5
3 9
2 15 12 25
Estrategia de poda
 El nodo 2 puede podarse, ya que el nodo 5 tiene una cota
inferior mayor que la cota superior del nodo 2.
1
2 3
4 5
3 9
2 15 12 25
x
Estrategia de ramificación
 Se pueden utilizar distintas estrategias para recorrer el árbol
de soluciones. Puede recorrerse en profundidad, en anchura,
según el beneficio estimado,…
 Se utiliza una lista de nodos vivos (contiene nodos generados
y aún no explorados).
 Algoritmo:
 Sacar un nodo de la lista de nodos vivos
 Generar sus descendientes
 Si no se podan, se introducen en la lista de nodos vivos.
Estrategia de ramificación
 ¿Qué criterio se utiliza para seleccionar el nodo que se saca
de la lista de nodos vivos?
 Estrategia FIFO
 Estrategia LIFO
 Estrategia del menor costo
Complejidad
 El tiempo de ejecución depende:
 Número de nodos recorridos.
 Tiempo gastado en cada nodo.
 En el caso promedio se suelen obtener mejoras respecto al
algoritmo de backtracking.
 Pero en el pero caso, el tiempo puede ser peor.
 Se debe buscar un compromiso entre la exactitud de las
cotas y el tiempo utilizado en calcularlas.
Conclusiones
 En general, el esquema de branch and bound suele obtener
mejores resultados que el de backtracking.
 Sigue siendo muy ineficiente.
Índice
 Introducción
 Backtracking
 Backtracking paralelo
 Branch and Bound
 Branch and Bound parelelo
Branch and Bound paralelo
 Al igual que sucedía con backtracking, no es un
esquema puramente paralelo.
 En el proceso secuencial, se necesita información global
para poder hacer la poda de nodos.
 Se puede paralelizar distintos tipos de niveles.
 Tipos de niveles:
 Búsqueda paralela ejecutando el algoritmo con distintos
parámetros sobre el espacio global de búsqueda en varios
procesadores. Cálculo de cotas, de estimaciones, y criterio
selec.
Branch and Bound paralelo
 Tipos de nivel.
 Se paralelizan partes del algoritmo.
La estructura del algoritmo no cambia.
Por ejemplo, se expanden en paralelo los nodos.
 Se divide el espacio de búsqueda entre los procesadores.
De la lista de nodos vivos se asignan nodos distintos a cada
procesador.
La distribución del trabajo puede ser estática o dinámica, del
mismo modo que sucedía con backtracking.
Asignación estática
 A cada procesador se le asigna un número fijo de nodos de la
lista de nodos vivos.
 Los procesos pueden comunicarse la cotas o no.
 Si no se comunican las cotas:
 Se necesitan pocas comunicaciones entre procesos.

Puede que se estudien nodos que se podían haber podado.
 Si se comunican las cotas:
 Se evita que los procesadores estudien nodos innecesarios.

Se necesitan bastantes comunicaciones entre los procesos.
 Además, al asignar los nodos estáticamente puede darse un
desbalanceo de carga de trabajo entre los procesadores.
Asignación dinámica
 Puede utilizarse una bolsa de tareas para asignar los nodos
a los procesos de forma dinámica, como se hacía con
backtracking.
 Pero ahora tenemos la opción de comunicar las cotas.
 Los procesadores toman los nodos y los exploran y
depositan los descendientes de los nodos explorados en la
bolsa de trabajo.
 Existen dos estrategias para depositar los nodos: inmediata
o pospuesta.
Asignación dinámica
 Actualización inmediata
 Cuando se generan los descendientes de un nodo se introducen
de inmediato en la bolsa.
 Muchas comunicaciones.
 Actualización pospuesta
 Cuando se generan los descendientes de un nodo no se
introducen de inmediato en la bolsa, se sigue generado
descendientes a partir de estos. Cada cierto tiempo se
introducen en la bolsa.
 Ventajas: Pueden podarse algunos nodos y no se accede tanto
a la bolsa de tareas.
Asignación dinámica
 Sistema de memoria compartida
 Se tiene una estructura centralizada de donde los
procesadores toman e introducen tareas.
 Sistema de memoria distribuida
 Se tienen bolsas de trabajo en uno o en varios procesadores.
 Las peticiones y el depósito de los trabajos conllevan
comunicaciones.
 Se descentraliza la bolsa de tareas.
 Actualización inmediata o pospuesta.
Asignación dinámica
 Comunicación de cotas:

Si se comunican las cotas con mucha frecuencia, se
podrán podar más nodos pero puede pederse eficiencia al
realizar tantas comunicaciones.

Si no se comunican con mucha frecuencia, no se podarán
tantos nodos pero no habrá tantas comunicaciones.
Asignación dinámica
 Una única bolsa de trabajos
 Mayor contención.
 La bolsa puede convertirse en un cuello de botella.
 Varias bolsas de trabajos
 Aumenta el desbalanceo de las tareas
 Se trata de buscar un compromiso entre el desbalanceo y la
contención.

Más contenido relacionado

La actualidad más candente

Busqueda por profundidad iterativa
Busqueda por profundidad iterativaBusqueda por profundidad iterativa
Busqueda por profundidad iterativa
Israel Calderón de la Cruz
 
Recursividad
RecursividadRecursividad
Recursividad
TAtiizz Villalobos
 
Emulador emu8086
Emulador emu8086Emulador emu8086
Emulador emu8086gabo
 
Protocolo de enrutamiento
Protocolo de enrutamientoProtocolo de enrutamiento
Protocolo de enrutamientoStuart Guzman
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
pepelebu1313
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
Alvaro Enrique Ruano
 
Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
Laura Guadalupe Rosado Hernández
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencialeidy2220
 
Documento de Busqueda Binaria
Documento de Busqueda BinariaDocumento de Busqueda Binaria
Documento de Busqueda Binaria
SanTy BizZle
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
Hugo Arturo Gonzalez Macias
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
deff000001
 
REDES NEURONALES Algoritmos de Aprendizaje
REDES NEURONALES Algoritmos  de AprendizajeREDES NEURONALES Algoritmos  de Aprendizaje
REDES NEURONALES Algoritmos de Aprendizaje
ESCOM
 
Lógica difusa (fuzzy logic)
Lógica difusa (fuzzy logic)Lógica difusa (fuzzy logic)
Lógica difusa (fuzzy logic)
Sergio Hernández Ortega
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda HashBlanca Parra
 
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
 
Resolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicasResolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicas
Carlos Gascón
 
Ejemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivasEjemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivas
Junior Solano de Arco
 

La actualidad más candente (20)

Busqueda por profundidad iterativa
Busqueda por profundidad iterativaBusqueda por profundidad iterativa
Busqueda por profundidad iterativa
 
Recursividad
RecursividadRecursividad
Recursividad
 
Emulador emu8086
Emulador emu8086Emulador emu8086
Emulador emu8086
 
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
 
Protocolo de enrutamiento
Protocolo de enrutamientoProtocolo de enrutamiento
Protocolo de enrutamiento
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
 
Listas de adyacencia
Listas de adyacenciaListas de adyacencia
Listas de adyacencia
 
Replicación con sql server
Replicación con sql serverReplicación con sql server
Replicación con sql server
 
Documento de Busqueda Binaria
Documento de Busqueda BinariaDocumento de Busqueda Binaria
Documento de Busqueda Binaria
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
REDES NEURONALES Algoritmos de Aprendizaje
REDES NEURONALES Algoritmos  de AprendizajeREDES NEURONALES Algoritmos  de Aprendizaje
REDES NEURONALES Algoritmos de Aprendizaje
 
Lógica difusa (fuzzy logic)
Lógica difusa (fuzzy logic)Lógica difusa (fuzzy logic)
Lógica difusa (fuzzy logic)
 
Sumador\Restador
Sumador\RestadorSumador\Restador
Sumador\Restador
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
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)
 
Resolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicasResolución de ejercicios compuertas lógicas
Resolución de ejercicios compuertas lógicas
 
Ejemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivasEjemplos de algoritmos con estructuras repetitivas
Ejemplos de algoritmos con estructuras repetitivas
 

Destacado

Capitulo 9
Capitulo  9Capitulo  9
Clase 03 busquedas a ciegas
Clase 03 busquedas a ciegasClase 03 busquedas a ciegas
Clase 03 busquedas a ciegas
Carlos Manuel Sanchez Fernandez
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
TAtiizz Villalobos
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)Fuerza Auriazul
 
Ідентифікація багатофакторних залежностей на основі нечіткої бази знань з рі...
Ідентифікація  багатофакторних залежностей на основі нечіткої бази знань з рі...Ідентифікація  багатофакторних залежностей на основі нечіткої бази знань з рі...
Ідентифікація багатофакторних залежностей на основі нечіткої бази знань з рі...
Роман Тилець
 
Анализ тональности с помощью ДСМ метода
Анализ тональности с помощью ДСМ методаАнализ тональности с помощью ДСМ метода
Анализ тональности с помощью ДСМ метода
Dima Kostyaev
 
Экспертные системы
Экспертные системыЭкспертные системы
Экспертные системы
Отшельник
 
Нечеткие знания в экспертных системах
Нечеткие знания в экспертных системахНечеткие знания в экспертных системах
Нечеткие знания в экспертных системах
Спецсеминар "Искусственный Интеллект" кафедры АЯ ВМК МГУ
 
The Science of UX Design
The Science of UX DesignThe Science of UX Design
The Science of UX Design
Zack Naylor
 
Inference rulesproofmethods
Inference rulesproofmethodsInference rulesproofmethods
Inference rulesproofmethods
Rajendran
 
Logical Inference in RTE
Logical Inference in RTELogical Inference in RTE
Logical Inference in RTEKilian Evang
 
Expert system (unit 1 &amp; 2)
Expert system (unit 1 &amp; 2)Expert system (unit 1 &amp; 2)
Expert system (unit 1 &amp; 2)
Lakshya Gupta
 
CPSC 125 Ch 2 Sec 1
CPSC 125 Ch 2 Sec 1CPSC 125 Ch 2 Sec 1
CPSC 125 Ch 2 Sec 1
David Wood
 
Bca ii dfs u-3 tree and graph
Bca  ii dfs u-3 tree and graphBca  ii dfs u-3 tree and graph
Bca ii dfs u-3 tree and graph
Rai University
 
Mayo aug1, jsm slides (3)
Mayo aug1, jsm slides (3)Mayo aug1, jsm slides (3)
Mayo aug1, jsm slides (3)jemille6
 
Logical Abduction and an Application on Business Rules Management
Logical Abduction and an Application on Business Rules ManagementLogical Abduction and an Application on Business Rules Management
Logical Abduction and an Application on Business Rules Management
Tobias Trapp
 
Proofs by contraposition
Proofs by contrapositionProofs by contraposition
Proofs by contraposition
Abdur Rehman
 
NUMA-optimized Parallel Breadth-first Search on Multicore Single-node System
NUMA-optimized Parallel Breadth-first Search on Multicore Single-node SystemNUMA-optimized Parallel Breadth-first Search on Multicore Single-node System
NUMA-optimized Parallel Breadth-first Search on Multicore Single-node SystemYuichiro Yasui
 

Destacado (20)

Capitulo 9
Capitulo  9Capitulo  9
Capitulo 9
 
Clase 03 busquedas a ciegas
Clase 03 busquedas a ciegasClase 03 busquedas a ciegas
Clase 03 busquedas a ciegas
 
Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Reporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamientoReporte metodos de busqueda y ordenamiento
Reporte metodos de busqueda y ordenamiento
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Ідентифікація багатофакторних залежностей на основі нечіткої бази знань з рі...
Ідентифікація  багатофакторних залежностей на основі нечіткої бази знань з рі...Ідентифікація  багатофакторних залежностей на основі нечіткої бази знань з рі...
Ідентифікація багатофакторних залежностей на основі нечіткої бази знань з рі...
 
Анализ тональности с помощью ДСМ метода
Анализ тональности с помощью ДСМ методаАнализ тональности с помощью ДСМ метода
Анализ тональности с помощью ДСМ метода
 
Экспертные системы
Экспертные системыЭкспертные системы
Экспертные системы
 
Нечеткие знания в экспертных системах
Нечеткие знания в экспертных системахНечеткие знания в экспертных системах
Нечеткие знания в экспертных системах
 
The Science of UX Design
The Science of UX DesignThe Science of UX Design
The Science of UX Design
 
Lecture5
Lecture5Lecture5
Lecture5
 
Inference rulesproofmethods
Inference rulesproofmethodsInference rulesproofmethods
Inference rulesproofmethods
 
Logical Inference in RTE
Logical Inference in RTELogical Inference in RTE
Logical Inference in RTE
 
Expert system (unit 1 &amp; 2)
Expert system (unit 1 &amp; 2)Expert system (unit 1 &amp; 2)
Expert system (unit 1 &amp; 2)
 
CPSC 125 Ch 2 Sec 1
CPSC 125 Ch 2 Sec 1CPSC 125 Ch 2 Sec 1
CPSC 125 Ch 2 Sec 1
 
Bca ii dfs u-3 tree and graph
Bca  ii dfs u-3 tree and graphBca  ii dfs u-3 tree and graph
Bca ii dfs u-3 tree and graph
 
Mayo aug1, jsm slides (3)
Mayo aug1, jsm slides (3)Mayo aug1, jsm slides (3)
Mayo aug1, jsm slides (3)
 
Logical Abduction and an Application on Business Rules Management
Logical Abduction and an Application on Business Rules ManagementLogical Abduction and an Application on Business Rules Management
Logical Abduction and an Application on Business Rules Management
 
Proofs by contraposition
Proofs by contrapositionProofs by contraposition
Proofs by contraposition
 
NUMA-optimized Parallel Breadth-first Search on Multicore Single-node System
NUMA-optimized Parallel Breadth-first Search on Multicore Single-node SystemNUMA-optimized Parallel Breadth-first Search on Multicore Single-node System
NUMA-optimized Parallel Breadth-first Search on Multicore Single-node System
 

Similar a Backtracking

Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
José Juan Herrera
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmoGaston Demundo
 
Criterios de Búsqueda en Inteligencia Artificial
Criterios de Búsqueda en Inteligencia ArtificialCriterios de Búsqueda en Inteligencia Artificial
Criterios de Búsqueda en Inteligencia Artificial
Hilario Per'zz
 
Luis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdfLuis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdf
Luis12876
 
2. Recursividad
2. Recursividad2. Recursividad
2. Recursividad
Fernando Solis
 
Detección y Recuperación grupo 7.pptx
Detección y Recuperación grupo 7.pptxDetección y Recuperación grupo 7.pptx
Detección y Recuperación grupo 7.pptx
AcruxJordan
 
Unidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosUnidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmos
Alexandra Ochoa
 
Unidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptUnidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.ppt
ssuser6eba56
 
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
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
Lincoln School
 
Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys B
Jose Andres
 
Tecnicas de busqueda en inteligencia artificial
Tecnicas de busqueda en inteligencia artificialTecnicas de busqueda en inteligencia artificial
Tecnicas de busqueda en inteligencia artificial
DamelysCarrillo2
 
Capítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdfCapítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdf
Igor Rodriguez
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksortPatricia Correa
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
OsirysRock
 
Manual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_gManual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_g
diego alonso medina quilcat
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
puracastillo
 
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
 

Similar a Backtracking (20)

Complejidad de Algoritmos
Complejidad de AlgoritmosComplejidad de Algoritmos
Complejidad de Algoritmos
 
Análisis de algoritmo
Análisis de algoritmoAnálisis de algoritmo
Análisis de algoritmo
 
Criterios de Búsqueda en Inteligencia Artificial
Criterios de Búsqueda en Inteligencia ArtificialCriterios de Búsqueda en Inteligencia Artificial
Criterios de Búsqueda en Inteligencia Artificial
 
Luis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdfLuis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdf
 
2. Recursividad
2. Recursividad2. Recursividad
2. Recursividad
 
Detección y Recuperación grupo 7.pptx
Detección y Recuperación grupo 7.pptxDetección y Recuperación grupo 7.pptx
Detección y Recuperación grupo 7.pptx
 
Unidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmosUnidad 2 introducción a los algoritmos
Unidad 2 introducción a los algoritmos
 
Unidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.pptUnidad 1 Introducción a los Algoritmos.ppt
Unidad 1 Introducción a los Algoritmos.ppt
 
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
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Inteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys BInteligencia Artificial - Leonys B
Inteligencia Artificial - Leonys B
 
Tecnicas de busqueda en inteligencia artificial
Tecnicas de busqueda en inteligencia artificialTecnicas de busqueda en inteligencia artificial
Tecnicas de busqueda en inteligencia artificial
 
Capítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdfCapítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdf
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
 
Ordenacion y busqueda
Ordenacion y busquedaOrdenacion y busqueda
Ordenacion y busqueda
 
Manual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_gManual estructura de_datos_2010___h._caselli_g
Manual estructura de_datos_2010___h._caselli_g
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
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
 

Último

Tipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptxTipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptx
JonathanMorales422812
 
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCIONCEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
do4alexwell
 
Ultrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptxUltrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptx
LuisAlfredoChavarra
 
Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02
Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02
Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02
CarolynRojasEscobar
 
Hablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdf
Hablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdfHablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdf
Hablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdf
OmarArgaaraz
 
Modonesi, M. - El Principio Antagonista [2016].pdf
Modonesi, M. - El Principio Antagonista [2016].pdfModonesi, M. - El Principio Antagonista [2016].pdf
Modonesi, M. - El Principio Antagonista [2016].pdf
frank0071
 
10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx
2024311042
 
Presentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases noblesPresentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases nobles
OresterPrieto
 
Fornis, C. - El mito de Esparta [2019].pdf
Fornis, C. - El mito de Esparta [2019].pdfFornis, C. - El mito de Esparta [2019].pdf
Fornis, C. - El mito de Esparta [2019].pdf
frank0071
 
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptxCap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
MailyAses
 
MYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptx
MYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptxMYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptx
MYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptx
ALEXISBARBOSAARENIZ
 
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
EdsonCienfuegos
 
Pelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básicaPelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básica
manuelminion05
 
Cálculo en varias variables - Walter Mora F..pdf
Cálculo en varias variables - Walter Mora F..pdfCálculo en varias variables - Walter Mora F..pdf
Cálculo en varias variables - Walter Mora F..pdf
ike_jmb
 
son mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docxson mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docx
Alondracarrasco8
 
Historia Electromagnetismo .... Física M
Historia Electromagnetismo .... Física MHistoria Electromagnetismo .... Física M
Historia Electromagnetismo .... Física M
RichardVasquez80
 
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
solizines27
 
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdfHayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
frank0071
 
PRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdf
PRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdfPRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdf
PRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdf
IngridEdithPradoFlor
 
8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx
8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx
8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx
YULI557869
 

Último (20)

Tipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptxTipos-de-Fracciones-Algebraicas1234.pptx
Tipos-de-Fracciones-Algebraicas1234.pptx
 
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCIONCEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
CEFALEAS CLASIFICACIÓN, TRATAMIENTO Y PREVENCION
 
Ultrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptxUltrasonido Fast y métodos DX trauma.pptx
Ultrasonido Fast y métodos DX trauma.pptx
 
Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02
Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02
Sexualidad y Autocuidado 7ºAÑO BASICO. O.A 02
 
Hablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdf
Hablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdfHablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdf
Hablame-de-tus-fuentes-luisa-garcia-tellez-libro.pdf
 
Modonesi, M. - El Principio Antagonista [2016].pdf
Modonesi, M. - El Principio Antagonista [2016].pdfModonesi, M. - El Principio Antagonista [2016].pdf
Modonesi, M. - El Principio Antagonista [2016].pdf
 
10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx10 razones para estudiar filosofia1.pptx
10 razones para estudiar filosofia1.pptx
 
Presentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases noblesPresentación de diapositivas sobre los gases nobles
Presentación de diapositivas sobre los gases nobles
 
Fornis, C. - El mito de Esparta [2019].pdf
Fornis, C. - El mito de Esparta [2019].pdfFornis, C. - El mito de Esparta [2019].pdf
Fornis, C. - El mito de Esparta [2019].pdf
 
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptxCap 35 Resistencia  del Organismo a la Infeccion II INMUNIDAD.pptx
Cap 35 Resistencia del Organismo a la Infeccion II INMUNIDAD.pptx
 
MYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptx
MYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptxMYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptx
MYCROPLASMOSIS AVIAR(MYCOPLASMA GALLISEPTICUM) (711063).pptx
 
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
5+La+alimentación+de+la+trucha+arcoíris+_versión+final+(1).pdf
 
Pelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básicaPelvis y periné anatomía clínica básica
Pelvis y periné anatomía clínica básica
 
Cálculo en varias variables - Walter Mora F..pdf
Cálculo en varias variables - Walter Mora F..pdfCálculo en varias variables - Walter Mora F..pdf
Cálculo en varias variables - Walter Mora F..pdf
 
son mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docxson mas ejercicios_de_estequiometria.docx
son mas ejercicios_de_estequiometria.docx
 
Historia Electromagnetismo .... Física M
Historia Electromagnetismo .... Física MHistoria Electromagnetismo .... Física M
Historia Electromagnetismo .... Física M
 
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA5  RECETA MEDICA. TIPOS DE RECETAS FARMACIA
5 RECETA MEDICA. TIPOS DE RECETAS FARMACIA
 
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdfHayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
Hayek, Friedrich A. - Camino de servidumbre [ocr] [2000].pdf
 
PRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdf
PRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdfPRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdf
PRESENTACIÓN PENSAMIENTO CRÍTICO CAMPO FORMATIVO.pdf
 
8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx
8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx
8VO - ESTUDIOS SOCIALES - 1ER - TRIMESTRE.docx
 

Backtracking

  • 1. Algoritmos de BúsquedaAlgoritmos de Búsqueda “Backtracking y Branch and Bound”“Backtracking y Branch and Bound” Antonio Paredes RisueñoAntonio Paredes Risueño
  • 2. Índice   Backtracking  Backtracking en paralelo  Branch and Bound  Branch and Bound paralelo Introducción
  • 3. Introducción  Los algoritmos de Backtracking y Branch and Bound se suelen aplicar en la resolución de un gran número de problemas, muy especialmente en los de optimización.  Estos algoritmos realizan una búsqueda exhaustiva y sistemática en el espacio de soluciones del problema.  Suelen ser muy ineficientes.
  • 4. Introducción  Se utilizan para resolver problemas para los que no existe un algoritmo eficiente para resolverlos.  Mediante la programación paralela se intentará reducir el tiempo de ejecución de estos algoritmos
  • 5. Índice  Introducción   Backtracking en paralelo  Branch and Bound  Branch and Bound paralelo Backtracking
  • 6. Backtracking  Técnica general de resolución de problemas, que suele aplicarse sobre todo a juegos y problemas de óptimización.  Realiza una búsqueda exhaustiva y sistemática en el espacio de soluciones del problema.  La solución de un problema de backtracking se puede expresar como una tupla (x1,x2,…,xn), que satisface una restricciones R(x1,x2,…,xn) y a veces optimizando una función objetivo.
  • 7. Backtracking  En cada momento el algoritmo se encontrará en un cierto nivel k, con una solución parcial (x1,x2,…,xk) (con k<=n).  Si puede añadirse un elemento xk+1 a la solución parcial se avanza al nivel k+1.  Si no se prueban otros valores válidos para xk.  Si no existe ningún valor que sea válido por probar, se retrocede al nivel anterior k-1.  Se continua con este proceso hasta que la solución parcial sea una solución del problema o hasta que no queden más posibilidades por probar (en el caso de que no se encuentre ninguna solución o se busquen todas las soluciones del problema).
  • 8. Backtracking  En definitiva, el algoritmo realiza una búsqueda en profundidad en el árbol de soluciones del problema. x1 x2 x3
  • 9. Backtracking  En definitiva, el algoritmo realiza una búsqueda en profundidad en el árbol de soluciones del problema. 1 2 10 14 3 6 7 11 12 15 16 4 5 8 9 13 17 18 x1 x2 x3
  • 10. Backtracking. Complejidad  Por realizar una búsqueda exhaustiva en el espacio de soluciones del problema, los algoritmos de backtracking son bastante ineficientes.  En general, se tienen tiempos con órdenes de complejidad factoriales o exponenciales.  Por esto, los algoritmos de backtracking se utilizan en problemas para los que no existen un algoritmo eficiente que los resuelva.
  • 11. Backtracking. Ejemplo Problema N-Reinas  El problema de las N-Reinas consiste en colocar n reinas en un tablero de ajedrez de tamaño n*n de forma la reinas no se amenacen según las normas del ajedrez. Se busca encontrar una solución o todas las soluciones posibles.  Este problema puede resolverse utilizando un esquema de backtracking.  Cualquier solución del problema estará formada por una n-tupla (x1,x2,…,xn), dónde cada xi indica la columna donde la reina de la fila i-ésima es colocada.
  • 12.  Las restricciones para este problema consisten en que dos reinas no pueden colocarse en la misma fila, ni en la misma columna ni en la misma diagonal.  Por ejemplo, el problema de las 4-Reinas tiene dos posibles soluciones: [2,4,1,3] y [3,1,4,2]. Backtracking. Ejemplo Problema N-Reinas
  • 15. Índice  Introducción  Backtracking   Branch and Bound  Branch and Bound paralelo Backtracking paralelo
  • 16. Backtracking paralelo  Esquema no puramente paralelo, es un esquema utilizado en programación secuencial que se intenta paralelizar.  Esto supone que la ganancia de tiempo no sea tan elevada como se pudiera esperar a priori.  Se intenta distribuir el espacio de búsqueda entre los distintos procesadores, de forma que cada uno busque la solución del problema en un subespacio de soluciones distinto.  Así se exploran varias ramas del árbol de soluciones al mismo tiempo por distintos procesadores.  Aumentan las posibilidades de encontrar la solución del problema en menor tiempo.
  • 19. Backtracking paralelo  Un factor crítico a la hora de formular un algoritmo de backtracking en paralelo es cómo se realizará la distribución del espacio de búsqueda entre los distintos procesadores.  Dos alternativas:  Asignación estática  Asignación dinámica
  • 20.  Un procesador expande el nodo raíz y genera varios nodos.  A cada procesador se le asigna un número de estos nodos.  Así se divide el espacio de búsqueda global entre los distintos procesadores.  Cada procesador comienza a buscar la solución en el espacio de búsqueda que le corresponda, siguiendo el proceso normal de backtracking.  No se necesitan comunicaciones entre procesos. Backtracking Paralelo Asignación estática
  • 21.  Problema: No se sabe a priori si se divide el espacio de búsqueda equitativamente entre los distintos procesadores.  Puede haber desequilibrio entre la carga de trabajo de los procesadores.  A un procesador puede que se le asigne poco trabajo y este la mayor parte de tiempo inactivo. Backtracking Paralelo Asignación estática
  • 24.  Cada procesador trabaja en una parte del espacio de búsqueda.  Cuando un procesador termina de trabajar, solicita más trabajo a otro procesador que tiene más trabajo.  Proceso:  Cada procesador dispone una pila en su espacio local para guardar nodos no expandidos.  Cuando un procesador expande un nodo, los nuevos nodos que se crean se introducen en la pila.  Cuando la pila de un procesador esta vacía, el procesador solicita nodos de la pila de otro procesador. Backtracking Paralelo Asignación dinámica
  • 25.  Al principio, el espacio total de búsqueda es asignado a un procesador y a los demás procesadores no se les asigna ningún trabajo.  Ese procesador será el encargado de distribuir inicialmente el trabajo cuando los demás procesadores se lo soliciten.  A los procesos que envían trabajo se les denomina donadores y a los que lo solicitan y lo reciben se les denomina receptores. Backtracking Paralelo Asignación dinámica
  • 26.  Un procesador puede estar en 2 estados:  Activo: Esta realizando algún trabajo.  Inactivo: Al procesador no le queda ningún nodo por explorar en su pila y esta solicitando trabajo a otros procesadores.  Estado inactivo:  El procesador selecciona un procesador donador y le envía una petición de trabajo.  Si recibe trabajo del donador, se activa y comienza a trabajar.  Si recibe un mensaje de reject (el procesador donador esta inactivo), selecciona a otro procesador donador para enviarle una petición de trabajo. Backtracking Paralelo Asignación dinámica
  • 27.  Estado inactivo:  Este proceso se repite hasta que el procesador recibe trabajo del donador o hasta que todos los procesadores entran en estado inactivo. Backtracking Paralelo Asignación dinámica
  • 28.  Estado activo:  El procesador realiza una cantidad de trabajo fijo (expande un nº determinado de nodos).  Cuando termina de realizar el trabajo, chequea si existen peticiones de trabajo a cargo de los demás procesadores.  Si recibe alguna petición de trabajo, el procesador donador particiona en dos partes su pila de nodos, y envía una parte al procesador que realizo la petición.  Cuando el procesador ha recorrido todo su espacio de búsqueda (su pila esta vacía), entra en estado inactivo. Backtracking Paralelo Asignación dinámica
  • 29. Procesador Activo Servicio pendiente de recibir mensajes Realizar una cantidad de trabajo fija Seleccionar un procesador y solicitarle trabajo Servicio pendiente de recibir mensajes Procesador Inactivo Termina el trabajo disponible Comienza a trabajar Enviar una petición No existe trabajo disponible Backtracking Paralelo Asignación dinámica
  • 30.  Cuando un procesador encuentra la solución, envía un mensaje de broadcast a todos procesadores para estos paren la búsqueda.  Si no se recibe este mensaje, el algoritmo terminará cuando todos los procesos estén en estado inactivo. Backtracking Paralelo Asignación dinámica
  • 31.  Los algoritmos paralelos de búsqueda en un árbol de soluciones tienen 2 características fundamentales que determinan su rendimiento:  La estrategia utilizada para dividir el trabajo de un procesador cuando éste recibe una petición de trabajo.  El esquema usado para determinar el procesador donador cuando un procesador entra en estado inactivo. Backtracking Paralelo
  • 32. Estrategia de División del trabajo  Cuando un procesador donador recibe una petición de trabajo de otro procesador y tiene nodos su pila, el procesador donador divide su pila en dos y una de ellas se envía al proceso que realizo la petición.  Si se envía poco trabajo, el receptor rápidamente pasa a estar en estado inactivo.  Si se envía demasiado trabajo, el donador entrará rápidamente en estado inactivo.  Lo ideal sería dividir la pila en dos partes iguales de modo que el espacio de búsqueda representado por cada una sea el mismo.
  • 33.  A este método se le llama “División por la mitad”.  Pero la dificultad reside en estimar el tamaño que tendrán los subarboles asociados a cada uno de los nodos que se encuentran en la pila.  Normalmente los nodos cercanos al fondo de la pila (nodos con profundidad cercana al nodo raíz del procesador) tienen más posibilidades de generar árboles de mayor tamaño.  Los nodos más cercanos al tope de la pila (nodos que están a mayor profundidad) tienen más posibilidades de generar árboles de menor tamaño. Backtracking Paralelo Estrategia división de trabajo
  • 34.  Para evitar mandar cantidades pequeñas de trabajo, los nodos de la pila que están más allá de una determinada profundidad no son enviados.  A esta profundidad se le llama “cota de profundidad”.  Algunas estrategias posible para la división del trabajo son:  Enviar nodos cercanos al fondo de la pila  Enviar nodos cercanos a la cota de profundidad.  Enviar la mitad de los nodos que están entre el fondo de la pila y la cota de profundidad.  La idoneidad de una estrategia u otra dependerá de la naturalidad del espacio de búsqueda. Backtracking Paralelo Estrategia división de trabajo
  • 35. Cota de profundidad 1 2 3 4 6 7 5 8 12 13 9 10 11 14 3 5 7 9 11 13 14 Pila Backtracking Paralelo Estrategia división de trabajo
  • 36.  Los esquemas de balanceo de carga se utilizan para decidir que procesador donador se elige cuando un procesador entra en estado inactivo.  Algunos esquemas posibles son los siguientes:  Round Robin Asíncrono  Round Robin Global  Selección aleatoria Backtracking Paralelo Esquemas de balanceo de carga
  • 37. Round Robin Asíncrono  Cada procesador mantiene una variable local llamada “target”.  Cuando un procesador termina de trabajar, usa el valor de su variable “target” para determinar el procesador donador al que enviar la petición de trabajo.  Cada vez que se envía una petición, se incrementa en una unidad el valor de la variable “target” del procesador: target = ((target+1) modulo p)  El valor inicial de target será: target0 = ((nº procesador+1) modulo p)
  • 38. Round Robin Global  Existe una única variable “target” almacenada en el procesador P0.  Cuando un procesador necesita trabajo, solicita y recibe el valor de la variable target de P0.  Una vez que se sabe cual es el procesador donador, el procesador le envía una petición de trabajo.  Luego, P0 incrementa la variable target antes de responder a otra petición. target = ((target+1) modulo p)
  • 39. Round Robin Global  Este esquema garantiza que sucesivas peticiones de trabajo se distribuyen uniformemente entre todos los procesadores.  La desventaja principal de este esquema es que el procesador P0 debe gestionar todas las peticiones de acceso a la variable target, y esto puede convertirse en un cuello de botella.
  • 40. Selección aleatoria  Es el esquema más simple de todos  Cuando un procesador entra en estado inactivo, se elige un procesador al azar.  Cada procesador tiene la misma probabilidad de ser seleccionado como donador.  Así se asegura que las peticiones se distribuyan uniformemente.
  • 41.  Cuando un procesador encuentra una solución del problema se envía un mensaje de broadcast a todos los procesadores para indicarle que terminen.  Pero cuando no se encuentra ninguna solución. ¿Cómo detectar cuando termina el proceso de búsqueda?  A continuación se describen dos algoritmos para detectar la terminación de la búsqueda.  Algoritmo de terminación de Dijkstra´s.  Algoritmo de terminación basado en árbol. Backtracking Paralelo Detección de terminación
  • 42. Algoritmo de terminación de Dijkstra´s  Los procesadores se organizan en un anillo lógico y se irán pasando un token.  Un procesador puede estar en dos estados: blanco o negro.  Un token también puede estar en dos estados: blanco o negro.  Inicialmente todos los procesadores están en estado blanco.
  • 43. Algoritmo de terminación de Dijkstra´s  El algoritmo es el siguiente:  Cuando P0 esta inactivo, el procesador crea un token y envía un token blanco al procesador P1.  Si el procesador Pi envía trabajo al procesador Pj (i>j), el procesador Pi cambia a estado negro.  Si el procesador Pi tiene el token y esta inactivo, pasa el token al Pi+1. Si Pi está en estado negro, el color del token se establecerá a negro antes de pasarlo a Pi+1. Si Pi esta en estado blanco, el token se pasa sin cambiarlo.  Cuando Pi pasa el token a Pi+1 pasa a estado blanco.  El algoritmo termina cuando a P0 le llega un token blanco.
  • 44. Algoritmo de terminación basado en árbol  Se asocia un peso a cada procesador.  Inicialmente, P0 tiene todo el trabajo y se le asocia un peso de 1.  Cuando Pi particiona y manda trabajo a otro procesador, Pi se queda con la mitad del peso y la otra mitad se la envía al otro procesador.  Cuando un procesador termina su trabajo, se devuelve el peso al procesador del que se recibió el trabajo.  El algoritmo termina cuando el peso del procesador P0 vuelve a ser 1.
  • 45. Algoritmo de terminación basado en árbol w0=0.5 w1=0.5
  • 46. Algoritmo de terminación basado en árbol w0=0.5 w1=0.5 w0=0.5 w1=0.25 w2=0.25
  • 47. Algoritmo de terminación basado en árbol w0=0.5 w1=0.5 w0=0.5 w1=0.25 w2=0.25 w1=0.25 w2=0.25 w0=0.25 w3=0.25
  • 48. Algoritmo de terminación basado en árbol w0=0.5 w1=0.5 w0=0.5 w1=0.25 w2=0.25 w1=0.25 w2=0.25 w0=0.25 w3=0.25 w1=0.5 w0=0.25 w3=0.25
  • 49. Algoritmo de terminación basado en árbol w0=0.5 w1=0.5 w0=0.5 w1=0.25 w2=0.25 w1=0.25 w2=0.25 w0=0.25 w3=0.25 w1=0.5 w0=0.25 w3=0.25 w1=0.5 w0=0.5
  • 50. Algoritmo de terminación basado en árbol w0=0.5 w1=0.5 w0=0.5 w1=0.25 w2=0.25 w1=0.25 w2=0.25 w0=0.25 w3=0.25 w1=0.5 w0=0.25 w3=0.25 w1=0.5 w0=0.5 w0=1
  • 51. Índice  Introducción  Backtracking  Backtracking paralelo   Branch and Bound paralelo Branch and Bound
  • 52. Branch and Bound  Técnica similar a Backtracking  Suele utilizarse en problemas de optimización.  Este esquema puede verse como una mejora del esquema de backtracking.  Al igual que en backtracking, el algoritmo realiza una búsqueda sistemática en un árbol de soluciones.
  • 53. Branch and Bound  Pero Branch and Bound añade dos características nuevas:  Estrategia de ramificación: La búsqueda se guiará por estimaciones de beneficio que se harán en cada nodo.  Estrategia de poda: Para eliminar nodos que no lleven a a la solución óptima. Estimación de cotas de beneficio en cada nodo.  Para cada nodo tendremos la siguiente información:  Cota inferior (CI) y cota superior (CS) de beneficio que se puede obtener a partir del nodo. Determinan cuando se puede realizar una poda.  Estimación del beneficio que se puede encontrar a partir del nodo. Ayuda a decidir el orden de evaluación de los nodos.
  • 54. Estrategia de poda  Suponemos un problema de maximización. Se han recorrido varios nodos y ha estimado la cota inferior y superior de cada uno de ellos. 1 2 3 4 5 3 9 2 15 12 25
  • 55. Estrategia de poda  El nodo 2 puede podarse, ya que el nodo 5 tiene una cota inferior mayor que la cota superior del nodo 2. 1 2 3 4 5 3 9 2 15 12 25 x
  • 56. Estrategia de ramificación  Se pueden utilizar distintas estrategias para recorrer el árbol de soluciones. Puede recorrerse en profundidad, en anchura, según el beneficio estimado,…  Se utiliza una lista de nodos vivos (contiene nodos generados y aún no explorados).  Algoritmo:  Sacar un nodo de la lista de nodos vivos  Generar sus descendientes  Si no se podan, se introducen en la lista de nodos vivos.
  • 57. Estrategia de ramificación  ¿Qué criterio se utiliza para seleccionar el nodo que se saca de la lista de nodos vivos?  Estrategia FIFO  Estrategia LIFO  Estrategia del menor costo
  • 58. Complejidad  El tiempo de ejecución depende:  Número de nodos recorridos.  Tiempo gastado en cada nodo.  En el caso promedio se suelen obtener mejoras respecto al algoritmo de backtracking.  Pero en el pero caso, el tiempo puede ser peor.  Se debe buscar un compromiso entre la exactitud de las cotas y el tiempo utilizado en calcularlas.
  • 59. Conclusiones  En general, el esquema de branch and bound suele obtener mejores resultados que el de backtracking.  Sigue siendo muy ineficiente.
  • 60. Índice  Introducción  Backtracking  Backtracking paralelo  Branch and Bound  Branch and Bound parelelo
  • 61. Branch and Bound paralelo  Al igual que sucedía con backtracking, no es un esquema puramente paralelo.  En el proceso secuencial, se necesita información global para poder hacer la poda de nodos.  Se puede paralelizar distintos tipos de niveles.  Tipos de niveles:  Búsqueda paralela ejecutando el algoritmo con distintos parámetros sobre el espacio global de búsqueda en varios procesadores. Cálculo de cotas, de estimaciones, y criterio selec.
  • 62. Branch and Bound paralelo  Tipos de nivel.  Se paralelizan partes del algoritmo. La estructura del algoritmo no cambia. Por ejemplo, se expanden en paralelo los nodos.  Se divide el espacio de búsqueda entre los procesadores. De la lista de nodos vivos se asignan nodos distintos a cada procesador. La distribución del trabajo puede ser estática o dinámica, del mismo modo que sucedía con backtracking.
  • 63. Asignación estática  A cada procesador se le asigna un número fijo de nodos de la lista de nodos vivos.  Los procesos pueden comunicarse la cotas o no.  Si no se comunican las cotas:  Se necesitan pocas comunicaciones entre procesos.  Puede que se estudien nodos que se podían haber podado.  Si se comunican las cotas:  Se evita que los procesadores estudien nodos innecesarios.  Se necesitan bastantes comunicaciones entre los procesos.  Además, al asignar los nodos estáticamente puede darse un desbalanceo de carga de trabajo entre los procesadores.
  • 64. Asignación dinámica  Puede utilizarse una bolsa de tareas para asignar los nodos a los procesos de forma dinámica, como se hacía con backtracking.  Pero ahora tenemos la opción de comunicar las cotas.  Los procesadores toman los nodos y los exploran y depositan los descendientes de los nodos explorados en la bolsa de trabajo.  Existen dos estrategias para depositar los nodos: inmediata o pospuesta.
  • 65. Asignación dinámica  Actualización inmediata  Cuando se generan los descendientes de un nodo se introducen de inmediato en la bolsa.  Muchas comunicaciones.  Actualización pospuesta  Cuando se generan los descendientes de un nodo no se introducen de inmediato en la bolsa, se sigue generado descendientes a partir de estos. Cada cierto tiempo se introducen en la bolsa.  Ventajas: Pueden podarse algunos nodos y no se accede tanto a la bolsa de tareas.
  • 66. Asignación dinámica  Sistema de memoria compartida  Se tiene una estructura centralizada de donde los procesadores toman e introducen tareas.  Sistema de memoria distribuida  Se tienen bolsas de trabajo en uno o en varios procesadores.  Las peticiones y el depósito de los trabajos conllevan comunicaciones.  Se descentraliza la bolsa de tareas.  Actualización inmediata o pospuesta.
  • 67. Asignación dinámica  Comunicación de cotas:  Si se comunican las cotas con mucha frecuencia, se podrán podar más nodos pero puede pederse eficiencia al realizar tantas comunicaciones.  Si no se comunican con mucha frecuencia, no se podarán tantos nodos pero no habrá tantas comunicaciones.
  • 68. Asignación dinámica  Una única bolsa de trabajos  Mayor contención.  La bolsa puede convertirse en un cuello de botella.  Varias bolsas de trabajos  Aumenta el desbalanceo de las tareas  Se trata de buscar un compromiso entre el desbalanceo y la contención.

Notas del editor

  1. m
  2. m
  3. m
  4. m
  5. m
  6. m
  7. m
  8. m
  9. m
  10. m
  11. m
  12. m