2.4.3 垂直渗透

给定一个表示流通网格的布尔矩阵,我们如何判断其是否表示一个可渗透系统呢?我们将在本节最后看到,这种计算与计算机科学中的一个基本问题直接相关联。目前,我们将讨论该问题的一个简化版本,称之为垂直渗透系统。

简化的方法是将关注限制为垂直连接路径。如果存在这样的路径连接顶部到底部,则称系统沿该路径垂直渗透(即该系统本身垂直渗透)。一个8×8网格的垂直渗透如图2-4-2所示。

图2-4-2 垂直渗透(彩图见彩插

如果我们讨论沙子在水泥地面中渗透的情况,这种限制也许符合直觉。然而,如果讨论水在水泥地面渗透的情况或导电体的情况,这种限制不符合直觉。垂直渗透系统尽管比较简单,但具有其自身的意义,因为该系统提出了很多不同的数学问题。这种限制是否会带来本质的区别?我们所期望的垂直渗透路径到底有多少?

程序2.4.1 渗透原理脚手架代码(percolation0.py)

为了研究渗透原理,我们编写了程序2.4.1,用于处理与计算相关的所有任务。其中,主要函数flow()返回一个二维矩阵,表示全连通网格。辅助函数percolates()检查返回结果矩阵的底部行,以确定系统是否可渗透。测试客户端从标准输入读取一个布尔二维矩阵,然后调用函数flow()和percolates(),并返回并输出最终结果。程序2.4.1的运行过程和结果如下: ...

Get 程序设计导论:Python语言实践 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.