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

Slides:



Advertisements
Lignende præsentationer
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal.
Advertisements

Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
1 Bevisteknikker. 2 Bevisteknikker (relevant både ved design og verifikation) Teorem: Der findes uendeligt mange primtal Bevis: Antag at der findes et.
1 UNION-FIND. 2 inddata: en følge af heltalspar (p, q); betydning: p er “forbundet med” q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel.
GP 10, 7/ Grundlæggende programmering Efterår 2001 Forelæsning 10 onsdag 7/ kl. 9:15 – 12:00.
MM4 Algoritmiske grundprincipper. MM1 Lister, stakke og køer. MM2 Hash-tabeller og Træer. MM3 Sortering.MM4 Søgning.MM5.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
1 Sortering I elementære metoder. 2 Plan Terminologi Elementære metoder til sortering -sortering ved udvælgelse -sortering ved indsættelse -Shellsort.
Anvendelser I Leg og spil.
Fundamentale datastrukturer
Slide Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 15 Algorithms for Query Processing and Optimization.
1 Sortering. 2 Sortering ved fletning (merge-sort) 7 2 | 9 4  | 2  2 79 | 4   72  29  94  4.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Begreber og Redskaber 8. Plan for idag Sortering fortsat Comparable Søgning –Lineær søgning –Binær søgning.
Comparable Students German Students Composite Pattern State Pattern Observer Pattern Collections Interfaces Abstrakte klasser Design Patterns.
Begreber og Redskaber 7. Plan for idag Rekursive underprogrammer Rekursive datastrukturer Rekursion vs iteration Rekursivt: Flette sortering.
Anvendelser I Leg og spil.
C#: Udtryk og metoder Kilde: Joe Hummel. 2 Nordjyllands Erhvervakademi – 2008 Indhold “With regards to programming statements and methods, C# offers what.
03 – Udtryk og metoder. 2 NOEA2009Java-kursus – Udtryk og metoder Udtryk i Java Java har standard udtrykene… Værditildeling Subrutiner og funktionskald.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Længste plateau En klassisk problemstilling (Gries, 1981) - og her i Java!!! Denne opgave drejer sig om at bestemme længden af det længste plateau i en.
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
Begreber og Redskaber 11. Plan for idag Lidt afrunding: Collections Framework i Java Noget om oversættere og sprog Evaluering Sidste gang øvelser før.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Begreber og Redskaber 4. Plan for idag Om metoder, parametre, returværdier Et par ord om objekt-orientering Håndkøring af programmer.
Søgning.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSøgning.2 Søgeproblemer... Søgning efter fil(er) Søgning i databaser.
Sweep-algoritmer. DAIMIIntroducerende objektorienteret programmeringsweep.2 Datatypen Sequence Oprette Sequence() Sequence(s, l, h) Kopiere Sequence clone()
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Rekursion 2.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursion 2.2 Introduktion Vi har tidligere set eksempler på rekursive.
Sortering.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSortering.2 Sortering Vi hartidligere set at effektiv søgning forudsætter.
Rekursive skildpadder Supertrekanter.....  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringRekursive skildpadder.2 Penta, etc.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
DAIMIIntroducerende objektorienteret programmering4B.1 Typer og tilstand i Java Typer, tilstand, erklæring, variable, primitive datatyper, reference- og.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7B.1 Søgning.
DAIMIIntroducerende objektorienteret programmering3B.1 Definition af klasser Klasseskelet, metoder, et eksempel: dato.
 Henrik B. Christensen, 1999Introducerende objektorienteret programmering8B.1 Interfaces En ren kontrakt.
 Bærbak & Caspersen, 2000 Introducerende objektorienteret programmering4B.1 Talsystemer Positionstalsystemer Decimale og binære tal.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
DAIMIIntroducerende objektorienteret programmering4B.1 Grundlæggende og Reference Typer i Java Typer, tilstand, erklæring, reference- og værdi semantik,
I o p o DAIMI, AU, Marts 1999Introducerende objektorienteret programmering5B.1 Et lille banksystem Modellering ved hjælp af UML.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering7A.1 Rekursion.
Lærde skildpadder Specialisering af skildpadder – nye kompetencer (metoder/kommandoer)
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14A.1 Del, løs og kombinér.
Klasser og objekter – grundbegreber.  Michael E. Caspersen, 2001Introducerende objektorienteret programmeringKlasser og objekter.2 Klasser og objekter.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Collectionklasser Klassifikation og anvendelse. dIntProg, F08Collectionklasser.2 Samlinger af objekter Objektreferencer –for at holde fast i et objekt.
Interfaces – hvorfor, hvad og hvordan?.  Michael E. Caspersen 2003IOOPInterfaces.2 Oversigt Interfaces, hvorfor –Separering af specifikation (interface)
 Jens Bennedsen 2001Multimedie programmering4.1 Definition af begreber Interface, implements, klasse.
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal Aarhus Universitet.
I o p o DAIMI, AU, December 1999Introducerende objektorienteret programmering14B.1 Sortering.
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation,
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning.
Sequence En container til heltal.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSequence.2 Datatypen Sequence Oprette Sequence()
I o p o DAIMI, AU, November 1999Introducerende objektorienteret programmering9D.1 Del, løs og kombinér.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5B.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
I o p o DAIMI, AU, September 1999Introducerende objektorienteret programmering5C.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
 Michael E. Caspersen, 2000 Introducerende objektorienteret programmering4A.1 Sweep-algoritmer Programmering med invarianter og uden kaniner.
Del, løs og kombinér Et algoritmemønster.
Containerklasser – klassifikation og brug.  Michael E. Caspersen, 2003IOOPContainerklasser.2 Mange objekter Containerklasser –antag at man skal repræsentere.
I o p o DAIMI, AU, Oktober 1999Introducerende objektorienteret programmering7B.1 Søgning.
Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence s; int i; int j; Sequence s; String s; int i; int j;
Query optimization MICHAEL I
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Præsentationens transcript:

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

 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.

 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.3... af to sekvenser... Hvordan gør vi det?... imv: dat: alle:

 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) ) {... } size() size() i j

 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.

 Michael E. Caspersen, 2000Introducerende objektorienteret programmering9B.6 Lidt effektivitetsovervejelser Lad os antage at en computer kan udføre operationer pr. sekund. Hvis vi samkører to registre med elementer med hovedet under armen, kræver det operationer svarende til sekunder hvilket er 11,6 dag! Hvis vi benytter fletteteknikken, kan vi med samme datamateriale klare os med 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.

 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)   

 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; }

 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)   

 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; }

 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,...)