Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.

Lignende præsentationer


Præsentationer af emnet: "DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning."— Præsentationens transcript:

1 DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning

2 DAIMIIntroducerende objektorienteret programmeringfletning.2 Fællesmængde... Man kan studere IT to steder på Aarhus Universitet, på Informations- og medievidenskab samt på Datalogisk Institut. Vi har to sekvenser; en med numre på studerende på Datalogisk Institut og en med numre på studerende på Informations- og medie- videnskab. Vi vil gerne frembringe en tredie som skal indeholder numrene på de studerende der læser begge steder.

3 DAIMIIntroducerende objektorienteret programmeringfletning.3... af to sekvenser... Hvordan gør vi det?... imv: dat: alle:

4 DAIMIIntroducerende objektorienteret programmeringfletning.4 Nestede løkker for ( int i = 0; i < imv.size(); i++ ) { for ( int j = 0; j < dat.size(), j++ ) { if ( imv.elementAt(i) == dat.elementAt(j) ) {... } 0 1 2 size() 0 1 2 size() i j

5 DAIMIIntroducerende objektorienteret programmeringfletning.5 Fletteproblemer Samkøring af tabeller (registre) i databaser og beregning af mængde- operationer som forenings- og fællesmængde er eksempler på problemstillinger der kan opfattes som fletteproblemer forudsat at datamængderne er sorteret. Fordelen ved at have datamaterialet sorteret er at man langt mere effektivt kan udføre den ønskede beregning, og specielt ved store datamængder er det virkelig noget der har betydning.

6 DAIMIIntroducerende objektorienteret programmeringfletning.6 Lidt effektivitetsovervejelser Lad os antage at en computer kan udføre 1.000.000 operationer pr. sekund. Hvis vi samkører to registre med 1.000.000 elementer med hovedet under armen, kræver det 1.000.000.000.000 operationer svarende til 1.000.000 sekunder hvilket er 11,6 dag! Hvis vi benytter fletteteknikken, kan vi med samme datamateriale klare os med 2.000.000 operationer svarende til 2 sekunder! Med andre ord: det er ikke ligegyldigt hvordan man organiserer data og hvilke algoritmer man benytter til at operere på disse data.

7 DAIMIIntroducerende objektorienteret programmeringfletning.7 Fællesmængde, fletning s:s: t:t: res : i j k invariant: s[0..i) og t[0..j) er flettet sammen i res[0..k)   

8 DAIMIIntroducerende objektorienteret programmeringfletning.8 Fællesmængde, algoritmisk public static Sequence intersection(Sequence s, Sequence t) { int i, j; Sequence res = new Sequence(); i = 0; j = 0; while ( i t.elementAt(j) ) { j++; } else { // s.elementAt(i) = t.elementAt(j) res.append(s.elementAt(i)); i++; j++; } } return res; }

9 DAIMIIntroducerende objektorienteret programmeringfletning.9 Foreningsmængde, fletning s:s: t:t: res : i j k invariant: s[0..i) og t[0..j) er flettet sammen i res[0..k)   

10 DAIMIIntroducerende objektorienteret programmeringfletning.10 Foreningsmængde, algoritmisk public static Sequence union(Sequence s, Sequence t) { int i, j; Sequence res = new Sequence(); i = 0; j = 0; while ( i t.elementAt(j) ) { res.append(t.elementAt(j)); j++; } else { // s.elementAt(i) = t.elementAt(j) res.append(s.elementAt(i)); i++; j++; } } if ( j = t.size() ) // kopier resten af s over i res else // kopier resten af t over i res return res; }

11 DAIMIIntroducerende objektorienteret programmeringfletning.11 Fletteskabelonen g = [] ; while ( f 1  [] && f 2  [] ) { if ( head(f 1 ) < head(f 2 ) ) flyt 1 ; else if ( head(f 1 ) > head(f 2 ) ) flyt 2 ; else flyt 12 ; } if ( f 1  [] ) flythale 1 ; else if ( f 2  [] ) flythale 2 ; Abstrakt algoritme - uafhængig af kon- kret datastruktur (Sequence, Vector, String, File,...) - uafhængig af konkret beregning (union, intersection, sekven- tiel ajourføring,...)


Download ppt "DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning."

Lignende præsentationer


Annoncer fra Google