Pertama-tama perhatikan bahwa jarang berarti Anda memiliki sangat sedikit tepi, dan padat berarti banyak tepi, atau grafik hampir lengkap. Dalam grafik lengkap Anda memiliki edge, di mana n adalah jumlah node.n(n−1)/2n
Sekarang, ketika kita menggunakan representasi matriks kita mengalokasikan matriks untuk menyimpan informasi simpul-konektivitas, misalnya, M [ i ] [ j ] = 1 jika ada tepi antara node i dan j , jika M [ i ] [ j ] = 0 .
Tetapi jika kita menggunakan daftar adjacency maka kita memiliki array node dan masing-masing node menunjuk ke daftar adjacency yang berisi HANYA node-node tetangga .n×nM[i][j]=1ijM[i][j]=0
Sekarang jika grafik jarang dan kami menggunakan representasi matriks maka sebagian besar sel matriks tetap tidak digunakan yang mengarah pada pemborosan memori. Jadi kita biasanya tidak menggunakan representasi matriks untuk grafik jarang. Kami lebih suka daftar kedekatan.
Tetapi jika grafiknya padat maka jumlah ujungnya mendekati (lengkap) , atau ke n 2 jika grafik diarahkan dengan loop otomatis. Maka tidak ada keuntungan menggunakan daftar adjacency atas matriks.n(n−1)/2n2
Dalam hal kompleksitas ruang,
matriks Adjacency:
Daftar Adjacency: O ( n + m ) di
mana n adalah jumlah node, m adalah jumlah tepi.O(n2)
O(n+m)
nm
Ketika grafik tidak diarahkan pohon maka
Adjacency matrix:
Daftar Adjacency: O ( n + n ) adalah O ( n ) (lebih baik dari n 2 )O ( n2)
O ( n + n )O ( n )n2
Ketika grafik diarahkan, lengkap, dengan loop otomatis maka
Adjacency matrix:
Daftar Adjacency: O ( n + n 2 ) adalah O ( n 2 ) (tidak ada perbedaan)O ( n2)
O ( n + n2)O ( n2)
Dan akhirnya, ketika Anda menerapkan menggunakan matriks, memeriksa apakah ada tepi antara dua node membutuhkan kali, sementara dengan daftar adjacency, mungkin butuh waktu linier dalam n .O ( 1 )n