• Keine Ergebnisse gefunden

gogel FAKULT TF RINFORMATIK

N/A
N/A
Protected

Academic year: 2022

Aktie "gogel FAKULT TF RINFORMATIK"

Copied!
8
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)TECHNISCHE UNIVERSITÄT MÜNCHEN. FAKULTÄT FÜR INFORMATIK Lehrstuhl für Physik-basierte Simulation Grundlagen: Algorithmen und Datenstrukturen Prof. Dr.-Ing. Nils Thürey, G. Kohl, L. Prantl, E. Franz. SS 2021 Übungsblatt 10 2021–06–23. Übung: KW 26 (2021–06–28 2021–07–02) Abgabe H: 2021–07–11 (bis 23:59 Uhr). Aufgabe 10.1 (P) Multiple Choice Kreuzen Sie in den folgenden Teilaufgaben jeweils die richtigen Antworten an. Es können pro Teilaufgabe keine, einige oder alle Antworten richtig sein. a) Wir erweitern den Bubblesort-Algorithmus, indem vor jeder Vergleichsoperation eine Funktion isSorted aufgerufen wird. Diese überprüft, ob das gesamte Feld bereits sortiert ist, indem jedes Paar von benachbarten Elementen überprüft wird. Dazu wird das gesamte zu sortierende Feld einmal komplett durchlaufen. Ist das Feld sortiert, wird das modifizierte Sortierverfahren sofort beendet. Es bezeichne f die Worst-Case-Laufzeit des Original-Bubblesort-Algorithmus und g die des modifizierten Bubblesort-Algorithmus. Was gilt?. ⇤ f 2 ⇥(g) ⇤ X f 62 ⇥(g), aber f 2 O(g) ⇤ f 62 ⇥(g) und g 2 O(f ) ⇤ weder g 2 O(f ) noch f 2 O(g) b) Kreuzen Sie in den Zeilen (1) bis (3) jeweils das stärkste passende Symbol an. D. h. wenn z.B. = o (bzw. = ⇥) möglich ist, wählen Sie = o (bzw. = ⇥) und nicht = O. Falls die Funktionen unvergleichbar sind, kreuzen Sie u. ( unvergleichbar“) ” an. Setzen Sie also in jeder Zeile genau ein Kreuz! Bsp:. n2. (n2 ). ⇥o. ⇤O. ⇤!. ⇤⌦. ⇤⇥. ⇤ u.. 2 (4 log2 (nO )). ⇤o. ⇤O. ⇤!. ⇤⌦. ⇤ x⇥. ⇤ u.. gogel. (1). 7 log2 (n) 2. (2). n3 2. (n8 (n mod 2)). ⇤o. ⇤O. ⇤!. ⇤⌦. ⇤⇥. ⇤ x u.. (3). 4n 2. (24n ). ⇤ xo. ⇤O. ⇤!. ⇤⌦. ⇤⇥. ⇤ u.. Hinweis: Der Operator mod berechnet den Divisions-Rest. c) Welche Aussagen sind wahr?. ⇤ x Jeder AVL-Baum ist zugleich ein binärer Suchbaum. ⇤ Jeder binäre Suchbaum ist zugleich ein Binärer Heap. ⇤ Jeder Binäre Heap ist zugleich ein AVL-Baum. ⇤ x Jeder Binäre Heap ist zugleich ein binärer Suchbaum..

(2) 2 d) Welche Operation muss in einem Binären Min-Heap beim Ausführen von decreaseKey (Verringern eines Schlüssel-Wertes) u.U. aufgerufen werden, um die Heap-Invariante wiederherzustellen?. ⇤ x siftUp. ⇤ siftDown. ⇤ deleteMin. ⇤ rotateLeft. e) Die durchschnittliche Laufzeit von Algorithmen (Average Case) ist. ⇤ uninteressant, da man ausschließlich am Worst-Case interessiert ist. ⇤ x oft nur mit großem Aufwand zu berechnen. ⇤ stets am besten geeignet, um den passenden Algorithmus zu wählen. f) Der MergeSort-Algorithmus. ⇤ ist für alle Eingaben schneller als jede gute Implementierung von InsertionSort. ⇤ x ist für bestimmte Eingabeklassen signifikant schneller als eine deterministische Implementierung von Quicksort.. ⇤ ist im Schnitt um einen in der Eingabe linearen Faktor schneller als Quicksort. ⇤ sortiert eine Eingabe im Best Case in linearer Zeit. g) Beim Hashing mit linear probing. ⇤ werden Elemente, deren Schlüssel auf den gleichen Wert gehasht werden, in einer Liste abgelegt.. Hashing with chaining ⇤ ist die Hashfunktion nicht besonders wichtig, da auf ineffiziente Listen verzichtet wird.. ⇤ ist das Löschen von Elementen kompliziert, da Löcher in der Hashtabelle das Auffinden von anderen Elementen verhindern können.. Bogosort h) Der PermutationSort-Algorithmus sortiert ein Feld, indem er die Elemente wiederholt umordnet und jede so entstandene Anordnung auf Sortiertheit prüft. Es werden systematisch alle möglichen Anordnungen durchprobiert. Wir gehen im Folgenden davon aus, dass PermutationSort ein Feld ohne Duplikate sortiert. ⇤ Für die Worst-Case-Laufzeit f von PermutationSort gilt f 2 O(n4 ). ⇤ x Für die Average-Case-Laufzeit f von PermutationSort gilt f 2 ⇥(n ⇤ n!). n ⇤ x Für die Worst-Case-Laufzeit f von PermutationSort gilt f 2 O(n ). ⇤ Mit einer sehr geringen, positiven Wahrscheinlichkeit terminiert PermutationSort für bestimmte Eingaben niemals.. ⇤ x PermutationSort hat eine lineare Best-Case-Laufzeit.. Aufgabe 10.2 (P) AVL. a) Führen Sie auf dem folgenden AVL-Baum eine insert-Operation des Schlüssels 9 durch. Zeichnen Sie den durch die Operation entstehenden AVL-Baum, und schreiben.

(3) 3. Links Rechts Sie dazu, ob keine Rotation, ob eine Rotation oder ob eine Doppelrotation durchgeführt wurde. 2 10 1. iin. 5. 15. 2. 7 O. 3. 6. 11. O. O. 16. in. 1. 8. b) Führen Sie auf dem folgenden AVL-Baum eine remove-Operation des Schlüssels 10 durch. Zeichnen Sie den durch die Operation entstehenden AVL-Baum, und schreiben Sie dazu, ob keine Rotation, ob eine Rotation oder ob eine Doppelrotation durchgeführt wurde.. 7y. Keine Rotation. 10. X. 5 2. O. 6. f't. O. 11. 15. O. 16. 7. 7. 17. c) Führen Sie auf dem folgenden AVL-Baum eine remove-Operation des Schlüssels 4 durch. Zeichnen Sie für jede dabei durchgeführte Rotation den durch die Rotation entstehenden Baum.. Einfache. Einfache. 5. Rechtsrotation. linksrot. 2 3. 8. E AOI. 2. X 4. 1. 2. 7 6. o. 10 9. o. I. 8. f's. n. 11. 52. B11. n. 13. a. o. 7. a. 70. f f. Aufgabe 10.3 (P) AVL Bebaumung Gegeben sei ein AVL-Baum der nur aus einem Knoten mit Schlüssel 10 besteht. Fügen Sie nacheinander die Schlüssel 5, 17, 3, 1, 4 ein. Löschen Sie dann den Schlüssel 4, und fügen Sie dann die Schlüssel 8, 2, 7, 6, 9 ein. Löschen Sie dann die Knoten mit den Schlüsseln 2, 1, 8. Zeichnen Sie den AVL-Baum für jede Einfüge- bzw. Löschoperation und geben Sie an, ob Sie keine, eine Einfach- oder Doppelrotation durchgeführt haben.. l. 13.

(4) 4 Aufgabe 10.4 (E) Slowsearch Es sei die folgende Implementierung ( Slowsearch“) der binären Suche auf sortierten Feldern ” gegeben. Slowsearch kann lediglich mit Suchbereichen der Größe n mit n = 2k für ein k 2 N0 arbeiten: 1 2 3 4 5 6 7 8 9 10 11 12. boolean slowsearch ( int searchValue , int [] elements , int from , int n ) { if ( n == 1) // Abbruch bei Feld der L ä nge 1 return elements [ from ] == searchValue ; assert ( n % 2 == 0) ; // die L ä nge muss durch 2 teilbar sein int middle = from + n /2; // erstes Element in oberem Teilfeld if ( searchValue < elements [ middle ]) { for ( int i = from ; i < middle ; i ++) // Debug - Ausgabe System . out . println ( elements [ i ]) ; // Debug - Ausgabe return slowsearch ( searchValue , elements , from , n /2) ; } else return slowsearch ( searchValue , elements , middle , n /2) ; }. Die slowsearch-Methode sucht nach einem Wert searchValue im sortierten Feld elements im Bereich ab from, der eine Größe von n vielen Elementen aufweist. Um den Suchvorgang auf dem Terminal verfolgen zu können, gibt der Algorithmus (siehe Zeile 7 und 8) die untere Hälfte des Feldbereiches (niedrigere Indices) aus, wenn die Suche in der unteren Hälfte fortgesetzt werden muss. a) Stellen Sie eine Rekursionsgleichung der Worst-Case-Laufzeit von Slowsearch auf. Beachten Sie, dass die Debug-Ausgabe ein Teil des Algorithmus ist und daher in die Laufzeit einfließt. Nutzen Sie anschließend das Master-Theorem, um die Laufzeitklasse zu ermitteln. b) Beeinträchtigt die Debug-Ausgabe die Laufzeit entscheidend? Begründen Sie Ihre Antwort! c) Wir streichen nun die Debug-Ausgabe, löschen also Zeilen 7 und 8. Stellen Sie eine Rekursionsgleichung für die Laufzeit des resultierenden Algorithmus auf. Ist es auch hier möglich, mithilfe des vereinfachten Master-Theorems aus der Vorlesung eine Laufzeitklasse zu ermitteln? Geben Sie – mit oder ohne Nutzung des Master-Theorems – die Laufzeitklasse an und beweisen Sie die Korrektheit der Laufzeitklasse durch vollständige Induktion über die Größe des Eingabebereiches.. Aufgabe 10.5 (H) AB-Baum - Diese Aufgabe zählt für den Notenbonus. Sie finden die Aufgabe und weitere wichtige Informationen unter https://artemis.ase. in.tum.de/#/courses/119/exercises/4273. Warten Sie mit Verständnisfragen bitte, bis das Thema in der Vorlesung bzw. in der Übung besprochen wurde. Hier werden sich die meisten Fragen von alleine klären..

(5) 10.3. o t. insert 5. insert it. insert 3. a. insert 7 2 n. EEK. Rechtsrot. it. 100 o. do insert 4. 2. h to l I. 5 o. Doppelrot 7 Clinks rechts. 3. y y. I 70.

(6) delete 4 5. o. 3. l. no 0. insert 8 5. O. f Yoo. fo fo insert 2. O. n. 680. items. to. to. insert 7. do. l b. do. 0.

(7) insert 6 2. to. fo. z. oft. o. Eius. recutsnot. o. o. p. n. o. o. insert g 2. l. I no. n. 2. c. o. lol. delete 2. I n. O. O. o.

(8) delete 1. E. s. to. lo delete 8. i lo l. o. Api Go lo.

(9)

Referenzen

ÄHNLICHE DOKUMENTE

Wenn f und h sehr komplizierte Funktionen sind, für die ein direkter Beweis schwierig ist, kann man einen Zwischenschritt verwenden: Man formuliert eine Funktion g, sodass f n 2

Sei S eine Menge von Operationen, und bezeichne T eine obere Schranke für die Laufzeit einer Operation 2 S diese Laufzeit kann vom aktuellen Zustand des Objekts, auf dem

Die Kraft ist zwar kein Kraftfeld, da sie auch von der Geschwindigkeit abh¨ angt ist aber dennoch konservativ, auch wenn sie nicht mittels Potenzial darstellbar

Betrachten Sie nun zwei gleichnamige Punktladungen q und berechnen Sie die wir- kenden Kräfte, indem Sie den Spannungstensor über jene Ebene integrieren, die im gleichen

Rotation um

Es  wird  das  Geschwindigkeitsfeld  einer  stationären  Strömung betrachtet,

(Rotation heißt auf Englisch curl !) Ähnlich wie der diverge- Befehl wird neben dem Vektorfeld auch der Vektor der Variablen

Beim Fliehkraftregler nutzt man aus, dass durch die schnellere Drehung die Gegengewichte auf einen größeren.. Radius