0% encontró este documento útil (0 votos)
8 vistas24 páginas

Preda - 13 Va 2

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 24

PREDA - UNED

Programación y Estructuras de Datos Avanzadas


Subconjuntos de suma dada
• Objetivo: encontrar todos los subconjuntos de tamaño
m<n dentro de un conjunto A de n números enteros sin
repeticiones, de manera que sumen C
• Aproximación 1:
• Vector de m enteros. Los descendientes de un nodo de nivel k
son todos los valores no tomados anteriormente (n opciones
para k=1, n(n - 1) hijos para k=2, etc., hasta k=m)
• T(n)  O(n!), es decir, en el caso peor que es cuando m tiende a
n, el número de nodos del árbol es n!
• Aproximación 2 (mejor):
• Vector de n booleanos. Los descendientes de un nodo
1 2 … m
de nivel k
1 2 … m

serían las opciones de tomar o no el valor k + 1 del vector de


1 … 2 …

entrada. 1 2 … m

• T(n)  O(2 ), mejor que n!, ya que se evitan las permutaciones
n 1 2 …

… …
Subconjuntos de suma dada
• Objetivo: encontrar todos los subconjuntos de tamaño
m<n dentro de un conjunto A de n números enteros sin
repeticiones, de manera que sumen C
• Aproximación 1:
• Vector de m enteros. Los descendientes de un nodo
1 2 … n
de nivel k
1 2 … n

son todos los valores no tomados anteriormente


1 …
(n opciones
0 …

para k=1, n(n - 1) hijos para k=2,


1 2 etc.,
… n hasta
1 2 k=m)
… n

• T(n)  O(n!), es decir, en el caso


1 1 peor
… que1 es
0 … cuando m tiende a

n, el número de nodos del árbol es n!


• Aproximación 2 (mejor):
• Vector de n booleanos. Los descendientes de un nodo de nivel k
serían las opciones de tomar o no el valor k + 1 del vector de
entrada.
• T(n)  O(2n), mejor que n!, ya que se evitan las permutaciones
Subconjuntos de suma dada
• Objetivo: encontrar todos los subconjuntos
Aproximación 2:de tamaño
m<n dentro de un conjunto A de•nDatos:
números
conjuntoenteros
de númerossin(A)
• v: vector
repeticiones, de manera que sumen C de números seleccionados
• sumandos: número de sumandos
• Aproximación

1: incluidos (¿es m?)
• suma:de
• Vector de m enteros. Los descendientes suma
un alcanzada
nodo de(¿es C?)k
nivel
son todos los valores no tomados anteriormente (n opciones
para K=1, n(n - 1) hijos para k=2, etc., hasta k=m)
• T(n)  O(n!), es decir, en el caso peor que es cuando m tiende a
n, el número de nodos del árbol es n!
• Aproximación 2 (mejor):
• Vector de n booleanos. Los descendientes de un nodo de nivel k
serían las opciones de tomar o no el valor k + 1 del vector de
entrada.
• T(n)  O(2n), mejor que n!, ya que se evitan las permutaciones
Reparto equitativo de activos
• Objetivo: ayudar a dos socios que forman una
sociedad comercial a disolverla, buscando todas las
formas de repartir en dos subconjuntos disjuntos de
igual valor sus n activos con valor entero
• Espacio de búsqueda: árbol de grado 2 y altura n+1

• Se puede generalizar a un reparto en n subconjuntos


de igual valor
• https://www.geeksforgeeks.org/partition-set-k-subsets-
equal-sum/
Reparto equitativo de activos
• Objetivo: ayudar a dos socios que forman una
1 2 … n

sociedad comercial a disolverla, buscando todas las


formas de repartir en dos subconjuntos disjuntos de


1 2 … n 1 2 … n
igual valor sus n activos con valor entero
1 … 2 …

• Espacio de búsqueda: árbol de grado


1 2 … n

2 y altura n+1
1 2 … n
1 1 … 1 2 …

