Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.

Slides:



Advertisements
Verwante presentaties
Statistische uitspraken over onbekende populatiegemiddelden
Advertisements


Programmeren met Alice
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Uitwerking tentamen Functioneel Programmeren 29 januari 2009.
Practica Computerlinguistiek Tekst en uitleg:
Hoofdstuk 3 – Gegevens verzamelen
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.
Eindpresentatie Modelleren C Random Seeds
Project D2: Kempenland Sander Verkerk Jeffrey van de Glind
Hoofdstuk 6: Controle structuren
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Laplace transformatie
Assenstelsels en het plotten van Functies in LOGO
1212 /n Korte herhaling van vorige keer Vermelding van meetresultaten zonder nauwkeurigheid is uit den boze ! Conclusies trekken zonder betrouwbaarheids-intervallen.
Numerieke Natuurkunde
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
Voorspellende analyse
Hoofdstuk 11 Kwantitatieve gegevens analyseren Methoden en technieken van onderzoek, 5e editie, Mark Saunders, Philip Lewis, Adrian Thornhill, Marije.
Nieuw in LIPS VLUG 2 26 juni 2006 Kristof Brams. Overzicht Vernieuwde editor Printervriendelijke pagina Statistieken Variabele fontgrootte Grootte van.
Doelstellingen formuleren
Klik ergens op het witte deel van deze pagina om verder te gaan
Datastructuren Sorteren, zoeken en tijdsanalyse
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (1)
H2 Lineaire Verbanden.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Ruimte Afstemming in de ruimt eist dat de spieren samenwerken: Intermusculaire coördinatie.
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
Parametric release Wat is dat?.
1 Datastructuren Quicksort College 3. 2 Vorige keren  O-notaties  Sorteren: insertion sort, bubble sort  Kosten (n 2 ) tijd in het slechtste geval.
Instructie Programmeren Task 7
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
Programmeren.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
UML 1. Use cases1. Use cases. Het probleem: Hoe inventariseer ik wensen en eisen voor mijn project? Hoe leg ik ze vast? Hoe geef ik vorm en structuur.
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
Hoorcollege 2 Enkele statistische verdelingen ED: Het experiment atoom Labels De empirische distributie.
Recursie: het cirkel algoritme van Bresenham
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
TirPrs06: Wachttijdtheorie & simulatietechniek
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
Leraareffectiviteit – wat weten we (niet)? Daniel Muijs, University of Southampton.
De O notatie… Limiet van Bachmann-Landau: Paul Gustav Heidrich Bachmann Edmund Landau
Stelsels van vergelijkingen H5 deel 3 Hoofdstuk 10 Opgave 61, 62, 63.
Welkom! maandag 16 November 2015 Les B-2.
Basics SERP = Search Engine Results Page Betaalde resultaten = SEA Natuurlijke resultaten = SEO Search Engine Optimization SEO is een lange termijn verhaal.
Bijeenkomst 5. Terugblik  Wat hebben we vorige bijeenkomst besproken?  Alles gelukt met het persoonlijk profiel?  Liepen jullie nog tegen dingen aan?
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Programmeren. Wat is programmeren? Het schrijven van opdrachten voor de processor De processor “spreekt” machinetaal:
Programmeren.
Berekening van de Orde Van een Algoritme
Webinar voor ambassadeurs
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Gameprogrammeren: Herhalingen
Leraareffectiviteit – wat weten we (niet)?
Keuzevoorlichting havo wiskunde AB.
Small Basic Console deel 2
Voorspellende analyse
Tellen met kaarten.
Communiceren met knipperen
Tellen met kaarten.
Software Development fundamentals
Hoofdstuk 20 Grafieken en tabellen. Hoofdstuk 20 Grafieken en tabellen.
Python – For loop + strings
Transcript van de presentatie:

Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.

Kwaliteit van software Test in een computerblad: Twee 3D Rendering programma’ s: 3D studio max maya Kwaliteitscriteria: Gebruiksvriendelijkheid Functionaliteit Stabiliteit Snelheid

