我有向图的二进制邻接矩阵。现在,我想对其重新排序,以使对角线上方的元素数量以及与对角线的距离最小。
为您提供应用程序背景:我正在使用基于任务的设计结构矩阵。 例如,我有三个任务,A,B,C。这意味着我有A,B,C行,并因此有A,B,C列。现在,如果任务B需要任务A的输入,则元素(b ,a)为1,否则为0。
任务的顺序显示了任务执行的顺序。 因此,如果在任务B需要输入之前执行输入任务A,则该任务在对角线下方。如果它们在对角线上方(例如,如果A依赖于B的输入),则意味着将来会生成输入,这很不好。
要优化任务的顺序,矩阵应为较低的三角形矩阵,以便在需要输入之前生成输入。由于这通常是不可能的,因此最佳方法是减少对角线上方的对角线数量,并减少到对角线的距离。
对矩阵重新排序时,问题是行和列的顺序必须保持相同。因此,如果我将A行向下移动一排,我会自动需要将A列向左移动一列。
好吧,我用Google搜索并找到了Cuthill-Mckee算法,但是它仅适用于对称矩阵,并且由于我有向图,所以我的矩阵是不对称的,可能有对称项。
此外,Reid-Scott算法只是减小了整体带宽,因此对较低的带宽有不必要的限制。
基本上,我正在寻找一种算法,只是将上限带宽最小化,因为对角线以下的所有条目都无关紧要。
我希望我可以全面地提出我的问题。我不熟悉图论,也不学习数学或计算机科学,所以一个友好的提示会很不错。
非常感谢!