Informatica. Deel II & III: les 5. Von Neumann, basis- & slimme algoritmen. Jan Lemeire Informatica deel II & III februari mei 2015

Vergelijkbare documenten
Informatica. Deel II & III: les 5. Basis- & slimme algoritmen. Jan Lemeire Informatica deel II & III februari mei Parallel Systems: Introduction

Informatica 2e semester

Informatica 2e semester

Informatica 2e semester

Informatica. Deel II: les 4. geheugen abstractie - GUI Von Neumann. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Informatica. 2 e semester: les 7. computerarchitectuur chips lineaire datastructuren. Jan Lemeire Informatica 2 e semester februari mei 2016

Hoofdstuk 2. De Von Neumann-architectuur

Informatica 2e semester

Informatica 2e semester

Informatica. les 6. Slimme (deel II: hoofdstuk 5) versus intelligente (deel III: hoofdstuk 9) algoritmen

Waarmaken van Leibniz s droom

Informatica. Deel II: les 2. Leibniz - erven - digitaal. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Waarmaken van Leibniz s droom

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Informatica 2e semester

Python (gem=1,86) Java (gem=1,57) Enquete cursus informatica 1e bachelors oefeningen beter aansluiten bij project?

IMP Uitwerking week 13

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Addendum bij hoofdstuk 5 Generieke implementatie van de zoekalgoritmen

Muziek. Muziek. Analoog rekenen. Hoofdstuk 1: Van analoog naar digitaal. Analoog. Digitaal. Analoog. Gebruik makend van fysische grootheden Cf Babbage

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

Modelleren en Programmeren

Zelftest Programmeren in Java

Waarmaken van Leibniz s droom

Java. Basissyllabus. Egon Pas

Informatica. Deel II&III: les 4. geheugen set, stacks & queues - interfaces. Jan Lemeire Informatica deel II&III februari mei 2015

Hoe werkt een rekenmachine?

Modelleren en Programmeren

De computer als processor

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Abstracte klassen & Interfaces

informatica. hardware. overzicht. moederbord CPU RAM GPU architectuur (vwo)

Informatica 2e semester

Vakgroep CW KAHO Sint-Lieven

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Modelleren en Programmeren

Waarmaken van Leibniz s droom

computerarchitectuur antwoorden

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

NAAM: Programmeren 1 Examen 29/08/2012

Kleine cursus PHP5. Auteur: Raymond Moesker

Programmeren (1) Examen NAAM:

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Informatica. Deel II&III: les 2. Leibniz - erven - digitaal. Jan Lemeire Informatica deel II&III februari mei Parallel Systems: Introduction

Informatica 2e semester

De Arduino-microcontroller in de motorvoertuigentechniek (2)

2 Algemene opbouw van een computersysteem

VI. Klassen en objecten

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Modelleren en Programmeren

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Lessen Java: Reeks pag. 1

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (2)

Modelleren en Programmeren

Hoofdstuk 9. Hashing

Informatica 2e semester

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Hoe werkt een computer precies?

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Programmeermethoden NA. Week 5: Functies (vervolg)

Van Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam

Programmeren in Java les 3

Overerving & Polymorfisme

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

Programmeren in Java 3

10 Meer over functies

Programmeren in Java 3

Informatica 2e semester

Programmeren 1 20 januari 2012 Prof. T. Schrijvers

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

Voortgezet Prog. voor KI

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

COMPUTERVAARDIGHEDEN EN PROGRAMMEREN

Hoofdstuk 0. Van Python tot Java.

Java Les 3 Theorie Herhaal structuren

VAN HET PROGRAMMEREN. Inleiding

Klas : 5 Industriële ICT Herhalingsvragen reeks 1 PC-techniek

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

NAAM: Programmeren 1 Examen 21/01/2011

Object-oriented programmeren met BlueJ en Visual Studio

Practicumopgave 3: SAT-solver

Modelleren en Programmeren

Planning. 1. Mini College. 2. Introductiecursus Imperatief Programmeren. 3. Crash and Compile (vanaf 17:00 uur)

Tentamen Inleiding Programmeren (IN1608WI), 2 februari 2012, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Ontwerp van Informatiesystemen

Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

In Vlaanderen bestaat er nog geen leerlijn programmeren! Hierdoor baseren wij ons op de leerlijn die men in Nederland toepast voor basisscholen.

Inleiding Software Engineering! Unit Testing, Contracten, Debugger! 13 Februari 2014!

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

