👀 Voorbeeld - Een nieuwe boog
We voegen een methode
nieuw()toe aan de klasseGrafeom een nieuwe boog (als tupel) toe te voegen.class Grafe: def __init__(self, knopen, bogen): self.knopen = knopen self.bogen = bogen def nieuw(self, boog): # self.bogen is een verzameling, dus we gebruiken de functie .add() self.bogen.add(boog) # een boog is een tupel van twee knopen k1 = boog[0] k2 = boog[1] # de knopen worden toegevoegd aan de verzameling van knopen in de grafe # denk eraan dat er geen dubbele elementen in een verzameling zitten . # er is dus geen risico dat we een knoop meerdere keren toevoegen self.knopen.add(k1) self.knopen.add(k2)
👀 Voorbeeld - We willen ook naar Leuven!
Hieronder zie je nog een keer de grafe die Vlaamse steden en snelwegen voorstelt.
Deze grafe werd als volgt gemodelleerd:
knopen = { 'Kortrijk', 'Antwerpen', 'Gent' , 'Brussel', 'Hasselt' } bogen = { ('Gent','Kortrijk'), ('Antwerpen', 'Gent'), ('Brussel', 'Gent'), ('Antwerpen','Brussel'), ('Antwerpen','Hasselt'), ('Brussel','Hasselt') } snelwegen = Grafe(knopen, bogen)Als we nu Leuven willen toevoegen, die verbonden is met Brussel en Hasselt, doen we simpelweg:
snelwegen.nieuw(('Brussel', 'Leuven')) snelwegen.nieuw(('Hasselt', 'Leuven'))
🧠Denkoefening - Verzamelingen?
Probeer eens te verklaren waarom verzamelingen een geschikte datastructuur zijn om knopen en bogen voor te stellen?
💻 Programmeeroefening - Steden toevoegen
- Kopieer de aangepaste klasse
Grafein de editor hieronder.- Kopieer en plak daaronder de knopen en bogen van de Vlaamse steden en snelwegen.
- Gebruik deze verzamelingen om de grafe aan te maken, plaats deze in een variabele
snelwegen.- Kopieer en plak het stukje code waar de stad Leuven toegevoegd wordt, verbonden met Brussel en Hasselt.
- Gebruik daarna twee keer de methode
nieuw()om de stad Brugge toe te voegen, verbonden met Kortrijk en Gent.- print vervolgens alle knopen van de grafe als een gesorteerde lijst, met
sorted(snelwegen.knopen).- print tenslotte alle bogen van de grafe als een gesorteerde lijst, met
sorted(snelwegen.bogen).