De benchmarktest Hoe de snelheid van twee programma’ s te testen? Conclusie: 3D Studio Max is sneller… Computer 1Computer 2 3D Studio MaxMaya Animatie gegenereerd in 3 minuten Animatie gegenereerd in 7 minuten

Snelheid van software Hoe dit te meten? Met een stopwatch!? Computer processormoederboardgeheugenhd Operating system Programma

Snelheid van software Uitspraken over de snelheid van software zijn afhankelijk van: Computer hardware Processor Geheugen Enz. Operating system Gebruikte compiler

Snelheid van software Uitspraken over snelheid zijn: Leeg indien hardware, o.s. en compiler niet vermeld. Ofwel: Nauwelijks bruikbaar, want afhankelijk van /specifiek voor gebruikte hardware, o.s. en compiler.

Snelheid van software Hoe onafhankelijke uitspraken te doen over de snelheid van software? Antwoord: Niet doen: het is onmogelijk. Alternatief: begrip snelheid vervangen door begrip efficiëntie.

Efficiëntie van software Efficiëntie van software: Niet afhankelijk van hardware. Niet afhankelijk o.s. Niet afhankelijk van gebruikte compiler. Gekeken wordt uitsluitend naar de source code. Belangrijkste vraag: hoeveel berekeningen genereert een programma?

Berekeningen… # include Int main(void) { Double x; X=System.in.parseString(); X = x* ; System.out(“”+x); Return(0); } Een programma…werking?

De herhalingsfrequentie… Slechts één instructie van belang: x=x* ; We definiëren nu een functie die het aantal herhalingen in het algoritme voorstelt:

De herhalingsfrequentie… In een programma: Herhalingsfrequentie: ……………… for(int i=0;i<100;i++) {result+=i;} ……………

De herhalingsfrequentie… Herhalingsfrequentie afhankelijk van de taakomvang: n ……………… for(int i=0;i<100;i++) {result+=i;} …………… for(int i=0;i<n;i++) {newresult+=i;} ………………

De herhalingsfrequentie… ……………… for(int i=0;i<100;i++) {result+=i;} …………… for(int i=0;i<n;i++) {newresult+=i;} ………………

De herhalingsfrequentie… De herhalingsfrequentie kan afhankelijk zijn van de taakomvang. Taakafhankelijke herhalingsfrequenties verschijnen in de functie als een variabele, Bijv:

De O Notatie… De herhalingsfrequentie wordt nogal complex en onoverzichtelijk: elke instructie wordt genoteerd Potentieel oneindig veel verschillende algoritmen  evenzoveel herhalingsfrequenties.  geen handige methode om de efficiëntie van algoritmen te vergelijken. Daarom: De O notatie….

De O Notatie… Dient ter classificering van herhalingsfrequenties, opgehangen aan “mooie” wiskundige functies.

De O Notatie… concept: Bekijk de herhalingsfrequentie van een algoritme. Sloop alles eraf wat niet bijdraagt tot een stijging van het aantal instructies. Vergelijk deze herhalingsfrequentie met een bekende wiskundige functie. Herhalingsfrequentie is nu van een bepaalde orde van grootte.

De O Notatie… voorbeeld Men neme 2 functies die de herhalingsfrequentie van 2 verschillende algoritmes voorstellen:

De O Notatie… Functie G(n) is een functie van een fictief algoritme, de functie is gekozen omwille van zijn wiskundige eenvoud. Voorbeelden: Hiermee kennen we het gedrag van G(n)

De O Notatie… Nu delen we voor elke n de functie T(n) op de functie G(n), zodanig dat de ontstane waarde kleiner is dan een bepaalde constante c:

De O notatie… Taakomvang  Aantal instructies G(n) T(n) n

De O notatie… Formele definitie O notatie: Limiet van Bachmann-Landau:

