DAIMIIntroducerende objektorienteret programmeringfletning.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.
Context- og flow-diagrammer (databaser, del 3)
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.
Program Design – 4 Introduktion til PHP. Dagens lektion Hvad er PHP?  - og lidt historie Hvordan virker PHP? Grundlæggende PHP  Variable  Typer  Løkker.
Lektion 7 Læsestof: Kopier fra Caranno
Fundamentale datastrukturer
Per P. Madsen- Proces1 Algoritmer og datastrukturer Grundprincipper og analyse af algoritmer. MM1 Lister, stakke og køer. MM2 Træer, og Hash-tabeller.
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.
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;
Repetition af dIntProg v/ Morten D. Bech. Tour de force Variabler Løkker Comparable ImErKo-reglen Eksamenssæt dIntProg, E13.
9. Interfaces. 2 Nordjyllands Erhvervakademi Objectives “Good class design starts with good application design — how many classes, do they relate.
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.
Begreber og Redskaber 3. Plan for idag Om metoder, parametre, returværdier Overblik over klasser,objekter,nedarvning Et par ord om objekt-orientering.
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 programmering9B.1 Fletning.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6B.1 Virkefeltsregler i Java int i; int j; int k; i = i+j; String t; Sequence.
Sortering.  Michael E. Caspersen, 2000Introducerende objektorienteret programmeringSortering.2 Sortering Vi hartidligere set at effektiv søgning forudsætter.
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.
 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,
Trinvis forfinelse Systematisk, gradvis udvikling af programmer.
Interfaces Afkobling af programkomponenter (eksempel: Comparable)
DAIMIIntroducerende objektorienteret programmering4A.1 Kontrakter og Design Kontraktbaseret design, JavaDoc dokumentation.
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.
 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.
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.
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;
DAIMIIntroducerende Objektorienteret Programmering8B.1 Interfaces En ren kontrakt.
DAIMIIntroducerende objektorienteret programmering15A.1 Eksamen…
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:

DAIMIIntroducerende objektorienteret programmeringfletning.1 Fletning

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.

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

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

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.

DAIMIIntroducerende objektorienteret programmeringfletning.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.

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

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

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

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

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