Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Laufzeiten von Algorithmen ! » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Laufzeiten von Algorithmen !
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Vogel007
Grünschnabel


Dabei seit: 25.11.2007
Beiträge: 4

Laufzeiten von Algorithmen ! Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Moin, könnt ihr mir sagen wie die Laufzeiten von den Methoden sind in O-Notation, oder wie man drauf kommt??

Und was machen die methoden überhaupt? z.b. die erste berechnet die ganzzahlige wurzel. aber die anderen??
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
/**
 * Programmbeschreibung:
 *
 * Komplexitaet der Methoden in der O-Notation
 *

public class test {

/*-------------------------------Methode a ------------------------------*/

  static int a(int n) {

    int t = 1, z = 0;

    while (n > 0) {
      n -= t; //ungerade Zahl wird von n abgezogem
      t += 2; //ungerade Zahlen, 1, 3, 5, 7
      z++;
    }

    return z;  //Anzahl der Schritte zurückgeben
  }
  /*-------------------------------Methode ENDE ------------------------------*/
  
/*-------------------------------Methode b ------------------------------*/

//Quadriert die eingegebene Zahl.
  public static int b(int n) {

    int i = 0;
    int b = 1;

    while (++i < n)        //i wird zuerst erhöht, dann damit gerechnet
      b = b + 2 * i + 1;

    return b; //Zahl zum Quadrat zurückgeben
  }
  /*-------------------------------Methode ENDE ------------------------------*/
/*-------------------------------Methode c ------------------------------*/
//Zählt die Schritte, wie oft n durch 2 geteilt wird,bis sie <=1 wird
  static int c(int n) {

    int z = 0;

    while (n > 1) {
      n /= 2;      //...3/2 = 1
      z++;         //...dann zählt er noch eine hinzu und hört auf  
    }

    return z;
  }
  /*-------------------------------Methode ENDE ------------------------------*/
/*-------------------------------Methode d ------------------------------*/
 //Anzahl der Schritte, die er braucht, die quadrierte Zahl mit ungeraden 
 //Zahlen zu subtrahieren
  static int d(int n) {

    return a(b(n)); //erst wird die Zahl quadriert, dann an a weitergegeben
  }
  /*-------------------------------Methode d ENDE ------------------------------*/
/*-------------------------------Methode e ------------------------------*/
  static int e(int n) {

    return b(a(n));
  }
/*-------------------------------Methode e ENDE ------------------------------*/
  static int f(int n) {

    return a(c(n));
  }
/*-------------------------------Methode c ------------------------------*/
  static int g(int n) {

    return a(n) + c(n);
  }
/*-------------------------------Methode c ------------------------------*/

  static int h(int n) {

    return b(b(n));
  }
/*-------------------------------Methode c ------------------------------*/
  static int i(int n) {

    int z = 0;
    int y = a(n);

    for (int i = 1; i <= y; i++)
      z += a(n);

    return z;
  }
/*-------------------------------Methode c ------------------------------*/
  static int j(int n) {

    int z = 0;

    for (int i = 1; i <= a(n); i++)
      z += a(n);

    return z;
  }
/*-------------------------------Methode c ------------------------------*/





  /** ---------------------Hauptprogramm-------------------- */

  public static void main(String argv[]) {

    int n;

    do {
      n = IO.readInt("Eingabe von n: ");
    }
    while (n < 1);

    IO.print("a(" + n + ") =");
    IO.println(a(n), 8);

    IO.print("b(" + n + ") =");
    IO.println(b(n), 8);

    IO.print("c(" + n + ") =");
    IO.println(c(n), 8);

    IO.print("d(" + n + ") =");
    IO.println(d(n), 8);

    IO.print("e(" + n + ") =");
    IO.println(e(n), 8);

    IO.print("f(" + n + ") =");
    IO.println(f(n), 8);

    IO.print("g(" + n + ") =");
    IO.println(g(n), 8);

    IO.print("h(" + n + ") =");
    IO.println(h(n), 8);

    IO.print("i(" + n + ") =");
    IO.println(i(n), 8);

    IO.print("j(" + n + ") =");
    IO.println(j(n), 8);
  }
}



danke

ciao
26.11.2007 17:52 Vogel007 ist offline E-Mail an Vogel007 senden Beiträge von Vogel007 suchen Nehmen Sie Vogel007 in Ihre Freundesliste auf
Tobias
Routinier


Dabei seit: 18.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Wie wärs, wenn du mal erzählst, wo die Probleme sind und was dein Ansatz ist.
26.11.2007 18:29 Tobias ist offline E-Mail an Tobias senden Beiträge von Tobias suchen Nehmen Sie Tobias in Ihre Freundesliste auf
Vogel007
Grünschnabel


Dabei seit: 25.11.2007
Beiträge: 4

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

hab da jetzt mal coole wertetabellen gemacht.

http://phpfi.com/279113

bin nun bei methode e, was berechnet die denn?

sieht da jemand nen zusammenhang. wie siehts mit den anderen aufgaben aus??

ciao
26.11.2007 21:31 Vogel007 ist offline E-Mail an Vogel007 senden Beiträge von Vogel007 suchen Nehmen Sie Vogel007 in Ihre Freundesliste auf
JROppenheimer
Foren As


Dabei seit: 17.11.2007
Beiträge: 94

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

static int e(int n) {

return b(a(n));
}

Methode e hat einen Parameter, dieser muss vom Typ int sein.

Alles was e macht ist

return b(a(n));

e gibt also im GRUNDE nur einen Wert zürück. Jetzt kuckste Dir an, was e zurück gibt, nämlich b(a(n)).

Was ist b, was ist a, und was ist n?! Und was macht das?
Dann weisste, was e macht...

__________________
I'm 71% Megatron!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JROppenheimer: 27.11.2007 13:08.

27.11.2007 13:04 JROppenheimer ist offline E-Mail an JROppenheimer senden Beiträge von JROppenheimer suchen Nehmen Sie JROppenheimer in Ihre Freundesliste auf MSN Passport-Profil von JROppenheimer anzeigen
Tobias
Routinier


Dabei seit: 18.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Klammer dich auch nicht so an die Wertetabellen fest. Die direkte Analyse des Programmcodes ist hier viel fruchtbarer. Versuche mal die Methoden mathematisch auszudrücken.

z.B. bei Methode a sieht man, dass von n größer werdende ungerade Zahlen abgezogen werden. Betrachten wir mal k Schleifendurchläufe:

[latex]n - 1 - 3 - \ldots - (2k-1) = n - \sum_{t=1}^{k}(2t-1)[/latex]

Die Summe kannst du auseinanderziehen und den kleinen Gauß verwenden. Danach wird schon klar, wie viele Schleifendurchläufe gemacht werden.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Tobias: 27.11.2007 13:27.

27.11.2007 13:26 Tobias ist offline E-Mail an Tobias senden Beiträge von Tobias suchen Nehmen Sie Tobias in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Theoretische Informatik » Laufzeiten von Algorithmen !