昨天把第一周的视频看完了,准备做作业了。

有三个关于连接查找的面试题,还有连接查找能解决的问题。比如连通性、渗透性。

作业是关于渗透性的问题,理论上无法解决就只能靠暴力计算概率解决了。

渗透性问题是这样的。给一个正方形,白色表示打开的节点,黑色表示封闭的节点,然后随机的打开任意节点,直到上面一层的任意节点可以联通到最下面一层的节点。 数学理论上无法给出到底有多少个节点打开时,系统是渗透的,所以只能随机的连接测试。

主要难点就是要虚拟两个节点表示第一层跟最后一层,还有就是一个节点打开的时候要连接上下左右四个的开放节点,这里也是要计算的。

如果我们有一个5*5的系统,用一个27个的数组来表示。0节点代表第一层,26节点代表最后一层。 那么一开始就0-1, 0-2, 0-3, 0-4, 0-5 是联通的。

26-21, 26-22, 26-23, 26-24, 26-25 也是联通的。

但是没有任何元素是打开的。

当我们打开10的时候,我们需要用10来连接5,9,15,如果它们是打开的话。 所以需要另外一个状态数组来用0来表明封闭,1要表示打开。

打开10的时候,先把状态数组10索引对应的值改为1, 然后查找可联通的上下左右的节点的状态值,决定链接。

大概步骤:

  1. 初始化两个数组。
  2. 打开一个节点
    1. 状态值改为1
    2. 查找上下左右的节点状态值
      1. 判断节点的状态值==1,联通节点和上下左右节点
  3. 判断0-26的连通性, 如果没联通继续2,联通返回。

这就是作业了。希望今晚能做完吧。