Sage heeft heel wat mogelijkheden voor het werken met grafen. Je kan een graaf met $n$ toppen maken via de functie Graph, en er dan bogen aan toevoegen. In deze functie kan je ook meer informatie meegeven, zoals de adjacentiematrix of een dictionary met lijsten die voor elke top de buren geeft.
|
Je kan ook heel wat standaardgrafen automatisch laten genereren in Sage: het object graphs heeft hiervoor allerlei functies.
|
Een Graph object heeft vele functies om allerlei informatie uit de graaf te halen. De meest eenvoudige functies geven je de lijst van toppen, de lijst van bogen, de buren van een gegeven top... Enkele voorbeelden:
De graaf G0 heeft orde 5 en grootte 6 De toppen van G0 zijn [0, 1, 2, 3, 4] De bogen van G0 zijn [(0, 1), (0, 2), (1, 2), (1, 3), (1, 4), (3, 4)] De buren van top 1 in G0 zijn [0, 2, 3, 4] Is G0 samenhangend? True De graaf G0 heeft orde 5 en grootte 6 De toppen van G0 zijn [0, 1, 2, 3, 4] De bogen van G0 zijn [(0, 1), (0, 2), (1, 2), (1, 3), (1, 4), (3, 4)] De buren van top 1 in G0 zijn [0, 2, 3, 4] Is G0 samenhangend? True |
Schrijf een functie is_euleriaans die bepaalt of een graaf Euleriaans is.
|
Ter controle moet je functie de volgende resultaten geven:
Graph on 5 vertices is euleriaans. Mijn functie geeft True Complete graph is euleriaans. Mijn functie geeft True Octahedron is euleriaans. Mijn functie geeft True Petersen graph is niet euleriaans. Mijn functie geeft True Complete bipartite graph is niet euleriaans. Mijn functie geeft True Graph on 5 vertices is euleriaans. Mijn functie geeft True Complete graph is euleriaans. Mijn functie geeft True Octahedron is euleriaans. Mijn functie geeft True Petersen graph is niet euleriaans. Mijn functie geeft True Complete bipartite graph is niet euleriaans. Mijn functie geeft True |
Het bewijs van stelling 3.2.3 geeft een methode om van een Euleriaanse graaf een Euleriaans circuit te bepalen, het algoritme van Fleury. Schrijf een functie fleury die deze methode implementeert, en een lijst van toppen geeft in de volgorde waarin ze een Euleriaans circuit vormen.
|
Om je functie te testen is geven de volgende functies je twee manieren om het gevonden circuit interactief weer te geven.
|
Je gebruikt deze functies op een graaf G via de commando's interact(color_euleriaans_circuit(G,fleury(G))) en label_euleriaans_circuit(G,fleury(G)).
De gedefinieerde graaf G0 heeft bijvoorbeeld het Euleriaanse circuit [0,1,3,4,1,2,0], en dit wordt als volgt weergegeven:
Click to the left again to hide and once more to show the dynamic interactive window |
|
|