👀 Voorbeeld - Een nieuwe boog

We voegen een methode nieuw() toe aan de klasse Grafe om 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.

vlaamse-steden-grafe

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 Grafe in 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).