Eenvoudig voorbeeld: Steden in Belgie

Slides:



Advertisements
Verwante presentaties
Hoe goed ken jij de kaart van ons land? Test het hier!
Advertisements

Rechtbanken in België Rechtbanken in België
windroos Oriëntatie met google earth: Verloop van de zon Beervelde
Inforum Welkom Dit is een automatische voorstelling Gebruik de toets ‘Page Up’ of ‘PgUp’ van uw klavier als u sneller vooruit wil gaan. Gebruik de toets.
De Stad Antwerpen Geografisch START.
De Stad Antwerpen Geografisch START.
VHDL Peter Slaets KHLim Functies en procedures Functies –type conversie functies »bit vector to integer en omgekeerd –verkorte componenten met maar 1 output.
Datastructuren Zoekbomen
1 Datastructuren Zoekbomen II Invoegen en weglaten.
Functies op Proposities evalueer:: Bedeling  Prop  Bool tautologie:: Prop  Bool contradictie:: Prop  Bool equivalentie:: Prop  Prop  Bool vervulbaar::
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Assenstelsels en het plotten van Functies in LOGO
Tegengestelden / Synoniemen
Logo : Stapsgewijze verfijning Les Wouter Rogiers.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
Optuigen van datastructuren
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
DE 10 PROVINCIES VAN BELGIE
Topografie Nederland (8 dia’s)
PHP functies.
Vakdidactiek Informatica
Sorteeralgoritmen. Sorteren: aanpak 1 Hoe ga je een rij getallen sorteren met PC? Sorteren door selectie (= selection sort): Zoek de kleinste waarde Sorteer.
De taalwereld in Logo Les 12 Karel Heymans 15 december 2004.
Pen- & kleuropdrachten
Haiku-Generator Les 1 – 12/02/2003 Jan De Bock.
Chris Pollentier 18 / 12 / 2002 De LOGO taalwereld.
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
Liesbeth Van Raemdonck
06/032003Tom Van Damme Bomen in LOGO. 06/032003Tom Van Damme Wat is een boom? Bomen als hiërarchische gegevensstructuur Wereld Gent België Brussel China.
06/032003Tom Van Damme Sorteren van lijsten Selection Sort.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Beschikbare.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Persoonlijke.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Collectieve.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Societaal.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Beschikbare.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Persoonlijke.
Enkele nuttige weetjes… Ken je land!
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt
Intermezzo: Queries op zoekbomen Datastructuren. Queries: hoe op te lossen We hebben: – Een zoekboom (gewoon, rood-zwart, AVL,…) – Een vraag / querie.
Provincies en provincie hoofdsteden
Duid de provincie aan op de kaart van België
Steve Dewanckele Recursie Steve Dewanckele
Het land waarin wij leven
Madagaskar is een eiland in de Indische Oceaan, 430 km van Mozambique. Zo’n 2000 jaar geleden zetten de eerste bewoners ‘voet aan wal’ op dit eiland.
Aardrijkskunde Hoofdstuk 2 – les 3.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Wijs me de weg ! Wegwijs in je atlas ! Gebruikte symbolen Ga naar mijn volgende dia Ga naar mijn voorgaande dia Ik wil nog even mijn informatie raadplegen.
Wijs me de weg ! Het noorden kwijt ? Gebruikte symbolen Ga naar mijn volgende dia Ga naar mijn voorgaande dia Ik wil nog even mijn informatie raadplegen.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Informatie beoordelen If else Switch En Wiskunde.
Doorzoeken van grafen Algoritmiek.
België.
Op sneeuwklas in Zwitserland
Programmeren met Reeksen
PHP arrays.
Mobiliteit: een studie van SD Worx
Europa Mijn thuis.
DE 10 PROVINCIES VAN BELGIE
Enkele nuttige weetjes… Ken je land!
Zijn jullie klaar voor een super spannende Quiz?
Implementatie Zoekboom
SQL Les February 2019.
Doolhof. doolhof doolhof Maak een routine die de ‘hekken’ tussen de cellen weghaalt Maak een 2-dimensionale array met kolommen en rijen aangeklikt.
DE 10 PROVINCIES VAN BELGIE
DE 10 PROVINCIES VAN BELGIE
Wie heeft de moord gepleegd?
DE 10 PROVINCIES VAN BELGIE
We gaan een contract voor een klant aanmaken met een aantal tarieven
Transcript van de presentatie:

Eenvoudig voorbeeld: Steden in Belgie - Belgie bestaat uit twee delen: Vlaanderen en Wallonie In Vlaanderen zijn er twee provincies die ons interesseren: Oost-Vlaanderen en Limburg Idem voor Wallonie: Henegouwen en Namen In Oost-Vlaanderen zijn Gent en Lokerenen belangrijke steden, terwijl Limburg rekent op Hasselt, Maaseik en Bree Henegouwen heeft als belangrijke steden Bergen en Charleroi In de provincie Namen kan je veel mooie dingen zien in zijn hoofdplaats Namen en rotsen beklimmen in Dinant

Een voorstelling van de data (1) De data stellen we voor in lijsten. De naam van elke lijst is een intermediaire knoop (inclusief de wortel) De inhoud van de lijst zijn de kinderen van de beschouwde lijst make “Belgie [Vlaanderen Wallonie] To land ... end

Een voorstelling van de data (2) to land make "Belgie [Vlaanderen Wallonie] make "Vlaanderen [Oost-Vlaanderen Limburg] make "Wallonie [Henegouwen Namen] make "Oost-Vlaanderen [Gent Lokeren] make "Limburg [Hasselt Maaseik Bree] make "Henegouwen [Bergen Charleroi] make "Namen [Dinant Namen] end

Op zoek naar een blad (1) Twee procedures: Eentje om te controleren of de knoop het gevraagde bevat, eentje om af te dalen in de boom to zoek_knoop :stad :deel_boom ... end to zoek_knoop_bij_kinderen :stad :nageslacht ...end De eerste roept de tweede om knopen te expanderen, de tweede roept de eerste om de geëxpandeerde knopen te evalueren

Op zoek naar een blad (2) to zoek_knoop :stad :deel_boom Als de te zoeken stad overeenkomt met de de naam van deel_boom dan is de stad gevonden en geven we die terug Als er geen variabele bestaat met de naam van de deelboom dan loopt de procedure ten einde Aanmaken locale variabele om kinderen te onderzoeken To zoek_knoop_bij_kinderen aanroepen om kinderen te controleren Als de locale variable leeg is, is er niets gevonden en keren we terug Anders voegen we vooraan de lijst van knopen onderweg naar het doel, de naam van de huidige deel_boom toe, en geven we dit terug

Op zoek naar een blad (3) to zoek_blad_bij_kinderen :stad :nageslacht Als nageslacht leeg is, zijn er geen nakomelingen en geven we de lege lijst terug Maak een locale variabele aan om eerste kind uit de lijst te onderzoeken mbv zoek_blad Roep zoek_blad op met het eerste kind Als de variabele niet leeg is, werd het kind gevonden en wordt het pad die in de variable opgeslagen ligt teruggegeven Anders zoeken we verder bij volgend kind (procedure roept zichzelf aan)

Op zoek naar een blad (4) to zoek_knoop :stad :deel_boom if equalp :stad :deel_boom [output (list :stad)] if not namep :deel_boom [output [ ]] localmake "afdaler zoek_knoop_bij_kinderen :stad (thing :deel_boom) if emptyp :afdaler [output [ ]] output fput :deel_boom :afdaler end

Op zoek naar een blad (5) to zoek_knoop_bij_kinderen :stad :nageslacht if emptyp :nageslacht [output [ ]] localmake "kind zoek_knoop :stad first :nageslacht if not emptyp :kind [output :kind] output zoek_knoop_bij_kinderen :stad butfirst :nageslacht end

Problemen Opzoeken van de Stad Namen: conflicteert met Provincie Namen Opzoeken van alle steden in Namen moet ook kunnen Aan de namen van variabelen het cijfer van het niveau toevoegen: make “Namen3 [Namen Dinant]: dit is omslachtig Naar een nieuwe representatie van data

Nieuw representatie (1) Abstracte voorstelling boom in een lijst Constructor maak_boom :knoopnaam :kinderen Selectors: to kinderen :knoop en to knoop_naam :knoop to is_blad :knoop

