让我们考虑方阵
(n 是矩阵 E 的维数并且是固定的(例如 n = 4 或 n=5))。矩阵条目 满足以下条件:
任务是生成所有矩阵 E。我的问题是如何做到这一点?有没有通用的方法或算法?这甚至可能吗?从什么开始?
要考虑的一个简单的解决方案是生成每个可能n
的矩阵,其中每个分量都是不大于 的非负整数,然后仅从那些矩阵中获取满足附加约束的矩阵n
。那会有什么复杂性?E
n
每个分量都可以n + 1
取值,有n^2
分量,就有O((n+1)^(n^2))
候选矩阵。那有一个疯狂的高增长率。
我认为这不是一种可行的方法是安全的。
一个更好的解决方案如下。它涉及很多数学。
让是满足您要求S
的所有矩阵的集合。E
让N = {1, 2, ..., n}
.
定义:
让度量具有通常的N
定义,除了省略对称性的要求。
让I
和J
划分集合N
。设D(I,J)
为n
xn
矩阵,它具有D_ij = 1
when和i
is in ,否则。I
j
J
D_ij = 0
让A
并B
在S
。Then与当且仅当存在和划分这样A
时相邻。B
I
J
N
A + D(I,J) = B
当且仅当与 相邻或与 相邻时,我们说A
和B
是相邻的。A
B
B
A
两个矩阵A
和B
inS
是路径连通的当且仅当它们之间存在相邻元素的序列S
。
让函数M(E)
表示矩阵元素的总和E
。
引理 1:
E = D(I,J)
是 上的度量N
。
证明:
这是一个简单的陈述,除了边从I
到的情况J
。让我们i
进来。I
_ 然后根据 的定义。让在。如果在,那么和,那么。如果在,那么和,那么。j
J
E_ij = 1
D(I,J)
k
N
k
I
E_ik = 0
E_kj = 1
E_ik + E_kj >= E_ij
k
J
E_ik = 1
E_kj = 0
E_ij + E_kj >= E_ij
引理2 :
让E
. 然后存在和分区这样与。S
E != zeros(n,n)
I
J
N
E' = E - D(I,J)
S
M(E') < M(E)
证明:
令(i,j)
.E_ij > 0
让是可以通过成本的有向路径到达I
的子集。不能为空,因为在. 不可能,因为不在。这是因为满足三角不等式和。N
i
0
I
i
I
I
N
j
I
E
E_ij > 0
让
J = N - I
. 然后I
和J
都是非空和分区N
。根据 的定义I
,不存在任何(x,y)
这样的E_xy = 0
和x
在I
和y
在 中J
。因此E_xy >= 1
对于所有x
inI
和y
inJ
。因此
E' = E - D(I,J) >= 0
。这M(E') < M(E)
很明显,因为我们所做的只是从E
to get的元素中减去E'
。现在,因为E
是 上的度量N
并且D(I,J)
是N
(引理 1)和上的度量E >= D(I,J)
,我们有E'
是 上的度量N
。因此E'
在S
.
定理:
让E
在S
. 然后E
和zeros(n,n)
是路径连接的。
证明(通过归纳):
如果E = zeros(n,n)
,则该陈述是微不足道的。假设
E != zeros(n,n)
。让M(E)
是 中的值的总和E
。然后,通过归纳,我们可以假设该陈述对于任何E'
具有的矩阵都是正确的M(E') < M(E)
。因为
E != zeros(n,n)
,根据引理 2 ,我们有一些这样E'
的。然后由归纳假设路径连接到。因此是路径连接到。S
M(E') < M(E)
E'
zeros(n,n)
E
zeros(n,n)
推论:
该集合S
是路径连接的。
证明:
让A
并且B
在S
。由定理和A
都B
路径连接到zeros(n,n)
。因此A
是路径连接到B
。
推论告诉我们,其中的一切S
都是路径连接的。因此,发现所有元素的有效方法S
是对以下定义的图执行广度优先搜索。
S
是图的节点给定一个节点,您可以通过简单地枚举所有可能的矩阵(其中有)并为每个矩阵生成E
来找到所有(可能)未访问的邻居。枚举应该相对简单(除了空集和 之外,每个可能的子集都有一个)。E
D(I,J)
2^n
E' = E + D(I,J)
D(I,J)
I
D
D
请注意,在上一段中,E
和D(I,J)
都是关于 的度量N
。因此,当您生成 时E' = E + D(I,J)
,您不必检查它是否满足三角不等式-E'
是两个度量的总和,因此它是一个度量。要检查它E'
,S
您所要做的就是验证最大元素 inE'
不超过n
。
您可以从 的任何元素开始广度优先搜索,S
并保证不会错过任何S
. 因此,您可以使用 开始搜索zeros(n,n)
。
请注意,集合的基数S
随着增加而增长得非常快n
,因此计算整个集合S
只适用于 small n
。