小编klk*_*lkh的帖子

查找最小化节点深度总和的生成树

我有一个带有未加权边缘的无向连通图.如何构建生成树(解决方案可能不是唯一的),以便最小化所有节点的深度总和?这显然没有找到最小生成树,因为边缘的"权重"实际上取决于孩子的深度.

我认为,给定一个指定的根,可以通过贪婪地将所有可以作为子节点连接的所有节点连接到以广度优先顺序连接到每个节点来形成具有最小深度总和的树.因此,我将通过应用相同的过程N次来找到具有最小总深度的树,将N个节点中的每一个指定为根,并且在N个候选中选择最小的一个.这是一个有效的算法吗?请指出它是否错误,或者是否存在更高效的问题.

algorithm tree graph spanning-tree

8
推荐指数
1
解决办法
1050
查看次数

在 PyTorch 中,forward() 和普通方法有什么区别?

实现forward()自定义nn.Module类的方法与向该类添加普通方法有何不同?

我听说该forward()方法应该只接受和返回张量,因为PyTorch对该forward()方法的输入和输出实现了特殊处理。但我尝试在方法上输入/输出非张量对象forward(),并实现一个没有forward()方法的模块(相反,有多个自定义命名的方法,其行为类似于forward()方法)。两种方法都效果很好。

pytorch

4
推荐指数
1
解决办法
2278
查看次数

在Google App Engine(GAE)数据存储区中复制键名和父级作为属性?

在阅读了GAE数据存储API之后,我仍然不确定是否需要将键名和父项复制为实体的属性.

假设有两种实体:Employee和Division.每个员工都有一个部门作为其父级,并由帐户名称标识.我使用帐户名作为员工的密钥名称.但是在为Employee建模时,我仍然将这两个作为属性:

division = db.ReferenceProperty(Division)
account_name = db.StringProperty()
Run Code Online (Sandbox Code Playgroud)

显然,我必须手动保持division与其父级一致,并account_name使用其密钥名称.我正在做这项额外工作的原因是:

  1. 我担心GQL/Datastore API可能不支持父级和密钥名称以及普通属性.有什么我可以做的关于一个属性但不是父或关键名称(或他们基本上是引用属性)?如何在GQL查询中使用键名?
  2. 关键名称和父母的含义不是特别清楚.由于名称不是自我描述的,我必须通知其他贡献者我们使用帐户名作为关键名称...

但这实际上是不必要的工作,浪费时间和存储空间.我无法摆脱SQL思维 - 为什么Google不让我们将属性定义为关键?而另一个是父母?然后我们可以命名它们并用作普通属性......

这里的最佳做法是什么?

python google-app-engine google-cloud-datastore

2
推荐指数
1
解决办法
972
查看次数