Um klar zu sein, müssen wir mathematische Funktionen (ich werde sie Funktionen nennen und es gibt oft unzählige davon, so dass sie überhaupt nicht aufzählbar sind) und Funktionen, die Sie schreiben können, unterscheiden: Ich werde sie Programme oder auch berechenbare Funktionen nennen .
Eine Teilmenge einer zählbaren Menge heißt berechenbar, wenn es ein Programm gibt, das bei gegebenem Element von "ja", wenn und "nein", wenn . (Und er muss immer etwas antworten.) Eine Menge wird als rekursiv aufzählbar bezeichnet, wenn das Programm berechtigt ist, nicht zu antworten, anstatt "nein" zu sagen. (Es ist gleichbedeutend damit, dass das Programm alle Elemente von in beliebiger Reihenfolge drucken muss.)E x E x ∈ S x ∉ S SSExEx∈Sx∉SS
Die Menge aller Programme, die sich insgesamt auf einer endlichen Menge befinden, ist aufzählbar, da Sie einen Interpreter schreiben können, der das Programm nur auf allen Elementen der endlichen Menge ausführt und "yes" zurückgibt, wenn alle beendet werden. (Aber kann nicht sehen, ob einer von ihnen nicht)
Ihr Professor sagte, dass die Menge aller Programme, die sich auf einer unendlichen Menge befinden, nicht aufzählbar ist, da Sie Ihr Programm nicht einfach auf einer unendlichen Anzahl von Elementen ausführen können.
Das heißt aber nicht, dass das schlecht ist:
Zum Beispiel ist die Menge, wenn alle Programme nachweislich vollständig sind, auflistbar, da Sie alle Beweise auflisten und mechanisch prüfen können, ob sie beweisen, dass Ihr Programm vollständig ist.
Selbst eine Aufzählung wäre nicht praktikabel, da Sie möglicherweise ewig warten müssen, ohne sicher zu sein, ob der Vorgang eines Tages beendet wird. Ich verstehe nicht, wie man Programme verwendet, die alle Gesamtfunktionen auflisten ...
Es gibt einige Programmiersprachen, in denen alles, was Sie schreiben, garantiert nur mit statischer Eingabe endet! Es gibt sogar einige, die Ihnen eine polynomielle Bindung garantieren. Momentan sind sie größtenteils akademisch. Wenn Sie in diesen Sprachen schreiben, werden Sie wahrscheinlich eher die Einschränkungen spüren, die das Schreiben in Python mit sich bringt, aber es arbeiten viele Forscher daran.
Um Ihre Frage zu beantworten: in gewissem Sinne ja. Eine mögliche Nichtbeendigung ist erforderlich, um vollständig zu sein (derzeit höchste Rechenleistung). Aber ich finde das nicht direkt relevant für die Tatsache, dass Gesamtfunktionen aufzählbar sind oder nicht. Sie können noch alle Gesamtprogramme schreiben!