Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Praksisøving 5 Aksjespekulanten. Oppgaven Tjen mest mulig penger på en aksjehandel Vet hele børshistorien.

Liknende presentasjoner


Presentasjon om: "Praksisøving 5 Aksjespekulanten. Oppgaven Tjen mest mulig penger på en aksjehandel Vet hele børshistorien."— Utskrift av presentasjonen:

1 Praksisøving 5 Aksjespekulanten

2 Oppgaven Tjen mest mulig penger på en aksjehandel Vet hele børshistorien

3 Strategier: intuitiv metode Θ(n 2 ): For hver dag, se hvor mye penger du kan tjene ved å selge ved hver etterfølgende dag. For every day X for every day Y (after X) if (value(Y) – value(X)) > tempValue tempValue <- value(Y) – value(X) buyDay <- X sellDay <- Y

4 kompleksitet Dobbelt for-løkke som løper gjennom n 2 /2 Θ(n 2 )

5 Lineær løsning Kan bare løpe gjennom alle verdiene et fast antall ganger. Hvis vi løper gjennom dem en gang, hva kan vi gjøre? Kan vi sortere endringene? Verdiene? Generere verditabell fra endringstabell?

6 Lineær løsning Anta at vi kjøper ved dag en. Se hvor mye penger vi kan tjene ved salg de neste dagene. Hvis verdien av aksjen skulle synke til under antatt kjøpsverdi: Anta at vi kjøper nå i stedet. Hvis vi finner ny beste, oppdater kjøpsdato og salgsdato. Må huske (i form av variabler): –Antatt kjøpsdato –Foreløpig maks verdistigning –Forrige antatte kjøpsdato –Forrige antatte salgsdato

7 Lineær løsning, kode Setter opp variablene som skal brukes int sum = 0; //aksjekursen til enhver tid start = 0; //antatte kjøpsdato bestSum = 0; //hittil beste fortjeneste bestStart = 0; //når vi kjøpte bestSlutt = 0; //når vi solgte

8 Lineær løsning, kode (2) for (int i = 0; i < periode.length; i++) { //for alle dager sum += periode[i]; //regn ut fortjeneste if (sum > bestSum) { //hvis ny beste bestSum = sum; //oppdater beste bestStart = start; //oppdater kjøpsdag bestSlutt = i + 1; //oppdater salgsdag } else if (sum <= 0) { //hvis vi taper penger start = i + 1; //sett ny kjøpsdag I dag sum = 0; //nullstill fortjeneste }

9 Lineær løsning Hvorfor virker dette? Vi setter et nullpunkt og ser hvor mye fortjeneste vi kan klare. Hvis vi går under nullpunktet blir den nye verdien et nullpunkt.

10 Eksempel

11 Eksempel (forts) kursendringer Faktisk verdi

12 Eksempel (forts) sumstartbestSumbestStartbestSlutt

13 Neste øving Fletting av kortstokker. Gitt X kortstokker med tilsammen N kort. Det finnes en og bare en rekkefølge på kortene. (jamfør oppgaveteksten) Gitt at hver av de X kortstokkene allerede er sortert Hvordan kan man mest effektivt føre sammen kortstokkene til en stor kortstokk som er sortert?

14 Neste øving (forts) Kan man bruke en vilkårlig sorteringsalgoritme? Kan man finne en bedre måte? Klarer dere å finne en lineær løsning? Det finnes mange løsninger Θ(nlogn) Det finnes en løsning bedre enn dette.

15 s


Laste ned ppt "Praksisøving 5 Aksjespekulanten. Oppgaven Tjen mest mulig penger på en aksjehandel Vet hele børshistorien."

Liknende presentasjoner


Annonser fra Google