0 Daumen
797 Aufrufe

Gegeben:
1 Wassereimer mit dem Fassungsvermögen (Volumen) K
x1 gefüllte Wasserflaschen, alle mit dem gleichen Volumen v1
x2 gefüllte Wasserflaschen, alle mit dem gleichen Volumen v2
...
xi gefüllte Wasserflaschen, alle mit dem gleichen Volumen vi
...
xn gefüllte Wasserflaschen, alle mit dem gleichen Volumen vn

Aufgabe:
Der Eimer ist so voll wie nur möglich zu füllen unter Benutzung aller zur Verfügung stehenden Flaschen. Der Eimer darf randvoll sein (sein Volumen total ausgeschöpft), aber er darf nicht überlaufen.
Gesucht ist die genaue Anzahl der Wasserflaschen (also die xi) eines jeden gegebenen Volumens, mit denen das erreicht werden kann.
Mit welchem (allgemeinen) Algorithmus findet man diese Anzahl?

xi ... Anzahl der gefüllten Wasserflaschen mit dem Volumen vi

K >= v1*x1 + v2*x2 + ... + vi*xi + ... + vn*xn
Die rechte Seite der Ungleichung soll so gross wie möglich (aber nicht grösser als K) sein.

K > 0
v1 > v2 > ... > vi > ... > vn > 0
xi > 0; xi ist nicht unendlich; Noch während eines Füllvorgangs können Flaschen eines bestimmten Volumens auch ausgehen (alle bereits benutzt sein).

Man kann die Aufgabe auch anders ausdrücken:
Statt nur 1 Wassereimer gibt es unendlich viele Eimer, alle mit dem gleichen Fassungsvermögen (Volumen) K.
Alle Wasserflaschen sollen in so wenig wie möglich Eimer entleert werden, ohne das auch nur ein Eimer dabei überliefe.

Avatar von

1 Antwort

0 Daumen

Antwort mit KI erzeugt

Optimum einer Funktion mehrerer Variablen

Um das gesuchte Optimum zu ermitteln, und somit die genaue Anzahl der Wasserflaschen \(x_i\) für jedes gegebene Volumen \(v_i\), unter der Bedingung, dass der Gesamtwert der Flüssigkeiten die Kapazität \(K\) des Eimers nicht überschreitet und zugleich maximiert wird, kann ein Greedy-Algorithmus eingesetzt werden. Dieser Algorithmus zielt darauf ab, eine optimale Lösung durch das Treffen lokaler Optima auf jeder Stufe des Prozesses zu finden. Im Kontext dieser Aufgabe bedeutet das, zunächst die größtmöglichen Flaschen zu verwenden und sich dann zu den kleineren vorzuarbeiten, bis der Eimer voll oder keine weiteren Flaschen verfügbar sind.

Schritte des Algorithmus:

1. Sortierung: Beginne mit dem Ordnen der Flaschenvolumen \(v_i\) in absteigender Reihenfolge, sodass du mit der größten Flasche beginnst und zur kleinsten übergehst.

2. Initialisierung: Setze das Gesamtvolumen \(V_{ges}\) der im Eimer enthaltenen Flüssigkeiten auf 0 und die Gesamtanzahl der benötigten Flaschen für jedes Volumen \(x_i\) auf 0.

3. Iteration und Auswahl: Für jedes Flaschenvolumen \(v_i\) vom größten zum kleinsten:

a. Berechne, wie viele Flaschen dieses Volumens \(x_i\) maximal in den Eimer passen, ohne dass das Gesamtvolumen \(V_{ges}\) die Kapazität \(K\) überschreitet. Dies kann durch die Formel \(x_{i,max} = \lfloor(K - V_{ges}) / v_i\rfloor\) ermittelt werden.

b. Aktualisiere \(V_{ges}\) um das Volumen der hinzugefügten Flaschen: \(V_{ges} = V_{ges} + x_{i,max} \cdot v_i\).

c. Setze den Wert von \(x_i\) auf \(x_{i,max}\).

4. Überprüfung und Anpassung: Nachdem alle Flaschenvolumina durchgegangen wurden, überprüfe, ob der Eimer vollständig gefüllt ist oder das hinzufügen kleinerer Volumina erforderlich ist, falls verfügbar.

5. Ergebnis: Die endgültige Liste der \(x_i\) (für jedes \(v_i\)) repräsentiert die optimale Anzahl der Flaschen, die verwendet werden sollte, um den Eimer so voll wie möglich zu machen, ohne ihn zu überlaufen.

Es ist zu beachten, dass dieser Greedy-Algorithmus gut funktioniert, weil das Problem so strukturiert ist, dass die Hinzufügung der größtmöglichen Flaschen zuerst dazu tendiert, eine optimale Lösung zu finden. Jedoch ist wichtig zu verstehen, dass Greedy-Algorithmen nicht immer die global optimale Lösung garantieren können, insbesondere, wenn das Problem komplexere Einschränkungen aufweist oder nicht durch lokale Optima gelöst werden kann. In diesem speziellen Fall jedoch passt der Greedy-Ansatz gut zu den gegebenen Bedingungen und Zielen der Aufgabe.
Avatar von 3,5 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community