Transcriptie:

Informatica Deel II & III: les 5 Von Neumann, basis- & slimme algoritmen Jan Lemeire Informatica deel II & III februari mei 2015 Parallel Systems: Introduction

Institute for Advanced Studies, New Jersey, USA

Hoofdstuk 4: Computerarchitectuur Jan Lemeire Pag. 3 / 61

De ivoren toren van IAS Institute for Advanced Studies (IAS) Voor de grote denkers/wetenschappers, maar niet ingenieurs Op de schoot bij Einstein (op de foto met Gödel, Bekend logicus) Informatica II: les 4 Jan Lemeire Pag. 4 / 61

John Von Neumann wilt een computer bouwen beter dan de ENIAC John Von Neumann Dit is echter tegen de statuten van het IAS, waar je enkel betaald wordt om te denken, niet om experimenten uit te voeren of iets te bouwen. Mede Informatica door II: zijn les 4 warme persoonlijkheid en populariteit mocht hij er toch aan beginnen in één van de kelders. Jan Lemeire Pag. 5 / 61

Programmeren = draadjes versteken, oftewel de hardware veranderen Informatica II: les 4 Jan Lemeire Pag. 6 / 61

Von Neumann verbetert: 1. Stored-program computer Een programma beschrijft wat de machine moet doen Programma ook opslaan in het geheugen (de software) Is ook input van de computer en data 2. Een architectuur voor de logische opdeling van de centrale verwerkingseenheid: de "Central Processing Unit" of CPU. De CPU is het hart van de computer. 3. De instructies van het programma worden één voor één uitgevoerd Informatica II: les 4 Jan Lemeire Pag. 7 / 61

Waarmaken van Leibniz s droom (9) Artificiële intelligentie (8) Communicatie & internet (7) Operating system (6) Computatietheorie & Software (5) Efficiënt productieproces (4) Hardware architectuur Electronica: (2) relais -schakeling, (3)geheugen (1) Digitaal & binair (0) Het idee Informatica deel III: technologie, historiek en economische aspecten

De Von Neumann-architectuur Jan Lemeire Pag. 9 / 61

Programma = sequentie van instructies Elke processorcyclus: uitvoeren van 1 instructie Inwendig aangegeven door kloksignaal Klokfrekwentie bepaalt aantal instructies/second (bvb 4GHz) Interne verloop voltages kloksignaal Informatica II: les 4 Jan Lemeire Pag. 10 / 61

Von Neumann-elementen Input Interface: binnenkomende gegevens Voorbeelden: toetsenbord, muis, barcodelezer, internet, Sensoren laten toe fysische grootheden binnen het meetbereik van computers te brengen Vbn: camera s, fotocellen, bewegingssensoren (cf Ipad, WII),... Interrupt ( java-event) vertelt control unit dat er input is Output Interface: uitgaande gegevens Voorbeelden: scherm, printer, internet, kassa, Actuatoren geven aan computers de mogelijkheid rechtstreeks hun fysische omgeving te beïnvloeden Vbn: motoren, elketromagneten, verwarmingselementen,... Informatica II: les 4 Jan Lemeire Pag. 11 / 61

Von Neumann-elementen Data Memory: geheugencellen voor binaire getallen. Elke cel van 1 byte (8 bits) krijgt een adres. Program Memory: opslag van programma. In de praktijk: deel van datageheugen Vroeger: ponskaarten, Toegang tot datageheugen: tot elk vakje, gegevens onmiddellijk beschikbaar Geheugen is een soort van schoolbord (scratchpad) waar de tussenresultaten van de berekeningen worden bijgehouden Voor bewerking wordt data uitgelezen en na bewerking geof overschreven Informatica II: les 4 Jan Lemeire Pag. 12 / 61

Data- en programmageheugen In veel computers vindt men maar één enkel geheugen: het programma- en het gegevensgeheugen zijn fysisch samengesmolten. Beide gaan immers om het bijhouden van bytes, een programma is ook een collectie bytes. Deze samensmelting laat toe om met éénzelfde type van computer zowel grote programma's met maar weinig gegevens, als kleine programma's met veel gegevens te verwerken. Vanzelfsprekend blijven beide geheugens logisch gescheiden: de ene wordt enkel gebruikt voor data, de andere enkel voor het opslaan van het programma. Er wordt voor gezorgd dat er geen data in het programmagedeelte geschreven kan worden en omgekeerd. Dit zou namelijk de bestaande inhoud (verkeerdelijk) overschrijven. Informatica II: les 4 Jan Lemeire Pag. 13 / 61