De O notatie… standaardfuncties: OrdeN=10N=1000 O(1)11Constant O(log n)13Logaritmisch O( )332 O(n)101000Lineair O( ) kwadratisch O( )1000Cubisch O( )1024Exponentieel

De O notatie… De O notatie zegt iets over de verhouding tussen de stijging van het aantal instructies en de toename van de taakomvang.

De O notatie…Voorbeeld Herhalingsfrequentie: T(n)= Complexiteitsontwikkeling: O(1) ……………… for(int i=0;i<50;i++) {Doe iets;} Doe wat anders; En doe nog maar wat anders; ……………

De O notatie: regel 1 Een constant aantal instructies heeft een complexiteitsontwikkeling van de orde 1:

De O notatie… Taakomvang  Aantal berekeningen Constant aantal instructies

De O notatie…regel 1 Software met een complexiteitsontwikkeling van de orde 1 genereert een constant aantal berekeningen. Hoeveel berekeningen dat zijn doet niet ter zake. Het gaat om het constant zijn van dat aantal.

De O notatie…voorbeeld Invoer: een lijst met namen. Lengte: n Herhalingsfrequentie: T(n)=n Complexiteitsontwikkeling: O(n) ……………… for(int i=0;i<n;i++) {schrijf weg;} ……………

De O notatie…regel 2 Invoer: een lijst met namen. Lengte: n Herhalingsfrequentie: T(n)=5n Complexiteitsontwikkeling: O(n) ……………… for(int i=0;i<n;i++) {schrijf 5 keer weg naar verschillende bestanden;} ……………

De O notatie: regel 2 Verklaring: Hoe snel iets lineair stijgt, is niet relevant; het gaat om het lineair zijn van die stijging.

De O notatie…regel 2 Taakomvang  Aantal berekeningen Aantal berekeningen lineair afhankelijk van taakomvang: O(n)

De O notatie…voorbeeld Invoer: een lijst met namen. Lengte: n Herhalingsfrequentie: T(n)=20n+1 Complexiteitsontwikkeling: O(n) ……………… for(int i=0;i<20*n;i++) {schrijf weg;} Doe nog wat extra’ s; ……………

De O notatie: regel 3 Verklaring:constant aantal instructies zorgt niet voor stijging. Taakomvangafhankelijke complexiteitsontwikkeling wel:

De O notatie…voorbeeld Wat nu? complexiteitsontwikkeling: O(n) for(int i=0;i<10000;i++) {schrijf weg;} ……………… for(int i=0;i<n;i++) {schrijf weg;} …………… T(n)=10000 T(n)=n

De O notatie: regel 4 Het onderdeel van een algoritme dat voor de grootste stijging zorgt, is bepalend voor de complexiteitsontwikkeling:

De O notatie…regel 4 Taakomvang  Aantal berekeningen Constant aantal instructies Lineair stijgend Aantal instructies

De O notatie: voorbeeld Herhalingsfrequentie: O-notatie: for(int i=0;i<n;i++) { for(j=0;j<n;j++) {schrijf weg;} }

De O notatie: regel 5 Taakafhankelijke loops in loops leiden tot kwadratische of cubische complexiteitsontwikkeling.

Regels O-notatie

De O-notatie…probleempjes Wat nu? if(iets=1) {schrijf 1 keer weg;} else{ for(int i=0;i<n;i++) { schrijf weg; }

De O-notatie Bij if-else constructies complexiteitsontwikkeling onvoorspelbaar. Derhalve: Worst case gedrag bepalen Best case gedrag bepalen Indien mogelijk: statistiek en kansrekening gebruiken om gemiddelde gedrag te bepalen.

De O-notatie Algemene lijn: Broncode analyseren. Herhalingsfrequentie bepalen. O-notatie afleiden. Regels O-notatie respecteren.

De O notatie… Taakomvang  Aantal berekeningen Kwadratische groei Aantal instructies lineair afhankelijk van taakomvang