1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Laufzeitanalyse von rekursiven Codes

  • capo89
  • 28. April 2012 um 14:24
  • Unerledigt
  • capo89
    1
    capo89
    Mitglied
    Punkte
    10
    Beiträge
    1
    • 28. April 2012 um 14:24
    • #1

    hallo, habe folgenden code und muss seine Laufzeit berechnen:

    a) Geben Sie für das folgende Programm die Laufzeitkomplexität als Rekursionsgleichung in Abhängigkeit des Eingabeparameters n an :

    int berechne1(int n)
    {
    int sum = 0;

    for(int i = 0; i < n/2 ; i++)
    {
    sum += 2*i-1;

    }
    if (n<=0)
    return sum;
    else
    sum+4*berechne1(n-1)5;

    }


    ich hab die Musterlösung davon und die lautet: T(n) = T(n-1) + c1* n/2 + c2

    Allerdings würde ich gerne wissen, wie man auf diese Gleichung denn kommt. kann mir das jmd. erklären?

  • CwieZebra
    3
    CwieZebra
    Mitglied
    Reaktionen
    1
    Punkte
    56
    Beiträge
    11
    • 6. Mai 2012 um 13:49
    • #2
    Code
    int berechne1(int n)
    {
        int sum = 0;
    
    
        for(int i = 0; i < n/2 ; i++)  { // es wird n/2 mal eine konstante operation ausgeführt => c1* n/2 
            sum += 2*i-1;
        }
    
        if (n<=0) // die ganze funktion wird solange rekursiv ausgeführt bis die Abbruchbedingung erfüllt ist, => T(n-1)
             return sum; // auch wenn das nur einmal gemacht wird, kostet es eventuell zeit => c2
        else
            sum+4*berechne1(n-1);
    }
    Alles anzeigen

    Die Theorie dahinter ist das Master-Theorem - aber dazu gibt es sicher in Vorlesungsfolien/Skriptum/OdervonwoauchimmerdumitdemProblemkonfrontiertwarst mehr (eventuell hilft ja auch googlen). :verycool:

    Einmal editiert, zuletzt von CwieZebra (6. Mai 2012 um 20:39)

  • Asg
    2
    Asg
    Mitglied
    Punkte
    15
    Beiträge
    3
    • 3. August 2013 um 13:23
    • #3

    Hallo,

    Zitat von CwieZebra

    [CODE]Die Theorie dahinter ist das Master-Theorem - ...

    ich habe mir die drei Fälle angeschaut, aber ich weiß nicht, wann welcher Fall anzuwenden ist :confused:

    Kann mir bitte jemand sagen, wie ich den richtigen Fall bestimmen kann?

    Im Anhang habe ich ein Beispiel, was ich nicht richtig lösen kann.

    Danke vorab
    Viele Grüße
    Asg


    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.


    PS: Wie kann ich hier im Forum Sonderzeichen wie die Oh-Notationen schreiben? Oder ist es nicht möglich?

  • Asg
    2
    Asg
    Mitglied
    Punkte
    15
    Beiträge
    3
    • 3. August 2013 um 15:42
    • #4

    ich glaub, ich muss alle drei Fälle testen, um herauszufinden, welcher Fall zutrifft, oder???


    Ich habe noch etwas weiter recherchiert und habe folgende Beispiele gefunden:
    Master Theorem - Computer Science & Engineering

    Die Bedingungsprüfung in diesem Skript finde ich einfacher. Wobei ist mir nicht ganz klar, was man als d nehmen soll, wenn eine Funktion f(n) mehrere Exponenten hat z. B. f(n) = n2 + n log n. Wahrscheinlich muss der größte Exponent für d gewählt werden, in diesem Fall d = 2, oder??

    Hier wird aber auf der Seite 4 geschrieben, dass Master-Theorem auf nicht polynomiale f(n) wie 2n nicht anwendbar ist ....

    Master Theorem: Practice Problems and Solutions
    ... aber hier wird das Master-Theorem auf eine solche f(n) im Beispiel 3 angewendet.

    Wo ist denn mein Denkfehler?


    Viele Grüße
    Asg

    Einmal editiert, zuletzt von Asg (3. August 2013 um 15:59)

  • Paulchen
    1
    Paulchen
    Gast
    • 3. August 2013 um 16:02
    • #5
    Zitat von Asg

    PS: Wie kann ich hier im Forum Sonderzeichen wie die Oh-Notationen schreiben? Oder ist es nicht möglich?

    Du kannst Unicode-Zeichen verwenden, z.B. f ∈ ϴ(g).

    Oder du verwendest das [noparse] [tex='[/noparse]-Tag; aus</p><p><br></p><p>[noparse]<woltlab-metacode-marker data-name="tex" data-uuid="5868d3b7-c2b8-47a5-8212-614b4dad9e51" data-source="W3RleF0=" data-attributes="WyJmXFxpblxcVGhldGFcXGxlZnQoZ1xccmlnaHQpIl0=" data-use-text="0" /><woltlab-metacode-marker data-uuid="5868d3b7-c2b8-47a5-8212-614b4dad9e51" data-source="Wy90ZXhd" />[/noparse]</p><p><br></p><p>wird dann</p><p><br></p><p>[tex]f\in\Theta\left(g\right)'][/tex]

  • Asg
    2
    Asg
    Mitglied
    Punkte
    15
    Beiträge
    3
    • 5. August 2013 um 02:37
    • #6

    Hallo,

    danke für den Tipp für den Editor.

    Viele Grüße
    Asg

  • Maximilian Rupp 27. Dezember 2024 um 00:26

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern