Nein, es geht hier nicht um Baphomets Fluch. Sondern um ein schönes mathematisches Problem, das auch für Nicht-Mathematiker interessant ist. Kennengelernt habe ich es damals im Mathe-Leistungskurs in den frühen Neunzigern. Was ich nicht wusste: Das war damals eine ziemlich neue Veröffentlichung; die Fragestellung ist erst 25 Jahre alt. Danke, Herr Brehm!
Die Aufgabe
In einer Spielshow gibt es drei verschlossene Türen. Hinter zweien steht eine Ziege, also die Niete, hinter der dritten sagen wir ein Auto, der Gewinn. Die Regeln sind folgende: Nachdem der Kandidat eine Tür ausgewählt hat, öffnet der Moderator (der weiß, wo der Gewinn ist) eine der beiden übrigen Türen, natürlich eine mit einer Ziege dahinter. Der Kandidat erhält dann die Möglichkeit, bei seiner ursprünglichen Wahl zu bleiben oder die andere nicht geöffnete Tür zu wählen.
Was sollte der Kandidat tun?
Bei seiner Wahl bleiben?
Sich umentscheiden?
Oder ist es egal?
Für die, die’s gerne ganz genau nehmen, versuche ich, die Regeln noch einmal lückenlos darzustellen:
- Der Hauptgewinn steht mit gleicher Wahrscheinlichkeit hinter einer der drei Türen.
- Der Moderator weiß, wo die Ziegen sind und wo das Auto ist.
- Der Kandidat weiß es nicht.
- Der Kandidat sucht sich eine Tür aus (sie wird aber noch nicht geöffnet).
- Der Moderator öffnet daraufhin immer eine Tür, aber
- nicht die, die der Kandidat gewählt hat, und
- nicht die mit dem Gewinn.
- Der Kandidat kann sich daraufhin für eine der beiden übriggebliebenen verschlossenen Türen entscheiden.
- Der Kandidat bekommt dann, was er hinter der Tür findet. Er will das Auto haben, nicht die Ziege.
Die Lösung
Die richtige Antwort ist, dass der Kandidat bessere Chance auf den Gewinn hat, wenn er sich umentscheidet. Die meisten Menschen, ich auch, tippen intuitiv darauf, dass es egal ist, was der Kandidat tut: Es gibt noch zwei geschlossene Türen, und egal, welche er wählt, er hat eine 50%ige Chance auf das Auto. Aber das stimmt nicht: Die Information, die er dadurch erhält, dass der Moderator eine Tür öffnet, kann er nutzen, indem er sich umentscheidet. Die Wahrscheinlichkeit, dass der Gewinn hinter der ursprünglich gewählten Tür ist, ist wie zu Beginn ein Drittel, die, dass er hinter der anderen verschlossen Tür ist, zwei Drittel.
Als die Website der Computerzeitschrift c’t über das Jubiläum dieser Frage geschrieben hat, haben sich im Forum zahlreiche Diskussionen darum entsponnen, ob diese Antwort stimmt. Die Anzahl der Beiträge war wohl selbst für die diskussionsfreudigen Leser dieser Website ungewöhnlich. Schon die ursprüngliche Veröffentlichung hatte Protest geerntet: 92% der Nichtmathematiker und sogar 65% der Fachleute, die Briefe dazu schrieben, wollten die Lösung nicht glauben. (Wobei natürlich die Motivation zu schreiben größer ist, wenn man mit dem Inhalt einer Veröffentlichung nicht einverstanden ist.)
Erklärung(en)
Für die, die die Lösung nicht nachvollziehen können, hier ein paar Denkanstöße.
Wahrscheinlichkeiten
Die Wahrscheinlichkeit, dass der Kandidat auf Anhieb von drei Türen die richtige ausgewählt hat, ist ein Drittel. Die Wahrscheinlichkeit, dass er die falsche gewählt hat, ist zwei Drittel. Für das nächste Ereignis, der Moderator zeigt eine Tür mit einer Niete, ist die Wahrscheinlichkeit 100% – er tut es immer. Die kombinierte Wahrscheinlichkeit, dass die ursprüngliche Tür die richtige ist, ist danach 1/3 * 1 (100%) = 1/3. Die kombinierte Wahrscheinlichkeit, dass die ursprüngliche Tür nicht die richtige ist, ist dementsprechend weiterhin zwei Drittel. Das einzige, was sich dadurch, dass eine Tür aus dem Rennen ist, geändert hat, ist, dass sich die Wahrscheinlichkeit von zwei Dritteln nun nicht mehr auf zwei andere Türen verteilt, sondern für die einzige übrige andere Tür gilt.
Prespektivwechsel
Die Wahrscheinlichkeit, dass der Gewinn hinter Tür X steht, ist ein Drittel. Nehmen wir an, der Kandidat wählt Tür 1. Versetzen wir uns in den Showmaster (die Idee stammt aus der Forschung)…
Wenn Tür 1 die richtige war, mache ich Tür 2 oder Tür 3 auf. Der Kandidat gewinnt, wenn er bei seiner Wahl bleibt. Wenn Tür 2 die richtige war, muss ich Tür 3 aufmachen. Der Kandidat sollte besser wechseln. Wenn Tür 3 richtig war, werde ich Tür 2 öffnen. Auch hier sollte der Kandidat sich umentscheiden.
Man sieht: In einem von drei gleich wahrscheinlichen Fällen ist es besser für den Kandidaten, bei seiner ursprünglichen Wahl zu bleiben, in zwei von drei Fällen ist es besser, zu wechseln. Wichtig ist es, sich nicht davon irritieren zu lassen, dass der Moderator im Fall, dass der Kandidat von vorneherein die richtige Tür hatte, zwei Möglichkeiten hat, Türen zu öffnen. Dadurch verdoppelt sich die Wahrscheinlichkeit dieses Falles nicht.
100 Türen
Man stelle sich vor, der Moderator würde nicht zwei von drei Türen übriglassen, sondern zwei von einhundert. Der Kandidat wählt Tür 18. Dann zeigt ihm der Moderator, dass hinter Tür 1 eine Ziege ist, hinter Tür 2, hinter Tür 3, hinter Tür 4, hinter Tür 5, hinter Tür 6, hinter Tür 7, hinter Tür 8, hinter Tür 9, hinter Tür 10, hinter Tür 11 – an Tür 12 geht er vorbei -, dann öffnet er Tür 13, Tür 14, Tür 15, Tür 16, Tür 17 – an Tür 18 geht er auch vorbei, die hatte ja der Kandidat ausgewählt – und danach öffnet er alle Türen von 19 bis 100. Es bleiben also, wie bei den drei Türen, zwei Türen übrig: Nummer 18, die der Kandidat ausgewählt hatte, und Nummer 12, die der Moderator aus den 99 anderen Türen als einzige nicht geöffnet hat. Wie stehen wohl die Chancen, dass es reiner Zufall war, dass der Moderator Tür 12 ausgelassen hat? Wenn hier die Chancen nicht 50:50 sind, warum sollte es bei drei Türen anders sein?
Ausprobieren (lassen)
Ein Zweifler im c’t-Forum hat ein Programm geschrieben, mit dem er beweisen wollte, dass 50:50 die richtige Lösung wäre. Ich habe sein Programm so umgeschrieben, dass es zur Aufgabe passt. Es führt 100.000 Zufallsversuche durch und gibt aus, wie oft der Kandidat gewinnt, wenn er sich nie umentscheidet. Denn er hätte ja, wenn die Chancen 50:50 stünden, keinen Grund, sich umzuentscheiden.
public class GoatsProblem
{
private static System.Random random = new System.Random();
public static void Main(System.String[] args)
{
int tries = 100000;
int carsHit = 0;
int carsMissed = 0;
for (int i = 1; i <= tries; i++)
{
/*
* Set up the game. Distribute the goats an the car
* with equal chances on all three gates.
*/
int gateWithCar = GoatsProblem.random.Next(3) + 1;
/* FIRST, a gate is chosen */
int chosenGate = GoatsProblem.random.Next(3) + 1;
/* THEN, moderator opens one gate with a goat */
int openedGate = 0;
if (gateWithCar != 1 && chosenGate != 1)
openedGate = 1;
else if (gateWithCar != 2 && chosenGate != 2)
openedGate = 2;
else if (gateWithCar != 3 && chosenGate != 3)
openedGate = 3;
/* Then contestant stays with his choice
because he thinks his chances are 50:50.*/
// Let’s check if he has won.
if (chosenGate == gateWithCar)
carsHit++;
else
carsMissed++;
}
// Display overall result
System.Console.WriteLine(„Amount of Cars won: “ + carsHit);
System.Console.WriteLine(„Amount of Cars not won: “ + carsMissed);
}
}
Das Ergebnis ist bei jedem Durchlauf etwas anders, es wird ja „ausgewürfelt“, aber gerade wird mir zum Beispiel das hier ausgegeben:
Amount of Cars won: 33381 Amount of Cars not won: 66619
Der Compiler
Spannend fand ich, was der Compiler, mit dem ich obiges Programm übersetzt habe, dazu ausgegeben hat. Seine Warnung lautete:
warning CS0219: The variable 'openedGate' is assigned but its value is never used
Es liest sich fast, als hätte der Compiler das Problem durchschaut: Der Kandidat bekommt zusätzliche Information. Er erfährt über eine Tür, dass dahinter eine Ziege ist. Wenn er sich, weil er glaubt, dass es keine Rolle spielt, nie umentscheidet, wird diese zusätzliche Information nicht genutzt. In der Sprache der Programmierung: Der Variable „openedGate“, die diese Information enthält, wird zwar ein Wert zugewiesen, aber sie wird nie wieder verwendet.
Vertrauen
Wenn alle Erklärungen dir nicht das Gefühl gegeben haben, dass 1/3 zu 2/3 richtig sein könnte, bleibt nur eins: Vertrauen. Das Problem wurde in der Mathematik diskutiert, und wenn man die Voraussetzungen sauber festlegt (ich hoffe, das habe ich getan), ist das das Ergebnis.