Berechenbarkeit Prinzipielle Grenzen der algorithmischen Berechenbarkeit Sind dem Computer bei der Lösung von Problemen Grenzen gesetzt? Gibt es prinzipielle Grenzen? Gibt es praktische Grenzen? unabhängig von • wissenschaftlichem, technischem Fortschritt • Speicherkapazität, • Rechengeschwindigkeit, • neuen, noch unbekannten Algorithmen • Zu dem Problem gibt es einen Algorithmus. Aber: der Zeitaufwand für die Lösung übersteigt jedes Zeitmaß Seite 10 /09.10 Berechenbarkeit Intuitiver Algorithmusbegriff Ein Algorithmus ist eine Folge von Anweisungen zur Lösung eines Problems, die folgende Eigenschaften erfüllt: Allgemeingültigkeit: Die Anweisungen besitzen Gültigkeit für die Lösung einer ganzen Problemklasse. Beispiel: Ein Algorithmus soll nicht nur 12*37 lösen, sondern zwei beliebige natürliche Zahlen multiplizieren können. Ausführbarkeit Die Anweisungen sind für den Menschen oder die Maschine ausführbar. Eindeutigkeit Die Folgeanweisung steht eindeutig fest Endlichkeit Die Anweisungsfolge wird durch einen endlichen Text beschrieben. Terminiertheit Nach endlich vielen Schritten liefert die Anweisungsfolge eine Lösung. Terminiert ein Betriebssystem? Das Problem der Endlosschleifen #1: Eingabe einer Zahl i; int j=0,k; do { i= i / 2; k= i + 1; j= j + 1; } while (k!= 1); Ausgabe Ergebnis j; #2: Eingabe einer Zahl i; int j=0,k; do { i= i / 2; k= i + 1; j= j + 1; } while (k!= i); Ausgabe Ergebnis j; Anzeige der Prozessauslastung unter LINUX: top -u username Seite 11 /09.10 Berechenbarkeit Aufgaben: Siehe Aufgabenblatt 1 Jeder hatte schon einmal ein Programm gestartet und sich nach langem Warten gefragt, ob sich das Programm in einer Endlosschleife befindet. Frage: Kann man von einem Programm mit einer beliebigen Dateneingabe entscheiden, ob es endet oder nicht? Definition: Entscheidungsverfahren Ein Algorithmus A, der bei Anwendung der Eingabedaten E nach endlich vielen Schritten hält und eine Ausgabe aus der Menge {false, true} liefert, heißt Entscheidungsverfahren. Seite 12 /09.10