Algoritmiek Doel Gevoel en inzicht ontwikkelen voor het stapsgewijs, receptmatig oplossen van daartoe geeigende [biologische] probleem-stellingen, en dat inzicht gebruiken in het vormgeven van een programmeerbare oplossing. Eindniveau In staat zijn te onderscheiden welke problemen in welke vorm geschikt (te maken) zijn voor een algoristische aanpak, en deze aanpak ook vorm te geven. Vorm geven gebeurt in pseudotaal, tot op een niveau waar de oplossing programmeerbare proporties heeft gekregen. Hoe te realiseren 12 uur college, werkgroep, zelfwerkzaamheid Algoritmiek Tentamen = Syllabus + College Open vragen, gesloten boek Syllabus: Voorbeelden Blackboard: Oefeningen, Opdrachten WWW + BB: Oude tentamens (+ antwoorden) Werkgroep: Opdracht maken + nakijken Oefenen op eigen initiatief Blackboard, H11, syllabus Eindoordeel: Tentamen (60 %) Werkgroep opdracht (18 + 7 %) OMP + college opdrachten (15 %) Vergeetbestendigheid Lecture Only Reading Classroom with Labs/Exercises/Audio/Video Demonstration/Work Through Practice by doing Teaching others 5% 10% 20% 30% 75% 90% Without application of the information learned, the amount retained is reduced by 50% within a month and nearly 0% by 2 months. Use it or lose it… Algoritmiek Algoritmiek: Welke stappen moeten we nemen om een probleem op te lossen Data Structuren: Hoe bewaren we de informatie die nodig is om problemen op te lossen, en hoe blijft die informatie toegankelijk. Programmeertalen: Hoe coderen we algoritmen en data structuren Software engineering: Welke systematische methoden bestaan er voor het schrijven van grote, foutloze en betrouwbare systemen. Algoritmiek Data-bases: Hoe slaan we grote hoeveelheden informatie op en hoe houden we die beschikbaar voor efficiënte raadpleging (data-mining). Symbolisch en numeriek rekenen: Hoe maken we nauwkeurige wiskundige modellen van toestanden en processen in de echte wereld. Kunstmatige intelligentie: Hoe kunnen we de vaardigheid om zelfstandige beslissingen te nemen coderen. Kunstmatig leven: Studie van en naar emergent, ongeprogrammeerd gedrag in organismen die leven (= ontstaan, bewegen, eten, reproduceren, doodgaan) binnen computers. Algoritmiek Welke stappen moeten we nemen om een probleem op te lossen. Hoe lossen wij eigenlijk problemen op ??? We ‘doen’ het gewoon... Op goed geluk raden naar een oplossing... Via ‘Trial & Error’... Door ervaring (van jezelf of van anderen)... “Wetenschappelijk”... Probleem oplossen... ? Analyse Probleem specificatie Ontwerp Algoritme Implementatie Programma Compilatie Executable (Oplossing) Probleem oplossen... ? "Dokter, ik heb hoofdpijn" Analyse Patient heeft een verhoogde druk in de voorste parietale kwab. Probleem specificatie 1. Sterilizeer schedel zaag 2. Verdoof de patient 3. Verwijder schedeldak 4. Neem een grote lepel ... 5. etc., etc. Ontwerp Algoritme Implementatie Programma Compilatie Executable (Oplossing) sterilizeer(zaag,alcohol); hef_hamer(); laat hamer neerkomen(snel); begin(zaag); /* etc. etc. */ 0100111010110010101010101001010 1010101001100101010101010010110 1001110101010101001001011101001 1110101010111110101010001101000 01101... Algoritmiek De leer van algoritmen Algoritme: Beschrijving van de stappen die een processor (mens, computer, machine) moet doen om een proces uit te voeren, c.q. een probleem op te lossen. Karakteristiek: Invoer, Uitvoer, Eindigheid, Bepaaldheid, Effectiviteit Uitvoering verloopt stapsgewijs Een stap bestaat vaak zelf weer uit deel-algoritmen. Algoritme Algorism \Al"go*rism\, Algorithm \Al"go*rithm\, n. [OE. algorism, algrim, augrim, OF. algorisme, F. algorithme (cf. Sp. algoritmo, OSp. alguarismo, LL. Algorismus) the Ar. al-Khow[=a]rezm[=i] of Khow[=a]rezm, the modern Khiwa, surname of Abu Ja'far Mohammed ben Mus[=a], author of a work on arithmetic early in the 9th century, which was translated into Latin, such books bearing the name algorismus. The spelling with th is due to a supposed connection with Gr. ? number.] 1. The art of calculating by nine figures and zero. 2. The art of calculating with any species of notation; as, the algorithms of fractions, proportions, etc. algorism 1: the Arabic (or decimal) system of numeration 2: computation with Arabic figures Algoritme Muhammed ibn Musa Al-Khwarizmi Circa 160-230 A.H. (anno Hegirae) Hegira \He*gi"ra\ (?; 277), n. [Written also hejira.] [Ar. hijrah flight.] The flight of Mohammed from Mecca, September 13, A. D. 622 (subsequently established as the first year of the Moslem era) Circa 780-850 A.D. Algoritme Muhammad ibn Musa Al-Khwarizmi http://www-groups.dcs.st-andrews.ac.uk/~history/Mathematicians/Al-Khwarizmi.html Boek over rekenen: Hindu notatie van getallen, gebroken getallen, gebruik van het getal nul, methode voor het oplossen van vierkantsvergelijkingen Latijnse vertaling (c.1120 AD): “Algoritmi de numero Indorum” Boek over algebra Hisab al-jabr w’al-muqabala Al-Kwarizmi (khiva) Algoritme Beschrijving van de stappen die een processor (mens, computer, machine) moet doen om een proces uit te voeren, c.q. een probleem op te lossen. Kook / Bak recept Spelregels van een spel Instructies voor het bedienen van een video recorder Route beschrijving van A naar B Een brei patroon Notenschrift ... Algoritme 0 1 2 3 4 5 .. 8 9 0 1 2 3 4 5 6 0 1 2 3 4 5 6 1 2 3 4 5 6 7 2 3 4 5 6 7 8 3 4 5 6 7 8 9 4 5 6 7 8 9 10 5 6 7 8 9 10 11 .. .. .. .. .. .. .. 8 9 10 11 12 13 14 9 10 11 12 13 14 15 7 7 8 9 10 11 12 .. 15 16 8 8 9 10 11 12 13 .. 16 17 9 9 10 11 12 13 14 .. 17 18 Algoritme Optellen van getallen onder de 10 (incl. nul) Het algoritme in de ‘black box’: + Van welke kennis kunnen we uitgaan ? tabel met uitkomsten van optellingen van 2 getallen < 10 Welk aspecten kent dit probleem ? Hoe bekijken we een getal dat buiten het kader van de tabel valt ? Ontbinden in elementen die wel in kennis-kontekst passen Doet de volgorde van de getallen in de optelling er toe ? Wat doen we met een uitkomst die meer dan 1 plaats inneemt ? 1 onthouden regel Wat doen we met meerdere van dergelijke uitkomsten ? Cascade regel Invoer, Uitvoer, Eindigheid, Bepaaldheid, Effectiviteit Algoritmiek Omschrijving van alle legale inputs en Omschrijving van de gewenste outputs als functie van de inputs Algoritmisch probleem een legale input Algoritme Gewenste output Algoritmische oplossing Algoritmiek Algoritme dat door een computer uitgevoerd kan worden heet een programma Een computer heet programmeerbaar omdat hij gevoed kan worden met een algoritme naar keuze Een programma is een formele tekst iedere letter, elk cijfer, elk interpunctie-teken, en elke operator speelt daarin een rol. Programma’s vragen ongewone nauwkeurigheid in het opstellen. Syntax & Semantiek Syntaxis: grammatica regels zinsbouw, correct symbool gebruik Stik de naden van de mouw vs Mouw de naden a + b = vs a+=b H2O vs 2OH Semantiek: betekenis Een recht, een averecht Kosten := prijs * aantal Programmeertaal: Syntaxis en semantiek zijn onafhankelijk ! ‘Colorless green ideas sleep furiously’ Noteer de naam van de achtste dag van de week Syntax & Semantiek Mens Nederlands Grote woordenschat Ingewikkelde grammatica Context afhankelijke betekenis Woorden vaak meer dan 1 betekenis Computer Machinetaal Kleine woordenschat (0/1) Simpele grammatica Betekenis niet context afhankelijk Woorden (symbolen) hebben 1 betekenis Syntaxis & Semantiek Algoritmen Operaties op en met objecten Betekenis van stap in Algoritme: Kennis van eigenschappen van objecten Relaties tussen de objecten Noteer de naam van de achtste dag van de week Bedenk een getal tussen 1 en 9 Noem het getal N Noteer de naam van dag N Bereken de omtrek van de cirkel door de straal met pi te vermenigvuldigen Elementaire aktie Syntax & Semantiek Processor moet in staat zijn om: De symbolen waarin de stap is geformuleerd te herkennen. Betekenis aan de stap toe te kennen in termen van de uit te voeren handelingen. De bijbehorende handelingen uit te voeren. Syntax & Semantiek Programmeertaal Eenvoudige en beknopte formulering van algoritmen toestaan. Voor computer eenvoudig te begrijpen. Voor mens eenvoudig te begrijpen: Veranderingen en verbeteringen De kans op fouten minimaliseren bij omzetten van algoritme in programma (implementatie). Analyse van programma tekst moet aan kunnen tonen dat uitvoering het gewenste proces tot stand brengt. Pseudotaal Niet werkend vocabulair Nederlands de beperkende factor Werkend vocabulair beperkt Zie hoofdstuk 11 syllabus Controle structuren Als ... Dan ... Anders ... Eindals Wanneer … Eindwanneer Zolang ... Doe ... Eindzolang Herhaal … Totdat ... Eindherhaal Voor … Tot ... Eindvoor Modules 75 stuks kant en klaar gereedschap Pseudotaal Zoek het grootste getal uit een rij Grootste wordt eerste getal uit de rij Zolang nog niet alle getallen zijn bekeken Doe Bekijk volgende getal in de rij Als het getal groter is dan Grootste Dan Grootste wordt dit getal Eindals Eindzolang geef Grootste als antwoord Pseudotaal PROGRAM ‘BIG param’ {Zoek het grootste getal uit een rij} rij := param teller := 1 grootste := rij[teller] Zolang teller KLEINER DAN 1 PLUS LENGTE rij Doe getal := rij[teller] Als getal GROTER DAN grootste Dan grootste := getal Eindals teller := teller PLUS 1 Eindzolang SCHRIJF grootste