Mir geht es hierbei gar nicht mal um die implementierung, sondern um den Ideanansatz.
Das Problem ist folgendes.
Ich habe 5 Listen.
Jeder dieser Listen L1-L5 enthält 50 (bzw 51) Tupel T0-T50 mit Daten (Wert=w1-5,Platzverbrauch=p1-5). Wobei T0 für das Element/Tupel mit dem Wert=0 und Platzverbrauch 0 steht (0,0). Der Rest der Tupel hat beliebige vorgegebenen Werte und Platzverbrauch.
Es sind 5 Inventarplätze (InvP1-5=Inventarplatz1-5) vorhanden. InvP 1 kann mit einem Tupel aus L1 belegt werden. InvP 2 mit ein Element aus L2 etc...InvP 5 mit ein Element aus L5.
Ziel ist es ein Suchalgorithmus zu finden, so das:
Der höste Wert w von allen 5 InvP ermittelt wird, für den gesammt Platzverbrauch pGes,
pVerbrauch=p1+p2+p3+p4+p5 wobei pVerbrauch<=pGes
Beispiel:
pGes=200;
L1:
0-(0,0)
1-(5,7)
2-(3,5)
3-(200,0)
L2:
0-(0,0)
1-(450,249)
2-(47,-10)
3-(71,35)
L3:
0-(0,0)
1-(-10,5)
2-(4,10)
3-(123,12)
L4:
0-(0,0)
1-(1,1)
2-(7,7)
3-(25,4)
L5:
0-(0,0)
1-(13,9)
2-(-10,-50)
3-(7,25)
_______________Ausgabe__________
Kombination:
InvP1=3
InvP2=1
InvP3=0
InvP4=0
InvP5=2
Wert: 640
pVerbraucht: 199 von 200
===================================
Ich hoffe ich konnte das halbwegs verständlich rüber bringen.^^
Mein Ideanansatz war, ich mache 5 ineinander geschachtelte Schleifen wo ich einfach immer von i1=0 bis i1<=50 (..i5=0 bis i5<=50) durchlaufe. Dann habe ich 5 Variablen mit den passenden i Wert. Ermittel über die i Werte die passenden Tupel.
Teste dann erst dann jeweils
etc...
Würde dann ja für 51*51*51*51*51 Möglichkeiten jeweils erst testen, wie sieht es mit einem Element aus, wie mit den ersten beiden, ersten 3, ersten 4 und dann alle zusammen.
Das Problem ist bloß das Funktioniert alles so nicht und wäre zudem unheimlich langsam. Deswegen wäre ich über ein paar Idean wie man das umsetzen könnte glücklich. Die würde ich dann mal alles durchprobieren.
Das Problem ist folgendes.
Ich habe 5 Listen.
Jeder dieser Listen L1-L5 enthält 50 (bzw 51) Tupel T0-T50 mit Daten (Wert=w1-5,Platzverbrauch=p1-5). Wobei T0 für das Element/Tupel mit dem Wert=0 und Platzverbrauch 0 steht (0,0). Der Rest der Tupel hat beliebige vorgegebenen Werte und Platzverbrauch.
Es sind 5 Inventarplätze (InvP1-5=Inventarplatz1-5) vorhanden. InvP 1 kann mit einem Tupel aus L1 belegt werden. InvP 2 mit ein Element aus L2 etc...InvP 5 mit ein Element aus L5.
Ziel ist es ein Suchalgorithmus zu finden, so das:
Der höste Wert w von allen 5 InvP ermittelt wird, für den gesammt Platzverbrauch pGes,
pVerbrauch=p1+p2+p3+p4+p5 wobei pVerbrauch<=pGes
Beispiel:
pGes=200;
L1:
0-(0,0)
1-(5,7)
2-(3,5)
3-(200,0)
L2:
0-(0,0)
1-(450,249)
2-(47,-10)
3-(71,35)
L3:
0-(0,0)
1-(-10,5)
2-(4,10)
3-(123,12)
L4:
0-(0,0)
1-(1,1)
2-(7,7)
3-(25,4)
L5:
0-(0,0)
1-(13,9)
2-(-10,-50)
3-(7,25)
_______________Ausgabe__________
Kombination:
InvP1=3
InvP2=1
InvP3=0
InvP4=0
InvP5=2
Wert: 640
pVerbraucht: 199 von 200
===================================
Ich hoffe ich konnte das halbwegs verständlich rüber bringen.^^
Mein Ideanansatz war, ich mache 5 ineinander geschachtelte Schleifen wo ich einfach immer von i1=0 bis i1<=50 (..i5=0 bis i5<=50) durchlaufe. Dann habe ich 5 Variablen mit den passenden i Wert. Ermittel über die i Werte die passenden Tupel.
Teste dann erst dann jeweils
Code:
//jetzt nur mal pseudo code zum zeigen
//hier vor wären dann die ineinander geschachtelten Schleifen
// wird dem p1 bis p5 und w1 bis w5 der Wert von den Tupeln übergeben
if(p1<=pGes){
if(w1>wGes){
wGes=w1;
pVerbrauch=p1;
}
if((p1+p2)<=pGes){
if((w1+w2)>wGes){
wGes=(w1+w2);
pVerbrauch=(p1+p2);
}
// etc....
// alle Fälle bis (p1+p2+p3+p4+p5)<=pGes und (w1+w2+w3+w4+w5)>wGes
// schleifen zu gemacht
// hier irgentwo der Test ob es für den Fall das höste auch höher ist als das bis her höste
// Ausgabe wenn alles fertig
Würde dann ja für 51*51*51*51*51 Möglichkeiten jeweils erst testen, wie sieht es mit einem Element aus, wie mit den ersten beiden, ersten 3, ersten 4 und dann alle zusammen.
Das Problem ist bloß das Funktioniert alles so nicht und wäre zudem unheimlich langsam. Deswegen wäre ich über ein paar Idean wie man das umsetzen könnte glücklich. Die würde ich dann mal alles durchprobieren.
Zuletzt bearbeitet: