91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Application of Breath-first search in AI(route search)

發布時間:2020-06-30 14:04:33 來源:網絡 閱讀:697 作者:u5817287 欄目:開發技術

According to bfs, it is a search method to go through all the nodes layer by layer, until the gal has been found.


To make it simple, there is a visiting sequence of bfs:


Attention:

When we have goal test with node 0 we should create 1,2,3 node but nothing to do with goal test, as before, when we have goal test with node 1, we should create 4,5,6 immediately and so on.


Here comes an exercise:

A red bird wants to find the yellow bird in the shortest route and find this route in the shortest time.

we want to use the bfs, while due to the physical situation, we have to offer some methods to avoid heading back and visiting the some position twice.

below is my code in python3:

import frontiers


def solve(problem) :
    state = problem.initial_state # the start location
    map = {} # a dic to store the whole map
    map[state] = set() # a set to store a node
    map[state].add(0) # add the parents information to a set
    map[state].add('root')  # initialize the root node
    queue_node_created = frontiers.Queue()  # store the position of nodes created
    queue_node_created.push(state)  # initialization

    path_stack = frontiers.Stack() # store the path in inverted order
    list_queue = []  # store the path in right order

    while True:
        node_value = queue_node_created.pop()  # pop the node in the queue for goal_test or expending new nodes
        if problem.goal_test(node_value):  # goal test
            while True:
                list_1 = list(map[node_value])
                if type(list_1[0]) == str:
                    parent_node_value = list_1[1]
                    last_action = list_1[0]# find action taken and parent node
                else:
                    parent_node_value = list_1[0]
                    last_action = list_1[1]  # find action taken and parent node
                if last_action == 'root':  # if find the root
                    break
                path_stack.push(last_action)  # store the action taken
                node_value = parent_node_value  # refresh the node_value
                print(last_action)
            while not path_stack.is_empty():
                list_queue.append(path_stack.pop())

            return list_queue  # return the path
        else:
            Next_steps = problem.get_successors(node_value)  # get successors
            for node in Next_steps:
                node_position = node[0]
                if node_position in map.keys():  # in case that the same node is visited more than twice
                    continue

                else:
                    map[node_position] = set()  # push the node info (parent's position and action) into map
                    map[node_position].add(node_value)
                    map[node_position].add(node[1])

                queue_node_created.push(node_position)  # push the new node into the queue

In the appendix, there are two pictures of the result and the shade of color means the frequency of visiting in our algorithm.


At the beginning, I used the list with dictionaries in it. The list represents the whole tree and a dictionary act as a layer. In this way, I can easily store the entire tree. But, after testing, the effect of it was quite low, like the 24th or 25th floor could be the deepest layer in 1 min's running.


I felt hopeless due to the perform of what I had programmed. I spent 2days to finish it. Thanks to my female friend who is much smarter than me, I found a better solution to deal with node storage and new node' test in sequence just as you can see in my code.

Pay more attention to the scope of the variables, semantic problems and solutions to the problem. we can save lots of time.






附件:http://down.51cto.com/data/2366550
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

bfs a pp
AI

成安县| 县级市| 滨州市| 汪清县| 涡阳县| 光泽县| 板桥市| 胶南市| 内乡县| 家居| 邓州市| 射洪县| 扎兰屯市| 清新县| 志丹县| 和林格尔县| 靖宇县| 信阳市| 洛宁县| 习水县| 紫阳县| 沐川县| 阳东县| 正阳县| 吉安市| 衡东县| 滁州市| 大同县| 榕江县| 枞阳县| 怀来县| 大关县| 多伦县| 荣昌县| 寻乌县| 连山| 山东省| 天气| 缙云县| 琼海市| 杂多县|