Dies ist eine statische Kopie unseres alten Forums. Es sind keine Interaktionen möglich.
This is a static copy of our old forum. Interactions are not possible.

Armin1906

Praktikant

  • "Armin1906" is male
  • "Armin1906" started this thread

Posts: 21

Date of registration: Nov 10th 2006

Location: Hannover

Occupation: Mathe-Informatik / 6

1

Friday, December 1st 2006, 10:18am

Scheme Laufzeitberechnung

Hallo,

ich habe ne frage zur Laufzeitberechnung in Scheme. Habe bis jetzt leider nur auf einem Übungsblatt die Laufzeit berechnet und würde die Punkte ungern wieder verschenken.

Es geht jetzt nicht speziell um eine Aufgabe. Ich würde gerne wissen, wie man die Laufzeit eine rekursiven bzw. iterativen Prozedur berechnet und wie man den Proportionalitätsfaktor berechnen kann.

Vielen Dank für eure Hilfe :)

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

2

Friday, December 1st 2006, 10:41am

RE: Scheme Laufzeitberechnung

Quoted

Original von Armin1906
Ich würde gerne wissen, wie man die Laufzeit eine rekursiven bzw. iterativen Prozedur berechnet und wie man den Proportionalitätsfaktor berechnen kann.
Eigentlich ganz einfach: Jede elementare Operation (z. B. ein Vergleich, eine Addition, eine Multiplikation) zählt als eine Zeiteinheit bei der Laufzeit. Wenn man sich nun noch überlegt, wie oft die Iteration/Rekursion durchgeführt wird, kommt man auf die Anzahl der Zeiteinheiten, die ingesamt (in Abhängigkeit von der Eingabe) benötigt werden.

Falls Du damit Probleme haben solltest, poste hier doch einfach mal ein Beispielprogramm und schreib auf, wie Du bei der Berechnung der Laufzeit vorgegangen bist und wo Du noch Probleme hast.

Achso: Eigentlich müßte man bei der Laufzeitberechnung noch berücksichtigen, daß beispielsweise Additionen von großen Zahlen länger dauern als Additionen von kleinen Zahlen. Das klammert man in der Regel aber von der Laufzeitberechnung aus, da derartige Einflußfaktoren nur selten ins Gewicht fallen. Was "elementare Operationen" sind, läßt sich also nicht pauschal sagen, hier kommt die Erfahrung ins Spiel. :)
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

This post has been edited 1 times, last edit by "Joachim" (Dec 1st 2006, 10:41am)


oixio

Senior Schreiberling

  • "oixio" is male

Posts: 517

Date of registration: Oct 3rd 2004

3

Friday, December 1st 2006, 11:09am

In Scheme läuft das aber ein wenig anders ab. Dazu gab es ja die Übung.

In den passenden Quelltexten dafür findest du 2 Funktionen:
cputime und factor.

cputime ist quasi eine Stoppuhr. Mit der kannst du die Laufzeit eines Programmaufrufes messen. Das Ergebnis wird in Millisekunden zurückgegeben.

Source code

1
(cputime f 100); --> 465


Mach ein paar Messungen, dann siehst du z.B. das bei doppelter Eingabemenge auch die doppelte Zeit (in etwa) herauskommt. Also schätzt du lineare Laufzeit:

Source code

1
(define (o n) n)


Dann kannst du mit der factor-Funktion den Faktor bestimmen, um den das ideal ( (o n) ) von der realen abweicht: einfach die o-Funktion mit entsprechendem n und die reale Funktion mit gleich großem Eingabewert in die factor-Funktion stecken, und du bekommst heraus, um welchen Faktor es abweicht.

Source code

1
(factor o 100 f 100);-->0.0000539


Wie man damit die Laufzeit für große Eingabemengen berechnen kann, ist in der Übung gezeigt worden.

Achja: das alles sind ja reale Laufzeitmessungen, also macht man am besten immer einen Mittelwert um Schwankungen auszugleichen.
Dieser Post wurde aus 100 % chlorfrei gebleichten, handelsüblichen, freilaufenden, glücklichen Elektronen erzeugt!

This post has been edited 1 times, last edit by "oixio" (Dec 1st 2006, 11:11am)


Armin1906

Praktikant

  • "Armin1906" is male
  • "Armin1906" started this thread

Posts: 21

Date of registration: Nov 10th 2006

Location: Hannover

Occupation: Mathe-Informatik / 6

4

Friday, December 1st 2006, 12:08pm

genau das war die antwort zu meiner frage ... danke

edit: okay vllt doch nicht ganz.
also die prozedur cputime ist ja eine special form. Und wir dürfen bei den Übungsblättern nur die befehle verwenden die unten aufgeführt sind.

Trotzdem könnte man damit gut kontrolieren. Könntest du mir den namen der Bibliothek sagen die man aufrufen muss um die befehle zu benutzen.

This post has been edited 1 times, last edit by "Armin1906" (Dec 1st 2006, 12:14pm)


oixio

Senior Schreiberling

  • "oixio" is male

Posts: 517

Date of registration: Oct 3rd 2004

5

Friday, December 1st 2006, 12:44pm

cputime darfst du dafür verwenden, bzw. musst du sogar. Du findest diese beiden Prozeduren im Quelltext zu der entsprechenden Übung. Kopier sie einfach in deine Aufgabe rein.

Die unten angegebenen Befehle beziehen sich immer nur auf die selbst zu erstellenden Sachen.
Dieser Post wurde aus 100 % chlorfrei gebleichten, handelsüblichen, freilaufenden, glücklichen Elektronen erzeugt!

  • "Joachim" is male

Posts: 2,863

Date of registration: Dec 11th 2001

Location: Hämelerwald

Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)

6

Sunday, December 3rd 2006, 1:23pm

Quoted

Original von oixio
In Scheme läuft das aber ein wenig anders ab. Dazu gab es ja die Übung.

In den passenden Quelltexten dafür findest du 2 Funktionen:
cputime und factor.
OK, also wieder das bekannte Problem: Fragen zu Übungsaufgaben stellen, aber die Aufgabenstellung nicht verraten oder zumindest verlinken ... :)
The purpose of computing is insight, not numbers.
Richard Hamming, 1962

julianr

Erfahrener Schreiberling

Posts: 298

Date of registration: Oct 13th 2005

Location: I live in a giant bucket.

7

Sunday, December 3rd 2006, 11:20pm

Die standen nichtmal im ersten Blatt, das sich mit dem Thema befasst hat, die waren implizit durch die Übung vorgegeben ;)

Aber schön, dass du dich damit befasst (@OP) - mittlerweile scheint die verbreitete Taktik zu sein, auf die Punkte zu verzichten... seufz.