マトリックスの値のデフォルトの初期化は、実際には機能です。デフォルトの初期化がなかったら、すべてのフィールドを自分で初期化して、その値がどうなるかを知る必要があるのではないでしょうか?
隣接行列にはこの欠点があります。メモリ効率の点で悪く(O(n 2)メモリセルが必要です)、初期化が遅いと言ったように。ただし、初期化が最大の問題とは見なされません。私を信じてください、メモリ割り当てははるかに遅く、必要なメモリは初期化時間よりもはるかに制限されています.
多くの場合、行列の代わりに隣接リストを使用する方が好まれます。このようなリストにはO(m)
メモリが必要です。ここm
で、 はグラフ内のエッジの数です。これは、特にスパース グラフの場合に、はるかに効率的です。このグラフ表現が隣接行列よりも悪い唯一の操作はクエリis there edge between vertices i and j
です。マトリックスは時間内に答えO(1)
、リストは確かにずっと遅くなります。
ただし、典型的なグラフ アルゴリズムの多く ( Dijkstra、Bellman-Ford、Prim、Tarjan、BFS、DFSなど) は、特定の頂点のすべての隣接要素を反復するだけで済みます。行列の代わりに隣接リストを使用すると、これらすべてのアルゴリズムに大きなメリットがあります。