本文整理汇总了Python中node.Node.h方法的典型用法代码示例。如果您正苦于以下问题:Python Node.h方法的具体用法?Python Node.h怎么用?Python Node.h使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类node.Node
的用法示例。
在下文中一共展示了Node.h方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: expand_node
# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import h [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
示例2: hsdag
# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import h [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
示例3: process_node
# 需要导入模块: from node import Node [as 别名]
# 或者: from node.Node import h [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