Beispielklausur In diesem Kapitel wird ein Beispiel für eine Klausur vorgestellt. Dabei sind jeweils die Aufgaben und die Lösungen gegeben. Beachten Sie.

Slides:



Advertisements
Ähnliche Präsentationen
Randomisierte Algorithmen Präfix Suche und Konsistentes Hashing
Advertisements

Christian Scheideler SS 2009
Kapitel 3 Arithmetische Schaltkreise
Technische Grundlagen der Informatik 1
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Das LCA – Problem in Suffixbäumen
Wiederholung Was ist Informatik?
6. Digitale Datendarstellung
Information - syntaktisch
Kapitel 6. Suchverfahren
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
Kapitel 6 Algorithmentheorie
Übung 2.1 Information Wieviele Fragen benötigen Sie beim „Zahlenraten“
Anhang F:Beispielklausur In diesem Kapitel wird ein Beispiel für eine Klausur vorgestellt. Dabei sind jeweils die Aufgaben und die Lösungen gegeben. Beachten.
Lösung 6.3 Denksportaufgabe
Lösung 3.1 Zahlensysteme Betrachten Sie den mit der Hamming-Methode codierten Code für „1000“ P-Bits falsch => Fehler bei bit
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
Kapitel 6 Algorithmentheorie
Christian Schindelhauer
Sortierverfahren Richard Göbel.
Java: Dynamische Datentypen
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
Fehlererkennende Codes
Kompressionsverfahren für Texte
Dynamische Programmierung (2) Matrixkettenprodukt
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Gymnasium Horn – Bad Meinberg
Zahlensysteme und Dualarithmetik copyleft: munz
Rechnen im Binärsystem
Technische Informatik II (INF 1211) Aufgabenteil (mit Unterlagen)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Dualzahlen und ihre logischen Verknüpfungen
Effiziente Algorithmen
Information und Kommunikation
Hartmut Klauck Universität Frankfurt WS 06/
Einführung in die Programmierung
Rechnen im Binärsystem
Binärsystem und Dezimalsystem
Vortrag Gerhard Fobe - Index
Algorithmen und Datenstrukturen SS 2005
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Technische Informatik II (INF 1211) Aufgabenteil (Mit Unterlagen)
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Systeme II Christian Schindelhauer Sommersemester 2006.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Algorithmen und Datenstrukturen 1 SS 2002
Technische Informatik II
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Grundlagen der Informatik Wintersemester 2009
Üungen.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Information - syntaktisch
Vertiefungsstoff zum Thema „Darstellung von Zahlen“
Übung zu Grundlagen der Technischen Informatik
Prof. J. Walter Bitte römische Zahlen im Geschichtsunterricht!
 Präsentation transkript:

Beispielklausur In diesem Kapitel wird ein Beispiel für eine Klausur vorgestellt. Dabei sind jeweils die Aufgaben und die Lösungen gegeben. Beachten Sie Diese Beispielklausur erhebt weder in Form, Inhalt noch Umfang einen Anspruch auf Vollständigkeit.- dies betrifft insbesondere reine Wissensfragen, die hier etwas vernachlässigt sind. Grundsätzlich ist der gesamte in der Vorlesung und den Übungen behandelte Stoff möglicher Gegenstand der Prüfung Vorbereitung Arbeiten Sie die gesamten Folien nochmals durch Bearbeiten Sie alle Übungsaufgaben nochmals Arbeiten Sie das Skript von Herrn Geise durch Bearbeiten Sie dessen Übungsaufgaben Bedenken Sie: In der Klausur sind keine Hilfsmittel zugelassen.

Informatik Fehlt in dieser Beispielklausur ...

Information Eine Nachrichtenquelle sendet Zeichen aus dem Alphabet X = {a,b,c,d,e} mit den Wahrscheinlichkeiten p(a)=1/2, p(b)=p(c)=p(d)=p(e)=1/8 Wie groß ist der Informationsgehalt der einzelnen Zeichen Wie groß ist der Informationsgehalt der Nachricht „abc“ Wie groß ist der mittlere Informationsgehalt einer Nachricht mit 1000 Zeichen Finden Sie einen möglichst optimalen Code für dieses Alphabet Angenommen die Wahrscheinlichkeiten wären p(b)=1/2, p(a)=p(c)=p(d)=p(e)=1/8 . Wie groß wäre dann die Redundanz Ihres Codes aus Aufgabe d) Hamming Codieren Sie die Binärzahl 1000 mit der Hamming-Methode Wieviele Bits können als fehlerhaft erkannt werden ? Wieviele Bits können korrigiert werden ?

Zahlensysteme Stellen Sie die Dezimalzahl 7,25 dar Binär Hexadezimal Oktal dar Berechnen Sie im Binärsystem (mit Vollständiger Rechnung) 1100100 : 101 Machen Sie schriftlich die Gegenprobe (auch im Binärsystem) 10111 – 1010 (durch Addition des Zweierkomplements)

Zahlensysteme Fehlt in dieser Beispielklausur: Gleitpunktzahlen IEEE 754 ...

