Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning.

Lignende præsentationer


Præsentationer af emnet: " Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning."— Præsentationens transcript:

1  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning

2  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.3... af to sekvenser... Hvordan gør vi det?... imv: dat: alle:

4  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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<s.size() && j<t.size() ) { if ( s.elementAt(i) < t.elementAt(j) ) { i++; } else if ( s.elementAt(i) > t.elementAt(j) ) { j++; } else { // s.elementAt(i) = t.elementAt(j) res.append(s.elementAt(i)); i++; j++; } } return res; }

9  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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<s.size() && j<t.size() ) { if ( s.elementAt(i) < t.elementAt(j) ) { res.append(s.elementAt(i)); i++; } else if ( s.elementAt(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  Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.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 " Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.1 Fletning."

Lignende præsentationer


Annoncer fra Google