Algorithm 生成用源、水平线、直角、t形接头和节点填充10x10网格的网络的算法?

Algorithm 生成用源、水平线、直角、t形接头和节点填充10x10网格的网络的算法?,algorithm,Algorithm,只是为了好玩,我正在尝试创建一个非flash版本的。这都是非常简单的东西,但我的思想一直停留在如何生成初始网络上 我可以用大量的if/else逻辑检查相邻的方块,一个方块接一个方块,但坦率地说,这似乎很费劲,我想知道是否有更聪明的方法。生成一个数学图或类似的东西,然后将其转换为网格 我并不是要求有人为我编写所有代码——只是给我指出正确的方向 完成的电路似乎是一个生成树 有一种简单的方法可以通过以下方式生成: 在无向图的边上分配随机权重,然后构造图的最小生成树 因此,总结如下: 构建一个顶点位于每

只是为了好玩,我正在尝试创建一个非flash版本的。这都是非常简单的东西,但我的思想一直停留在如何生成初始网络上

我可以用大量的if/else逻辑检查相邻的方块,一个方块接一个方块,但坦率地说,这似乎很费劲,我想知道是否有更聪明的方法。生成一个数学图或类似的东西,然后将其转换为网格


我并不是要求有人为我编写所有代码——只是给我指出正确的方向

完成的电路似乎是一个生成树

有一种简单的方法可以通过以下方式生成:

在无向图的边上分配随机权重,然后构造图的最小生成树

因此,总结如下:

  • 构建一个顶点位于每个正方形中心的图形

  • 在每个顶点及其上/下/左/右相邻顶点之间添加边

  • 为每条边指定随机权重(例如,从0到1的均匀实数)

  • 例如,使用Prim或Kruskal进行构造

  • 将图形转换为平铺


  • 如果要禁止某些形状(例如,完全连接的顶点),则可能需要额外的迭代来增加任何非法平铺中使用的边的权重,然后重新生成生成树,直到生成合法的图为止

    我的问题是我已经在一个非flash环境中,看不到你链接的页面上有什么内容。你能再解释一下吗;一种游戏,你必须旋转每个方块,直到网络/电路“完成”并且所有东西都点亮。我试图想出一个算法来随机生成一个有效的完整电路,然后随机旋转来创建初始的游戏板。谢谢,我对图论几乎一无所知(如果它被称为图论的话),所以这对我来说基本上是希腊语,但我会做一些阅读和深入研究,希望能找到答案!