09. november 2003 - 21:12Der er
15 kommentarer og 1 løsning
beregning af køretids-orden for funktion. O(___)
Jeg har leget med fibonacci tal og lavet forskellige metoder til udregning af fibonacci(n).
Men jeg kan ikke finde en god måde a beslutte hvilken orden metoden L i den lille lære-klasse (LearnFib) skal have. Det er nemt at se a den efterhånden tenderer imod konstant tid O(k), men før den kommer såvidt er den hvad ???
public long L ( int nr ) { if ( memory[nr] >= 0 ) return memory[nr]; return ( memory[nr] = L(nr-1) +L(nr-2) ); } //endmethod L Order ?? funktion
} //endclass LearnFib
public class TestFib {
public static long fibOn ( int nr ) { long[] acc = { 0, 1 }; int i; for ( i=0; i<nr; ) { acc[i&1] += acc[++i&1]; } return acc[i&1]; } //end fibonacci Order N function
public static long fibOnn ( int nr ) { switch (nr) { case 0: return 0; case 1: return 1; default: return fibOnn(nr-1) +fibOn(nr-2); } } //end fibonacci Order N^2 function
public static long fibOEn ( int nr ) { switch (nr) { case 0: return 0; case 1: return 1; default: return fibOEn(nr-1) +fibOEn(nr-2); } } //end fibonacci Order 2^N function
public static void main (String[] args) { LearnFib fib = new LearnFib(); for (int i=0; i<40; i++ ) { System.out.println ( "O(L?) " +i + " giver " +fib.L( i ) ); System.out.println ( "O(n) " +i + " giver " +fibOn( i ) ); System.out.println ( "O(nn) " +i + " giver " +fibOnn( i ) ); System.out.println ( "O(En) " +i + " giver " +fibOEn( i ) ); } } //end main
} //endclass TestFib
( og hvorfor pokker er det forbudt at skrive '?' efter efter spørgsmålet i titlen )
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Allerførste kald af fib.L tror jeg også må være O(n). Lad os sige det var L(35), men når så næste kald er L(38)? Det føles grumt at sølle 3-trin skal kaldes O(n). men kan man køre sådan en random-situation ind under O(logN).
Man skal vist over i amortiseret tid: hvad er tidskompleksiteten når man laver tilstrækkeligt mange kald, nogle er billige, nogle (få) er dyre, så hvad er "gennemsnittet". Det afhænger så her af hvad man skal bruge det til. Hmm, og hvad *kan* man bruge det til? ;)
Nej, tak, Arne - det ville bare få det til at se ud som om jeg tog det alvorligt ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.