Ergebnismenge < Mengenlehre < Logik+Mengenlehre < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:59 Di 31.01.2012 | Autor: | weaser08 |
Moin Moin,
ich beschäftige mich gerade mit einem Logikrätsel. Bei diesem ist es u.a. gefordert die Summe 14, mit drei Summenden, zu bilden. Die Summanden dürfen jeweils nicht größer sein als 7. Also nach der Form:
x+y+z = n
n = 14
x <= 7
y <= 7
z <= 7
Dabei ist es nötig alle möglichen Summanden zu ermitteln bei denen das Ergebnis 14 ist.
Z.B.:
7+6+1
7+5+2
7+4+3
....usw
Bei dem Rätsel existieren auch andere Ergebnissummen oder auch andere Operatoren. Wenn ich versuche alle Möglichkeiten aufzulisten bin ich mir leider immer unsicher, ob ich alle Möglichen Kombinationen notiert habe. Kann man das irgendwie im voraus bestimmen und kann ich mir die suche irgendwie erleichtern, kann man das mathematisch beschreiben?
Im aktuellen Beispiel bin ich so vorgegangen, dass ich für x von 1-7 alle möglichen kombinatonen mit y und z notiert habe und die doppelten gestrichen habe.
x= 7
7+6+1=14
7+5+2=14
7+4+3=14
x= 6
6+7+1=14 ist schon bei x = 7
6+6+2=14
6+5+3=14
6+4+4=14
x= 5
5+7+2=14 ist schon bei x = 7
5+6+3=14 ist schon bei x = 6
4+5+5=14
x= 4
...u.s.w
Würde mich über Tipps freuen..^^
Gruß
w
|
|
|
|
Moin weaser08!
Das ist - wenn auch kein einfaches - so doch ein interessantes Problem. Daher habe ich mir es mal etwas angeschaut. Wenn Programmieren kein Fremdwort ist, kann man mit verhältnismäßig wenig Aufwand brauchbare Ergebnisse erzielen. Die größte Schwierigkeit besteht im Finden einer allgemeinen Formel.
Zunächst würde ich empfehlen, die Null als Wert für die Summanden [mm]x,\,y,\,z[/mm] zuzulassen - das erleichtert die allgemeine Handhabung. Damit habe ich eine Formel gefunden, die zumindest für die folgenden Parameter funktioniert:
[mm]S = 14, k = 7[/mm]
[mm]S = 16, k = 8[/mm]
[mm]S = 18, k = 9[/mm]
wobei [mm]S[/mm] die Summe ist und [mm]k[/mm] der maximale Wert jedes Summanden. Die Anzahl der Summanden habe ich erstmal konstant bei [mm]n = 3[/mm] belassen.
Es gilt:
[mm]M (n, S, k) = \sum_{x=k}^{k-k\,\text{div}\,n} (x+1) - (x+1)\text{div}(n-1)-(k-x)[/mm]
Die darin verwendete Operation div ist das abgerundete, ganzzahlige Ergebnis eines Quotienten. So ist z.B. [mm]7\,\text{div}\,2 = 3[/mm] und [mm]13\,\text{div}\,3 = 4[/mm]. Selbstverständlich ist [mm]8\,\text{div}\,2 = 4[/mm]. Es ist zwar kein mathematischer Operator, aber in Tabellenkalkulationsprogrammen wird diese Operation durch die Funktion QUOTIENT dargestellt und in vielen Programmiersprachen ist sie verfügbar.
Bei der eigentlichen Summenformel bin ich mir einigermaßen sicher, dass sie das richtige Ergebnis liefert, solange [mm]S = 2\cdot k[/mm] und [mm]n=3[/mm] gilt. Bei der oberen Grenze der Summe bin ich mir noch nicht ganz so sicher. Wird die Anzahl der Summanden variiert, bedarf es einer Erweiterung.
Eine weitergehende manuelle Überprüfung würde etwas mehr Programmierung erfordern. Ein Beweis für die Allgemeingültigkeit bzw. eine Anpassung der Formel zu Gunsten ihrer Allgemeingültigkeit dürfte auch etwas mehr Aufwand erfordern.
Ich hoffe, Dir hilft der Ansatz etwas weiter.
Gruß - Kalle.
P.S.: Für die oben genannten Parameter ergeben sich folgende Anzahlen:
[mm]M (3, 14, 7) = 8[/mm]
[mm]M (3, 16, 8) = 10[/mm]
[mm]M (3, 18, 9) = 12[/mm]
P.P.S.: Selsbtverständlich lässt sich die Formel noch leicht zusammenfassen, da das [mm]x[/mm] ja zweimal drin auftaucht:
[mm]M (n, S, k) = \sum_{x=k}^{k-k\,\text{div}\,n} 2x - (x+1)\text{div}(n-1)-k+1[/mm]
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 15:29 Mi 01.02.2012 | Autor: | weaser08 |
Hallo Kalle!
danke für die Antwort.
Ich verstehe dein Summenzeichen irgendwie nicht.
Wenn ich folgendes Beispiel nehme:
$ M (3, 14, 7) = [mm] \sum_{x=k}^{k\,\text{div}\,n} [/mm] = [mm] \sum_{x=7}^{7\,\text{div}\,3} [/mm] = [mm] \sum_{x=7}^{2} [/mm]
Das geht doch nicht, dass der untere Wert(7) größer als der obere Wert(2) ist oder wie hast du das gemeint?
Gruß,
weaser
|
|
|
|
|
Moin weaser08!
Warum soll das nicht gehen? Genauso, wie Du aufwärts zählen kannst, kannst Du es doch auch abwärts. Hier ein kleines Beispiel:
[mm]\sum_{x=5}^{3} x^2 = 5^2 + 4^2 + 3^2 = 50[/mm]
Aus [mm]M(n, S, k) = \sum_{x=k}^{k-k\text{div}n} 2x - (x+1)\text{div}(n-1)-k+1[/mm] ergibt sich mit [mm]S=14,\,k=7[/mm]:
[mm]M(3, 14, 7) = \sum_{x=7}^{7-7\text{div}3} 2x - (x+1)\text{div}(2)-7+1[/mm]
[mm]= \sum_{x=7}^5 2x - (x+1)\text{div}(2)-7+1[/mm]
[mm]= 14-8\text{div}2-6 + 12-7\text{div}2-6 + 10-6\text{div}2-6[/mm]
[mm]= 4 + 3 + 1 = 8[/mm]
Wenn Dir das nicht behagt, kannst Du die Grenzen natürlich auch umdrehen. Ich hatte so angefangen, weil die Summanden mit den größten [mm]x[/mm] ja klar sind und der letzte Summand zu finden war.
Allerdings hatte ich in der oberen Grenze der Summe in der Tat einen kleinen Fehler: habe ein [mm]k-[/mm] vergessen - ist korrigiert.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:38 Sa 04.02.2012 | Autor: | weaser08 |
Moin Karl, danke für die Erklärung.
Darauf aufbauend habe ich einen kleinen Algorithmus entwickelt, der
alle Variationen von Summanden auflistet und auf einer Console ausgibt.
Ist in C# programmiert. S muss hierbei aber auch immer 2k ergeben. n ist immer auf 3 gesetzt.
/// <summary>
/// Es werden alle Variationen mit Summanden aufgelistet, mit der die
/// Summe S errechnet wird. Die Anzahl der Summanden wird konstant auf
/// 3 gesetzt.
/// S muss hierbei immer 2k ergeben.
/// </summary>
/// <param name="S">Summe</param>
/// <param name="k">maximale Wert jedes Summanden</param>
static public void loesen_V1(int S, int k)
{
int z = k - (int)(k / 3);
int k2; //2. Summand
int x; // 3. Summand
while (k >= z)
{
k2 = k;
x = S - (k + k);
do
{
Console.WriteLine("{0} + {1} + {2}", k, k2, x);
k2--;
x++;
} while (k2 >= x);
k--; // 1. Summand wird um 1 verkleinert
}
}
Habe hier keine Code-Tags gefunden, aber ist ja noch recht übersichtlich..^^
Gruß,
Weaser
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:12 Sa 04.02.2012 | Autor: | KarlMarx |
Moin Weaser!
Ich beherrsche kein C# aber wenn's läuft und richtige Ergebnisse bringt ...
Besteht bei Dir Interesse, die Formel zu verallgemeinern?
Gruß - Kalle.
|
|
|
|