From 60d806edd2cbf9ff9ab2556608a473542fdb3f98 Mon Sep 17 00:00:00 2001 From: ZhuangYumin Date: Tue, 25 Jun 2024 16:04:24 +0000 Subject: [PATCH] write Uniform-Cost Search strategy --- search/search.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/search/search.py b/search/search.py index b1d2727..67d6b3b 100644 --- a/search/search.py +++ b/search/search.py @@ -133,8 +133,34 @@ def breadthFirstSearch(problem: SearchProblem): def uniformCostSearch(problem: SearchProblem): """Search the node of least total cost first.""" - "*** YOUR CODE HERE ***" - util.raiseNotDefined() + action_list=[] + vis_que=util.PriorityQueue() + has_visited={} + vis_que.push(problem.getStartState(),0) + dis={} + dis[problem.getStartState()]=0 + best_actions={} + best_actions[problem.getStartState()]=[] + while True: + if vis_que.isEmpty(): + break + cur_state=vis_que.pop() + cur_actions=best_actions[cur_state] + # print("cur_state:",cur_state, "cur cost=",dis[cur_state]) + if problem.isGoalState(cur_state): + action_list=cur_actions + # print("minimal cost:",dis[cur_state]) + break + if not cur_state in has_visited: + for next_state,action,cost in problem.getSuccessors(cur_state): + # print(f"next_state={next_state}") + # print(f"try update {next_state} with cost={dis[cur_state]+cost}") + if dis[cur_state]+cost