我们遇到了这个图形问题,我们需要实现 Floyd Warshall, 所以我们做到了。尽管我们有点不喜欢该算法,因为它非常慢。
我们想知道是否可以在第二个循环中应用并行 linq,这样我们可以稍微加快算法
Question: Speed up the For loop with var
i
private int[,] FloydWarshall(int[,] matrix)
{
var loopCount = matrix.GetLength(0);
var next = CreatePredecessorMatrix(matrix);
for (var k = 0; k < loopCount; k++)
{
for (var i = 0; i < loopCount; i++)
{
for (var j = 0; j < loopCount; j++)
{
if (matrix[i, j] > matrix[i, k] + matrix[k, j])
{
matrix[i, j] = matrix[i, k] + matrix[k, j];
next[i, j] = next[k, j];
}
}
}
}
return next;
}
最佳答案
做 Parallel.For代替那个“var i”for 循环不能达到与 Parallel Linq 相同的加速?
关于c# - floyd warshall 上的并行 linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34752855/