Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » aud » Forendiskussionen   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
pruefungen:bachelor:aud:loesungws10 [17.02.2013 21:30] Dawodopruefungen:bachelor:aud:loesungws10 [14.03.2022 08:29] (aktuell) BobbyB
Zeile 20: Zeile 20:
   * f ∈ O(log n)   * f ∈ O(log n)
   * g ∈ O(n log n);   * g ∈ O(n log n);
 +Hinweis: Hier ist ein kleiner Fehler in der Aufgabenstellung: Die Variable k in Funktion f muss mit 1 initialisiert sein, dem neutralen Element der Multiplikation.
  
 **e)** Richtig, denn ohne wahlfreien Zugriff muss die verkettete Liste bis zum gesuchten Element durchlaufen werden. Dass sie sortiert ist, ändert daran nichts, da besser Suchverfahren wie Binary Search wahlfreien Zugriff voraussetzen. **e)** Richtig, denn ohne wahlfreien Zugriff muss die verkettete Liste bis zum gesuchten Element durchlaufen werden. Dass sie sortiert ist, ändert daran nichts, da besser Suchverfahren wie Binary Search wahlfreien Zugriff voraussetzen.
Zeile 68: Zeile 69:
   X = (V, E, r) mit Knotenmenge V , Kantenmenge E und Wurzel r    X = (V, E, r) mit Knotenmenge V , Kantenmenge E und Wurzel r 
   V = {A, B, C, D, E, F, G}    V = {A, B, C, D, E, F, G} 
-  E = {(A,B)(A,G)(B,D)(B,E)(B,F)(D,C)+  E = {[A,B],[A,G][B,D][B,E][B,F][D,C]
   r = A    r = A 
 </code> </code>
Zeile 96: Zeile 97:
 <code java> <code java>
 public boolean isUndirected(boolean[][] amx) { public boolean isUndirected(boolean[][] amx) {
- for(int i = 0; i < amx.length; i++) { // Zeilen + for(int i = 0; i < amx.length; i++) {          // Zeilen 
- for(int j = 0; j < i; j++) { // Spalten+                if(amx[i][i])                                        // bei ungerichtetem Graph, 
 +                        return false;                              // kein Pfeil auf sich selbst.  
 + for(int j = 0; j < i; j++) {   // Spalten
  if(amx[i][j] != amx[j][i])  if(amx[i][j] != amx[j][i])
  return false;  return false;
Zeile 142: Zeile 145:
 **a)** 96 oder kleiner **a)** 96 oder kleiner
  
-**b)** +**b)** 2. Antwort ist richtigVon Hinten nach Vorne
-  * von Vorne nach HintenFalsch +
-  * von Hinten nach Vorne: Richtig+
  
 **c)** **c)**
Zeile 195: Zeile 196:
  long[] result = new long[n+1];   long[] result = new long[n+1];
  long[][] dd = new long[n+1][n+1];  long[][] dd = new long[n+1][n+1];
 +        // ^ eigentlich Speicherplatzverschwendung
 +        // Besser: mit for-Schleife (mit i<=n): in dd[i] = new long[i+1];
   
  for(int k = 0; k <= n; k++) {  for(int k = 0; k <= n; k++) {
Zeile 241: Zeile 244:
 ==== Aufgabe 5 - ADT ==== ==== Aufgabe 5 - ADT ====
  
-**a)** Ergebnis: 24.02.2011+**a)** Ergebnis: 24.02.2011 \\ 
 +Regeln: P1
  
-**b)** Ergebnis: 01.01.1970+**b)** Ergebnis: 01.01.1970 \\ 
 +Regeln: F2, F2, F1, P2
  
 **c)** setSeen(createPost(s, d, b), v) = createPost(s, d, v) **c)** setSeen(createPost(s, d, b), v) = createPost(s, d, v)
Zeile 252: Zeile 257:
  
 <code> <code>