Von Neumann-elementen Arithmetic and Logical Unit (ALU) voert bewerkingen uit Op data van het geheugen Schrijft resultaten (ook data) terug naar het geheugen De ALU is het apparaat dat instaat voor de feitelijke verwerking van de informatie. Het is in staat rekenkundige bewerkingen uit te voeren, getallen te vergelijken, enz. De ALU krijgt de operanden (de te bewerken gegevens) uit het Informatica II: les 4 gegevensgeheugen en plaatst de resultaten van de bewerkingen er terug in. Jan Lemeire Pag. 14 / 61

Von Neumann-elementen Control unit houdt bij waar we zitten in het programma (Program Counter) for/while/methodes zorgen ervoor dat een deel van je programma meermaals uitgevoerd kan worden (iteraties) If maakt het mogelijk dat een deel niet uitgevoerd wordt De stuureenheid leest één voor één instructies uit het programmageheugen, decodeert ze en zendt de nodige stuursignalen naar de verschillende onderdelen van de computer om de uitvoering van de instructies te verzekeren. Zo wordt de operatie samen met de adressen van de operanden en het resultaat aan de ALU doorgegeven. De ALU leest de data uit het geheugen (adhv de opgegeven adressen), voert de berekening uit en schrijft Informatica II: les 4 het resultaat terug in het geheugen. Jan Lemeire Pag. 15 / 61

Voorbeeld: de machten van x Volgend programma wordt in het instructiegeheugen geladen. De Program Counter wordt op 23 gezet, de eerste lijn van het programma. De computer start met het uitvoeren van het programma en voert elke klok-tick 1 instructie uit. Elke variabele krijgt een plaats (adres) in het datageheugen. Jan Lemeire Pag. 16 / 61

Stap 1: laden van programma Jan Lemeire Pag. 17 / 61

Stap 2: lees toetsenbord 23 Jan Lemeire Pag. 18 / 61

Stap 3: initaliseer variabele Jan Lemeire Pag. 19 / 61

Stap 4: initaliseer variabele t Jan Lemeire Pag. 20 / 61

Stap 5: schrijf waarde Jan Lemeire Pag. 21 / 61

Stap 6: bereken product Jan Lemeire Pag. 22 / 61

Stap 7: verhoog teller Jan Lemeire Pag. 23 / 61

Stap 8: check condities Jan Lemeire Pag. 24 / 61

Herhaal stappen tot eindconditie Geheugen m = 7 ; t = 1 m = 49 ; t = 2 m = 343 ; t = 3 m = 2401 ; t = 4 m = 16807 ; t = 5 Op scherm 7 49 343 2401 Jan Lemeire Pag. 25 / 61

Vandaag 1. Von Neumann-architectuur 2. Newton s algoritme 3. Interfaces en abstracte klasses 4. Basisalgoritmen 5. Slimme algoritmen 6. Het Project

Basisalgoritmen Hoofdstuk 4

p. 56-7 Recursive Halving Informatica II: les 5 Jan Lemeire Pag. 28 / 61

Nulpunten zoeken: Newton s algoritme p. 59 (x 0, y 0 ): eerste gok y 0?y y 1 a x r x 1?x x 0 Informatica II: les 5 Jan Lemeire Pag. 30 / 61

Afgeleide van functie kennen interface Functie { /** geeft functiewaarde in opgegeven punt */ double f(double x); } interface FunctieMetAfgeleide extends Functie { /** geeft waarde van de afgeleide in opgegeven punt */ double afgeleide(double x); } Informatica II: les 5 Jan Lemeire Pag. 31 / 61

static int nbriteraties=0; public static double vindnulpuntmetnewton(functiemetafgeleide functie, int eerstegok){ final int MAX_ITERATIES = 150; final double PRECISIE = 0.001; double nulpunt = eerstegok; double fx = functie.f(nulpunt); nbriteraties=0; while (Math.abs(fx) > PRECISIE && nbriteraties < MAX_ITERATIES){ double dfx = functie.afgeleide(nulpunt); if (dfx == 0) throw new RuntimeException("Nulpunt met Newton: Afgeleide in "+nulpunt+" is nul waardoor Newton faalt."); System.out.println("["+nbrIteraties+"] Current = "+nulpunt+" fx="+fx+" dfx="+dfx+" => new = "+(nulpunt - fx/dfx)); nulpunt = nulpunt - fx/dfx; fx = functie.f(nulpunt); nbriteraties++; } if (nbriteraties >= MAX_ITERATIES) throw new RuntimeException("Nulpunt met Newton: convergeert niet, te veel iteraties, beste punt tot nu toe heeft waarde "+functie.f(nulpunt)+"!"); System.out.println("Newton nulpunt = "+nulpunt+" met fx="+fx); return nulpunt; } Informatica II: les 5 Jan Lemeire Pag. 32 / 61

p. 61 Mogelijke problemen Geen of trage convergentie Gradiënt geeft niet noodzakelijk de juiste richting aan Crash Afgeleide die nul is Informatica II: les 5 Jan Lemeire Pag. 33 / 61

Niet in cursus InterfaceOefening1 Informatica II: les 5 Jan Lemeire Pag. 34 / 61

Abstracte klasses en Interfaces p. 4 zijn abstract

KlasseOefening3 (package p. 28 testoefeningen): 1. Teken klassehiërarchie. 2. Welke overerving is niet mogelijk? 3. Duidt aan welke de concrete klassen zijn en welke de abstracte. Is er een abstracte klasse die een interface zou kunnen zijn? 4. Welke objecten kan ik dus niet aanmaken? 5. Bij het aanmaken van de objecten, duidt de constructors aan die opgeroepen worden. Per object kunnen dit meerdere constructors zijn! 6. Voor welke klasses mag je de default constructor oproepen? 7. Welke klasse heeft een foute constructor: roept geen geldige constructor van zijn superklasse op? 8. Welke implementatie wordt uitgevoerd bij het oproepen van de methoden f, g, en j? 9. Welke methodes moet ik zeker implementeren als ik een concrete klasse met superklasse K3 en interface K2 wil maken? Informatica II: les 5 Jan Lemeire Pag. 36 / 61

