2006 Scheinklausur: DsAlg SS 2011 Immatrikulationsnr. Name, Vorname Hinweise: • Halten Sie die Klausurblätter geschlossen, bis durch die Aufsichtspersonen der Beginn angezeigt wird • Achten Sie bitte darauf, dass auf Ihren Blättern links oben immer die gleiche Zahl steht. Falls nicht, melden Sie sich bitte bei einer Aufsichtsperson • Lesen Sie die einzelnen Aufgaben sorgfältig durch • Kreuzen Sie immer eine Antwortalternative an • Kein Kreuz zählt als falsches Kreuz • Betrugsversuche haben sofortigen Ausschluss von der Klausur und Nichtbestehen zur Folge • Halten Sie bei Abgabe Studienausweis und Personalausweis neben der Klausur bereit. Fragenblock Im Folgenden einige Fragen bzgl. der Allgemeinbildung. Frage 1 Welche dieser Aussagen ist korrekt ? 6 Die Wahrscheinlichkeit im Lotto zu gewinnen (6 Richtige) ist 49 a b Die Wahrscheinlichkeit, bei Abgabe eines Lottoscheins (nur ein Kästchen mit 6 Kreuzen ausgefüllt) nicht zu gewinnen, ist 1.1. c Die Wahrscheinlichkeit, im 25. Wurf einer Sequenz von 50 Würfen einer fairen Münze ’Kopf’ zu werfen, ist geringer, wenn in den ersten 24 Würfen immer ’Kopf’ geworfen wurde. d Die Mächtigkeit des Schnitts zweier Mengen ist immer kleiner gleich den einzelnen Mächtigkeiten. Frage 2 Es gelte: A ⇒ B (”aus Aussage A folgt Aussage B”), B ⇒ C und A ⇒ D. Welche dieser Aussagen ist im Allgemeinen falsch? a B⇒C B⇒D b c Falls C nicht gilt, gilt A nicht. A⇒C d Frage 3 Wir haben einen 3 GHz Rechner, der pro Takt eine Instruktion ausführen kann. Wir lassen einen Sortieralgorithmus, der n2 Operationen benötigt, auf einer Eingabe von 1 Million Elementen laufen. Wie lange dauert es in etwa, bis der Algorithmus fertig ist? a 1/2 Minute b 5 Minuten 2 Sekunden c 1 Stunde d Frage 4 Wir haben einen 3 GHz Rechner, der pro Takt eine Instruktion ausführen kann. Wir lassen einen Algorithmus, der n log10 n Operationen benötigt, auf einer Eingabe von 10 Millionen Elementen laufen. Wie lange dauert es in etwa, bis der Algorithmus fertig ist? a 2 Minuten 2 Sekunden b 2 Hundertstel Sekunden c d 2 Tausendstel Sekunden Fragenblock In der Vorlesung wurden binäre Suchbäume und insbesondere (2,4)-Bäume behandelt (üblicherweise mit n Knoten). Die folgenden Fragen beziehen sich auf diesen Vorlesungsabschnitt: 2006 Frage 5 Welche Operation findet bei (2,4)-Bäumen Anwendung und kann sich nicht weiter in Richtung Wurzel propagieren? a Färben b Spalten Stehlen c Sortieren d Frage 6 Inwieweit können wir einen gewissen Grad an Vorsortierung einer Eingabesequenz bei der Konstruktion eines (2,4)-Baumes ausnutzen? a Wir müssen das nächste Element nicht immer neu von der Wurzel aus im aktuellen (2,4)Baum lokalisieren, sondern können beim rechtesten Blatt anfangen. b Wir können durch Nutzung eines Heaps die Vorsortierung zur Beschleunigung einsetzen. Dadurch, dass die Mergeeigenschaft schon fast erfüllt ist, geht der Aufbau des (2,4)c Baumes schneller. d Wir können zunächst mittels Bubblesort sortieren und dadurch dann den (2,4)-Baum schneller aufbauen. Frage 7 Welche Aussage ist korrekt? a Man kann in O(log log n) Zeit entscheiden, ob ein Element x in einem (2,4)-Baum enthalten ist und dieses löschen. Ein neues Element kann in O(log n) Zeit in einen (2,4)-Baum eingefügt werden. b Jedes Blatt eines (2,4) Baums hat immer zwischen 2 und 4 Kinder. c Ein neues Element kann in O(1) Zeit in einen (2,4)-Baum eingefügt werden. d Frage 8 Welche der folgenden Aussagen ist falsch? a Die Kosten der Verschmelzungen nach einer Löschung können O(log n) betragen. Die Kosten der Spaltoperationen nach einer Einfügung sind immer O(1). b c In einer Sequenz von Einfügungen und Löschungen betragen die amortisierten Kosten für das Verschmelzen, Stehlen und Spalten O(1). Die Kosten der Spaltoperationen nach einer Einfügung betragen O(log n). d Frage 9 Welche Operationen sind beim Löschen eines Elements aus einem (2,4)-Baum wichtig? Ausleihen und Schneiden a Sortieren und Traversieren b Spalten und Lokalisieren c d Stehlen und Verschmelzen Frage 10 Was gilt für die Höhe h eines (2, 4)-Baumes mit n Schlüsseln? h = log2 n a n log2 n ≤ h ≤ 2n log2 n b n ≤ h ≤ 2n c 1 log2 n ≤ h ≤ log2 n d 2 Fragenblock In der Vorlesung wurden verschiedenste Graphalgorithmen behandelt. Die folgenden Fragen beziehen sich auf diesen Vorlesungsabschnitt: Frage 11 Welche der folgenden Aussagen ist korrekt? a Manche Knoten werden von Dijkstra mehrfach aus der Priority Queue entfernt. Sobald Dijkstra einen Knoten aus der Priority Queue entfernt, bleibt dessen Distanzlabel b fix. c Es kann Kanten geben, welche Dijkstra bis zu n-mal anschaut. Sobald Dijkstra ein Distanzlabel einem Knoten zuweist, bleibt dieses fix. d Frage 12 Eine topologische Sortierung eines gerichteten Graph G(V, E) ist eine injektive Funktion φ : V → {1, 2, . . . , n} sodass ∀e = (v, w) ∈ E: φ(v) ≤ φ(w) gilt. Welche dieser Aussagen ist korrekt? a Nur Graphen mit nicht-negativen Kantengewichten haben eine topologische Sortierung. Kein gerichteter Graph, der einen Zyklus enthält, hat eine topologische Sortierung. b Nur Graphen mit negativen Zyklen haben azyklische Kantengewichte. c d Azyklische Graphen können keine negativen Kantengewichte haben. Frage 13 Welche dieser Aussagen ist falsch. a Dijkstras Algorithmus braucht nie mehr als O(m · n) Operationen. b Breiten- und Tiefensuche lassen Kantengewichte unberücksichtigt. Tiefensuche braucht im schlimmsten Fall O(n) Operationen. c Breitensuche hat Laufzeit O(m + n). d Frage 14 Welche dieser Aussagen ist falsch? a Die Adjazenzlistendarstellung ist insbesondere für Graphen mit wenig Kanten geeignet. Die Adjazenzmatrixdarstellung ist insbesondere für Graphen mit wenig Kanten geeignet. b c Die Adjazenzmatrixdarstellung eines Graphen mit n Knoten und m Kanten verbraucht O(n2 ) Platz. Die Adjazenzlistendarstellung eines Graphen mit n Knoten und m Kanten verbraucht d O(n + m) Platz. 2006 Frage 15 Welche dieser Aussagen ist korrekt? a Wir können mit Dijkstras Algorithmus den kürzesten Weg für Graphen mit Kantengewichten in Z+ berechnen. b Wir können mit Breitensuche den kürzesten Weg für Graphen mit Kantengewichten in Z berechnen. Wir können mit Dijkstras Algorithmus den kürzesten Weg für Graphen mit Kanc tengewichten in R berechnen. d Wir können mit Tiefensuche den kürzesten Weg für Graphen mit Kantengewichten in N+ berechnen. Frage 16 Welche der folgenden Aussagen ist korrekt? a Mit Tiefensuche kann man in Zeit O(n + m) bestimmen, ob zwei Knoten v und w in derselben Zusammenhangskomponente eines ungerichteten Graphen liegen. b Mit Breitensuche kann man die Tiefe einer Tiefensuche mit quadratischem Aufwand nach unten abschätzen. Mit Breitensuche kann man in Zeit O(log(m + n)) bestimmen, ob zwei Knoten v und w c in derselben Zusammenhangskomponente eines ungerichteten Graphen liegen. d Mit Tiefensuche kann man in Zeit O(log(m + n)) bestimmen, ob zwei Knoten v und w in derselben Zusammenhangskomponente eines ungerichteten Graphen liegen. Frage 17 Welche dieser Aussagen ist falsch? a Mit der (naiven) Adjazenzmatrixdarstellung können wir in konstanter Zeit bestimmen, ob zwischen zwei Knoten v und w eine Kante existiert. b Mit der Adjazenzlistendarstellung können wir in konstanter Zeit bestimmen, ob zwischen zwei Knoten v und w eine Kante existiert. c Bei der Adjazenzlistendarstellung können wir die adjazenten Knoten eines Knotens v in Zeit proportional zur Anzahl dieser adjazenten Knoten bestimmen. Mit der (naiven) Adjazenzmatrixdarstellung können wir die zu einem Knoten v adjazenten d Knoten in Zeit proportional zur Anzahl aller Knoten bestimmen. Frage 18 Welche dieser Aussagen ist falsch? a Jeder Baum enthält einen Graph, der alle Knoten des Baums verbindet. b Jeder Baum ist ein Graph. Jeder zusammenhängende Graph enthält einen Baum, der alle Knoten des Baums c verbindet. d Jeder Graph enthält einen Baum, der alle Knoten des Graphs verbindet. Frage 19 Welche der folgenden Aussagen ist korrekt? a Dijkstra kann benutzt werden, um den kürzesten Weg in ungewichteten Graphen zu berechnen. b Breitensuche kann benutzt werden, um den kürzesten Weg in gewichteten Graphen zu berechnen. Topologische Suche kann benutzt werden, um den kürzesten Weg in ungewichteten c Graphen zu berechnen. d Tiefensuche kann benutzt werden, um den kürzesten Weg in ungewichteten Graphen zu berechnen. Frage 20 Wieviele Kanten hat ein Baum mit n Knoten? a 2n − n n + 3 − 2n b n log n c d 3n2 − 2n2 + n − n2 − 1 Fragenblock Die folgenden Fragen beziehen sich auf den Block über Dynamisches Programmieren, wie er in der Vorlesung behandelt wurde. Frage 21 Was ist die Levenshtein Distanz zwischen flossen und pfosten (minimale Kosten, um aus ’flossen’ unter den unten gegeben Operationen ’pfosten’ zu machen)? Nehmen Sie an, dass Löschen Kosten 1 hat, Ersetzen (durch einen anderen Buchstaben) Kosten 2 und Einfügen Kosten 1. 4 a 5 b c 4/3 3 d Frage 22 Welche der folgenden Aussagen ist falsch? a Für eine gegebene Instanz des Rucksackproblems gibt es genau einen optimalen Rucksack. Aus einem vervollständigten Dynamischen Programm können alle optimalen Rucksackb packungen ermittelt werden. c Für die Anwendung der Technik des Dynamischen Programmierens, sollten die Gewichte oder die Werte ganzzahlig sein, wenn eine optimale Lösung gefunden werden soll. Mittels Dynamischem Programmieren können wir auch folgendes Problem lösen: Gibt es d eine Rucksackpackung mit Wert mindestens W und Gewicht höchstens G? Frage 23 Was ist die Länge der longest common subsequence von flossen und pfosten? a 3 4 b 5 c d 6 2006 Frage 24 Sie sind beim Juwelier eingebrochen und haben einen Rucksack mit Tragekapazität 333 g dabei. Was sollten Sie mitnehmen, wenn Sie den maximalen Wert erzielen, jedoch nicht Ihre Rucksackkapazität überschreiten wollen? Es liegen 7 Gegenstände herum mit Gewichten 169g, 188g, 200g, 300g, 423g, 500g, 165g und Werten 9 EUR, 10 EUR, 4 EUR, 2 EUR, 3 EUR, 1 EUR, 5 EUR. Was ist der Wert des wertvollsten Rucksacks, den Sie packen können? a 200 g 13 EUR b 15 EUR c d 10 EUR Fragenblock Die folgenden Fragen beziehen sich auf den Block über Minimale Spannbäume (MST). Hierzu betrachten wir einen ungerichteten Graphen G(V, E) mit Kostenfunktion c : E → R+ , sodass die Kantenkosten paarweise verschieden sind. Frage 25 Welche dieser Aussagen ist korrekt? a Kruskals Algorithmus lässt genau einen Spannbaum schrittweise wachsen, bis er alle Knoten von G umfasst. b Kruskals Algorithmus verwaltet während des Ablaufs eine Partition der Knotenmenge in ZHKs. Prims Algorithmus verwaltet während des Ablaufs eine Partition der Knotenmenge in c ZHKs. d In Prims Algorithmus müssen alle Kanten vorsortiert werden. Frage 26 Sei P ⊂ V beliebig, e = (v, w) eine Kante zwischen P und V \P . Welche der folgenden Aussagen ist korrekt? Falls e minimale Kosten aller Kanten zwischen P und V \P hat, ist e Teil jedes MST von a G. b Kein MST von G enthählt e. Falls e maximale Kosten aller Kanten zwischen P und V \P hat, ist e Teil jedes MST von c G. d Es gibt MSTs, die e enthalten und solche, die e nicht enthalten. Fragenblock Folgende Fragen erstrecken sich sowohl über den Themenbereich minimale Spannbäume als auch Wegeberechnungen. Gegeben sei folgender gewichteter, ungerichteter Graph: 1 11 1 7 7 6 6 3 2 9 11 0 11 4 6 13 8 4 10 1 5 6 9 Frage 27 Was ist die Anzahl der Zusammenhangskomponenten dieses Graphen? a 2 3 b 1 c 0 d Frage 28 Welchen Wert hat die Summe der Kantengewichte des MST? a 51 57 b 55 c d 44 Frage 29 Was ist die Länge des kürzesten Pfads von Knoten 0 zu Knoten 4: a 3 6 b 5 c d 7 Fragenblock In der Vorlesung wurden verschiedene Sortieralgorithmen behandelt. Die folgenden Fragen beziehen sich auf diesen Vorlesungsabschnitt. Gehen Sie davon aus, dass die zu sortierenden Mengen keine Elemente doppelt enthalten: 2006 Frage 30 Welche dieser Aussagen ist falsch (Bezug auf den in der VL behandelten, in einem Array/Vector abgelegten Heap). a Ein Heap aus n Elementen kann in Zeit O(n) erstellt werden. b Nach dem Entfernen des obersten Elements eines Heaps müssen wir im schlimmsten Fall etwa log n Vertauschungen ausführen, bis wir die Heapeigenschaft wiederhergestellt haben. Bei einer schlechten Einfügereihenfolge artet ein Heap in eine lineare Liste aus. c Ein Heap hat logarithmische Tiefe. d Frage 31 Was ist die schärfste Schranke für die worst-case Laufzeit von Bubblesort? a O(n3 ) O(n) b O(n2 ) c O(n log n) d Frage 32 Wofür sind Heaps eher weniger nützlich? (Bezug auf den in der VL behandelten, in einem Array/Vector abgelegten Heap) Zum Sortieren. a Zur Verwaltung der Menge U in Graphen mit nicht-negativen Kantengewichten (bei Dib jkstra). c Zur Verwaltung des jeweils kleinsten bzw. größten Elements einer sich ändernden Menge. Für das Wörterbuchproblem, um eine Menge von Schlüsseln zu verwalten und effizient d darauf zugreifen zu können. Frage 33 Welche dieser Aussagen ist falsch? a Es gibt Eingaben für den randomisierten Quicksort, bei denen der Algorithmus immer O(n log n) Operationen benötigt. b Die Laufzeit von Heapsort hängt nicht von der (Un)sortiertheit der Eingabe ab. Die Laufzeit von randomisiertem Quicksort hängt nicht von der (Un)sortiertheit der c Eingabe ab. d Mergesort sortiert n Elemente immer in Zeit O(n log n). Frage 34 Ein Algorithmus braucht zur Bearbeitung einer Probleminstanz der Größe n zunächst n Zeitschritte und ruft sich dann (falls n > 1) selber rekursiv mit zwei Probleminstanzen der Größe n/2 auf. Was ist die beste obere Schranke für die Laufzeit dieses Algorithmus? a O(n log n) O(n) b O(log n) c d O(n2 log n) Frage 35 Was ist die beste Schranke für die worst-case Laufzeit von Heapsort? a O(n log n) O(n) b c O(n3 ) O(n2 ) d