当我们有队列以FIFO为基础进行处理时,为什么在BFS的情况下需要内部大小循环?

拉克什·维玛(Rakesh Verma)

这是BFS的算法模板。在此,我们有一个while循环,用于检查队列是否为空。我的问题是为什么我们需要内部for循环,一直循环到队列大小。而当队列以FIFO方式处理元素时。

int BFS(Node root, Node target) {
    Queue<Node> queue;  // store all nodes which are waiting to be processed
    int step = 0;       // number of steps neeeded from root to current node
    // initialize
    add root to queue;
    // BFS
    while (queue is not empty) {
        step = step + 1;
        // iterate the nodes which are already in the queue
        int size = queue.size();
        for (int i = 0; i < size; ++i) {
            Node cur = the first node in queue;
            return step if cur is target;
            for (Node next : the neighbors of cur) {
                add next to queue;
            }
            remove the first node from queue;
        }
    }
    return -1;          // there is no path from root to target
}
斯科特·亨特

因为否则step将不正确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在有usbhid的情况下我们需要usbkbd驱动程序?

来自分类Dev

当我们有一个红色区域时,为什么我们需要堆栈分配?

来自分类Dev

当我们有一个红色区域时,为什么我们需要堆栈分配?

来自分类Dev

为什么我们会在没有-的情况下?

来自分类Dev

当我们有组件时,为什么还需要服务?

来自分类Dev

什么是 PDF 内容流,在什么情况下我们需要更新此流...?

来自分类Dev

当我们已经具有MVC提供的默认功能时,为什么我们需要Ajax / jQuery调用colntroller方法?

来自分类Dev

字符串比较:为什么在以下情况下我们会有不同的输出

来自分类Dev

在什么情况下我们需要使用`multiprocessing.Pool.imap_unordered`?

来自分类Dev

在什么情况下我们需要使用`multiprocessing.Pool.imap_unordered`?

来自分类Dev

当我们要私有继承基类时,为什么要进行名称公开?

来自分类Dev

当我们要私有继承基类时,为什么要进行名称公开?

来自分类Dev

我们可以在没有事件处理程序的情况下模拟按键吗?

来自分类Dev

为什么当我们调用“任务”变量时,必须将其写为“ task()”

来自分类Dev

在TreeMap的情况下,如果将我们自己的类对象作为键传递,那么需要实现Comparable或Comparator的接口,为什么?

来自分类Dev

当我们单击注销时,如果我们在不使用数据库的情况下检查记忆,则必须记住用户名

来自分类Dev

当我们有ViewModels时,我们还需要onSaveInstanceState()吗?

来自分类Dev

当我们可以编写[NSString new]时,为什么会有[NSString string]?

来自分类Dev

当我们有IDistributedCache时,为什么要使用IMemoryCache?

来自分类Dev

当我们已经有了“ apt-get”时,为什么要制作“ apt”?

来自分类Dev

如果我可以在没有密码的情况下进行sudo,为什么需要tty来运行sudo?

来自分类Dev

为什么我们不能在没有公共成员函数的情况下访问类外部的私有静态成员?

来自分类Dev

在什么情况下我们需要使用gson在领域中反序列化?

来自分类Dev

为什么我们可以重定向“ less”命令的输入,但是却不能在没有任何参数的情况下减少运行?

来自分类Dev

为什么我们不能在所有情况下都只使用可比性?

来自分类Dev

是否需要交换区?我们可以在没有交换区域的情况下安装Ubuntu吗?

来自分类Dev

我们可以在没有循环的情况下获得oracle中列表属性的总和吗?

来自分类Dev

为什么我们可以在不创建新的 ArrayList 对象的情况下使用 ArrayList 的方法?

来自分类Dev

为什么有时我们需要在根目录下挂载那些文件?

Related 相关文章

  1. 1

    为什么在有usbhid的情况下我们需要usbkbd驱动程序?

  2. 2

    当我们有一个红色区域时,为什么我们需要堆栈分配?

  3. 3

    当我们有一个红色区域时,为什么我们需要堆栈分配?

  4. 4

    为什么我们会在没有-的情况下?

  5. 5

    当我们有组件时,为什么还需要服务?

  6. 6

    什么是 PDF 内容流,在什么情况下我们需要更新此流...?

  7. 7

    当我们已经具有MVC提供的默认功能时,为什么我们需要Ajax / jQuery调用colntroller方法?

  8. 8

    字符串比较:为什么在以下情况下我们会有不同的输出

  9. 9

    在什么情况下我们需要使用`multiprocessing.Pool.imap_unordered`?

  10. 10

    在什么情况下我们需要使用`multiprocessing.Pool.imap_unordered`?

  11. 11

    当我们要私有继承基类时,为什么要进行名称公开?

  12. 12

    当我们要私有继承基类时,为什么要进行名称公开?

  13. 13

    我们可以在没有事件处理程序的情况下模拟按键吗?

  14. 14

    为什么当我们调用“任务”变量时,必须将其写为“ task()”

  15. 15

    在TreeMap的情况下,如果将我们自己的类对象作为键传递,那么需要实现Comparable或Comparator的接口,为什么?

  16. 16

    当我们单击注销时,如果我们在不使用数据库的情况下检查记忆,则必须记住用户名

  17. 17

    当我们有ViewModels时,我们还需要onSaveInstanceState()吗?

  18. 18

    当我们可以编写[NSString new]时,为什么会有[NSString string]?

  19. 19

    当我们有IDistributedCache时,为什么要使用IMemoryCache?

  20. 20

    当我们已经有了“ apt-get”时,为什么要制作“ apt”?

  21. 21

    如果我可以在没有密码的情况下进行sudo,为什么需要tty来运行sudo?

  22. 22

    为什么我们不能在没有公共成员函数的情况下访问类外部的私有静态成员?

  23. 23

    在什么情况下我们需要使用gson在领域中反序列化?

  24. 24

    为什么我们可以重定向“ less”命令的输入,但是却不能在没有任何参数的情况下减少运行?

  25. 25

    为什么我们不能在所有情况下都只使用可比性?

  26. 26

    是否需要交换区?我们可以在没有交换区域的情况下安装Ubuntu吗?

  27. 27

    我们可以在没有循环的情况下获得oracle中列表属性的总和吗?

  28. 28

    为什么我们可以在不创建新的 ArrayList 对象的情况下使用 ArrayList 的方法?

  29. 29

    为什么有时我们需要在根目录下挂载那些文件?

热门标签

归档