问题

我正在尝试一次通过决策树一个节点.

每个节点可以有2-3路径

在有3个路径的节点上,其中一个路径总是一个终点,一个有时是终点

我们不能向后移动,但可以从头开始

我们现有的功能是

 getCurrentNode()        #returns string of current node's path from start (ex. 'A-B-A-A-B')
getCurrentNodePaths()       #returns number of possible paths from this node
startOver()         #puts us back at node 0
takePath(int pathNumber)    #traverse the decision tree down a desired path
 

我编写了这个伪代码,它应该递归地遍历每个节点,但只适用于“左”最多的路径

 # Start
def walk(pathNumber):
  takePath(pathNumber)
  next_nodes_paths = getCurrentNodePaths()
  if next_nodes_paths.length > 0:
    walk(0)


startOver()
walk(0)
 

如何让它跟踪它的位置,开始,并走一条新的路径

  最佳答案

这会创建决策树的模型.您可以使用select_path方法导航到某个Node.路径是一个像’03231002’这样的字符串.您可以通过使用apply_function方法遍历整个树并在每一点应用函数.有一个行走整个树的示例.

 def select_path(path):
    startOver()
    for pathNumber in path:
        takePath(int(pathNumber))

class Node:
    def __init__(self,path):
        self.path = path
        self.select()
        self.num_children = getCurrentNodePaths().length
        self.children = [Node(path+str(i)) for i in range(self.num_children)]

    def select(self):
        select_path(self.path)

    def apply_function(self, func, recursive=False):
        self.select()
        func()
        if recursive:
            for child in self.children:
                apply_function(self, func, recursive=True)

root = Node('')

#walk whole tree and apply function function:
#def function:
#    pass
#root.apply_function(function, recursive=True)
 

  相同标签的其他问题

pythonfunctional-programmingtreedecision-tree