Laufzeit eines Algorithmus bestimmen



  • Hallo, ich weiß nicht wie ich die Laufzeit vom folgenden algorithmus bestimmen kann kann. der code lautet:

    (int, int) divInter (int n, int k){
    2 int q=0;
    3 int r=n;
    4 int m=2*k;
    5 while (r>=m){
    6 q=q+1;
    7 r=r-m;
    8 }
    9 q=q*2;
    10 return (q,r);
    11 }
    

    die lösung davon lautet: w(n,k) = n/2 *5 +7

    wobei das n/2 abgerundet wird.

    kann mir jmd. erklären, wie man vorgeht? ich möchte das lernen, aber weiß nicht wie man solche aufgaben "anpackt".



  • Wenn ich umschreibe zu

    (int, int) divInter (int n, int k){
      int q=0;               //1
      int r=n;               //1
      int m=2*k;             //1 (2?)
    nochmal:
      bool test=(r<m);       //1  //Die Schleife läuft n/k mal
      if test goto fertig;   //1
        q=q+1;               //1
        r=r-m;               //1
      goto nochmal           //1
    fertig:
      q=q*2;                 //1
      return (q,r);          //1 (2?)
    }
    

    komme ich auf w(n,k) = n/k *5 + 5
    Schon recht dicht dran.
    Man müßte wissen, welche Anweisungen in diesem Spiel welche Kosten haben.
    Das sollte im Skript zur Vorlesung spezifiziert sein.



  • es wurde gesagt, dass Grundrechenarten, Vergleiche und Zuweisungen in exakt einer Zeiteinheit ausgeführt werden.

    edit: also muss ich nur die anzahl der operationen + kosten zählen, oder wie?



  • pac89 schrieb:

    es wurde gesagt, dass Grundrechenarten, Vergleiche und Zuweisungen in exakt einer Zeiteinheit ausgeführt werden.

    Oki.

    (int, int) divInter (int n, int k){
      int q=0;        //Z 1
      int r=n;        //Z 1
      int m=2*k;      //ZG 2
      while (r>=m){   //V 1   //Schleife läuft n/k mal
        q=q+1;        //ZG 2
        r=r-m;        //ZG 2
      }
      q=q*2;          //ZG 2
      return (q,r);   //?
    }
    

    Macht w(n,k)=n/k*5+6+?
    Vielleicht zählt das return als eine Zuweisung? Mußt Du rausfinden, wenn DU noch ein paar Beispiele mit Lösung hast, kannste ganz leicht isolieren, wie der Prof genau zählt.

    edit: also muss ich nur die anzahl der operationen + kosten zählen, oder wie?

    Ganz genau.



  • okay, vielen dank für die hilfe. bei den anderen beispielen schlag ich mich dann selber mal durch.


Anmelden zum Antworten