TU Wien:Algebra und Diskrete Mathematik VU (diverse)/Übungen 2025W/Beispiel 189

Aus VoWi
Zur Navigation springen Zur Suche springen

Wieviele verschiedene Variablennamen kann man in einer fiktiven Programmiersprache verwenden, wenn diese Namen aus mindestens einem, höchstens aber vier (nicht notwendig verschieden) Buchstaben {A,...,Z} bestehen müssen, und die Befehle AND, OR, IF, THEN und GOTO nicht als Teilwörter enthalten sein dürfen.

Dieses Beispiel hat einen unbekannten Lösungsstatus. Bitte editiere diese Seite und schreibe den dir bekannten Status ins Beispiel. Die möglichen Werte sind hier: Vorlage:Beispiel dokumentiert. Führe folgende Änderung durch:
{{Beispiel|1=
Angabetext
}}

oder

{{Beispiel|
Angabetext
}}

zu (im Falle einer korrekten, unverifizierten Lösung "solved". Auch möglich "unsolved", "wrong", "verified_by_tutor". Alle möglichen Werte sind hier: Vorlage:Beispiel dokumentiert.)

{{Beispiel|status=solved|1=
Angabetext
}}


Lösungsvorschlag von W wallner

[Bearbeiten | Quelltext bearbeiten]

Das Beispiel kann mit dem Inklusions-Exklusions-Prinzip gelöst werden.

Gesucht ist die Menge M der Wörter mit Länge 1 bis 4 ohne die reservierten Teilwörter.

Wir betrachten das Universum E der Wörter mit einer Länge von 1 bis 4. E besteht aus den Mengen Ek der Wörter mit Länge k, k∈{1,2,3,4}. Jede Menge Ek enthält alle Variationen mit Wiederholung von k Buchstaben mit jeweils 26 Möglichkeiten, also gilt:

|E1|=261
|E2|=262
|E3|=263
|E4|=264

Die Gesamtgröße unseres Universums ist also:

|E|=|E1|+|E2|+|E3|+|E4|=261+262+263+264

Davon müssen wir jetzt die Vereinigung der Mengen mit den reservierten Teilwörter abziehen. Dabei müssen wir berücksichtigen, dass es Wörter gibt, die mehrere Teilwöter enthalten, und deshalb fälschlicherweise öfters abgezogen werden (z.B.: Das Wort IFOR enthält die beiden Teilwörter IF und OR, darf aber nur einmal abgezogen werden.)

Wir berechnen deshalb die Beträge der reservierten Teilmengen, sowie die Beträge der Vereinigungen mehrerer Teilmengen. Dabei bezeichnet z.B. xOR die Menge aller Wörter, die als erstes einen beliebigen Buchstaben, und als zweiten und dritten die Buchstaben OR enthalten ({AOR, BOR, COR, DOR, ..., ZOR)

Beträge der einzelnen Mengen

[Bearbeiten | Quelltext bearbeiten]
|OR|=1
|ORx|=26
|xOR|=26
|ORxx|=262
|xORx|=262
|xxOR|=262

|IF|=1
|IFx|=26
|xIF|=26
|IFxx|=262
|xIFx|=262
|xxIF|=262
 
|AND|=1
|ANDx|=26
|xAND|=26

|THEN|=1

|GOTO|=1

Beträge der Vereinigungen

[Bearbeiten | Quelltext bearbeiten]

Es gibt bei unsere Angabe nur 4 mögliche Wörter, die mehr als ein Teilwort enthalten können. Beim Test sollte man aber vorsichtig sein, falls z.B. in der Angabe die Teilwörter (GOTO, GO, TO), (FOR, OR), (TO, OR) oder ähnliches genannt werden (siehe Angabe und Lösung weiter unten von mnemetz).

|ORxx∩xxOR|=1
|ORxx∩xxIF|=1
|IFxx∩xxOR|=1
|IFxx∩xxIF|=1

Alle anderen Vereinigungen von zwei oder mehr Teilmengen sind leer.

Anmerkung mick:

Ist hier nicht geschnitten gemeint?

Anwenden des Inklusions-Exklusions-Prinzips

[Bearbeiten | Quelltext bearbeiten]

Einsetzen in die Formel des Inklusions-Exklusions-Prinzip bringt uns zu:

|M|=|E|−|OR|−|IF|−|ORx|−|xOR|−|IFx|−|xIF|−|AND|−|ORxx|−|xORx|−|xxOR|−|IFxx|−|xIFx|−|xxIF|−|ANDx|−|xAND|−|THEN|−|GOTO|+|ORxx∩xxOR|+|ORxx∩xxIF|+|IFxx∩xxOR|+|IFxx∩xxIF|

Einsetzen der uns bereits bekannten Werte bringt uns zu:

|M|=261+262+263+264−1−1−26−26−26−26−1−262−262−262−262−262−262−26−26−1−1+1+1+1+1

Zusammenfassen und ausrechnen ergibt:

|M|=263+264−5∗26−5∗262−1=17576+456976−130−3380−1=471041

mfg, --W wallner

PS: Wolfgang, beim Zusammenfassen hast du 2*26 vergessen, habs schon ausgebessert :) --p.paulweber

Lösungsvorschlag von mnemetz (etwas komplexere u. andere Angabe!)

[Bearbeiten | Quelltext bearbeiten]

Wieviele verschiedene Variablennamen kann man in einer fiktiven Programmiersprache verwenden, wenn diese Namen aus mindestens einem, höchstens aber vier (nicht notwendig verschieden) Buchstaben {A,...,Z} bestehen müssen, und die Befehle AND, OR, OF, THEN, GO, TO und FOR nicht als Teilwörter enthalten sein dürfen.

Wie sehen, dass in allen Variablennamen, in denen FOR vorkommt, OR schon enthalten ist. Die Einschränkung, dass FOR nicht vorkommen darf, koennen wir uns also sparen!


Wir zählen:

Es gibt 26 Variablennamen der Form x1 mit x1∈△:={A,..,Z}.


Es gibt 262 Namen der Form X1X2 mit X1,X2∈△. Von diesen ziehen wir 4 (nämlich OR, OF, GO und TO) wieder ab. Es gibt also 262−4 Variablennamen der Länge 2.


Es gibt 263 Namen der Form X1X2X3 mit X1,X2,X3∈△. Davon ziehen wir 8∗26+1 wieder ab (nämlich alle der Form X1OR, X1OF, X1GO, X1TO, ORX3, OFX3, GOX3, TOX3 für X1,X3∈△, und natürlich AND). Weil das aber zu einfach wäre, müssen wir 4 wieder hinzuaddieren (nämlich GOR, GOF, TOR und TOF), die wir sonst doppelt subtrahiert hätten. Es gibt also 263−(8∗26+1)+4 Variablennamen der Länge 3.


Und jetzt wird es noch komplizierter ... :-/

Es gibt 264 Namen der Form X1X2X3X4 mit X1,X2,X3,X4∈△ Von diesen ziehen wir 2∗26+3∗4∗262+1 wieder ab (nämlich alle der Form X1AND, ANDX4, X1X2OR, X1X2OF, X1X2GO, X1X2TO, X1ORX4, X1OFX4, X1GOX4, X1TOX4, ORX3X4, OFX3X4, GOX3X4, TOX3X4, und natürlich THEN).

Nun müssen wir wieder 2∗4∗26+4∗4 addieren, die wir sonst doppelt subtrahiert hätten (nämlich X1GOR, X1TOR, X1GOF, X1TOF, GORX4, TORX4, GOFX4, TOGX4, und OROR, OROF, ORGO, ORTO, OFOR, OFOF, OFGO, OFTO, GOOR, GOOF, GOGO, GOTO, TOOR, TOOF, TOGO, TOTO). Es gibt also 264−(2∗26+3∗4∗262+1)+2∗4∗26+4∗4 Variablennamen der Länge 4.


Insgesamt haben wir nun: Es gibt 26+262−4+263−(8∗26+1)+4+264−(2∗26+3∗4∗262+1)+2∗4∗26+4∗4 Variablennamen der Länge höchstens 4. (Das sind: 467104)