Für eine Hausaufgabe wurde mir die Frage gestellt, warum bei einer Menge von n Knoten und m Kanten, wobei der Graph durch eine Adjazenzliste dargestellt wurde, insertVertex O(1) und deleteVertex O(m) benötigen würde.
Ich bin mir meiner Antwort nicht ganz sicher, aber ich vermute, dass insertVertex O(1) ist, weil beim ersten Einfügen nur ein Knoten und ein Satz benachbarter Scheitelpunkte (d. h. Scheitelpunkte, auf die der neue Knoten zeigt) zum Array hinzugefügt werden. Diese Zeitkomplexität ist also konstant. Wenn Sie jedoch einen Knoten entfernen, müssen Sie nicht nur den Knoten und die benachbarten Kanten entfernen, die mit dem Knoten einhergehen, sondern auch die restlichen m Kanten durchgehen, um sicherzustellen, dass Sie diejenigen entfernen, die auf den zu entfernenden Knoten zeigen (da Sie keine Kante haben können, die auf nichts zeigt).
Ich bin neu in der Graphentheorie, daher weiß ich nicht, ob meine Denkweise richtig ist.
0 Stimmen
Das hört sich für mich nach einer soliden Argumentation an, aber ich wette, dass andere hier noch mehr dazu sagen können.
0 Stimmen
Dies hängt davon ab, ob es sich um einen gerichteten oder einen ungerichteten Graphen handelt und ob jeder Knoten in der Datenstruktur eine Liste von Nachbarn oder eine Menge von Nachbarn hat.