• Se puede generalizar
… …
a un reparto en n subconjuntos
de igual valor
• https://www.geeksforgeeks.org/partition-set-k-subsets-
equal-sum/
Reparto equitativo dede activos
• x: vector activos
• suma1, suma2, sumaTotal: suma de
activos asignados a cada socio y el total
• Objetivo: ayudar a dos socios
• v: vectorque forman una
de asignaciones
sociedad comercial a disolverla, buscando todas las
formas de repartir en dos subconjuntos disjuntos
de igual valor sus n activos con valor entero
Falta (con suma2 también):
• Espacio de búsqueda:
suma1  suma1 árbol
- x[k+1] de grado 2 y altura n+1

cierto

falso Ojo a las erratas


del libro
Reparto equitativo dede activos
• x: vector activos
• suma1, suma2, sumaTotal: suma de
activos asignados a cada socio y el total
• Objetivo: ayudar a dos socios
• v: vectorque forman una
de asignaciones
sociedad comercial a disolverla, buscando todas las
formas de repartir en dos subconjuntos disjuntos
de igual valor sus n activos con valor entero
Falta (con suma2 también):
• Espacio de búsqueda:
suma1  suma1 árbol
- x[k+1] de grado 2 superior
Cota y altura n+1
de coste:
n
forma del árbol = O(2 )

cierto

falso Ojo a las erratas


del libro
Reparto equitativo de activos
• Objetivo: ayudar a dos socios que forman una
sociedad comercial a disolverla, buscando todas las
formas de repartir en dos subconjuntos disjuntos
de igual valor sus n activos con valor entero
• Espacio de búsqueda: árbol de grado 2 y altura n+1
DividirSociedad(x,suma1,suma2, sumaTotal,0,v)

cierto

falso
El robot en busca del tornillo
• Objetivo: ayudar a un robot a encontrar un tornillo (T)
saliendo de la casilla (1,1) y volviendo a ella, habiendo
casillas por las que el robot puede pasar (L) y otras que
no (E), y yendo al Norte, Sur, Este u Oeste
• Búsqueda en profundidad mejor que en anchura
• Para encontrar un camino lo antes posible, no el más corto
• Aunque si el grafo fuese infinito no garantizaría una solución
• Estructuras de datos
• matriz booleana del tamaño del edificio para registrar los
nodos explorados
• lista de casillas para almacenar la solución
• y otra para las extensiones del camino k-prometedoras
1
1

El robot en busca del tornillo


• Objetivo: ayudar a un robot a encontrar un tornillo (T)
saliendo de la casilla (1,1) y volviendo a ella, habiendo
casillas por las que el robot puede
• edificio: pasar
matriz (L) yporotras
de casillas dondeque
movernos
no (E), y yendo al Norte,•Sur, Este
casilla: u Oeste
posición actual
• exploradas: matriz donde marcamos por donde
• Búsqueda en profundidadpasamosy no en anchura
• Para encontrar un camino• solucion:
lo anteslista
posible, no el
de casillas conmás corto
el recorrido
• Si el grafo fuese infinito no garantizaría una solución
• Estructuras de datos
• matriz booleana del tamaño del edificio para registrar los
nodos explorados
• lista de casillas para almacenar la solución
La lista “solución” se crea al final del recorrido
• y otra para las extensionesy sedel camino k-prometedoras
va rellenando al ir retrocediendo en la
lista de llamadas recursivas
1
1

El robot en busca del tornillo


La función “Caminos” calcula los caminos
posibles desde una casilla dada
• Objetivo: ayudar a un robot a encontrar Añadirun
(hijos,tornillo
casilla_aux) (T)
saliendo de la casilla (1,1) y volviendo a ella, habiendo
casillas por las que el robot puede pasar (L) y otras que
no (E), y yendo al Norte, Sur, Este u Oeste
• Búsqueda en profundidad y no en anchura Añadir (hijos, casilla_aux)

• Buscamos un camino lo antes posible, no el más corto


• Si el grafo fuese infinito no garantizaría una solución
• Estructuras de datos Añadir (hijos, casilla_aux)

• matriz booleana del tamaño del edificio para registrar los


