- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一棵树,如下图所示。
Red
检查。
Red
则所有 Ancestors 也都是 Red
(并且不应再次检查)。Not Red
则所有后代都是 Not Red
。d
。n
。请注意,子节点的值大于父节点。
因此 children 可以构造为:
if vertex.depth > 0:
vertex.children = [Vertex(parent=vertex, val=child_val, depth=vertex.depth-1, n=n) for child_val in xrange(self.val+1, n)]
else:
vertex.children = []
这是一个示例树:
我正在尝试计算 Red
节点的数量。树的深度和宽度都会很大。所以我想进行某种深度优先搜索,并另外使用上面的属性 1 和 2。
我如何设计一个算法来遍历那棵树?
PS:我标记了这个 [python],但算法的任何概述都可以。
r
和c
的集合R
和C
。 (注意,树的宽度是 n=r*c
)。 x, y = divmod(值, c)
。属性检查的两条规则来自图的连通性:- 如果图连接的边 [a, b, c] 被移除,那么它也必须连接 [a, b] 被移除(规则 1)。- 如果图断开连接并移除边 [a, b, c],则它也必须断开连接并移除额外的边 d [a, b, c, d](规则 2)。
所以我真正想做的是检查从 [0..n] 中挑选 d 个元素的所有组合。树结构有点帮助,但即使我得到了最佳的树遍历算法,我仍然会检查太多的组合。 (我刚才注意到了。)
让我解释一下。假设我需要检查 [4, 5](因此 4 和 5 如上所述从二分图中删除,但此处无关紧要。)。如果结果显示为“红色”,我的树将阻止我仅检查 [4]。那很好。但是,我还应该将 [5] 标记为不进行检查。
我怎样才能改变我的树的结构(也许是一个图?)以进一步减少我的检查次数?
最佳答案
使用删除收缩算法的变体在完整二部图 K_{r,c} 上评估 Tutte 多项式(在 (1,2) 处评估,给出生成子图的总数)。
一句话,思路就是对边任意排序,枚举生成树,统计,对于每棵生成树,有多少个大小为r + c + k的生成子图有那个最小生成树。生成树的枚举是递归执行的。如果图 G 恰好有一个顶点,则关联的生成子图的数量是该顶点选择 k 上的自循环数。否则,找到 G 中非自环的最小边并进行两次递归调用。第一个是在图 G/e 上,其中 e 是收缩的。第二个是在图 G-e 上,其中删除了 e,但前提是 G-e 是连通的。
关于python - 如何遍历具有特定属性的树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17625803/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!