如何解决有向图的转置算法
我正在尝试编写一个简单的算法来表示反向邻接矩阵。我想要就地,运行时间为 Theta(n^2)。
起初我有这个:
for i=1 to n
for k=1 to n
//Reverse the edges and update the new adjacency list
A_new[k][i] = A_old[i][k]
return A_new
但是,我意识到内部 for 循环会导致问题,因为如果第一个循环从 1..n 开始,第二个从 1..n 开始,您将需要交换所有内容两次。
内部 for 循环必须是什么才能避免这种情况?
解决方法
如果您返回一个新矩阵,您的代码就可以了。如果你想原地翻转矩阵,那么你可以遍历上面的三角形,然后像这样用下面的三角形交换每个元素:
for i=1 to n-1
for j=i+1 to n
temp = A[i][j];
A[i][j] = A[j][i];
A[j][i] = temp;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。