【发布时间】:2014-01-17 17:12:59
【问题描述】:
我想从所有奇异的 n 乘 n 伯努利矩阵中统一采样(即每个条目是 1 或 0,概率为 1/2)。我当然可以从所有 n × n 伯努利矩阵中采样,并拒绝那些非奇异但对于任何效率极低的适度 n。
例如,在我测试的 10000 个随机 100 x 100 矩阵中,没有一个是单数的。
有没有有效的方法来做到这一点?
这里有一些测试 python 代码来显示问题。
import numpy as np
iters = 10000
n = 100
count = 0
for i in xrange(iters):
A = np.random.randint(2, size = (n,n))
if (np.linalg.matrix_rank(A) < n):
count += 1
print count
1 月 20 日发布到 https://mathoverflow.net/questions/155185/how-to-sample-uniformly-from-singular-matrices。
https://mathoverflow.net/questions/155185/how-to-sample-uniformly-from-singular-matrices 现在有一个建议的算法来解决这个问题。剩下的挑战是弄清楚如何实施它。
【问题讨论】:
-
@mbeckish 我不同意。数学/计算机科学和编程之间有很大的重叠。就我而言,我有一些非常慢的代码,我想让它们更快:) 这个问题恰好适合所有三个类别。我觉得你说它离题的真正原因是它可能非常困难。不要小看程序员!
-
@mbeckish:他有一个实用的、可回答的问题,显然是关于编程的。只是碰巧真的很难。问题显然应该根据其问题内容来判断,而不是根据答案可能具有的形式。
-
@mbeckish 我认为您在谈论众所周知的未解决问题。那些很可能在这里跑题了。我不确定那是我问的。您还可能担心 OP 不知道的问题,事实证明需要在理论上进行重大改进才能获得更好的性能。在这些情况下,我同意一旦发现迁移到 cstheory 可能是一个好主意。不过这里也不是这样。
-
@mbeckish:有很多理由。如果一个问题被轻率地关闭,在它重新打开之前你无法回答它。重新提出问题需要付出努力和时间。在重新打开之前花费这些精力和时间并监控问题可能不值得。此外,您关于 您的 近距离投票没有造成伤害的论点是似是而非的;协作努力的个人贡献者值得赞扬,无论他们是否愿意,因为他们的贡献,无论是有益的还是有害的。
-
@mbeckish 您似乎忘记了投票结束问题是您拥有的一种力量,它比大多数人都可以发表评论要强大得多。 “每个意见都被听到”——不是在问题结束之后。 “为什么闹?” ——因为 SO 文化倾向于令人费解和恐吓,而这并不是作为问答网站的任何必然结果。每一个不必要地结束的问题都是浪费的机会。