Datenstrukturen ... Gegeben ist folgende Struktur Vorname Nachname Definieren Sie Datenstrukturen, mit denen diese Struktur einer zweifach verketteten Liste repräsentiert werden kann. Begründen Sie, weshalb diese Datenstruktur als „dynamisch“ bezeichnet wird (im Gegensatz zu statisch) Geben Sie jeweils zwei Gründe für die Verwendung dynamischer bzw. statischer Datentypen an. Definieren Sie statische Datenstrukturen, mit denen man die oben aufgezeichnete Struktur möglichst vollständig abbilden kann. Vorname Nachname ...

Algorithmenentwurf Gegeben ist folgender Algorithmus: x=a, y=5; while (x>0) { y = y+1; x = x-1; } Formen sie die while Schleife in eine repeat-Schleife um Bilden Sie die Funktion dieses Algorithmus‘ ohne Schleifen, mit Hilfe von Sprüngen und Marken nach

Algorithmenentwurf Fehlt in dieser Beispielklausur: Weitere Umformungen Blockung Umwandlung Rekursion/Iteration ...

Berechenbarkeit Beweisen Sie mit Hilfe einer Turing-Maschine, dass f: N  N mit: f(x) ist Binärkomplement von x berechenbar ist. Geben Sie dabei an: Alphabet Bandinschrift (mit Codierverfahren) Kopfposition Zustände (mit dem Startzustand und den Endzustände) Zustandsübergänge Zeichnen Sie für eine Zahl das Turingband vor- und nach Ausführung des Turingprogrammes

Korrektheit Tausch zweier Variablen Entwerfen Sie einen Algorithmus zum Vertauschen der Werte zweier Variablen (vom Typ integer) Vorbedingung: x=a, y=b Nachbedingung: x=b, y=a Beweisen Sie die Korrektheit Ihres Algorithmus Gegeben sei folgender Algorithmus: // Eingabe: Keine x=3, y=5; while (x>0) { y = y+1; x = x-1; } Was macht dieser Algorithmus ? Beweisen Sie Ihre Antwort für Frage a) mit Hilfe der Hoare'schen Logik

Vollständige Verifikation gegeben ist der folgende Algorithmus zum schnellen Potenzieren (Legendre Algorithmus) // Vorbedingung P(V): a>0  b0 x = a; y = b; z = 1; while y > 0 { if odd(y) then z = z*x; y = y div 2; // Ganzzahldivision x = x*x; } Was ist die Nachbedingung dieses Algorithmus Bestimmen die die Schleifeninvariante Beweisen Sie die Korrektheit de Legendre Algorithmus

Komplexität Fehlt in dieser Beispielklausur: Fragen zu den Konstanten c und n0 Beispiele für O(...) Bestimmung des Aufwandes für iterativen/rekursiven Algorithmus ...

Lösung: Information Hamming Eine Nachrichtenquelle sendet Zeichen aus dem Alphabet X = {a,b,c,d,e} mit den Wahrscheinlichkeiten p(a)=1/2, p(b)=p(c)=p(d)=p(e)=1/8 h(a) = -ld(1/2) = 1bit. h(b)=h(c)=h(d)=h(e)=-ld(1/8)=3bit 1bit + 3bit + 3bit = 7 bit 1000 x Mittlerer Informationsgehalt: H(x)=p(xi)h(xi) = 1000 x ( 1/2x1 + 1/8x3 + 1/8x3 + 1/8x3 + 1/8x3 )bit = 1000 x 2bit = 2000 bit Nach Huffmann: p(de)=1/4, p(bc)=1/4, p(debc)=1/2, p(a)=1/2). p(abcde)=1 also z.B.: a=1, b=000, c=001, d=010, e=011 Redundanz = L(x)-H l(x)=1bit , l(b)=l(c)=l(d)=l(e)=3bit (entsprechend der Codierung in d.) L(x) = p(xi)l(xi) = (0,125x1 + 0,5x3 + 0,125x3 + 0,125x3 + 0,125x3)bit = 2,75 bit h(b) = 1bit, h(a)=h(c)=h(d)=h(e)=-ld(1/8)=3bit H(x) = p(xi)h(xi) = (0,5x1 + 0,125x3 + 0,125x3 + 0,125x3 + 0,125x3 )bit = 2 bit Redundanz = L(x)-H = 2,75bit – 2bit = 0.75 bit Hamming 100P0PP (Relevant: Bit 3,5,7)  100P0P1 (even Parity: also 1 ergänzen) 100P0P1 (Relevant: Bit 3,6,7)  100P011 (even Parity: also 1 ergänzen) 100P011 (Relevant: Bit 5,6,7)  1001011 (even Parity: also 1 ergänzen) Der Hamming-Abstand D ist 3bit, es können D-1 = 2bit Fehler erkannt werden Es können (D-1)/2 = 1bit Fehler korrigiert werden.

