Ist diese Mathe-Aufgabe wirklich so easy?

... komplette Frage anzeigen

4 Antworten

Ich würde das als lineares Gleichungssystem sehen.

x = Anzahl der Blumensträuße

y = Anzahl der Salate

z = Anzahl der Brötchen

Bedingung 1 (100 Teile): x + y + z = 100

Bedingung 2 (100 Euro): 10 * x + 3 * y + 0.5 * z = 100

Allerdings ist das Gleichungssystem unterdefiniert. (Zwei Gleichungen, drei Unbekannte.) Die Lösung wird also nicht eindeutig sein.

Sofern man nur ganzzahlige Lösungen sucht, kann man mit dem Computer den Lösungsraum vollständig absuchen, weil er nur 1 Mio. Kombinationen umfasst, z. B. in Python 2.

for x in range(0, 101):
for y in range(0, 101):
for z in range(0, 101):
if ((x + y + z) == 100) & (((10 * x) + (3 * y) + (0.5 * z)) == 100):
print (x, y, z)

(Die obere Grenze ist exklusiv, deswegen 101.)

Die Ausgabe dieses Programms lautet wie folgt.

(0, 20, 80)
(5, 1, 94)

Also entweder 0 Blumensträuße, 20 Salate, 80 Brötchen oder 5 Blumensträuße, 1 Salat, 94 Brötchen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von NoHumanBeing
19.02.2016, 19:31

Was ich mich allerdings frage: Was macht der Vater mit so vielen Brötchen? ;-)

1
Kommentar von PWolff
19.02.2016, 19:44

Vermutlich geht es auch nicht einfacher. Ich nehme an, das Problem ist np-vollständig.

1
Kommentar von Zwieferl
20.02.2016, 15:42

Als "3. Gleichung" kann man - wie du es ja gemacht hast - die Definitionsmenge eingrenzen: x,y,z müssen natürliche Zahlen aus dem Bereich 1 bis 98 sein (Annahme: es wird von jedem mindestens eins gekauft - deine erste Lösung wäre da also nicht dabei) und z muß eine gerade Zahl sein (da ein Brötchen € 0,50 kostet, muß man zB 2 kaufen, damit der Gesamtbetrag eine natürliche Zahl ergibt) → jetzt einfach durchprobieren (da die Brötchen das bei weitem billigste ist, empfiehlt es sich mit z=98 zu beginnen; dann bist du schon beim 3. Versuch bei der richtigen Lösung)

1
Kommentar von servus98
20.02.2016, 19:00

Ok, danke für eure Antworten. Vor allem für deine (NoHumanBeing)! Leuchtet wirklich ein.

1

Ein einfacher Algorithmus könnte wie folgt aussehen:

  • Berechne die maximale Anzahl n an Blumensträußen, die ich kaufen kann, sodass man immer noch mindestens 100 Dinge kaufen kann.


Z.B. kann ich offenbar nicht 10 Sträuße kaufen, weil ich dann schon alles ausgegeben habe und nur 10 Artikel gekauft habe. Wenn ich 9 kaufe und den Rest mit Brötchen auffülle, habe ich nur 29 Artikel.

Wenn man das ausrechnet, kommt man darauf, dass man höchstens 5 Sträuße kaufen darf

(Nebenrechnung dafür: n + (100 - 10n) / 0.5 ≥ 100 aufgelöst nach n ergibt etwa n ≤ 5.26. Da nur ganze Zahlen erlaubt sind, gilt also n ≤ 5.)

  • Berechne für diese Anzahl an Sträußen nun die maximale Anzahl an Salaten auf dieselbe Weise:

Wir haben bisher 5 Sträuße. Lösen wir also erneut die Ungleichung

5 + n  + (100 - 50 - 3n) / 0.5 ≥ 100 nach n auf:

n ≤ 1.

Zusammengefasst: Wir dürfen höchstens 5 Sträuße und in diesem Fall höchstens einen Salat kaufen. Falls wir das tun, haben wir noch Geld für 94 Brötchen und damit dann alles ausgegeben.

Hier haben wir Glück gehabt, dass die letzte Ungleichung so glatt aufging. Ansonsten hätten wir die Anzahl der Sträuße um 1 reduzieren können und dann beim zweiten Schritt weitergemacht.

Antwort bewerten Vielen Dank für Deine Bewertung

Dies ist ein Problem der ganzzahligen linearen Optimierung.

Solche Aufgaben werden entweder entweder mit dem Simplex Verfahren gelöst oder per Heuristik.

Dafür gibts online Solver z.B: http://www.simplexme.com/de/

Antwort bewerten Vielen Dank für Deine Bewertung

Also ich konnte die folgenden Gleichungen aufstellen:
x + y + z = 100
10x + 3y + 0.5z = 100
Irfendwie fehlt da noch ne dritte Gleichung, wahrscheinlich gibt's auch einen anderen Lösungsweg. Vielleicht fällt es mir später noch ein...

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Phippe
19.02.2016, 19:31

NoHumanBeing hat's ja schon gelöst ;)

1

Was möchtest Du wissen?