Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 迪克斯特拉';s将图形存储在文本文件中_Algorithm_Matrix_Store_Dijkstra - Fatal编程技术网

Algorithm 迪克斯特拉';s将图形存储在文本文件中

Algorithm 迪克斯特拉';s将图形存储在文本文件中,algorithm,matrix,store,dijkstra,Algorithm,Matrix,Store,Dijkstra,我想知道,在实现Dijkstra算法时,将图形存储在文本文件中最有效的方法是什么?(邻接矩阵、关联矩阵?等)在一般情况下,一个好的方法是存储所有边的列表。 它需要O(E)空间:我们在每条边上存储两个端点。 把它存储在磁盘上就足够了 为了处理这样的列表,它通常作为V邻接列表存储在内存中,每个顶点一个。 如果图形是无向的,则复制每条边(u->v和v->u)。 然而,图算法的一个常见操作是遍历给定顶点的所有边。 通过为每个顶点存储一个邻接列表,我们可以在O(邻居数)中实现这一点,这是最好的选择 邻接矩

我想知道,在实现Dijkstra算法时,将图形存储在文本文件中最有效的方法是什么?(邻接矩阵、关联矩阵?等)

在一般情况下,一个好的方法是存储所有边的列表。 它需要
O(E)
空间:我们在每条边上存储两个端点。 把它存储在磁盘上就足够了

为了处理这样的列表,它通常作为
V
邻接列表存储在内存中,每个顶点一个。 如果图形是无向的,则复制每条边(
u->v
v->u
)。 然而,图算法的一个常见操作是遍历给定顶点的所有边。 通过为每个顶点存储一个邻接列表,我们可以在
O(邻居数)
中实现这一点,这是最好的选择

邻接矩阵采用
O(V^2)
空间,这对于稠密图可能很好,但在一般情况下比
O(E)

关联矩阵占用了
O(VE)
空间,并且效率不高,除非您的图形非常特殊,可以这样做

Dijkstra算法的最快实现需要
O(E log V)
时间,因此
O(E)
内存通常是很好的