Algorithm 瑞士奶酪有多防水?

Algorithm 瑞士奶酪有多防水?,algorithm,shortest-path,computation-theory,Algorithm,Shortest Path,Computation Theory,想象一下一块立方体形状的瑞士奶酪。我们通过20x20x20网格对奶酪进行建模。为简单起见,我们假设每个网格立方体完全由奶酪或空气组成。然后,我们在瑞士奶酪立方体的上部倒入水,水只能通过立方体上的气孔穿透奶酪。水可能从顶部流向底部,通过一个连续的通道流动,但如果两个空气立方体通过一个面(而不仅仅是一个边或一个角)连接,则水可能只从一个空气立方体流向下一个空气立方体。水也可以通过迂回的方式流动,例如在水槽排水阱中,但它可能不会从奶酪立方体的侧壁流出 现在,让我们编程实现瑞士奶酪的模型,其中空气和奶酪

想象一下一块立方体形状的瑞士奶酪。我们通过20x20x20网格对奶酪进行建模。为简单起见,我们假设每个网格立方体完全由奶酪或空气组成。然后,我们在瑞士奶酪立方体的上部倒入水,水只能通过立方体上的气孔穿透奶酪。水可能从顶部流向底部,通过一个连续的通道流动,但如果两个空气立方体通过一个面(而不仅仅是一个边或一个角)连接,则水可能只从一个空气立方体流向下一个空气立方体。水也可以通过迂回的方式流动,例如在水槽排水阱中,但它可能不会从奶酪立方体的侧壁流出

现在,让我们编程实现瑞士奶酪的模型,其中空气和奶酪立方体的随机分布如上所述,奶酪p的概率和空气1-p的概率,并模拟流经奶酪的水,以找出,水是否流入瑞士奶酪立方体的底部

通过以不同的奶酪和空气的概率反复模拟流经瑞士奶酪立方体的水,我们可以确定p和流经瑞士奶酪立方体底部的水的概率之间的关系,我们将其命名为q。结果如下所示:

q
1   ************************
0.8                          *
0.6                           *
0.4                            *
0.2                             *
0                                 ***********
    0       0.2     0.4     0.6     0.8     1   p
我的问题:为什么会有这么奇怪的曲线?

这个问题摘自《圣经》。“为什么会有如此奇怪的曲线”的答案尚未在web上提供()


我希望这类问题的答案是正确的。

也许你会发现以下解释很直观:

在你的例子中,20*20*20单元格,除非你有至少20个孔,否则水流的概率正好是0。如果你有20个孔,如果你把它们排列成一列,水就可以流动,但是这种排列随机出现的概率很低,20*20/梳(20^3,20)~=1e-57。随着孔数的增加,出现连续路径的可能性越来越大

当除20*20外的所有细胞都是孔时,阻止流动的唯一方法是将所有奶酪细胞排列成单个“阻塞”层,例如水平20*20层。(也有其他可能的配置,但都不太可能。每个(x,y)坐标只需要一个奶酪块,每个奶酪块必须与其所有(x,y)-邻居接触。但它们可能沿z轴分布)


一旦少于20*20个奶酪块,就无法形成完整的层,并且流概率正好为1。

这是Zhenya评论的扩展

如前所述,你的瑞士奶酪就是一个例子。这是我们考虑问题的基本概念。渗流理论的一个典型例子与你贴的问题非常相似

Erdős–Rényi模型 在中,从空节点开始,并以概率
p
将节点与边连接。在某个临界
p
值处,图的结构从一堆断开连接的簇变为一个包含大量节点的大跨度结构。事实上,如果你要绘制最大集群的平均大小,你会得到一张与你的瑞士奶酪模型非常相似的图片!示意图如下所示:

q
1   ************************
0.8                          *
0.6                           *
0.4                            *
0.2                             *
0                                 ***********
    0       0.2     0.4     0.6     0.8     1   p


你可以在应用数学和物理的许多例子中找到它。这幅图的功劳来自于中的这篇文章,其中对这一现象的讨论要详细得多。

它被称为渗流相变:。解释相变理论需要很多书()@Zhenya precomplation threshold-以前从未听说过这个术语。这是一条非常有用的信息,也是我一直在寻找的信息。虽然很奇怪,最初的竞赛任务是解释曲线,所以我猜应该可以在stackoverflow的答案范围内这样做。谢谢你为我指出了正确的方向:]这是一个有趣的问题,但问“为什么有这么奇怪的曲线”与StackOverflow无关。询问如何对问题进行建模/模拟将是一个非常困难的问题。这确实是一个直观的解释。感谢aha效应:]这是对一个复杂现象的天才解释。我不想听起来像个傻瓜,但他们的条件是20x20块不应该接触,并不一定意味着它们最多跨越三层。例如,它们可以是对角的,所以它们可以跨越所有层。@Shahbaz:你是对的,我是错的。也许你也可以给我们相应的概率,以及它们如何影响曲线?@IgorF。当然,你的解释很好(我自己也没有足够的动力去做数学),但我想你可能有兴趣用更准确的信息更新你的答案。