2017-10-03 5 views
1

enter image description hereGraph als Adjazenzmatrix Zeitkomplexität

I verstehen nicht, warum eine Kante in Adjazenzmatrix Einsetzen nimmt O (1) Zeit. Zum Beispiel wollen wir eine Kante von Scheitelpunkt 3 bis 5 hinzufügen, im orientierten Graphen müssen wir den Graphen [2] [4] zu 1 ändern. In oriented geht es auch umgekehrt. Wie kann es möglich sein, O (1), wenn wir mindestens einmal die richtige Zeile in Array suchen müssen, so ist es bereits O (| V |)?

+1

Die Zeit zum Einfügen einer Kante hängt nicht von der Anzahl der Scheitelpunkte oder Kanten ab. Die Adjazenzmatrix hat die gleiche Anzahl von Zeilen und Spalten, nämlich die Anzahl der Eckpunkte. Daher erfordert der Zugriff auf eine bestimmte Kante keine Suche. Dieses konstante Verhalten wird als O (1) ausgedrückt. –

+0

Die Annahme besteht darin, dass Ihre Matrix mit einer Datenstruktur implementiert wird, die einen konstanten Zugriff auf eine beliebige Zelle ermöglicht und keine 2D-Entsprechung einer verknüpften Liste darstellt. – chepner

+0

"finde die richtige Zeile im Array" - wenn es sich um ein Array handelt, "findet" das Finden der Zeile nur in das Array. Also O (1). Es gibt kein "Suchen", Sie haben bereits den Index. – harold

Antwort

1

Im 2D-Array werden alle Operationen als O (1) betrachtet.

Im 2D-Array gehen Sie nicht linear, um die Zeile und die Spalte zu finden, um die Daten hinzuzufügen.

Hier

a[i][[j] = k 

ist ein O (1) -Operation, wie Sie die Position des Arrays direkt als Index anstatt sich linear beziehen.

Jedoch in der Linkedlist ist es wahr, dass Sie gehen müssen und die Reihe/Spalte finden, indem Sie alle Reihe/Spalte eins nach dem anderen besuchen.