0 Daumen
926 Aufrufe

a)Die Algorithmen A1 bis A5 benötigen für ihre Ausführung si (i∈{1,....,5}) Schritte. Die Anzahl der Schritte si
kann dabei von der Größe n der Eingabe abhängig sein und sei gegeben durch:

s1 = 23 + 5
s2 = 6 log n + 17c - log n
s3 = n0 + n1 + n2 + n3 + n4
s4 = 2 log n + 4n
s5 = n3 + 35 + 3n

Geben Sie für jeden Algorithmus die Zeitkomplexität mithilfe der O-Notation an.

b)

Gegeben sei folgender Codeausschnitt. Der Parameter n sei eine natürliche Zahl.
public void calc ( i n t n ) {
          int e = 1 ;
                    if ( n < 1) {
            System.out.println( 0 ) ;
                                    }else {
                                        while ( n > 1) {
                                                   e *= n ;
                                                n--;
                                   }
                  System.out.println( e ) ;
                          }
           }
Berechnen Sie die Komplexität des Algorithmus unter Zuhilfenahme der O-Notation.

c)

Gegeben sei folgender rekursive Algorithmus zur Berechnung von Fibonacci-Zahlen. Die Methode gibt für ein n
die Fibonacci-Zahl fn zurück.
public long fibonacci (int n ) {
       if ( n < 2) {
                return 1 ;
                      } else{
                      return fibonacci ( n - 1) + fibonacci ( n - 2 ) ;
                    }
  }
Ermitteln Sie die Komplexitätsklasse des Algorithmus.

d)

Gegeben sei folgender Algorithmus zur Matrizen-Multiplikation. Die Methode nimmt zwei quadratische Matrizen
entgegen und multipliziert diese. Die Variable n entspricht dabei der Anzahl an Spalten bzw. Zeilen beider
Matrizen.
public int [ ] [ ] matrizenMultiplikation ( int [ ] [ ] a , int [ ] [ ] b ) {
                  int n = a.length ;
                  int [ ] [ ] c = new int [ n ] [ ] ;
                             for ( int i = 0 ; i < n ; i ++) {
                                       c [ i ] = new int [ n ] ;
                                    for ( int j = 0 ; j < n ; j ++) {
                                           for ( int k = 0 ; k < n ; k++) {
                                                 c [ i ] [ j ] = c [ i ] [ j ] + a [ i ] [ k ] * b [ k ] [ j ] ;
                                                      }
                                              }
                                    }
                          return c;
}
Berechnen Sie die Komplexität des Algorithmus mittels O-Notation. Vergleichen Sie den Algorithmus zur Matrizen-
Multiplikation mit dem Algorithmus zum Berechnen der Fibonacci-Zahlen (Teilaufgabe c)) für große n.

Avatar von

1 Antwort

0 Daumen

Ich verstehe die O-Notation auch nicht wirklich. Könnte da vlt. jemand weiterhelfen? :)

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community