当前位置: 首页>>代码示例>>Python>>正文


Python Node.tree方法代码示例

本文整理汇总了Python中node.Node.tree方法的典型用法代码示例。如果您正苦于以下问题:Python Node.tree方法的具体用法?Python Node.tree怎么用?Python Node.tree使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在node.Node的用法示例。


在下文中一共展示了Node.tree方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: expand_node

# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import tree [as 别名]
 def expand_node(self, node, tree):
     """
     constructs the children of a node according to its conflict set. 
     """
     result = []
     for s in node.set:
         
         new_h = node.h | set([s])
         if new_h in tree.h_cache:           # reusing
             target = tree.h_cache[new_h]
             tree.add_edge_without_checks((node, target), 1, s)
         else:
             n = Node(node.level+1, None, 0, 0)
             n.tree = tree
             n.h = new_h
             tree.add_node(n)
             tree.add_edge_without_checks((node, n), 1, s)
             result.append(n)
     return result
开发者ID:VeraLiconaResearchGroup,项目名称:MHSGenerationAlgorithms,代码行数:21,代码来源:hsdag.py

示例2: hsdag

# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import tree [as 别名]
 def hsdag(self):
     """
     the main function to be called after initialization
     """
 
     tree = self.tree
     max_time = self.max_time
     self.start_time = time.time()
     
     if tree is None:
         self.tree = tree = HsGraph()
         root = Node(0, None, 0, 0)
         root.tree = tree
         root.h = frozenset()
         tree.add_node(root)
 
     if tree.worklist is None:
         tree.worklist = [root]
          
     worklist = tree.worklist
     if max_time:
         end_time = time.time() + max_time
     else:
         end_time = None
     
     while 1:
         node = worklist[0]
         del worklist[0]
         if end_time and  time.time() > end_time:
             self.timeout = True
             break
         if node.tree and node.state == Node.State.OPEN:
             worklist += self.process_node(node)
         if len(worklist) == 0:
             break
         if self.max_num_solutions is not None and len(self.time_map) >= self.max_num_solutions:
             break
     
     return tree
开发者ID:VeraLiconaResearchGroup,项目名称:MHSGenerationAlgorithms,代码行数:41,代码来源:hsdag.py

示例3: process_node

# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import tree [as 别名]
 def process_node(self, node):
     tree = self.tree
     oracle = self.oracle
     max_card = self.max_card
     cache = self.cache
            
     if node.level >= 2:
         # closing
         if self.h_issuperset(node):
             node.state = Node.State.CLOSED
             return []
     
     sigma = None
     if cache:
         sigma = self.query_cache(node.h)
     
     if sigma:
         # node is inconsistent!
         if max_card and node.level >= max_card:
             # but we stop at this level
             return []
         else:
             node.set = sigma
             # pruning
             if self.prune or self.debug_pruning:
                 self.prune_tree(node)
             if node.tree is None: # (it might have been removed from the tree during pruning)
                 return []
             # expand node
             generated_nodes = []
             for s in sigma:
                 new_h = node.h | set([s])
                 if new_h in tree.h_cache:           # reusing
                     target = tree.h_cache[new_h]
                     tree.add_edge_without_checks((node, target), 1, s)
                 else:
                     n = Node(node.level+1, None, 0, 0)
                     n.tree = tree
                     n.h = new_h
                     tree.add_node(n)
                     tree.add_edge_without_checks((node, n), 1, s)
                     generated_nodes.append(n)
             return generated_nodes
     else:
         # node may/may not be consistent
         if max_card and node.level >= max_card:
             # see if consistent, but use get_conflict_set
             sigma = oracle.get_conflict_set(node.h)
             if cache and sigma:
                 tree.cs_cache.append(sigma)
             if sigma is None:
                 node.state = Node.State.CHECKED
                 if self.time_map is not None:
                     self.time_map[node.h] = time.time() - self.start_time
                 return []
             else:
                 return []
         else:
             # maybe we need to expand
             sigma = oracle.get_conflict_set(node.h)
             if cache and sigma:
                 tree.cs_cache.append(sigma)
             if sigma is None:
                 # oh, its consistent, says TP
                 node.state = Node.State.CHECKED
                 if self.time_map is not None:
                     self.time_map[node.h] = time.time() - self.start_time
                 return []
             else:
                 node.set = sigma
                 # pruning
                 if self.prune or self.debug_pruning:
                     self.prune_tree(node)
                 if node.tree is None: # (it might have been removed from the tree during pruning)
                     return []
                 # ok, expand....
                 generated_nodes = []
                 for s in sigma:
                     new_h = node.h | set([s])
                     if new_h in tree.h_cache:           # reusing
                         target = tree.h_cache[new_h]
                         tree.add_edge_without_checks((node, target), 1, s)
                     else:
                         n = Node(node.level+1, None, 0, 0)
                         n.tree = tree
                         n.h = new_h
                         tree.add_node(n)
                         tree.add_edge_without_checks((node, n), 1, s)
                         generated_nodes.append(n)
                 return generated_nodes
开发者ID:VeraLiconaResearchGroup,项目名称:MHSGenerationAlgorithms,代码行数:92,代码来源:hsdag.py


注:本文中的node.Node.tree方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。