Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Grundlagen der Informatik I “Programmierung”
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
∀a ∈IN. teilt(a,a) ∧ teilt(a,a*b)<br />
Der größte gemeinsame Teiler ist nun eine Funktion ggt, die zwei Argumente aus IN auf eine Zahl aus IN<br />
abbildet und die Eigenschaft hat: ggt(m,n) teilt m und n und jede Zahl t, die m und n teilt, ist kleiner o<strong>der</strong><br />
gleich ggt(m,n).<br />
ggt:IN×IN→IN mit<br />
∀m,n ∈IN. teilt(ggt(m,n),m) ∧ teilt(ggt(m,n),n)<br />
∧ (∀t ∈IN. teilt(t,m) ∧ teilt(t,n) ⇒ t≤ggt(m,n) )<br />
Diese Form <strong>der</strong> Beschreibung des größten gemeinsame Teilers ist nicht konstruktiv, denn sie gibt keinen<br />
Hinweis, wie man für bestimmte Werte von m und n die Lösung berechnet. (Das Ausprobieren für alle t ist<br />
natürlich keine konstruktive Verfahrensweise, da dies nicht in endlich vielen Schritten erfolgen kann.). Die<br />
Schwierigkeit könnten wir beseitigen durch unser Wissen, daß Werte t, die größer als m o<strong>der</strong> n sind, we<strong>der</strong><br />
ein Teiler von m noch von n sein können. Wir können in <strong>der</strong> dritten zweiten For<strong>der</strong>ung den Bereich IN, in<br />
dem wir die Lösung t suchen, zu dem endlichen Bereich {i ∈IN| i≤m ∧ i≤n} reduzieren:<br />
∀t ∈{i ∈N| i≤m ∧ i≤n}. teilt(t,m) ∧ teilt(t,n) ⇒ t≤ggt(m,n)<br />
Der Berechnungsaufwand (Komplexität) ist natürlich bei größeren Werten von m und n trotzdem erheblich,<br />
aber wir stellen fest, daß bei endlichen Wertebereichen die Aufzählung eine maschinelle Auswertung erlaubt,<br />
falls das verwendete Aussage teilt, stets definiert ist und ihre Prüfung beschränkten Zeitaufwand erfor<strong>der</strong>t.<br />
Mit dem Wissen aus <strong>der</strong> Zahlentheorie können wir jedoch einen Schritt weitergehen. Seit Euklid wissen wir,<br />
daß eine Zahl t, die Teiler von m und n ist, auch m-n teilt, falls m größer als n ist, und n-m teilt, falls n größer<br />
als m ist. Falls die Zahlen m und n gleich sind, dann ist jede von ihnen <strong>der</strong> größte gemeinsame Teiler.<br />
teilt(t,m) ∧ teilt(t,n) ⇒ (m>n ⇒ teilt(t,m-n))<br />
teilt(t,m) ∧ teilt(t,n) ⇒ (mn ⇒ ( GGT(m,n,t) ⇔ GGT(m-n,n,t) )<br />
“GGT(m-n,n,t) ist genau dann wahr, wenn GGT(m,n,t) wahr ist, falls m größer als n ist”.<br />
2. m