- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试解决以下问题:
An mn maze is an mn rectangular grid with walls placed between grid cells such that there is exactly one path from the top-left square to any other square. The following are examples of a 912 maze and a 1520 maze:
Let C(m,n) be the number of distinct mn mazes. Mazes which can be formed by rotation and reflection from another maze are considered distinct.
It can be verified that C(1,1) = 1, C(2,2) = 4, C(3,4) = 2415, and C(9,12) = 2.5720e46 (in scientific notation rounded to 5 significant digits).
Find C(100,500)
现在,有一个给出正确结果的明确公式,而且它是完全可计算的。然而,据我所知,欧拉计划问题的解决方案应该更像是聪明的算法,而不是明确的公式计算。试图将解决方案表述为递归,我只能得到一个线性系统,其中变量的数量随着迷宫的大小呈指数增长(更准确地说,如果有人试图为 mxn 迷宫的数量写一个递归,其中 m 保持固定, 一个线性系统使得其变量的数量随 m 呈指数增长:其中一个变量是具有问题 380 声明中给出的属性的 mxn 迷宫的数量,而其他变量是 mxn 迷宫的数量在某些特定“配置”中接触迷宫边界的多个连接组件 - 并且此类“配置”的数量似乎随 m 呈指数增长。因此,虽然这种方法在 m = 2,3,4 等情况下是可行的,它似乎不适用于 m=100)。
我还想把问题简化为更容易解决的子问题,然后在构建更大子问题的解决方案(动态规划方法)时重用子问题的解决方案,但在这里我偶然发现子问题似乎涉及不规则形状的迷宫,而且这种迷宫的数量在 m,n 中呈指数级增长.
如果有人知道除了使用显式公式或一些特定定理之外的可行方法 (m=100, n=500),并且可以提示去哪里寻找,对我来说这将非常有趣。
最佳答案
这基本上是一个 spanning tree计数问题。具体来说,就是统计一个网格图中生成树的数量。
来自维基百科条目的“计数生成树”部分:
The number t(G) of spanning trees of a connected graph is a well-studied invariant. In some cases, it is easy to calculate t(G) directly. For example, if G is itself a tree, then t(G)=1, while if G is the cycle graph C_n with n vertices, then t(G)=n. For any graph G, the number t(G) can be calculated using Kirchhoff's matrix-tree theorem...
这里有一些与计算网格图中生成树的数量相关的论文或帖子:
Ekhad 和 Zeilberger 的后者提供了以下内容,并提供了与手头问题相匹配的答案:
If you want to see explicit expressions (as rational functions in z) for the formal power series whose coefficient of zn in its Maclaurin expansion (with respect to z) would give you the number of spanning trees of the m by n grid graph (the Cartesian product of a path of m vertices and a path of length n) for m=2 to m=6, the the input gives the output.
具体请参见 output .
旁注:如果没有提供其他建议的解决方案值,则有效的解释可能是迷宫的外部结构很重要。在这种情况下,具有相同路径的两个或多个迷宫将是不同且截然不同的,因为可能有 3 个选项用于在一个角落进入和退出迷宫,其中左上角将在顶部打开,左上角在左侧打开,或在左侧和顶部都打开,拐角导出也类似。如果试图将这些迷宫可能性表示为一棵树,则两个节点可能会在入口处汇聚,而不仅仅是从头到尾发散,并且会有一个或多个附加节点用于导出可能性。这会增加 C(m,n) 的值。
关于algorithm - 计算具有给定大小的非循环路径的不同矩形网格迷宫,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15063411/
这是代码片段。 请说出这种用小内存存储大数据的算法是什么。 public static void main(String[] args) { long longValue = 21474836
所以我使用 imap 从 gmail 和 outlook 接收电子邮件。 Gmail 像这样编码 =?UTF-8?B?UmU6IM69zq3OvyDOtc68zrHOuc67IG5ldyBlbWFpb
很久以前就学会了 C 代码;想用 Scheme 尝试一些新的和不同的东西。我正在尝试制作一个接受两个参数并返回两者中较大者的过程,例如 (define (larger x y) (if (> x
Azure 恢复服务保管库有两个备份配置选项 - LRS 与 GRS 这是一个有关 Azure 恢复服务保管库的问题。 当其驻留区域发生故障时,如何处理启用异地冗余的恢复服务保管库?如果未为恢复服务启
说,我有以下实体: @Entity public class A { @Id @GeneratedValue private Long id; @Embedded private
我有下一个问题。 我有下一个标准: criteria.add(Restrictions.in("entity.otherEntity", getOtherEntitiesList())); 如果我的
如果这是任何类型的重复,我会提前申请,但我找不到任何可以解决我的具体问题的内容。 这是我的程序: import java.util.Random; public class CarnivalGame{
我目前正在使用golang创建一个聚合管道,在其中使用“$ or”运算符查询文档。 结果是一堆需要分组的未分组文档,这样我就可以进入下一阶段,找到两个数据集之间的交集。 然后将其用于在单独的集合中进行
是否可以在正则表达式中创建 OR 条件。 我正在尝试查找包含此类模式的文件名列表的匹配项 第一个案例 xxxxx-hello.file 或者案例二 xxxx-hello-unasigned.file
该程序只是在用户输入行数时创建菱形的形状,因此它有 6 个 for 循环; 3 个循环创建第一个三角形,3 个循环创建另一个三角形,通过这 2 个三角形和 6 个循环,我们得到了一个菱形,这是整个程序
我有一个像这样的查询字符串 www.google.com?Department=Education & Finance&Department=Health 我有这些 li 标签,它们的查询字符串是这样
我有一个带有静态构造函数的类,我用它来读取 app.config 值。如何使用不同的配置值对类进行单元测试。我正在考虑在不同的应用程序域中运行每个测试,这样我就可以为每个测试执行静态构造函数 - 但我
我正在寻找一个可以容纳多个键的容器,如果我为其中一个键值输入保留值(例如 0),它会被视为“或”搜索。 map, int > myContainer; myContainer.insert(make_
我正在为 Web 应用程序创建数据库,并正在寻找一些建议来对可能具有多种类型的单个实体进行建模,每种类型具有不同的属性。 作为示例,假设我想为“数据源”对象创建一个关系模型。所有数据源都会有一些共享属
(1) =>CREATE TABLE T1(id BIGSERIAL PRIMARY KEY, name TEXT); CREATE TABLE (2) =>INSERT INTO T1 (name)
我不确定在使用别名时如何解决不明确的列引用。 假设有两个表,a 和 b,它们都有一个 name 列。如果我加入这两个表并为结果添加别名,我不知道如何为这两个表引用 name 列。我已经尝试了一些变体,
我的查询是: select * from table where id IN (1,5,4,3,2) 我想要的与这个顺序完全相同,不是从1...5,而是从1,5,4,3,2。我怎样才能做到这一点? 最
我正在使用 C# 代码执行动态生成的 MySQL 查询。抛出异常: CREATE TABLE dump ("@employee_OID" VARCHAR(50)); "{"You have an er
我有日期 2016-03-30T23:59:59.000000+0000。我可以知道它的格式是什么吗?因为如果我使用 yyyy-MM-dd'T'HH:mm:ss.SSS,它会抛出异常 最佳答案 Sim
我有一个示例模式,它的 SQL Fiddle 如下: http://sqlfiddle.com/#!2/6816b/2 这个 fiddle 只是根据 where 子句中的条件查询示例数据库,如下所示:
我是一名优秀的程序员,十分优秀!