Beispiel #1
0
def depthLimitedSearch(tup_node, dep_limit=DEPTH_LIMIT):
	frontier = []
	frontier.append([tup_node,""])
	allNodes = set()

	while len(frontier) != 0:
		node = frontier.pop()
		tnode = node[0]
		
		res = isGoal(tnode,False)
		
		if res == 1:
			return "".join(node[1])
		elif res == -1:
			return None

		allNodes.add(tnode)
		if len(node[1]) < dep_limit:
			for idx, child in enumerate(reversed(getAllChildren(tnode,allNodes))):
				if child != None:
					frontier.append([child, node[1] + seq_one[-(idx+1)]])

	return "None"
Beispiel #2
0
def breadthFirstSearch(tup_node):

	queue = Queue.Queue()
	queue.put([tup_node,""])
	allNodes = set()

	while not queue.empty():
		node = queue.get()
		tnode = node[0]

		res = isGoal(tnode,False)
		if res == 1:
			return "".join(node[1])
		elif res == -1:
			return None
			
		if tnode not in allNodes:
			allNodes.add(tnode)
			for idx, child in enumerate(getAllChildren(tnode, allNodes)):
				if child != None:
					queue.put([child, node[1] + seq_one[idx]])

	return "None"
Beispiel #3
0
def ASearch(node_tup):

	queue = PriorityQueue()
	allNodes = set()
	queue.push((getDirtyNum(node_tup[:-1]), node_tup, ""))

	while not queue.empty():
		node = queue.pop()
		tnode = node[2][1]

		res = isGoal(tnode, False)
		if res == 1:
			return node[2][2]
		elif res == -1:
			return None

		for idx, child in enumerate(getAllChildren(tnode, allNodes)):
			if child != None:
				cost = node[0] - getDirtyNum(tnode[:-1])
				final_val = getDirtyNum(child[:-1]) + (cost + 1)
				queue.push((final_val, child, node[2][2] + seq_one[idx]))
					

	return "None"
Beispiel #4
0
def depthFirstSearch(tup_node):

	#frontier contains [[tuple(), path list]]
	frontier = []
	frontier.append([tup_node,""])
	allNodes = set()

	while len(frontier) != 0:
		node = frontier.pop()
		tnode = node[0]
		
		res = isGoal(tnode,False)
		if res == 1:
			return "".join(node[1])
		elif res == -1:
			return None
			
		if tnode not in allNodes:
			allNodes.add(tnode)
			for idx, child in enumerate(reversed(getAllChildren(tnode,allNodes))):
				if child != None:
					frontier.append([child, node[1] + seq_one[-(idx+1)]])

	return "None"