Informatikgrundlagen Bachelor Praktische Informatik Name: Prof. Dr.-Ing. Klaus Berberich Vorname: Aufgabe 1 2 Matrikel: 3 4 5 P Punkte Hinweise: • Erlaubtes Hilfsmittel: drei von Hand beschriebene Blätter (DIN A4) • Bitte begründen Sie Ihre Antworten Aufgabe 1 (4 Punkte) 1. Wandeln Sie die Dezimalzahl 1492 ins Hexadezimalsystem um. 2. Wandeln Sie die Hexadezimalzahl 1AB ins Dezimalsystem um. 3. Führen Sie die Subtraktion CF1 - 1FC zweier Hexadezimalzahlen wie folgt durch: (a) Umwandeln der Zahlen ins Binärsystem (b) Subtraktion mittels Zweierkomplement (c) Umwandeln des Ergebnisses ins Hexadezimalsystem Aufgabe 2 (4 Punkte) 1. Ermitteln Sie unter Verwendung einer Wertetabelle die KDN des nachstehenden logischen Ausdrucks ¬ (a ⇒ (b ⊕ (¬ c))) 2. Vereinfachen Sie den nachstehenden Ausdruck durch schrittweise Umformungen nach den Regeln der Booleschen Algebra (¬ x) ∧ (¬ (¬ (x ∧ y) ∧ z)) Prüfungsklausur IG Sommersemester 2016 – 8. August 2016 Seite 1 von 3 Aufgabe 3 (4 Punkte) Der Aufwand T (n) in Elementaroperationen betrage für einen Teile-Herrsche-Algorithmus T (n) = 1 4 · T (n/2) + n : n=1 : sonst wobei n = 2k eine Zweierpotenz ist. 1. Berechnen Sie durch Anwenden der Rekursion nacheinander T (2), T (4) und T (8) 2. Zeigen Sie durch schrittweises Anwenden der Rekursion ausgehend von T (n), dass T (n) = 4 3 · T n 3 + n · 2 − 1 23 gilt. 3. Man kann zeigen (das müssen Sie nicht tun!): T (n) = 4 k + n · 2 k − 1 . Beweisen oder widerlegen Sie anhand dieses Ergebnisses: T (n) ∈ O(n 2 ). Aufgabe 4 (4 Punkte) Eine Zeichenkette s heißt Anagramm, wenn sie sich durch Vertauschen von Zeichen aus einer anderen Zeichenkette t ableiten lässt. So sind die Zeichenketten reifen und ferien sowie die Zeichenketten leben und nebel jeweils Anagramme zueinander. 1. Schreiben Sie in Pseudo-Code eine Funktion, um zu erkennen, ob zwei gegebene Zeichenketten s und t zueinander Anagramme sind. Verwenden Sie hierzu folgende Vorlage bool function isana(char[] s, char[] t) { } Nehmen Sie hierzu an, dass Ihnen eine Funktion char[] sort(char[] s) zur Verfügung steht, welche zu einer gegebenen Zeichenkette s eine Zeichenkette zurückgibt, in der die gleichen Zeichen in alphabetischer Reihenfolge enthalten sind – ruft man die Funktion mit der Zeichenkette reifen auf, wird die Zeichenkette eefinr zurückgegeben. 2. Welche Laufzeitkomplexität hat ihre Funktion, wenn die Funktion sort mit Hilfe von MergeSort implementiert ist? 3. Welche Laufzeitkomplexität hat ihre Funktion, wenn die Funktion sort mit Hilfe von CountingSort implementiert ist? Prüfungsklausur IG Sommersemester 2016 – 8. August 2016 Seite 2 von 3 Name: Vorname: Matrikel: Aufgabe 5 (4 Punkte) 1. Führen Sie auf dem gegebenen MinHeap folgende Operationen nacheinander aus. Geben Sie den Zustand des MinHeaps nach jeder Operation graphisch und als Array der Länge 7 an. (a) dequeue() (b) enqueue(7) (c) dequeue() (d) enqueue(7) 1 3 4 6 5 8 9 2. Ihnen sei ein absteigend sortiertes Array ganzer Zahlen a der Länge n gegeben. Sie möchten nun mit möglichst geringer Zeitkomplexität einen MinHeap der Höhe k konstruieren, der die Zahlen aus dem Array enthält. Beschreiben Sie ihre Vorgehensweise (Pseudo-Code ist nicht notwendig) und bestimmen Sie die Laufzeitkomplexität in Abhängigkeit von n und k. Prüfungsklausur IG Sommersemester 2016 – 8. August 2016 Seite 3 von 3