Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejercicio 4: Backtracking
N M NPC
4 3 [5,1,3,3]
Ejemplo 2:
Se pide:
1) Completar la ficha adjunta del problema (//TODO)
2) Implementar los siguientes mtodos de EstadoLineaCaja (que implementa
EstadoBT<List<Integer>, Integer>) teniendo en cuenta la ficha adjunta:
a) public void avanza(Integer a)
b) public void retrocede(Integer a)
c) public Double getObjetivo()
d) public boolean isFinal()
e) public List<Integer> getAlternativas()
Puntuacin: 30%
ADDA 2 Parcal Curso 2014/2015
BT
Problema Lnea de Caja
Tcnica: Backtracking
Propiedades Compartidas N: int //nmero de clientes
NPC: List<Integer> //nmero de productos por cliente
M: int//nmero de cajas disponibles
Propiedades Bsicas del Estado j: int // [0,..,N]
cajaAsignada: List<Integer>// caja asignada a cada cliente
Avanza(a): //TODO
Retrocede(a): //TODO
ADDA 2 Parcal Curso 2014/2015
BT
Problema Lnea de Caja
Tcnica: Backtracking
Propiedades Compartidas N: int //nmero de clientes
PPC: List<Integer> //productos por cliente
M: int //nmero de cajas disponibles
Propiedades Bsicas del Estado j: int // [0,..,N]
cajaAsignada: List<Integer>// caja asignada a cada cliente
Avanza(a):
cajaAsignada.add(a);
j++;
[cajaAsignada + a, j+1]
Retrocede(a):
j--;
cajaAsignada.remove(cajaAsignada.size()-1);
[cajaAsignada - a, j-1]
ADDA 2 Parcal Curso 2014/2015
@Override
public void avanza(Integer a) {
this.cajaAsignada.add(a);
this.pAcum.set(a,
this.pAcum.get(a) +
ProblemaLineaCajaBT.PPC.get(j));
this.j++;
}
@Override
public void retrocede(Integer a) {
this.j--;
this.pAcum.set(a,
this.pAcum.get(a) -
ProblemaLineaCajaBT.PPC.get(j));
this.cajaAsignada.remove((int) this.cajaAsignada.size()-1);
}
@Override
public boolean isFinal() {
return j >= ProblemaLineaCajaBT.N;
}
@Override
public Double getObjetivo() {
return 0.0 +
this.pAcum.stream().max(Comparator.naturalOrder()).orElse(0);
}
@Override
public Iterable<Integer> getAlternativas() {
List<Integer> ls = IntStream.range(0,
ProblemaLineaCajaBT.M)
.boxed()
.collect(Collectors.toList());
return ls;
}