Beweis: wie man es weiß, nicht wie wahrscheinlich es ist
Direkter Beweis, Widerspruchsbeweis, Gegenbeispiele und warum vierzig bestandene Tests noch kein Beweis sind.
Mengen, boolesche Algebra und Big-O ruhen alle auf einem Schritt, den Sie bisher stillschweigend gemacht haben: ein paar Fälle prüfen und entscheiden, dass das Muster hält. Bei einer Menge mit zwei Elementen ist das in Ordnung, weil Sie alles sehen. Bei einer Aussage über jede ganze Zahl ist es das nicht, und der ganze Unterschied zwischen Profi und Anfänger versteckt sich in dieser Lücke. Ein Beweis ist kein stärkerer Test. Er ist ein Objekt anderer Art: ein endliches Argument, das unendlich viele Fälle auf einmal abdeckt.
Lesen Sie zuerst die Behauptung genau, denn die meisten schlechten Beweise greifen einen anderen Satz an als den an der Tafel. Eine Aussage der Form für jede ganze Zahl n hat per Definition keine Ausnahmen, und eine Aussage der Form es gibt ein n verlangt einen Zeugen. Das sind entgegengesetzte Strategien. Die Behauptung unten sieht hervorragend aus. Führen Sie sie aus, und sie hält vierzig Werte hintereinander, weit besser als die meisten Muster, denen Sie bisher vertraut haben.
claim: for every integer n >= 1, n^2 + n + 41 is prime
n = 1 43 prime
n = 2 47 prime
n = 3 53 prime
n = 4 61 prime
n = 5 71 prime
n = 10 151 prime
n = 20 461 prime
n = 39 1601 prime
n = 40 1681 = 41 * 41 composite
confirmed: 39 cases before that oneBei n = 40 zerfällt der Wert in ein Produkt. Dieser eine Fall ist eine vollständige, endgültige Widerlegung, und er kostet eine Zeile. Diese Asymmetrie ist das Nützlichste in der ganzen Lektion: um eine Allaussage zu beweisen, müssen Sie über alle Fälle auf einmal argumentieren, aber um sie zu zerstören, genügt genau einer. Beachten Sie auch, was die vierzig Erfolge wert waren — nichts. Sie waren keine schwachen Belege für die Behauptung, sondern gar keine, denn die Behauptung war die ganze Zeit falsch. Wenn Sie ein Gegenbeispiel suchen, suchen Sie an den Rändern: n = 0, n = 1, negative Zahlen, die leere Liste, der größte Wert, den Ihr Typ halten kann. Die meisten falschen Allaussagen über Code sterben am Randfall, nicht in der Mitte.
Ein direkter Beweis ist die gewöhnliche Art: von den Definitionen ausgehen und zur Behauptung gelangen, ohne etwas Unbewiesenes anzunehmen. Wenn das Argument in verschiedenen Situationen verschieden läuft, teilen Sie es in Fälle und stellen Sie sicher, dass die Fälle alles abdecken. Die Behauptung unten hat einen zweiseiligen Beweis, aber erst die letzte Zeile macht ihn zum Beweis: Sie stellt fest, dass jede ganze Zahl in einen der beiden Fälle fällt. Ohne diesen Satz haben Sie zwei Beispiele gezeigt, kein Theorem.
claim: for every integer n, n^2 + n is even
n^2 + n = n * (n + 1)
case A: n = 2k -> n * (n + 1) = 2 * k * (n + 1)
case B: n + 1 = 2k -> n * (n + 1) = 2 * k * n
int(n) = A union BDer Widerspruchsbeweis ist für Behauptungen, die man frontal schwer angreifen kann, meist für Aussagen, dass etwas nicht existiert. Sie nehmen das Gegenteil an und folgen den Konsequenzen, bis zwei Tatsachen nicht mehr gleichzeitig wahr sein können. Das klassische Beispiel steht unten. Jeder Schritt ist gewöhnliche Algebra plus eine arithmetische Tatsache: ist a zum Quadrat gerade, so ist a gerade. Der Widerspruch ist nicht, dass etwas Überraschendes passiert, sondern dass das Ergebnis die Annahme angreift, mit der Sie begonnen haben: dass a und b keinen gemeinsamen Teiler haben.
claim: no integers a, b with sqrt(2) = a / b
assume integers a, b exist, gcd(a, b) = 1
a / b = sqrt(2)
a^2 = 2 * b^2
a^2 even -> a = 2k
4 * k^2 = 2 * b^2
b^2 = 2 * k^2 -> b = 2m
gcd(a, b) >= 2 -> contradicts gcd(a, b) = 1
assumption falseGenau hier sterben die meisten misslungenen Widerspruchsbeweise, und es lohnt sich, diese Sackgasse zu benennen, damit Sie sie erkennen. War Ihre Annahme zu schwach, zeigt der erreichte Widerspruch vielleicht nur, dass die Annahme unbequem war, nicht dass sie falsch ist. Mit einem Bruch, der einen gemeinsamen Teiler hat, wäre gar kein Widerspruch entstanden. Die Abhilfe besteht nie darin, stärker auf die Algebra zu drücken, sondern zurückzugehen und die stärkste, konkreteste Version des Gegenteils anzunehmen. Ein Widerspruchsbeweis ist genau so gut wie die Annahme, die er tötet.
Was ist ein Test also wert? Sehr viel, aber er ist kein Beweis und wird keiner, wenn man mehr Tests hinzufügt. Belege erhöhen die Zuversicht; ein Beweis beendet die Frage. Echte Ingenieursarbeit braucht beides, und ihre Verwechslung ist der Grund, warum Systeme mit einer Behauptung ausgeliefert werden, die niemand tatsächlich geprüft hat. Die ehrliche Position ist eng und nützlich: mein Beweis zeigt, dass der Algorithmus ein sortiertes Feld zurückgibt, und meine Tests zeigen, dass er in den Speicher passt, den wir haben. Keiner der beiden Sätze gibt sich als der andere aus.
Praxis
Links stehen vier Behauptungen. Ordnen Sie jeder die eine Beobachtung zu, die die Frage entscheidet.
Hinweise
- Fragen Sie, was man prüfen müsste, um sicher zu sein, nicht was bequem zu prüfen ist.
- Zwei dieser Aussagen sagen JEDE. Wählen Sie dort das kleinste einzelne Objekt, das die Aussage tötet, und eines, das man gar nicht töten kann.
Ein Team liefert einen Cache aus. Vorher testet es ihn auf 1000 zufällig gewählten Rechnern mit demselben Betriebssystem, derselben Browser-Version und demselben Netzwerktreiber, und auf allen 1000 liefert der Cache nie veraltete Daten. Das Team schließt, dass der Cache nie veraltete Daten liefert. Welcher Satz beschreibt den Status dieser Schlussfolgerung?
Hinweise
- Der Test lief nur auf Rechnern, die zwei Eigenschaften teilen. Fragen Sie, von welchen Rechnern die Behauptung eigentlich handelt.
- Einen starken Test zu überstehen ist ein Beleg, kein Beweis. Welche einzelne Beobachtung würde die Diskussion beenden?
Bringen Sie den Widerspruchsbeweis dieser Behauptung in die richtige Reihenfolge. Behauptung: es gibt keine rationale Zahl, deren Quadrat 2 ist.
- 1die Annahme ist falsch, also gibt es solche ganzen Zahlen a und b nicht
- 2einsetzen: 4 * k^2 = 2 * b^2, also b^2 = 2 * k^2
- 3beide Seiten quadrieren: a^2 = 2 * b^2
- 4angenommen, es gibt ganze Zahlen a und b mit a / b = sqrt(2) und gcd(a, b) = 1
- 5a^2 ist gerade, also ist a gerade, also a = 2k für eine ganze Zahl k
- 6b ist ebenfalls gerade, also sind a und b durch 2 teilbar, was gcd(a, b) = 1 widerspricht
Hinweise
- Ein Widerspruchsbeweis beginnt damit, dass Sie das hinschreiben, was Sie zerstören wollen, und es dann mit der Zerlegungsregel aus der Aufgabe abwickeln.
- Die letzte Zeile ist keine Tatsache über die Zahl. Sie ist die Feststellung, dass Ihre Ausgangsannahme nicht wahr sein kann.
Fragen zu dieser Lektion
Warum mit Logik und Mengen beginnen?
Weil alles andere darauf aufbaut. Datenbanken sind Mengen, Programme sind boolesche Entscheidungen, und „ist das schnell genug?“ ist die Mathematik des Wachstums. Wer das überspringt, erlebt spätere Fächer als Auswendiglernen.
Was sagt Big-O eigentlich aus?
Wie der Aufwand wächst, wenn die Eingabe wächst. Es ist keine Stoppuhr: Es sagt, ob sich die Zeit bei doppelten Daten verdoppelt oder vervierfacht. Dieser Unterschied entscheidet, ob ein Programm den echten Einsatz übersteht.
Ist das kostenlos?
Ja. Die erste Ebene jedes Fachs ist kostenlos und braucht kein Konto. Tiefere Ebenen und die höheren Stufen sind kostenpflichtig — genau das hält das Projekt am Leben.
Für welches Alter ist das gedacht?
Für neugierige Jugendliche ab etwa 12 Jahren und für Erwachsene, die bei null anfangen. Programmiererfahrung wird nicht vorausgesetzt; die Lektionen zu Netzwerken und Physik brauchen keine Mathematik über Schulniveau.
Muss ich schon programmieren können?
Nein. Logik, Physik und Netzwerke beginnen bei null. Code schreibst du im Bereich Programmiersprachen — und auch der fängt vorne an.
Muss ich etwas installieren?
Nein. Alles läuft im Browser: Theorie, Übungen und die interaktiven Simulationen. Es gibt nichts herunterzuladen und nichts einzurichten.
Wie lange dauert ein Fach?
Eine Lektion dauert 10 bis 15 Minuten. Eine Junior-Stufe umfasst etwa 12 bis 20 Lektionen, also einige Wochen regelmäßiger Übung statt eines Abends.
Muss ich der Reihenfolge folgen?
Innerhalb einer Stufe öffnen sich die Ebenen nacheinander, weil jede auf der vorherigen aufbaut. Zwischen den Fächern bist du frei: beginne mit Logik, Physik oder Netzwerken.