【发布时间】:2015-11-26 04:54:42
【问题描述】:
我希望生成 10,000 个随机二进制矩阵,它们每行和每列的 1 数量与给定的二进制矩阵相同。
矩阵为 ~500 x ~10,000。大约有 2,000,000 个 1。没有零行或列。
我当前的方法是将二进制矩阵转换为二分邻接矩阵,并执行 1,000,000 次随机边缘切换以保证随机性。 1 个矩阵需要 13,000 秒。我在 python 中编码,使用 networkx 的 double_edge_swap 函数的修改版本。
有没有更有效的方法来生成这样的矩阵?
【问题讨论】:
-
我正在寻找这个问题的名称。这是discrete tomography“处理从水平和垂直线和重建二进制图像”的主要问题,对于二维(成对非平行晶格方向)的情况,问题在 P 中。这会很有趣知道什么需要 10,000 个随机选择的可能重建。
-
您应该指定是否需要特定的分布,因为不同的方法可能会给出稍微不同的分布。
-
这取决于您是否只想提高生成矩阵的效率,好的解决方案是调用 c( 从 python 生成矩阵的函数。