abstract class K1 { int a; K1(int a){ this.a=a; } void f(){ } abstract void j(); } interface class K2 { void g(); } abstract class K3 extends K1 { K3(int a){ super(a); } void f(){ } } class K4 extends K3 implements K2 { int x; K4(int x){ this.x = x; } public void g(){ } } class K5 extends K1 implements K2 { Informatica II: les 5 void j(){ } public static void main(string[] args) { K1 o1 = new K1(); K2 o2 = new K2(); K3 o3 = new K3(7); K4 o4 = new K4(); K5 o5 = new K5(); o4.f(); o4.g(); o5.j(); } Jan Lemeire Pag. 37 / 61

Basisalgoritmen vervolg Hoofdstuk 4

p. 62 Discrete simulaties $$$$$$$$$$ Informatica II: les 5 Jan Lemeire Pag. 39 / 61

Uitbreiden Alle fysische dingen: MovingObject klasse Informatica II: les 5 Jan Lemeire Pag. 40 / 61

p. 63 Regressie of curve fitting functie fout distance = 122 + 12.2 angle - 0.166 angle 2 + 0.00015 angle 3 187 distance = 142 + 10.95 angle - 0.14 angle 2 188 distance = 522-4.58 angle 267 distance = 0.042 angle 2 311 distance = 0.00046 angle 3 314 Je berekent welke vergelijking het best past ( fit ) op de data Informatica II: les 5 Jan Lemeire Pag. 41 / 61

NP-complete problemen

NP-compleet: traveling p. 64 salesman problem Meest efficiënte volgorde om alle steden af te lopen? 15! = 1.307.674.368.000 mogelijke volgorden Informatica II: les 5 Jan Lemeire Pag. 43 / 61

NP-compleet Klasse van problemen Voor optimale oplossing: je moet alle mogelijkheden afgaan Er bestaan geen shortcuts! Informatica II: les 5 Jan Lemeire Pag. 44 / 61

Een goede oplossing Maar niet te bewijzen dat optimaal zie http://ai4r.rubyforge.org/geneticalgorithms.html Informatica II: les 5 Jan Lemeire Pag. 45 / 61

Project

Projectonderwerp Voldoende programmatorische complexiteit Klassen & objecten Spelelement wordt meestal gekozen Mag: Creativiteit! Artificiële Intelligentie (A.I.): slim algoritme Hoofdstuk 5 Groepjes van 2-3 Informatica II: les 5 Jan Lemeire Pag. 47 / 61

Project: doelstellingen Programmeren Programmatorische complexiteit, gestructureerd programmeren Projectwerk, teamwork Creativiteit, ingenieuziteit Plezier Ontwikkelen probleemoplossende vaardigheden Informatica II: les 5 Jan Lemeire Pag. 48 / 61

Project: uitvoering Voor paasvakantie: keuze groep & onderwerp oefeningen o.a. GUI vrije sessies om aan project te werken Paasvakantie start keuze groep & onderwerp tussentijdse verdediging deadline projectverdediging Verplicht!! Informatica II: les 5 Jan Lemeire Pag. 49 / 61

Evaluatie Programmatorische complexiteit Correctheid Logische opdeling van code in klassen Gestructureerd programmeren 1 regel: geen redundantie 'Properheid' van code: Gebruik van zinvolle namen voor variabelen en functies Logische structuur van code documenteer vooral niet-triviale dingen Creativiteit Mondelinge verdediging Bonus voor excellentie, als het af is Informatica II: les 5 - Constantes - Functies/methodes - Parameterizatie Jan Lemeire Pag. 50 / 61

Laatste tips Ingenieur = efficiëntie Anderzijds: excellentie vergt net dat tikkeltje extra Probleemoplossende vaardigheden (debuggen) Als je probleem niet kan oplossen: VRAAG Blijf er niet bij zitten!! Referenties en gebruikte code opgeven! Anders: plagiaat Informatica II: les 5 Jan Lemeire Pag. 51 / 61

Slimme algoritmen Hoofdstuk 5

Beslissingsalgoritme Doel bereiken Aantal acties ter beschikking Actiesequentie bedenken om doel te bereiken Informatica II: les 5 Jan Lemeire Pag. 53 / 61

p. 66 Indeling volgens oplossingsmethode Type 1: De oplossing kan berekend worden met een formule (analytisch). Type 2: Je kunt de oplossing gericht zoeken of construeren (rechttoe-rechtaan). Type 3: Je gaat alle mogelijke actiesequenties af om een oplossing te vinden. Type 4: Door slimme keuzes (heuristieken) te maken, kan je verschillende actiesequenties uitsluiten. Type 5: Je leert al doende welke de juiste keuzes zijn. Informatica II: les 5 Jan Lemeire Pag. 54 / 61

Type 1: analytisch 1. Je kan oplossing berekenen met formule Analytisch Voorbeeld: nulpunten van kwadratische vergelijking Informatica II: les 5 Jan Lemeire Pag. 55 / 61

Type 2: gerichte constructie Je kan oplossing gericht zoeken met quasi-zekerheid om te arriveren Voorbeelden: nulpunt van een functie zoeken met benaderingsalgoritme priemgetallen met zeef van Erathosteness Berekening grootst-gemene deler Informatica II: les 5 Jan Lemeire Pag. 56 / 61

p. 67 De schuifpuzzel? Staat van puzzel: posities van stukjes Mogelijke acties: LEFT, UP, RIGHT, DOWN Niet alle 4 steeds mogelijk Informatica II: les 5 Jan Lemeire Pag. 57 / 61

Type 3: Alle mogelijkheden afgaan Je weet niet in welke richting de oplossing ligt. Voor sommige problemen is men er vrijwel zeker van dat je alle mogelijkheden af moet lopen (NP-complete problemen, zie later) Je genereert alle mogelijke sequenties van akties en kijkt welke tot een oplossing of tot de beste oplossing leidt. het scannen van de volledige zoekruimte is nodig... Informatica II: les 5 Jan Lemeire Pag. 58 / 61

Zoekruimte = zoekboom Initial UP LEFT UP LEFT DOWN UP LEFT RIGHT LEFT DOWN... DOWN LEFT RIGHT Informatica II: les 5 Jan Lemeire Pag. 59 / 61

p. 68 Doorploeteren zoekboom = Brute-force search 2 mogelijkheden: depth-first : a-b-e-j-k-c-f-g-l-m-n-d-h-o-p-i-q = backtracking breadth-first: a-b-c-d-e-f-g-h-i-j-k-l-m-n-o-p-q Informatica II: les 5 Jan Lemeire Pag. 60 / 61

Sudoku met backtracking Niet in cursus http://en.wikipedia.org/wiki/backtracking Informatica II: les 5 Jan Lemeire Pag. 61 / 61