Datenstrukturen und Algorithmen (D-MATH RW) - Pr ufung - ETH Zürich
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Prüfung Datenstrukturen und Algorithmen (D-MATH RW) Felix Friedrich, Aritra Dhar, Departement Informatik ETH Zürich, 21.8.2020. Name, Vorname: .................................................................. Legi-Nummer: .................................................................. Ich bestätige mit meiner Unterschrift, dass ich I confirm with my signature that I was able diese Prüfung unter regulären Bedingungen to take this exam under regular conditions ablegen konnte und dass ich die allgemeinen and that I have read and understood the Richtlinien gelesen und verstanden habe. general guidelines. Unterschrift: Allgemeine Richtlinien: General guidelines: 1. Dauer der Prüfung: 150 Minuten. Exam duration: 150 minutes. 2. Erlaubte Unterlagen: Wörterbuch (für von Ihnen gesproche- Permitted examination aids: dictionary (for languages ne Sprachen). 4 A4 Seiten handgeschrieben oder ≥ 11pt spoken by yourself). 4 A4 pages hand written or ≥ 11pt Schriftgrösse. font size. 3. Benützen Sie einen Kugelschreiber (blau oder schwarz) und Use a pen (black or blue), not a pencil. Please write keinen Bleistift. Bitte schreiben Sie leserlich. Nur lesbare legibly. We will only consider solutions that we can Resultate werden bewertet. read. 4. Lösungen sind direkt auf das Aufgabenblatt in die dafür Solutions must be written directly onto the exam vorgesehenen Boxen zu schreiben (und direkt darunter, falls sheets in the provided boxes (and directly below, if mehr Platz benötigt wird). Ungültige Lösungen sind deut- more space is needed). Invalid solutions need to be lich durchzustreichen! Korrekturen bei Multiple-Choice Auf- crossed out clearly. Provide corrections to answers of gaben bitte unmissverständlich anbringen! multiple choice questions without any ambiguity! 5. Es gibt keine Negativpunkte für falsche Antworten. There are no negative points for wrong answers. 6. Störungen durch irgendjemanden oder irgendetwas melden If you feel disturbed by anyone or anything, let the Sie bitte sofort der Aufsichtsperson. supervisor of the exam know immediately. 7. Wir sammeln die Prüfung zum Schluss ein. Wichtig: Stel- We collect the exams at the end. Important: You must len Sie unbedingt selbst sicher, dass Ihre Prüfung von einem ensure that your exam has been collected by an as- Assistenten eingezogen wird. Stecken Sie keine Prüfung ein sistant. Do not take any exam with you and do not und lassen Sie Ihre Prüfung nicht einfach am Platz liegen. leave your exam behind on your desk. The same app- Dasselbe gilt, wenn Sie früher abgeben wollen: Bitte mel- lies when you want to finish early: Please contact us den Sie sich lautlos, und wir holen die Prüfung ab. Vor- silently and we will collect the exam. Handing in your zeitige Abgaben sind nur bis 15 Minuten vor Prüfungsende exam ahead of time is only possible until 15 minutes möglich. before the exam ends. 8. Wenn Sie zur Toilette müssen, melden Sie dies einer Auf- If you need to go to the toilet, raise your hand and sichtsperson durch Handzeichen. wait for a supervisor. 9. Wir beantworten keine inhaltlichen Fragen während der We will not answer any content-related questions du- Prüfung. Kommentare zur Aufgabe schreiben Sie bitte auf ring the exam. Please write comments referring to the das Aufgabenblatt. tasks on the exam sheets. Question: 1 2 3 4 5 6 7 Total Points: 26 19 18 14 14 14 15 120 Score:
Datenstrukturen und Algorithmen 2/22 Prüfung 21.8.2020 Verwenden Sie die Notation, Algorithmen und Use notation, algorithms, and data struc- Datenstrukturen aus der Vorlesung. Falls Sie tures from the course. If you use a diffe- eine andere Herangehensweise wählen, er- rent approach, explain your answers in a klären Sie Ihre Antworten in nachvollziehbarer comprehensible way! Weise! Aufgabe 1: Verschiedenes (26P) /8P (a) Kreuzen Sie an, ob die folgenden Aussagen Mark if the following statements are true wahr oder falsch sind. or false. Während die O-Notation die asymptotische Laufzeit eines Algorith- mus im schlechtesten Fall charakterisiert, verwendet man die Θ- Wahr / True Notation, um gleichzeitig auch die Laufzeit im besten Fall zu charak- terisieren. / While the O-Notation is used to characterize the asym- Falsch / False ptotic runtime of an algorithm in the worst case, the Θ-Notation is used in order to characterize the best case runtime as well. n vergleichbare Datenpunkte in einem binären Suchbaum zu spei- Wahr / True chern, kostet Θ(n) Speicherplatz. / To store n comparable data points in a binary search tree, Θ(n) memory space is required. Falsch / False Die Adjazenzmatrix eines Graphen mit n Knoten und m Kanten Wahr / True benötigt Θ(m) Speicherplatz. / The adjacency matrix of a graph with n nodes and m edges requires Θ(m) memory. Falsch / False Der Bellman-Ford Algorithmus auf einem Graphen mit n Knoten und m Kanten kann innerhalb einer Laufzeit von O(m · n) entscheiden, ob ein Graph negative Zyklen hat. / The Bellman-Ford algorithm Wahr / True applied to a graph with n nodes and m edges, can determine the Falsch / False existence of negative cycles in a graph within an asymptotic running time of O(n · m) Die Angabe der Werte der Elemente eines binären Suchbaumes in Hauptreihenfolge bestimmt den dazugehörigen Baum eindeutig. / Wahr / True The specification of the values of elements of a binary search tree Falsch / False in preorder uniquely determines the corresponding tree. Wenn man in einem positiv gewichteten Graphen das Gewicht jeder Kante mit zwei multipliziert, bleibt jeder kürzester Weg zwischen Wahr / True zwei Knoten ein kürzester Weg. / If in a positively weighted graph the weight of each edge is multiplied by two, every shortest path Falsch / False between two points remains a shortest path.
Datenstrukturen und Algorithmen 3/22 Prüfung 21.8.2020 Die erlaubte Balance jedes Knotens eines AVL Baumes ist ein Wert zwischen -1 und 1. Daher darf sich die Höhe eines linken Teilbaumes von der Höhe des rechten Teilbaumes um 2 unterscheiden. / The Wahr / True permitted balance of each node of an AVL tree is a value between Falsch / False -1 and 1. Therefore the height of a left subtree may differ from the height of the right subtree by 2. Die asymptotische Laufzeit, ein Element in einem binären balancier- ten Suchbaum mit n · 2n Elementen zu finden ist Θ(n log n) / Wahr / True The worst case running time to search for an element in a balanced Falsch / False binary search tree with n · 2n elements is Θ(n log n) (b) Führen Sie auf dem folgenden Array den On the following array, perform the /1P Mergesort-Algorithmus schematisch durch. mergesort-algorithm using the scheme gi- ven. 9 8 7 6 4 3 2 1 1 2 3 4 6 7 8 9
Datenstrukturen und Algorithmen 4/22 Prüfung 21.8.2020 /3P (c) Die Nebenreihenfolgeausgabe eines binären The post-order traversal output of a bi- Suchbaumes ist nary search tree is 1, 2, 4, 6, 5, 3 Finden Sie die Hauptreihenfolge. Find the pre-order traversal. Hauptreihenfolge / pre-order traversal: /3P (d) Markieren Sie in folgendem ungerichteten, In the following undirected weighted gewichteten Graphen die Kanten, die zu je- graph, mark the edges that definitely be- dem minimalen Spannbaum gehören. (Wenn long to any minimum spanning tree. (If Sie die Markierung von versehentlich mar- you want to remove the marks of mar- kierte Kanten entfernen wollen, streichen Sie ked edges again, you can cross the edges die Kanten durch). Wie viele mögliche mini- out). How many minimal spanning trees male Spannbäume gibt es? are possible here? 1 7 B E G 3 2 1 2 3 A D I 2 4 2 2 8 6 1 5 2 C F H Anzahl Spannbäume / Number Spanning Trees:
Datenstrukturen und Algorithmen 5/22 Prüfung 21.8.2020 (e) Gegeben sind acht Buchstaben mit re- Eight characters (keys) with relative fre- /3P lativer Häufigkeit (Anzahl Zugriffe) wie quency (number accesses) are given as folgt. Erstellen Sie mit Hilfe des Huffman- follows. Using the Huffman algorithm Algorithmus einen optimalen Codierungs- provide an optimal code tree. Enter the baum. Tragen Sie den resultierenden Code corresponding code into the table. in der Tabelle ein. char a b c d freq 5 30 20 50 Code char e f g h freq 7 8 3 2 code (f) Was ist die asymptotische Laufzeit von Bub- What is the asymptotic runtime of bub- /2P blesort im besten Fall für ein Array der Länge ble sort in the best case for an array of n? Für welches Array? size n? For which array? (A) O(n2 ) (B) O(n) (C) On log n (D) O(n log2 n) Option A, B, C oder / or D Szenario / scenario:
Datenstrukturen und Algorithmen 6/22 Prüfung 21.8.2020 /2P (g) Eine Hashtabelle mit 10 Einträgen verwendet A hash table of length 10 uses open offene Adressierung mit der Hash-Funktion addressing with hash function h(k) = h(k) = k mod 10, mit linearer Sondierung k mod 10, and linear probing (probing (Sondierung geht nach rechts). Nachdem goes to the right). After inserting 6 va- sechs Werte in die initial leere Hashtabelle lues into an empty hash table, the table eingefügt wurden, sieht die Hashtabelle wie is as shown below. folgt aus. 0 1 2 3 4 5 6 7 8 9 42 23 34 52 46 33 Welche der folgenden Möglichkeiten bezeich- Which one of the following choices gives net eine Reihenfolge, in der die Schlüssel in a possible order in which the key values die Hashtabelle eingefüllt werden konnten? could have been inserted in the table? (A) 46, 42, 34, 52, 23, 33 (B) 34, 42, 23, 52, 33, 46 (C) 46, 34, 42, 23, 52, 33 (D) 42, 46, 33, 23, 34, 52 Option A,B,C oder / or D: /2P (h) Was ist die maximale Höhe eines AVL- What is the maximum height of any Baumes mit 7 Knoten? Die Höhe eines Bau- AVL-tree with 7 nodes? Assume that the mes mit einem einzigen Knoten sei 0. height of a tree with a single node is 0. (A) 2 (B) 3 (C) 4 (D) 5 Option A,B,C oder / or D:
Datenstrukturen und Algorithmen 7/22 Prüfung 21.8.2020 (i) Welche der folgenden Aussagen ist / sind Which of the following statements is/are /2P wahr für ungerichtete Graphen? TRUE for undirected graphs? P: Die Anzahl Knoten ungeraden Gra- P: Number of odd degree vertices des ist gerade is even. Q: Die Summe der Grade aller Knoten Q: Sum of degrees of all vertices is ist gerade. even. (A) Nur P / P only (B) Nur Q / Q only (C) Beide: P und Q / Both P and Q (D) Keine: weder P noch Q / None of them Option A, B, C oder / or D: Aufgabe 2: Asymptotik (19P) (a) Geben Sie für die untenstehenden Funktio- Provide an order for the following func- /3P nen eine Reihenfolge an, so dass folgendes tions such that the following holds: If a gilt: Wenn eine Funktion f links von einer function f is left of a function g then it Funktion g steht, dann gilt f ∈ O(g). holds that f ∈ O(g). Beispiel: die drei Funktionen n3 , n5 und n7 Example: the functions n3 , n5 and n7 are sind bereits in der entsprechenden Reihenfol- already in the respective order because ge, da n3 ∈ O(n5 ) und n5 ∈ O(n7 ). n3 ∈ O(n5 ) and n5 ∈ O(n7 ). √ 2 √ q n log22 n , 2log3 n O(n) , n1/3 , n2 log2 n X , log2 n , n! , i=1
Datenstrukturen und Algorithmen 8/22 Prüfung 21.8.2020 /6P (b) Gegeben sei die folgende Rekursionsglei- Consider the following recursion equati- chung: on: 2T ( n ) + n log n, n > 1 2 2 T (n) = 1 n=1 Geben Sie eine geschlossene (nicht rekursi- Specify a closed (non-recursive), simple ve), einfache Formel für T (n) an. Nehmen formula for T (n). Sie an, dass es ein m ∈ N gibt mit 2m = n. Hint: rewrite the recursion equation as a Tipp: Schreiben Sie die Rekursionsformel zu- function of m, solve this recursion equa- erst in Abhängigkeit von m, lösen diese und tion and then retransform. transformieren dann zurück.
Datenstrukturen und Algorithmen 9/22 Prüfung 21.8.2020 Geben Sie die asymptotische Laufzeit von Provide the asymptotic running time of f (n) in Abhängigkeit von n möglichst knapp f (n) as a function of n as tight and pre- und präzise an. cise as possible. (c) /2P void f(int n){ if(n==1) Asymptotische Laufzeit von f / Asymptotic return 1; Running time of f else return f(n-1) + f(n-1) } (d) /2P void f(int n){ if(n==1) return 1; Asymptotische Laufzeit von f / Asymptotic else { Running time of f int x = f(n-1); return x + x; } }
Datenstrukturen und Algorithmen 10/22 Prüfung 21.8.2020 /6P (e) Wie viele Einsen werden von der folgenden How many ones does the following proce- Funktion ausgegeben, wenn man sie mit n dure print when run with input n? Write aufruft? Schreiben Sie die Rekurrenz hin, the corresponding recurrence relation. geben Sie eine geschlossene einfache For- Provide a closed, simple formula. And mel an und geben Sie die asymptotische provide the asymptotic number in Θ Anzahl in Θ Notation an. notation. void Ones(int n){ if(n==0) printf("1"); else { for(int i = 0; i < pow(2,n); i++) //2ˆn iterations Ones(n-1); } }
Datenstrukturen und Algorithmen 11/22 Prüfung 21.8.2020 Aufgabe 3: Dynamic Programming: Palindromes (18P) Für eine gegebene Zeichenkette s berechnen Given a string s, find the minimum number sie die minimale Anzahl Stücke in die s ge- of pieces into which s can be cut so that schnitten werden kann, so dass jeder Teilstring each piece is a palindrome. ein Palindrom ist. For example. Beispiele: • BABABCBADCD • BABABCBADCD Minimale Anzahl Stücke 3 mit The minimum number pieces is 3 BAB|ABCBA|DCD with BAB|ABCBA|DCD • ABCBA • ABCBA Minimale Anzahl Stücke 1 da ABCBA The minimum number pieces is 1 as bereits ein Palindrom ist. ABCBA is already a palindrome. • ABCD • ABCD Minimale Anzahl Stücke 4 mit The minimum number pieces is 4 A|B|C|D. with A|B|C|D. (a) Geben Sie zuerst die asymptotische Laufzeit First provide the asymptotic running time /1P an für die effiziente Berechnung, ob eine ge- to efficiently determine if a given string gebene Zeichenkette der Länge n ein Palin- of length n is a palindrome. drom ist. Geben Sie nun einen Algorithmus an, der Now provide a dynamic programming al- nach dem Prinzip der dynamischen Program- gorithm that computes the minimal num- mierung arbeitet und die minimale Anzahl ber of substrings. Teilstrings berechnet. (b) Was ist die Bedeutung eines Tabellenein- What is the meaning of a table entry and /2P trags, und welche Dimension und Grösse hat what is the dimension and size of the DP- die DP-Tabelle T ? table T ? Tabellengrösse / table size: Bedeutung Eintrag / entry meaning:
Datenstrukturen und Algorithmen 12/22 Prüfung 21.8.2020 /3P (c) Wie berechnet sich ein Eintrag der Tabelle How can an entry be computed from the aus den vorher berechneten Einträgen (Re- values of previously computed entries (re- kursionsgleichtung)? cursion equation)? /2P (d) In welcher Reihenfolge können die Einträge In which order can the entries be compu- berechnet werden? ted? /1P (e) Wie kann der minimale Wert aus der Tabelle How can the minimal value be obtained erhalten werden? from the DP table? /2P (f) Geben Sie die Tabelle für folgenden Beispiel- Provide the table for the following exam- string an. ple expression String : ABBABBA
Datenstrukturen und Algorithmen 13/22 Prüfung 21.8.2020 (g) Zusätzlich zur minimalen Anzahl Stücke wol- In addition to the minimal number of pie- /2P len Sie auch angeben, wie die Einteilung aus- ces you want to provide the partitioning. sieht. Beschreiben Sie , wie Sie das bewerk- Describe how this is done. stelligen. (h) Geben Sie die asymptotichen Laufzeiten Provide the asymptotic running times for /5P für die Berechnung der besten Untertei- the computation of the minimal value lung in Θ-Notation möglichst knapp mit Be- and the corresponding partition in Θ no- gründung an. tation as tight as possible with short ex- planation.
Datenstrukturen und Algorithmen 14/22 Prüfung 21.8.2020 Aufgabe 4: Wasserstoffauto (14P) Sie haben ein Auto, welches mit Wasserstoff You have a hydrogen car and plan a tour fährt und planen eine Tour von A nach Z. from A to Z. There are different paths Es gibt verschiedene Wege und Sie wollen and you want to choose the shortest path. den kürzesten Weg wählen. Allerdings darf But the distance between two points with der Abstand zwischen zwei besuchten Was- a hydrogen filling station (marked nodes) serstofftankstellen (markierten Knoten) einen may not exceed a certain value m. gewissen Wert m nicht überschreiten. Thus, consider a graph G = (V, E, w) and Gegeben ist also ein Graph G = (V, E, w) a subset C ⊂ V of marked nodes. Edge und eine Teilmenge C ⊂ V von markierten weights w determine the distance between Knoten. Jedes Gewicht w bezeichnet den Ab- nodes (in km). Goal is to find a shortest stand zwischen zwei Knoten (in km). Ziel ist path from A to Z such that the distance also, einen kürzesten Weg zu finden zwischen between nodes from C does not exceed A und Z, so dass der Weg zwischen Zwei Kno- the value of m. It holds that A ∈ C and ten aus C den Wert m nicht übersteigt. Es gilt Z ∈ C. A ∈ C und Z ∈ C. /2P (a) Betrachten Sie den folgenden Graph und be- Consider the following graph and deter- stimmen Sie den kürzesten Weg von A nach mine the shortest path from A to Z with Z wenn m = ∞. m = ∞. 25 30 50 90 B D F H J 100 40 A 70 15 25 20 25 35 50 25 30 Z 40 80 C E G I K 40 30 40 60 Kürzester Weg mit Länge / Shortest path with length /3P (b) Benennen Sie den Algorithmus, den Sie hier Specify the algorithm that you choose for für m = ∞ anwenden. Geben Sie die m = ∞ in order to solve the problem allgemeine Laufzeit dieses Algorithmus in as efficient as possible. State the running Abhängigkeit von Anzahl Kanten und Kno- time of this algorithm as a function of ten an. number nodes and edges.
Datenstrukturen und Algorithmen 15/22 Prüfung 21.8.2020 25 30 50 90 B D F H J 100 40 A 70 15 25 20 25 35 50 25 30 Z 40 80 C E G I K 40 30 40 60 (c) Bestimmen Sie nun die Länge des kürzesten Now determine the length of a shortest /3P Pfades, wobei auf dem Weg zwischen zwei path where between to hydrogen filling Wasserstofftankstellen (markierten Knoten) stations (marked nodes) the distance of der Abstand den Wert m = 100 nicht über- m = 100 may not be exceeded. schreiten darf. Kürzester Weg für m = 100 mit Länge / Shortest path for m = 100 with length (d) Beschreiben Sie nun eine Algorithmus, mit Now describe an algorithm that you can /6P dem Sie den kürzesten Pfad in einem solchen use in order to compute the shortest path positiv gewichteten Graphen für endliches m on a positively weighted graph for finite möglichst effizient berechnen können. m, as efficient as possible.
Datenstrukturen und Algorithmen 16/22 Prüfung 21.8.2020 Aufgabe 5: Course Scheduling (14P) Sie haben n ∈ N Studenten und sollen diese You need to schedule courses for students. den m ∈ N zur Verfügung stehenden Kur- There are n ∈ N students, m ∈ N cour- sen zuordnen. Dabei muss jeder Student ge- ses and each student needs to visit exactly nau k ≤ m Kurse belegen. Kurse haben Kapa- k ≤ m courses. Courses have capacities zitäten Ci (1 ≤ i ≤ m) . Jeder Student gibt Ci (1 ≤ i ≤ m) . Each student provides a eine Liste von f (k ≤ f ≤ m) bevorzugten list of f (k ≤ f ≤ m) favourite courses. Kursen an. You are looking for an assignment such Sie suchen eine Zuteilung so dass jeder Stu- that every student can visit exactly k of dent von den f angegebenen Kursen exakt k his f favourite courses and such that no Kurse belegen kann und die Kurskapazitäten course capacity is exceeded. nicht überschritten werden. /5P (a) Sie müssen entscheiden, ob ein zulässige Zu- You have to decide if an acceptable as- teilung der n Studenten zu den m Kursen signment of the n students to the m überhaupt möglich ist. Sie modellieren diese courses is possible at all. You model that Frage als ein Problem des maximalen Flus- question as a network flow problem. De- ses. Beschreiben / Skizzieren Sie ein passen- scribe / sketch a suitable flow network des Flussnetzwerk G = (V, E, c). Geben Sie G = (V, E, c). Specify nodes, edges and Knoten, Kanten und Kapazitäten des Netz- capacities of the network and describe werks and und beschreiben Sie, wie Sie vom how you can deduce from the maximal maximalen Wert des Flusses darauf schlies- value of the flow if a suitable assignment sen können, ob es eine Zuteilung gibt oder exists or not. nicht. /3P (b) Zeichnen Sie das Flussnetzwerk für k = 2, Draw the flow network for k = 2, f = f = 3 und die folgende Tabelle der bevor- 3 and the following table of favourite zugten Kurse. Die Zahlen in Klammern sind courses. The numbers in parentheses are die Kurskapazitäten. course capacities.
Datenstrukturen und Algorithmen 17/22 Prüfung 21.8.2020 Student D&A (2) Inf(2) Math(3) Phys(2) Anna x x x Clara x x x Ralf x x x Bob x x x (c) Nennen Sie einen möglichst effizienten Al- State an algorithm, as efficient as pos- /4P gortihmus, mit dem Sie bestimmen können, sible, that you can use in order to de- ob eine passende Kurszuteilung existiert und termine if the suitable course assignment bestimmen Sie die Laufzeit abhängig von den exists and specify its asymptotic running gegeben Parametern n, m, k und f . time as function of parameters n. m, k and f . (d) Sie haben das Flussnetzwerk aus (a) be- You have determined the flow network /2P stimmt und den maximalen Fluss berechnet. from (a) and computed the maximal Wie berechnen Sie die Zuteilung der Studen- flow. How do you compute the the as- ten zu Kursen. Was ist die Laufzeit dieses signment of students to courses? hat is Algorithmus. the asymptotic running time of this algo- rithm.
Datenstrukturen und Algorithmen 18/22 Prüfung 21.8.2020 Aufgabe 6: Parallele Programmierung (14P) /4P (a) Stellen Sie den Speedup nach dem Gustaf- Plot the speedup when using 1 to 5 pro- sons Gesetz und nach dem Amdahl-Gesetz cessors according to Gustafson’s law and mit 1 bis 5 Prozessoren in einem Diagramm according to Amdahl’s law for a program dar. Erstellen Sie Graphen für einen nicht- with a relative portion of the code that parallelisierbaren Anteil des Programmes von cannot be parallelized of 10%, 20%, 50% 10%, 20%, 50% und 100%. and 100%. Sp Sp 5 5 4 4 3 3 2 2 1 1 0 p 0 p 0 1 2 3 4 5 0 1 2 3 4 5 Gustafson Amdahl
Datenstrukturen und Algorithmen 19/22 Prüfung 21.8.2020 (b) Die folgende Abbildung zeigt einen Task- The following figure shows a task-graph /2P Graphen eines Algorithmus. Die Zahl an den of some algorithm. The number in each Knoten bezeichnet die Ausführungszeit für of the nodes denotes the execution time den jeweiligen Berechnungsschritt. per task step. 5 5 10 5 5 10 5 5 Markieren Sie den kritischen Pfad des Task- Mark the critical path of the task graph. Graphen. Wie lang ist die Ausführungszeit What is the execution time of the critical des kritischen Pfades T∞ ? Wie lang ist die path T∞ ? What is the sequential execu- sequentielle Ausführungszeit T1 ? tion time T1 ? T∞ = T1 = (c) Was ist nach dem Greedy-Scheduling What is, according to the greedy schedu- /2P Theorem eine obere Schranke für die ling theoem an upper bound for the exe- Ausführungszeit Tp des Taskgraphen, wenn cution time Tp of the task graph, when a ein Greedy-Scheduler auf p Prozessoren ver- greedy schediler on p processors is used. wendet wird? p 2 4 5 ∞ Tp
Datenstrukturen und Algorithmen 20/22 Prüfung 21.8.2020 Wir verwenden im folgenden Teil der Auf- For the following part of the task, we use gabe C++ Code und nehmen an, dass Sie C++ code and assume that you under- die jeweilige Syntax und Semantik verstehen. stand the syntax and semantics. But this Es geht um das theoretische Verständnis der task is more about the theoretical under- nebenläufigen Vorgänge. Treffen Sie insbe- standing of what can happen in a concur- sondere keine aussergewöhnliche Annahmen rent setup. Particularly do not make any über die verwendete Architektur, das Spei- exceptional assumptions about the archi- chermodell oder das Verhalten des Compi- tecture used, the memory model, or the lers. behavior of the compiler. Es werden Threads ausgeführt. Wir gehen je- Threads are executed. We assume for weils davon aus, dass die Funktion print je- each part that the function print out- weils einen Buchstaben ausgibt. Geben Sie puts a character. For each of the pro- für die Programme jeweils alle möglichen grams, provide all possible outputs, sepa- Ausgaben an, allenfalls getrennt durch Se- rated by semicolons if necessary. Specify mikolon. Bestimmen Sie, ob das Programm if the program terminates. If the program terminiert. Wenn das Programm nicht ter- does not terminate, provide all possible miniert, geben Sie alle Ausgaben immer so outputs as far as they can occur. weit an, wie sie auftreten können. /2P (d) void print(char c); // output character c void A(char value){ print(value); } void B(char value){ print(value); std::thread t1(A,value+1); t1.join(); } int main(){ std::thread t1(B,’A’); std::thread t2(B,’B’); t1.join(); t2.join(); } mögliche Ausgabe(n)/possible output(s) Das Programm terminiert/the program terminates immer/always nie/never manchmal/sometimes
Datenstrukturen und Algorithmen 21/22 Prüfung 21.8.2020 (e) /2P std::mutex m1; std::mutex m2; void print(char c); // output character c void A(){ m1.lock(); print(’A’); m2.lock(); print(’B’); m1.unlock(); print(’C’); m2.unlock(); } int main(){ std::thread t1(A); std::thread t2(A); t1.join(); t2.join(); } mögliche Ausgabe(n)/possible output(s) Das Programm terminiert/the program terminates immer/always nie/never manchmal/sometimes (bitte wenden / turn page)
Datenstrukturen und Algorithmen 22/22 Prüfung 21.8.2020 /2P (f) void print(char c); // output character c using guard = std::unique_lock; std::mutex m; std::condition_variable c; void A(bool& mine, bool& other){ guard g(m); print(mine ? ’A’:’B’); // if mine == true: output A, else B c.notify_one(); other = true; c.wait(g, [&]{return mine;}); } int main(){ bool one = false; bool two = false; std::thread t1(A,std::ref(one), std::ref(two)); std::thread t2(A,std::ref(two), std::ref(one)); t1.join(); t2.join(); } mögliche Ausgabe(n)/possible output(s) Das Programm terminiert/the program terminates immer/always nie/never manchmal/sometimes /15P Aufgabe 7: Programmieraufgabe: Job Scheduler (15P) Diese Aufgabe zum Thema Parallele Program- This following part on parallel program- mierung soll am Computer gelöst werden. Sie ming needs to be solved at the computer. können sich die Zeit frei einteilen. Wir emp- You are free in how you divide the time. fehlen aber, dass Sie nicht mehr als 45 Mi- However, we recommend to spend not nuten für diese Aufgabe aufwenden. more than 45 minutes on that problem. Lösen Sie diese Aufgabe in der Online- Solve this task in the online environment Umgebung (Code Expert via Moodle). (Code Expert via Moodle). Moodle-Passwort wird zu Beginnn der Prüfung bekannt ge- geben / Moodle password will be announced at the begin- ning of the exam
Sie können auch lesen