Nieuw representatie (2) to maak_boom :knoopnaam :kinderen output fput :knoopnaam :kinderen End (constructor) to kinderen :knoop output butfirst :knoop end (selector) to knoop_naam :knoop output first :knoop to is_blad :knoop output emptyp kinderen :knoop end (nodige hulpfunctie)

Nieuwe representatie (3) Nog twee hulpprocedures: to maak_blad :knoop output maak_boom :knoop [ ] End Vb: maak_blad :Belgie -> [Belgie] to maak_bladeren :bladeren output map [maak_blad ?] :bladeren Vb: maak_bladeren [Bergen Charleroi] -> [ [Bergen] [Charleroi] ]

Nieuwe representatie (4) to boom make "land ~ maak_boom "Belgie (list (maak_boom "Vlaanderen ~ (list (maak_boom "Oost-vlaanderen maak_bladeren [Gent Lokeren])~ (maak_boom "Limburg maak_bladeren [Hassel Maaseik])))~ (maak_boom "Wallonie ~ (list (maak_boom "Henegouwen maak_bladeren [Bergen Charleroi])~ (maak_boom "Namen maak_bladeren [Dinant Namen])))) end

Aanpassing zoek_knoop We moeten kunnen meegeven of we op zoek gaan naar een blad (waarbij we het pad teruggeven) of naar een interne knoop (waarbij we de deel-boom onder deze knoop weergeven. We moeten op zoek kunnen gaan naar één enkele knoop

Aanpassing zoek_knoop_mode to zoek_knoop_mode :knoop :deel_boom :overzicht Als we een overzicht moeten geven EN de knoop_naam van de deel_boom is de te zoeken knoop dan geven we de deelboom terug Als de deel_boom een blad is en gelijk is aan de te zoeken :knoop dan geven we het blad terug, anders geven we de lege lijst terug Aanmaken locale variabele om kinderen te onderzoeken To zoek_knoop_bij_kinderen aanroepen om kinderen te controleren Als de locale variable leeg is, is er niets gevonden en keren we terug Bij het terugkeren met een overzicht geven we de lokale variable terug anders voegen we vooraan de lijst in de locale variabele de naam van deze deelboom toe

Aanpassing zoek_knoop_mode to zoek_knoop_mode :knoop :deel_boom :overzicht if and :overzicht (equalp :knoop knoop_naam :deel_boom)[output :deel_boom] if is_blad :deel_boom ~ [ifelse equalp :knoop knoop_naam :deel_boom [output (list :knoop)] [output [ ] ] ] localmake "afdaler zoek_knoop_bij_kinderen :knoop (kinderen :deel_boom) :overzicht if emptyp :afdaler [output []] output ifelse :overzicht [:afdaler] [fput (knoop_naam :deel_boom) :afdaler] end

Aanpassing zoek_knoop_bij_kinderen to zoek_knoop_bij_kinderen :knoop :nageslacht :overzicht if emptyp :nageslacht [output[]] localmake "kind zoek_knoop_mode :knoop first :nageslacht :overzicht if not emptyp :kind [output :kind] output zoek_knoop_bij_kinderen :knoop butfirst :nageslacht :overzicht End

Oproepen van verschillende functies to zoek_stad :stad :boom output zoek_knoop_mode :stad :boom "false end to zoek_steden :knoop :boom output zoek_knoop_mode :knoop :boom "true to zoek_knoop :knoop :boom localmake "gevonden zoek_knoop_mode :knoop :boom "true ifelse emptyp :gevonden [output "niets] [output first :gevonden]

Toevoegen van een tak vanaf de wortel to voeg_toe :boom :kind .setbf :boom (fput :kind butfirst :boom) End make "B maak_blad [Brussel] voeg_toe :land :B voeg_toe :B maak_boom "Hoofdstad leaves [Brussel Matonge] voeg_toe :B maak_boom "Hoofdstad maak_bladeren [Brussel Matonge] voeg_toe :B maak_boom "Rand maak_bladeren [Anderlecht Huizingen]

Besluit We kunnen nu de meest bomen opbouwen mbv de gezien methodes (constructor, selector...) Zoekmethodes zijn onafhankelijk van boom, als we de boom maar voorstellen mbv van het abstracte datatype