nodos explorados
• lista de casillas para almacenar la solución
• y otra para las extensiones del camino k-prometedoras
Añadir (hijos, casilla_aux)
1
1

El robot en busca del tornillo


• Objetivo: ayudar a un robot a encontrar Añadirun
(hijos,tornillo
casilla_aux) (T)
saliendo de la casilla (1,1)dey coste:
Cota superior volviendo a ella, habiendo
casillas por las que
formael
delrobot
árbol = puede
O(4n^2) pasar (L) y otras que
no (E), y yendo al Norte, Sur, Este u Oeste
Cada nodo genera como
• Búsqueda en profundidad y no en anchura
máximo 4 ramas (direcciones)
Añadir (hijos, casilla_aux)

• Buscamos un camino
y el árbollo antes
tiene posible,
n2 niveles (el no el más corto
• Si el grafo fuese infinito
número no garantizaría
de casillas del tablero)una solución
• Estructuras de datos Añadir (hijos, casilla_aux)

• matriz booleana del tamaño del edificio para registrar los


nodos explorados
• lista de casillas para almacenar la solución
• y otra para las extensiones del camino k-prometedoras
Añadir (hijos, casilla_aux)
Asignación de cursos en una
escuela
• Objetivo: asignar a cada curso un aula y un profesor
(hay n cursos, aulas y profesores), considerando
restricciones aula-curso por capacidad y
profesor-curso por especialidad
• e: vector de asignaciones, siendo
e[k] = (i,j) la asignación del aula i
y el profesor j al curso k
Asignación de cursos en una
escuela
• Objetivo: asignar a cada curso un aula y un profesor
(hay n cursos, aulas y profesores), considerando
restricciones aula-curso por capacidad y
profesor-curso por especialidad
• e: vector de asignaciones, siendo
e[k] = (i,j) la asignación del aula i
y el profesor j al curso k

Antes de pasar a probar otras posibles


asignaciones de aulas y profesores se desmarcan
las asignaciones realizadas en el intento.
Asignación de cursos en una
escuela
• Objetivo: asignar a cada curso un aula y un profesor
(hay n cursos, aulas y profesores), considerando
restricciones aula-curso por capacidad y
profesor-curso por especialidad Función principal
que inicia el proceso
• e: vector de asignaciones, siendo
e[k] = (i,j) la asignación del aula i
y el profesor j al curso k
Asignación de cursos en una
escuela Cota superior de coste:
forma del árbol = O((n ) ) = O(n ) 2 n 2n

• Objetivo: asignar a cada curso Cada


un aula y un
nodo tiene profesor
n2 hijos (aula x
(hay n cursos, aulas y profesores), considerando
profesor) y el árbol tiene n niveles

restricciones aula-curso por capacidad y


profesor-curso por especialidad Función principal
que inicia el proceso
• e: vector de asignaciones, siendo
e[k] = (i,j) la asignación del aula i
y el profesor j al curso k
Ejercicio de examen
Ejercicio de examen
? ? ? ?
Ejercicio de examen a ? ? ? e ? ? ? …


Ejercicio de examen
Ejercicio de examen
Juego:
Continental
Ejercicio de examen
Juego:
Continental

Si el orden de los movimientos que se intentan


son: izquierda, arriba, derecha y abajo tardará
varios segundos y si es otro puede tardar horas.
Resumen de ejemplos
• Colocar N reinas (sin que se ataquen mutuamente)
- El nivel i asigna filas a la reina de la columna ci
• Coloreado de grafos (sin coincidir nodos adyacentes)
- El nivel i asigna colores al nodo i
• Ciclos hamiltonianos (camino circular sin repetir nodo)
- El nivel i asigna turnos de visita al nodo i
• Subconjuntos de suma dada (subconjunto de m<n nºs)
- El nivel i escoge números no escogidos anteriormente
(2 aproximaciones: vector de m números o de n booleanos)
• Reparto equitativo de activos
- El nivel i asigna el activo i a un socio o al otro
• El robot en busca del tornillo
- Mantener matrices que registran las casillas exploradas
• Asignación de cursos en una escuela
- El nivel i asigna pares (aula, profesor) al curso i

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy