Datenstrukturen und Algorithmen (D-MATH RW) - Pr ufung - ETH Zürich

Die Seite wird erstellt Albert Hess
 
WEITER LESEN
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