【问题标题】:How to uniformly sample from singular matrices如何从奇异矩阵中均匀采样
【发布时间】: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 文化倾向于令人费解和恐吓,而这并不是作为问答网站的任何必然结果。每一个不必要地结束的问题都是浪费的机会。

标签: algorithm math matrix


【解决方案1】:

cmets 有点飘了,所以我将其发布为答案:

这里有一篇论文:http://www.researchgate.net/publication/2729950_Efficient_Generation_of_Random_Nonsingular_Matrices/file/e0b4951d5a6fcc7e67.pdf,它描述了如何在有限域上生成非奇异矩阵以及作为扩展的奇异矩阵。由于在编程中实数在某种程度上是有限的,所以我认为它应该适用于此。

【讨论】:

  • 对 GF(2) 的依赖不一定是对 Q 的依赖。(不过,论文很简洁。)
  • +1。我认为,如果 OP 从特定论文中提出了一种算法并寻求实施方面的帮助,那将是一个很好的问题。要求社区在互联网上搜索论文,而不是那么多。
  • 论文没看懂,但是在第7页看到了生成奇异矩阵的伪代码,是不是论文不清楚?
  • @IvanVergiliev:映射会毁掉一切。
  • 如果您有兴趣,现在已经在 mathoverflow 上发布了一个解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多