美文网首页
算法<八>广度优先搜索算法

算法<八>广度优先搜索算法

作者: 小吖么小一郎 | 来源:发表于2019-07-05 14:23 被阅读0次
package com.example.demo.SortAlgorithm;
import java.util.LinkedList;
/*
 * @Author: i_heh
 * @Date: 2019/7/5
 * @Time: 14:21
 * @Description: 广度优先搜索算法
 *
 */
public class BFS {
    /*****重要组成-方向******/
    int[][] direct={{0,1},{0,-1},{-1,0},{1,0}};//四个方向,上下左右
    /*****重要组成-标记******/
    int[][] arc=new int[4][4];//辅助标记数组
    /******输入数组*****/
    int[][] array={
            {1,2,3,4},
            {5,6,7,8},
            {9,10,11,12},
            {13,14,15,16}
    };
    public static void main(String[] args) throws InterruptedException {
        new BFS().BFS();
    }
    /*****重要组成-封装数组点,用坐标表示位置******/
    class Node{
        int row;
        int column;
        int round;
        Node(int row,int column,int round) {
            this.row=row;
            this.column=column;
            this.round=round;
        }
    }
    public void BFS(){//广度搜索算法
        Node start=new Node(0,0,0);
        /*****重要组成-待搜索队列的每个对象都是接下来要所搜的值******/
        LinkedList<Node> queue=new LinkedList<>();//待搜索队列
        queue.offer(start);
        arc[0][0]=1;
        /*****重要组成-持续搜索的标志。待搜索队列里有东西******/
        while(!queue.isEmpty()){
            Node temp=queue.poll();
            for(int i=0;i<4;i++){//尝试搜索四个方向的点,如果满足就加入待搜索队列中
                int new_row=temp.row+direct[i][0];
                int new_column=temp.column+direct[i][1];
                if(new_row<0||new_column<0||new_row>=4||new_column>=4)
                    continue;//该方向上出界,考虑下一方向
                if(arc[new_row][new_column]==1)continue;
                arc[new_row][new_column]=1;
                Node next=new Node(new_row, new_column,temp.round+1);
                queue.offer(next);
                System.out.println("数值:"+array[new_row][new_column]+",轮次:"+(temp.round+1));
            }
        }
    }
}

相关文章

  • 广度优先搜索算法(BFS)

    广度优先搜索算法(BFS) 标签(空格分隔): algorithm 1.广度优先搜索算法(Breadth Firs...

  • python 广度优先算法

    文章概述 广度优先搜索算法概述 广度优先搜索算法 广度优先算法是基于树或者图的,当然树也是一种特殊的图,因此我们先...

  • 最佳优先搜索算法(Best-First-Search)

    1、算法原理 最佳优先搜索算法是一种启发式搜索算法(Heuristic Algorithm),其基于广度优先搜索算...

  • 【数据结构】广度优先搜索算法BFS

    对于广度优先遍历算法DFS可以参考前一篇文章【数据结构】深度优先搜索算法DFS 广度优先遍历 广度优先遍历(Bre...

  • 算法(三):图解广度优先搜索算法

    算法简介 广度优先搜索算法(Breadth First Search),又称为"宽度优先搜索"或"横向优先搜索",...

  • 数据结构与算法--BFS&DFS

    “搜索”算法 深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构。 图上的搜索算法就是,在图中找出从一个...

  • A*算法 和 最佳优先搜索算法(Best-First-Searc

    BFS算法 算法原理 最佳优先搜索算法是一种启发式搜索算法(Heuristic Algorithm),其基于广度优...

  • 搜索

    一、深度优先搜索 图深度优先遍历、深度优先搜索算法求有权图两点最短路径 二、广度优先搜索 图广度优先遍历、广度优先...

  • 算法图解 (六)

    第六章 广度优先搜索 广度优先搜索算法 (英文: Breadth-First-Search, 缩写为BFS), 又...

  • 数据结构与算法--深度和广度优先搜索

    什么是“搜索”算法? 算法是作用于具体数据结构之上的,深度优先搜索算法和广度优先搜索算法都是基于“图”这种数据结构...

网友评论

      本文标题:算法<八>广度优先搜索算法

      本文链接:https://www.haomeiwen.com/subject/soxehctx.html