-revoke(id_1, publish(P, id_2, F)) = publish(P, id_2, revoke(id_1, F)) +revoke(id_1, publish(P, id_2, F)) = revoke(id_1, F) falls id_1 = id_2 
-revoke(id_1, publish(P, id_1, F)) = F+ publish(P, id_2, revoke(id_1, F)) sonst
 </code> </code>
 +Hinweis: getPost(id_1, revoke(id_1, F)) muss noPost liefern. \\
 +Das bedeutet, dass alle Posts mit ID id_1 gelöscht werden müssen. Hat man einen Post mit gesuchter ID gefunden, darf man nach dessen Löschen nicht aufhören, sondern muss "weitersuchen".
  
 **f)**  **f)** 
  
 <code> <code>
-revoke(id_1, publish(P, id_2, F)) = publish(P, id_2, revoke(id_1, F)) +markSeen(id_1, publish(P, id_2, F)) = publish(setSeen(P, true), id_2, F) falls id_1 = id_2 
-revoke(id_1, publish(P, id_1, F)) = F + = publish(P, id_2, markSeen(id_1, F)) sonst
-</code> +
- +
-<code> +
-markSeen(id_1, publish(P, id_2, F)= publish(P, id_2, markSeen(id_1, F)) +
-markSeen(id_1, publish(P, id_1, F)) = publish(setSeen(P, true), id_1, F)+
 </code> </code>
  
Zeile 300: Zeile 302:
  
 ==== Aufgabe 7 - wp-Kalkül==== ==== Aufgabe 7 - wp-Kalkül====
 +
 +Anmerkung: \\
 +Eine for-Schleife ist nicht direkt vom wp-Kalkül abgedeckt, lässt sich aber in eine äquivalente while-Schleife umformen:
 +<code>
 +for(int i = 0; i < n; i++) {
 + // Code
 +}
 +</code>
 +entspricht
 +<code>
 +int i = 0;
 +while(i < n) {
 + // Code
 + i++;
 +}
 +</code>
  
 **a)** **a)**
Zeile 331: Zeile 349:
  
 wp(A, I) = wp(A, I) =
-wp("if (a[i] > 0) {s = s + a[i];} else {s = s - a[i]}", s = ∑{from 0 to i - 1} |a_j| ∧ i ≤ n) =+wp("if (a[i] > 0) {s = s + a[i];} else {s = s - a[i]} i = i + 1;", s = ∑{from 0 to i - 1} |a_j| ∧ i ≤ n) =
 [(a[i] > 0) ∧ wp("s = s + a[i]; i = i + 1;", s = ∑{from 0 to i - 1} |a_j| ∧ i ≤ n)] ∨ [(a[i] ≤ 0) ∧ wp("s = s - a[i]; i = i + 1;", s = ∑{from 0 to i - 1} |a_j| ∧ i ≤ n)] = [(a[i] > 0) ∧ wp("s = s + a[i]; i = i + 1;", s = ∑{from 0 to i - 1} |a_j| ∧ i ≤ n)] ∨ [(a[i] ≤ 0) ∧ wp("s = s - a[i]; i = i + 1;", s = ∑{from 0 to i - 1} |a_j| ∧ i ≤ n)] =
 [(a[i] > 0) ∧ (s + a[i] = ∑{from 0 to i + 1 - 1} |a_j| ∧ i + 1 ≤ n)] ∨ [(a[i] ≤ 0) ∧ wp(s - a[i] = ∑{from 0 to i + 1 - 1} |a_j| ∧ i + 1 ≤ n)] = [(a[i] > 0) ∧ (s + a[i] = ∑{from 0 to i + 1 - 1} |a_j| ∧ i + 1 ≤ n)] ∨ [(a[i] ≤ 0) ∧ wp(s - a[i] = ∑{from 0 to i + 1 - 1} |a_j| ∧ i + 1 ≤ n)] =
Zeile 366: Zeile 384:
 **d)** **d)**
  
-(unsicher) 
 <code> <code>
 V = n - i V = n - i