powerpoint

advertisement
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
Download