Klammerungsanzahl (ohne Rechenregeln)

Neue Frage »

Auf diesen Beitrag antworten »
NoobinInfo Klammerungsanzahl (ohne Rechenregeln)

Meine Frage:
Auf wie viele Arten kann die Formel 1 + 2 * 3 * 4 + 5 * 7 ausgerechnet werden, wenn es keine "Punkt- vor Strichrechnung" gibt?

Also die Anzahl der Klammern (5) dürfen nicht verändert werden.

Meine Ideen:
Einige Beispiele wären ja

((1 + 2)*(3*((4 + 5)*7)) = 567
(1 + ((((2*3)*4) + 5)*7) = 204
(1 + ((2*((3*4) + 5))*7))= 239

Hab auch schon was von der Catalan-Zahl gehört, konnte damit aber nichts anfangen..
 
Auf diesen Beitrag antworten »
Karlito

Also ich denke es mir iterativ:
  1. bei jedem Schritt wird ein Paar gewählt was mit einer Rechenoperation verbunden ist.
  2. danach wird dieses Paar zu einem Wert Reduziert.
  3. wiederhole bei 1. bis nur noch ein wert übrig ist.


D.h. bei der ersten Iteration sind folgende 5 Paare möglich:
  • 1+2
  • 2*3
  • 3*4
  • 4+5
  • 5*7


Beim nächsten Schritt ist ja ein Paar auf einen Wert reduziert und es sind nur noch 4 Paarbildungen möglich. Folglich komme ich auf 5! = 120 mögliche Berechnungsarten.

VG,

Karlito
Auf diesen Beitrag antworten »
eulerscheZahl

Kannst du mir deine 6 Bäume für 3 Rechenzeichen mal zeigen, Karlito?
Ich finde da nur 5.
Und für die 5 Rechenzeichen aus der Aufgabe finde ich (war ja eh klar smile ) 42 Bäume.

Ich baue erst die kleinen Bäume(wie viele Bäume für 2 Zeichen, ...) auf und setze dann ein Rechenzeichen dazwischen, multipliziere die Werte der kleineren Bäume, sodass ich auf die gewünsche Anzahl an Zeichen insgesamt komme.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
#include "stdio.h"

int main(void)
{
	int baeume[10] = {0};
	int anzahlRechenzeichen, einfuegePos;
	baeume[0] = 1; //bei nur einer Zahl ohne Rechenzeichen eine Möglichkeit: (a)
	baeume[1] = 1; //auch bei 2 Zahlen: (a+b)
	for(anzahlRechenzeichen = 2; anzahlRechenzeichen <= 5; anzahlRechenzeichen++)
		for(einfuegePos = 0; einfuegePos < anzahlRechenzeichen; einfuegePos++)
			baeume[anzahlRechenzeichen] += baeume[einfuegePos] * baeume[anzahlRechenzeichen - einfuegePos - 1];
	for(anzahlRechenzeichen = 1; anzahlRechenzeichen <= 5; anzahlRechenzeichen++)
		printf("Moeglichkeiten bei %d Rechenzeichen:%d\n", anzahlRechenzeichen, baeume[anzahlRechenzeichen]);
}


Ausgabe:
code:
1:
2:
3:
4:
5:
Moeglichkeiten bei 1 Rechenzeichen:1
Moeglichkeiten bei 2 Rechenzeichen:2
Moeglichkeiten bei 3 Rechenzeichen:5
Moeglichkeiten bei 4 Rechenzeichen:14
Moeglichkeiten bei 5 Rechenzeichen:42


Habe ich da einen Denkfehler?

edit: @NoobinInfo
bei deinen ersten beiden Beispielen hast du je nur vier Klammern zu

edit2: du zählst diesen Baum hier doppelt, Karlito:
code:
1:
2:
3:
4:
5:
      +
    /   \
    +    +
  /  \  / \ 
  a  b  c  d

einmal machst du erst (a+b) und dann (c+d) und einmal erst (c+d)

edit3:
aller guten Dinge sind 3
Folge in OEIS
Zitat:
Catalan numbers: C(n) = binomial(2n,n)/(n+1)
[...]
Number of ways to insert n pairs of parentheses in a word of n+1 letters. E.g. for n=3 there are 5 ways: ((ab)(cd)), (((ab)c)d), ((a(bc))d), (a((bc)d)), (a(b(cd))).
Auf diesen Beitrag antworten »
Noobinlnfo

Zitat:
Original von eulerscheZahl

Und für die 5 Rechenzeichen aus der Aufgabe finde ich (war ja eh klar smile ) 42 Bäume.


Gott (Auf die Zahl bin ich vorhin beim Rumprobieren auch gestoßen, war wohl gar nicht so übel)

Zitat:
Original von eulerscheZahlIch baue erst die kleinen Bäume(wie viele Bäume für 2 Zeichen, ...) auf und setze dann ein Rechenzeichen dazwischen, multipliziere die Werte der kleineren Bäume, sodass ich auf die gewünsche Anzahl an Zeichen insgesamt komme.


Zunge raus kannst du mir das vielleicht ein wenig anschaulicher erklären, ich verstehe das noch nicht soo ganz (mit dem Rechenzeichen dazwischen)

Edit: Gut, hat sich denke ich mit deinem Edit erledigt Daumen hoch
(Oder lässt sich das mit den Bäumchen noch irgendwie skizzieren?)

Zitat:
Original von eulerscheZahledit: @NoobinInfo
bei deinen ersten beiden Beispielen hast du je nur vier Klammern zu


Oh tut mir Leid, hab ich wohl irgendwie verschludert Schläfer
 
Auf diesen Beitrag antworten »
Karlito

Hallo,

@euler: Danke! Bezieht man sich nur auf die Klammern, so hast du absolut recht, das habe ich auch übersehen. Bezieht man sich jedoch auf die Reihenfolge der Berechnung, so gibt es einen Unterschied, ob man zuerst (1,2) und dann (3,4) berechnet oder umgekehrt. Auch wenn das Ergebnis das selbe ist, so sind es doch 2 verschiedene Berechnungsarten. Man könnte noch argumentieren, dass (1,2) und (3,4) parallel berechnet werden. Das sind alles Spitzfindigkeiten...

Es ist die Frage, wie die Aufgabe gemeint ist. Von diesen Catalan-Zahlen habe ich noch nichts gehört.

Gruß,

Karlito
Auf diesen Beitrag antworten »
eulerscheZahl

Da hast du natürlich Recht, ich bin nur nach dem Baum am Ende gegangen. Ich dachte auch erst, dass es auf n! rausläuft, bis ich auf dem Papier etwas herumprobiert habe.
Und die Catalan-Zahlen kannte ich bis eben auch nicht, aber auf OEIS findet man ja so ziemlich jede Zahlenfolge, die einem unterkommt.
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
Original von Noobinlnfo
Zunge raus kannst du mir das vielleicht ein wenig anschaulicher erklären, ich verstehe das noch nicht soo ganz (mit dem Rechenzeichen dazwischen)

Edit: Gut, hat sich denke ich mit deinem Edit erledigt Daumen hoch
(Oder lässt sich das mit den Bäumchen noch irgendwie skizzieren?)

Zu viele Edits, hätte es fast übersehen.

Beispiel: ich will insgesamt 3 Rechenzeichen einbauen.
Ich nehme mir ein Plus(als Wurzel) und habe noch zwei Rechenzeichen übrig, die ich auf die Seiten rechts und links der Wurzel verteilen kann. Wie viele Kombinationen es dafür gibt, habe ich vorher schon berechnet.
Dann sage ich z.B. links kommt kein Plus, also sind rechts 2 (muss in Summe ja 2 sein). Die Möglichkeiten für rechts und links werden multipliziert (sind ja unabhängig voneinander), dann werden die Bäume rechts und links der Wurzel anders aufgebaut (bezüglich Anzahl der Rechenzeichen)

Ich muss jetzt weg Wink
Auf diesen Beitrag antworten »
Karlito

Jaja, ich dachte auch zuerst an n!. Zettel und Stift sind doch trotz Technik immer noch das Beste Augenzwinkern

Gute Zusammenarbeit Daumen hoch

Gruß,

Karlito
 
Neue Frage »
Antworten »


Verwandte Themen