【发布时间】:2014-01-09 09:23:18
【问题描述】:
Toeplitz 矩阵“是一个矩阵,其中从左到右的每个下降对角线都是常数。”给定一个二进制矩阵 M,是否有一种有效的算法来确定是否存在使其成为 Toeplitz 的行的排列?
例如设置
M= [0 1 1]
[1 1 0]
[1 0 1]
如果你交换第一行和第二行,你会得到
[1 1 0]
[0 1 1]
[1 0 1]
这是托普利茨。
在python中,你可以制作一个随机的二进制矩阵,如下所示。
n = 10
h = 10
M = np.random.randint(2, size=(h,n))
我想将测试应用到 M。
(注意矩阵M不需要是方阵。)
【问题讨论】:
-
我可以将这个问题简化为找到Hamiltonian path(通过将行视为顶点并连接可能相邻的行),但我认为这不会有很大帮助(因为它是 NP-全部)。
标签: algorithm matrix language-agnostic