c# - floyd warshall 上的并行 linq

标签 c# algorithm linq graph floyd-warshall

我们遇到了这个图形问题,我们需要实现 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/

相关文章:

c - 如何计算一个值是否更快?

c# - 我可以不拖动存储过程,而是将其名称剪切并粘贴到某处吗?

linq - 学习 LINQ 的资源?

c# - 是否有一个 C# 函数可以检查列表是否为空并且不将 null 计为一个元素?

c# - Autofac 没有找到最贪婪的构造函数

c# - 如何修复我的正则表达式 ^\d+[-\d]?\d* 以匹配 123-45 而不是 123-?

c# - 无法使用 c# 导航到 Windows Metro App 上的页面

c# - 重新创建复杂订单的算法

java - 将每个项目与 ArrayList 中的每个其他项目进行比较

c# - 证明标签 xamarin 表单中的文本