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

Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Laufzeit T(n) bei rekursiven Prozeduren » 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 Laufzeit T(n) bei rekursiven Prozeduren
Beiträge zu diesem Thema Autor Datum
 Laufzeit T(n) bei rekursiven Prozeduren ubik 10.04.2015 16:58
 RE: Laufzeit T(n) bei rekursiven Prozeduren eulerscheZahl 10.04.2015 19:45
 RE: Laufzeit T(n) bei rekursiven Prozeduren ubik 10.04.2015 19:53
 RE: Laufzeit T(n) bei rekursiven Prozeduren ubik 12.04.2015 08:54
 RE: Laufzeit T(n) bei rekursiven Prozeduren eulerscheZahl 12.04.2015 09:50
 RE: Laufzeit T(n) bei rekursiven Prozeduren ubik 12.04.2015 17:31

Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
ubik
Mitglied


Dabei seit: 10.04.2015
Beiträge: 41

Laufzeit T(n) bei rekursiven Prozeduren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo,

die Aufgabe lautet:

Geben Sie an, welche Laufzeitkomplexität die folgende Prozedur p in Abhängigkeit von n hat. Begründen Sie Ihre Antwort.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure p(n : integer) : integer;
  begin
    if n < 1 then return 1
             else return q(n div 4)
    end if
  end

procedure q(n : integer) : integer;
  begin
    if n < 1 then return 1
             else return p(n * 3)
    end if
  end


Meine Ideen:
Ich habe mir folgendes gedacht:

code:
1:
2:
3:
4:
5:
T1(n) = { 1, falls n = 1
        { T2(n/4), sonst

T2(n) = { 1, falls n < 1
        { T1(n*3), sonst


Kann man das irgendwie noch weiter zusammenfassen?

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ubik: 10.04.2015 17:00.

10.04.2015 16:58 ubik ist offline E-Mail an ubik senden Beiträge von ubik suchen Nehmen Sie ubik in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

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

Mal eine Überlegung:
bei einem Durchlauf (Abarbeitung von p und q) wird n mit 3/4 multipliziert (so in etwa, kann auch weniger sein, wegen div).
Wenn wir mit mehreren Durchläufen auf 1 kommen willen, haben wir also:
[latex]n \cdot \left(\frac{3}{4}\right)^\text{Durchläufe}=1[/latex]
Wenn du das nach der Zahl der Durchläufe umstellst, wirst du zu einer logarithmischen Laufzeit kommen.

__________________
Syntax Highlighting fürs Board (Link)
10.04.2015 19:45 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
ubik
Mitglied


Dabei seit: 10.04.2015
Beiträge: 41

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

Ahh!

Vielen Dank.
10.04.2015 19:53 ubik ist offline E-Mail an ubik senden Beiträge von ubik suchen Nehmen Sie ubik in Ihre Freundesliste auf
ubik
Mitglied


Dabei seit: 10.04.2015
Beiträge: 41

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

Eine Frage hätte ich noch.

Wie schreibt man denn n * (3/4)^Durchläufe = 1 als Logarithmus?
12.04.2015 08:54 ubik ist offline E-Mail an ubik senden Beiträge von ubik suchen Nehmen Sie ubik in Ihre Freundesliste auf
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

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

[latex]n \cdot \left(\frac{3}{4}\right)^d=1[/latex]
[latex]\left(\frac{3}{4}\right)^d=\frac{1}{n}[/latex]
[latex]\ln\left(\left(\frac{3}{4}\right)^d\right)=\ln\left(\frac{1}{n}\right)[/latex]
[latex]d \cdot \ln\left(\frac{3}{4}\right)^d=\ln\left(\frac{1}{n}\right)[/latex]
[latex]d=\frac{\ln\left(\frac{1}{n}\right)}{\ln\left(\frac{3}{4}\right)}[/latex]
[latex]d=\frac{\ln\left(n\right)}{\ln\left(\frac{4}{3}\right)}[/latex]
tatsächlich wird die Zahl der Durchläufe darunter liegen (weil div den Kommateil ignoriert). Das ist eine Obergrenze.

__________________
Syntax Highlighting fürs Board (Link)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 12.04.2015 09:51.

12.04.2015 09:50 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
ubik
Mitglied


Dabei seit: 10.04.2015
Beiträge: 41

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

Hallo,

muss das nicht

d = ln(1/n) / ln(4/3)

d = -ln(n) / ln(4/3)

heißen?

Da ja ln (1/n) = - ln(n) ist?

Dann kann ich mir irgendwie nicht vorstellen, wie die Anzahl der Durchläufe negativ sein kann

Edit: Ah ne, alles klar, das Minus wird zu Plus, wenn ich ln(4/3) benutze.

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von ubik: 12.04.2015 17:36.

12.04.2015 17:31 ubik ist offline E-Mail an ubik senden Beiträge von ubik suchen Nehmen Sie ubik in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Algorithmen » Laufzeit T(n) bei rekursiven Prozeduren