名词解释 Python中什么叫广度优先?
浏览量:2781
时间:2021-04-09 09:06:16
作者:admin
Python中什么叫广度优先?
建议您阅读这本书:《算法侦探》中可以一口气读完的神奇算法书
这个概念不容易理解,让我给您举个例子:
您试图残酷破解4位密码:000100020003000400500060007是深度优先算法,相当于二叉树先进入子节点进行搜索。
尝试0001001011112112222222相当于广度优先算法,即先检索父节点,然后检索所有子节点。
实现图的广度优先搜索算法需使用的辅助数据结构为( ) A. 栈B.队列C. 二叉树,麻烦解释一下,谢谢?
宽度优先使用队列,深度优先使用堆栈。简要描述如下:
广度优先:将节点添加到队列时,应将其标记为已遍历。在遍历过程中,对于队列的第一个元素,它应该遍历一步中可以到达的所有节点。如果它被标记为未遍历,则应将其添加到队列中。从第一个元素开始,遍历后将列出一步中可以到达的所有节点。
深度优先:遍历节点a时,如果标记为未遍历,则将其放在堆栈上,并遍历一步即可直接到达的节点。如果标记为未遍历,则将其放在堆栈上并标记为已遍历,然后执行类似于A的操作。否则,找到一步可以直接到达的节点并执行类似的操作。在遍历一个步骤中可以直接到达的所有节点之前,a将从堆栈中退出。
使用“一步可到达的节点”而不是“相邻节点”时,会考虑到有向图因素。
您可以找到特定的图形,然后使用广度和深度算法再次搜索。您可以在每个步骤手动修改队列和堆栈,以了解发生了什么。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。
上一篇
网站制作的文章 优美的文章