Lösung: Zahlensysteme Dezimalzahl 7,25 Vorkommateil: Nachkommateil 7 : 2 = 3 Rest: 1 2 · 0,25 = 0,5 --> Ziffer: 0 3 : 2 = 1 Rest: 1 2 · 0,5 = 1 --> Ziffer: 1 1 : 2 = 0 Rest: 1 -> 111 ->0,01 Binärzahl: 111.01 0111,01002 = 7,416 (7 * 160 + 4 * 16-1) 111,0102 = 7,28 (7 * 80 + 2 * 8-1) Berechnung 1100100 : 101 = 10100 10100 x 101 101 10100 --- 00000 101 10100 101 ------- --- 1100100 000 10111 – 1010 10111 - 01010 auf gleiche Längenbringen 1 10111 + 10110 Binärkomplement 10101+ 1 = 101100 Lösung: 1101 Überlauf weggelassen

Lösung: Datenstrukturen Doppelt verkettete Liste Person : record { vorname : array[1..64] of char; nachname: array[1..64] of char; prev : *Person; next : *Person; } Man kann aus diesen Strukturen beliebig lange Ketten von Personen bilden Pro: Dynamisch: Verwaltung von Objekten, deren Anzahl zur Entwicklungszeit nicht bekannt ist. Speicherverbrauch nur für die Objekte, die tatsächlich zur Laufzeit existieren. Pro Statisch: Einfach in der Realisierung, schnell in der Bearbeitung (Fehlerunanfälliger) Person : record { vorname : array[1..64] of char; nachname: array[1..64] of char; } Personenliste: array[1...65534] of Person;

Lösung: Algorithmenentwurf Umformung der while-Schleife: Als repeat-Schleife: x=a; y=5; if (x>0) { repeat do { { y = y+1; y = y+1; x = x–1; x = x-1; } until (x<=0) } while (x>0} } Sprünge und Marken x=a; y=5; x=a; y=5; 1: if (x<=0) goto 2 1: if (x>0) y = y+1; { x = x–1; y = y+1; goto 1; x = x–1; 2: ... goto 1 } 2: ...

Lösung: Berechenbarkeit Definiere eine Turing-Maschine, die beliebige binäre Ziffernfolgen bitweise invertiert. Die Turing-Maschine: Alphabet : {_,0,1}, Bandinschrift: Zahl, codiert als Binärzahl, alles andere „_“ Kopfposition: links neben der Binärzahl Zustände: {q0, q1,q2}, Startzustand. q0, Endzustände:{q2} Zustandsübergänge: A  Q  A  Q  {r, l} _,q0  _,q0,r 0,q0  1,q1,r 1,q0  0,q1,r 0,q1  1,q1,r 1,q1  0,q1,r _,q1  _,q2,r Das Turing-Band vor und nach Abarbeitung des Turing-Programmes für die Zahl: 44 1 1 1 1 1 1

Lösung: Korrektheit a) und b) z : integer { x=a,y=b } z=y; {x=a,y=b,z=b} y=x; {x=a,y=a,z=b} x=z; {x=b,y=a,z=b  x=b,y=a} q.e.d Beweis durch Anwendung der Hoare‘schen Logik: Der Algorithmus liefert für y den Wert 8  Nachbedingung Q: (y=8) x=3, y=5; {x=3, y=5} { INV: y=8-x  x0 } while (x>0) { { INV  x>0  (y+1)-1=8-x  x0  x>0 } y = y+1; { y-1=8-x  x0  x>0  y=9-((x-1)+1)  (x-1)+1>0 } x = x-1; { y=9-(x+1)  x+1>0  y=8-x  x0  INV} } { INV  x0  y=8-x  x=0  y=8 = Q } q.e.d.

Lösung: Vollständige Verifikation // Vorbedingung P(V): a>0  b0 x = a; y = b; z = 1; // x=a  y=b  z=1  x>0  b0 { INV: zxy=ab  y0 } while y > 0 { {INV  y>0  (z*x/x)*xy=ab  y>0 } if odd(y) then z = z*x; { odd(y)  z/x*xy=ab  y>0 }  (schwache Nachbedingung) ( odd(y)  z*xy-1=ab  y>0 )  ( even(y)  z*xy =ab  y>0 ) // else { even(y)  z*xy =ab  y>0 }  (schwache Nachbedingung) ( odd(y)  z*xy-1=ab  y>0 )  ( even(y)  z*xy =ab  y>0 )  { ( odd(y)  z*x(2(y div 2)+1)-1=ab  2(y div 2)+1>0 )  ( even(y)  z*x2(y div 2) =ab  2(y div 2) >0 ) } y = y div 2; // Ganzzahldivision { ( odd(y)  z*x(2y+1)-1=ab  2y+1>0  z*x2y=ab  2y0 )  ( even(y)  z*x2y =ab  2y >0  z*x2y=ab  2y>0 ) } x = x*x; { (odd(y)  z*xy=ab  2y0)  (even(y)  z*xy=ab  2y>0)  (odd(y)  z*xy=ab  2y0)  (even(y)  z*xy=ab  2y0)  z*xy=ab  2y0  (odd(y)  even(y))  z*xy=ab  y0 } } { INV  (y0)  (z*xy=a*b)  (y=0)  z*x0=ab = Q(V) }