精华内容
下载资源
问答
  • 2020-03-17 20:43:25

    相信我,看完之后,你会对BFS有种全新的了解,彻底掌握BFS
    只需要这一篇就足够啦,狗头

    BFS路径表示

    广度优先搜索顾名思义就是以迷宫里的无向图某一个点,借助队列,一层一层以该点为中心散开进行搜索,简单的BFS只能显示出最短路径的长度,这里探讨的就是如何实现BFS对最短路径的输出

    简单的BFS

    通过队列来实现,找到迷宫的起点(S)入队,出队列里面的队首,把队首上下左右相邻的点入队列,一直重复此操作,直到队列里面的所有元素都出队表示该迷宫不存在解,如果在队清空之前找到终点(T)的话,一层一层的遍历,找到的话就一定是最短路了,但是简单的BFS只能通过输出(now.d+1)来表示最短路的步数长度,不能表示出最短路径到底是什么?

    #include <iostream>
    #include <string>
    #include <queue>
    using namespace std;
    int n, m;//地图长宽
    string maze[110];//地图
    bool vis[110][110];//访问标记数组
    int dir[4][2] = {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};//方向变化
    bool in(int x, int y) {//确保在地图里面
        return 0 <= x && x < n && 0 <= y && y < m;
    }
    struct node{//定义node类型的结构体
        int x,y,d;//d表示路径
        node(int xx,int yy,int dd){//便于输入结构体里面的值
            x=xx;
            y=yy;
            d=dd;
        }
    };
    int bfs(int sx,int sy){
        queue<node>q;
        q.push(node(sx,sy,0));//将起点放入
        vis[sx][sy]=true;
        while(!q.empty()){//队列如果不为空继续
            node now=q.front();//找到队首
            q.pop();//队首出队
            for(int i=0;i<4;i++){
                int tx=now.x+dir[i][0];//周围遍历
                int ty=now.y+dir[i][1];
                if(in(tx,ty)&&maze[tx][ty]!='*'&&!vis[tx][ty]){//在界内且未遍历到
                    if(maze[tx][ty]=='T'){//如果是终点,BFS返回完成
                        return now.d+1;
                    }else{//如果不是不返回,标记该点入队继续搜索
                        vis[tx][ty]=true;
                        q.push(node(tx,ty,now.d+1));
                    }
                }
            }
        }
        return -1;//队空未找到就返回-1表示无解
    }
    int main() {
        cin >> n >> m;
        for (int i = 0; i < n; i++) {
            cin >> maze[i];
        }
        int x, y;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (maze[i][j] == 'S') {//找到迷宫的起点
                    x = i, y = j;
                }
            }
        }
        cout<<bfs(x,y)<<endl;
        return 0;    
    }
    

    我下午问了杰哥一下,杰哥给我介绍了两种思路下面的三种方法
    真的杰哥这些思路都是很经典很厉害的思想

    思路一

    就直接引用原话啦
    在这里插入图片描述
    我看着杰哥的代码理解了一下,大概意思就是
    1.首先正着从起点进行一遍BFS找到终点,再从终点反正来一遍BFS找到起点
    2.开创俩个数组dis1[N][N]和dis2[N][N]分别用于记录正向搜索每一次的出队时的每一个离起点的层数和反向搜索每一次的出队时的每一个点离起点的层数
    3.此时通过BFS我们已经知道最短路径的长度了,某个点只要能满足
    dis1[x][y]+dis2[x][y]=minrode
    那么这个点就一定是这个迷宫最短路径上面的点
    4.通过这样我们就能知道该迷宫的最短路径表示
    在这里插入图片描述
    代码展示如下:

    include<queue>
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=1005;//地图最大宽度 
    struct node{
    	int x,y;
    };
    queue<node>que;
    int n,m,minrode=0;
    int fx,fy;//记录终点的坐标值 
    char map[N][N];
    int dx[]={0,1,0,-1};
    int dy[]={1,0,-1,0};
    int dis1[N][N];//正向记录层数的数组 
    int dis2[N][N];//逆向记录层数的数组 
    bool mark[N][N];//用来标记是不是在最短路上 
    
    void BFS(int dis[][N],int sx,int sy){
    	
    	for(int i=0;i<n;i++)//初始化记录层数的dis数组 
    		for(int j=0;j<m;j++)
    			dis[i][j]=-1;
    	
    	while(!que.empty())que.pop();//初始化队列 
    	
    	que.push((node){sx,sy});//放入起点 
    	dis[sx][sy]=0;//(sx,sy)为起点 
    	
    	while(!que.empty()){
    		node cur=que.front();//当前状态
    		que.pop();
    		for(int i=0;i<4;i++){
    			node nxt;
    			nxt.x=cur.x+dx[i];
    			nxt.y=cur.y+dy[i];
    			if(map[nxt.x][nxt.y]=='#'){//墙壁无法通行 
    				continue;
    			} 
    			if(nxt.x>=0&&nxt.x<n&&nxt.y>=0&&nxt.y<m&&dis[nxt.x][nxt.y]==-1){
    				if(map[nxt.x][nxt.y]=='T'){
    					fx=nxt.x;fy=nxt.y;
    					minrode=dis[cur.x][cur.y]+1;
    					return ;
    				}
    				else{
    				que.push(nxt); 
    				dis[nxt.x][nxt.y]=dis[cur.x][cur.y]+1;//不断的记录层数
    			}
    			}
    		}
    	}	
    } 
    
    void Print(int x,int y){//对起点进行上下左右找,满足的mark=true的进行输出
    	printf("%d %d\n",x,y);	
    	for(int i=0;i<4;i++){//同样的进行遍历判断 
    		int nx=x+dx[i];
    		int ny=y+dy[i];
    		
    		if(nx<0||nx>=n||ny<0||ny>=m||map[nx][ny]=='#')continue; 
    		
    		if(dis1[nx][ny]<dis1[x][y])continue;//***不能往回走不能成环 
    		
    		if(mark[nx][ny]){
    			Print(nx,ny);
    			break;//避免输出多条最短路 
    		}
    	}
    }
    
    
    int main(){
    	int qx,qy;
    	scanf("%d%d",&n,&m);
    	for(int i=0;i<n;i++){
    		scanf("%s",map[i]);
    	}
    	for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (map[i][j] == 'S') {//找到迷宫的起点
                    qx = i;qy = j;
                }
            }
        }
    	BFS(dis1,qx,qy);//正向遍历 
    	BFS(dis2,fx,fy);//逆向遍历 
    	
    	memset(mark,0,sizeof(mark));//初始化最短路径记录数组 
    	
    	int total=minrode;
    
    	for(int i=0;i<n;i++){
    		for(int j=0;j<m;j++){
    			if(dis1[i][j]+dis2[i][j]==total){ 
    				mark[i][j]=true;//如果符合的话就是最短路,mark数组该点标记为true 
    			}
    		}
    	}
    	
    	Print(qx,qy);//调用print函数进行打印mark上面为true的点 
    	
    	return 0;
    }
    
    

    重点来了,关键关键关键!!!

    if(dis1[nx][ny]<dis1[x][y])continue;//***不能往回走不能成环 
    

    这一步真的print函数的重点所在
    为什么能打印满足mark数组等于true的点,我们要知道一个迷宫不只有一条最短路,有很多点都满足这个这个条件,那么万一出现这种成环的情况怎么办?
    在这里插入图片描述
    按照print函数层次遍历的算法,在A点可以会向右跑了,这样根本不是最短路,但是我们知道按照最短的遍历,dis1数组上面符合最短路的下一步的值一定会比这一步要大,我们在这里就可以做出限制条件,这样一方面就避免了往回回溯的可能,也避免了成环跑掉的可能,如果最短路不成环的话,我们也可以对已经打印出来的点进行标记,标记后不能打印,这样也可以实现避免了往回回溯的可能。

    思路二

    照片如图
    在这里插入图片描述
    这种思路大概就很像树型结构的寻找父亲,保存此时的坐标的信息和上一个坐标的信息,从终点往回不断的找,找父亲的父亲的父亲…直到起点为止,这样找下来也是一种最短路,像我这样就只能想到一些笨办法
    第一种就是直接建立树,这个树结点不仅保存该点的值,还保存下面儿子的地址和上面父亲结点的地址,这样一来直接就可以通过树来找到了,要写树代码量真的太大了,舍去。。。
    第二种就是建立结构体包含四个值,自己的XY坐标值,父亲的XY坐标值,从结点开始利用父亲的XY值遍历整个序列,看谁的XY和这里的对应就找到了父亲结点,依次进行,但是这样的复杂度太高了吧。。。果断舍去。。。
    好的,下面就介绍杰哥给的几种复杂度低的算法

    算法一

    这样怎么说呢,有点类似树的双亲孩子表示法,建立一个数组,里面装着每一个结点,结点后面跟着父亲结点在数组里面的下标值,就是一个结构体数组,通过每一个结点里面的父亲结点在数组里面的下标值就可以找到父亲结点了,通过在数组里面存储下标来回溯,很棒呀。
    在这里插入图片描述
    代码如下:

    /*Input:默认以(0,0)为起点,(4,4)为终点,随便改一下就行 
    5 5
    ...##
    ##.##
    ....#
    .##.#
    .....*/ 
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=1005;
    struct node{
     int x,y,lastId;
    }que[N*N];//最大有N*N个结点,没有墙全是路 
    
    int n,m;
    char map[N][N];
    
    int dx[]={0,1,0,-1};
    int dy[]={1,0,-1,0};
     
     void Print(node cur){
     if(cur.lastId!=-1){ 
      Print(que[cur.lastId]);//递归的算法,先找到第一个结点后输出值
     }
     printf("%d %d\n",cur.x,cur.y);//先找后输出就是顺序,先输出后找就是逆序 
    }
    
    int dis[N][N];
    void BFS(){
     
     memset(dis,-1,sizeof(dis));
     
     int L=1,R=0;
     que[++R]=(node){0,0,-1};//lastId=-1表示没有父亲 
     dis[0][0]=0;//(0,0)为起点 
     
     while(L<=R){
      node cur=que[L++];//当前状态
      
      for(int i=0;i<4;i++){
       node nxt;
       nxt.x=cur.x+dx[i];
       nxt.y=cur.y+dy[i];
       nxt.lastId=L-1;//当前状态的上一个状态在que数组中的下标为L-1 
       
       if(nxt.x==n-1&&nxt.y==m-1){//(n-1,m-1)为终点 
        Print(nxt);
        return; 
       }
       if(map[nxt.x][nxt.y]=='#'){//无法通行 
        continue;
       } 
       
       if(nxt.x>=0&&nxt.x<n&&nxt.y>=0&&nxt.y<m&&dis[nxt.x][nxt.y]==-1){
        que[++R]=nxt; 
        dis[nxt.x][nxt.y]=dis[cur.x][cur.y]+1;
       }
      }
     } 
    } 
    
    int main(){
     scanf("%d%d",&n,&m);
     for(int i=0;i<n;i++){
      scanf("%s",map[i]);
     }
     BFS();
     return 0;
    }
    

    算法二

    我真的有点被这个算法惊讶到了
    利用二维数组可以存储四个值,一般来数二维数组值可以存储三个值(x,y,本身点的信息),但是这里可以使用两个二维数组存储x,y,fx,fy的信息,分而和,和而找,既然知道了这四个信息,我们也就不难去回溯了
    代码如下:

    #include<queue>//还是和上面一样,(0,0)起点,(n-1,m-1)终点 
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    const int N=1005;
    
    struct node{
     int x,y;
    };
    
    int fax[N][N];
    int fay[N][N];
     
    queue<node>que;//对列 
    
    int n,m;
    char map[N][N];
    
    int dx[]={0,1,0,-1};
    int dy[]={1,0,-1,0};
     
    int dis[N][N];
    
    void Print(int x,int y){
     if(x!=-1&&y!=-1){
      Print(fax[x][y],fay[x][y]);
      printf("%d %d\n",x,y);
     }
    }
    
    void BFS(){
     
     memset(dis,-1,sizeof(dis));
     
     que.push((node){0,0});
     dis[0][0]=0;//(0,0)为起点 
     
     fax[0][0]=-1;
     fay[0][0]=-1;
     
     while(!que.empty()){
      node cur=que.front();//当前状态
      que.pop();
      for(int i=0;i<4;i++){
       node nxt;
       nxt.x=cur.x+dx[i];
       nxt.y=cur.y+dy[i];
       
       if(map[nxt.x][nxt.y]=='#'){//无法通行 
        continue;
       } 
       
       if(nxt.x>=0&&nxt.x<n&&nxt.y>=0&&nxt.y<m&&dis[nxt.x][nxt.y]==-1){
        que.push(nxt); 
        dis[nxt.x][nxt.y]=dis[cur.x][cur.y]+1;
        fax[nxt.x][nxt.y]=cur.x;
        fay[nxt.x][nxt.y]=cur.y;
       }
      }
     } 
    } 
    
    int main(){
     scanf("%d%d",&n,&m);
     for(int i=0;i<n;i++){
      scanf("%s",map[i]);
     }
     BFS();
     Print(n-1,m-1);
     return 0;
    }
    

    其他的简单的BFS一样,最为精华的我展示出来了

    void Print(int x,int y){
     if(x!=-1&&y!=-1){
      Print(fax[x][y],fay[x][y]);
      printf("%d %d\n",x,y);
     }
    }
    

    难以言语,分开来,合起来,分开来,再合起来…
    道家的思想,
    **分而治之,和而为之 **

    嗯嗯,就介绍完啦,你是否got到啦

    是不是肥肠的斯国一

    感谢杰哥这么细心的指导

    我终于也掌握BFS啦

    哈哈哈哈

    更多相关内容
  • 6主要包含的功能设计了地图文件打开添加,给地图添加指北针、图例、比例尺;三种不同类型地图格网的添加;设置设置制图模板;地图打印和输出
  • FORMAT:"image/png", //输出图像的类型 SRS:"EPSG:4326", //地图投影类型 WIDTH:256, //输出地图图片的像素宽 HEIGHT:256 //输出地图图片的像素高 }; wmsLayer = new TTileLayerWMS("wms",...
  • 如何输出一幅要素齐全的地图

    千次阅读 2019-08-28 10:05:34
    本篇博文小编为大家分享如何输出一幅要素齐全的地图,首先来了解一下什么是地图呢?地图是按照一定的法则,有选择地以二维或多维形式与手段在平面或球面上表示地球若干现象的图形或图像,它具有严格的数学基础、符号...

    作者:dongyx

            本篇博文小编为大家分享如何输出一幅要素齐全的地图,首先来了解一下什么是地图呢?地图是按照一定的法则,有选择地以二维或多维形式与手段在平面或球面上表示地球若干现象的图形或图像,它具有严格的数学基础、符号系统、文字注记,并能用地图概括原则,科学地反映出自然和社会经济现象的分布特征及其相互关系。
            一幅完整的地图是需要有地图要素的。而地图要素分为数学要素、地理要素和辅助要素。下面我将从以上三种要素为大家详细介绍如何在SuperMap iDesktop 桌面软件(以下简称桌面软件)中完成这几类要素。
            首先在打开桌面软件并打开一个工作空间,在工作空间管理器下右键布局节点–新建布局,选择空白模板。在’对象操作’选项卡下选择地图,添加一幅地图到布局中,如果地图按钮是灰色是因为打开的工作空间中没有地图,需要创建一幅地图并保存,再添加到布局中,如图所示:
    在这里插入图片描述
    一、数学要素
            数学要素:具有按一定的数学法则构成的或具有数学意义的地图要素,包括坐标网、控制点、地图比例尺及地图定向要素等。
            比例尺:是表示图上一条线段的长度与地面相应线段的实际长度之比,比例尺=图上距离/实际距离。点击’对象操作’选项卡下方的’比例尺’按钮,在布局中的指定位置添加比例尺,可以右键比例尺属性,弹出比例尺属性框:在属性框中设置比例尺类型(桌面软件主要提供两种类型的比例尺:数字比例尺、线段式比例尺)、比例尺单位等参数;
    在这里插入图片描述
    在这里插入图片描述
            地图定向要素(指北针):主要是指示地图的方向。点击’对象操作’选项卡下方的’指北针’按钮,在布局中的指定位置添加指北针,一般是在地图的右上方,也可根据地图的轮廓自定义设置。右键指北针–属性,弹出属性框设置指北针的样式:
    在这里插入图片描述
    在这里插入图片描述
    二:地理要素
            地理要素:是指地图内容,包括自然地理要素与社会经济要素。在配置地图的时候已经添加地图的内容,包括街道、行政区域、POI点等。在这就不赘述了。
    三、辅助要素
            辅助要素:也称整饰要素,主要指便于读图和用图的某些内容。例如:图名、图号、图例和地图资料说明,以及图内各种文字、数字注记等。
            文本注记:在’对象操作’选项卡下点击’文本’按钮,可在布局的任何位置添加文本,添加完文本后可在风格设置选项卡中设置文本的风格:包括文本的字体、大小、颜色等属性。
    在这里插入图片描述
            图例:图例是集中于地图一角或一侧的地图上各种符号和颜色所代表内容与指标的说明,有助于更好的认识地图。在’对象操作’选项卡下点击’图例’按钮,在布局中的指定位置添加图例,如图所示:
    在这里插入图片描述
            这时会发现图例内容太多,文本显示太小,文本超出布局外边界等问题,我们可以右键图例–拆分布局元素,这时我们可以修改布局的元素,包括删除图例子项、修改图例子项位置、修改文本颜色等属性。修改后结果如图所示:
    在这里插入图片描述
            当然在桌面软件软件中,不止添加这些要素,还可以添加很多要素来丰富我们的地图,图表格、图片、统计图表等。
    四、地图输出
            在完成一幅地图后就需要输出地图了,在桌面软件中提供了两种方式输出地图:
            1.输出为图片:支持输出JPG、PNG、位图、TIFF影像四种。右键布局窗口–输出为图片,在弹出框中设置图片类型、分辨率等。如果要输出高分辨率的图片建议输出为pdf。
    在这里插入图片描述
            结果如图所示:
    在这里插入图片描述
            2.输出为PDF:只需要设置文件名称和DPI即可输出高分辨率的PDF了。
    在这里插入图片描述
            结果如图所示:
    在这里插入图片描述

    展开全文
  • 用Excel做数据地图

    千次阅读 2020-12-16 16:33:23
    首先要确保你的Excel里有“地图”这个功能项,具体路径在【插入】——【地图】,数据透视图旁边的一个功能。 你可能会遇到以下两情况: 1、 Excel里没有这个功能。那应该是版本的问题,2016版自带这个...

    目录

    一、准备工作

    二、数据准备与导入

    三、地理信息的赋值

    四、高度的赋值

    五、随时间动态变化

    六、多图层叠加

    七、场景与输出


    文介绍了用Excel做数据地图的方法,主要是Power Map的使用。

    一、准备工作

    首先要确保你的Excel里有“三维地图”这个功能项,具体路径在【插入】——【三维地图】,数据透视图旁边的一个功能。

    你可能会遇到以下两种情况:

    1、 Excel里没有这个功能。那应该是版本的问题,2016版自带这个功能,将你的Excel换成2016版即可,2013版的可以安装Power Map这个插件,2010版以下建议还是用16版吧,在安装16版的时候一定要确保以前的offce版本卸载干净,后台回复“2016”获取office2016版安装包。

    2、 有这个功能但点不了。需要手动设置一下,请点击【文件】——【选项】——【加载项】,找到Microsoft Power Map for Excel,在左下角的管理处选择com加载项,然后点【转到】。

    把power map前面的框框勾选上,确定即可,这时再看【三维地图】这个功能就是亮的了。

    图片来源公众号【可乐的数据分析之路】

     

    二、数据准备与导入

    做数据地图最少有两个字段,地址和值。地址的数据可以是经纬度、国家名称、城市和省/市等,值是相应地址对应的数值,可扩展地,还可以有时间数据,时间数据的格式一定是日期格式。以下图数据为例,包含了地址、时间和销售额三个字段。

     

    选中数据表中的某一个单元格或选中整张表,点击【三维地图】按钮,建立一个三维地图。

    三、地理信息的赋值

    将地区字段放入图层1的【位置】选项卡中,并将识别方式选为“省/市/自治区”,将可视化的类型改为“区域”,power map会自动识别地理位置。可视化的方式有5种,堆积柱形图、簇状柱形图、气泡图、热度地图和区域。

    四、高度的赋值

    将销售额字段放入【高度】选项卡,对值的聚合方式有求和、平均、最大最小值等,对这个的理解和数据透视表类似,看具体情境选择即可,这里选求和,可以看到地图颜色有了深浅的变化,是根据销售额求和的值赋予深浅颜色的。

     

    我们再看一下可视化方式选择其他类型是什么样的。

    【簇状柱形图】

     

    【气泡图】

     

    【热度地图】

     

    五、随时间动态变化

    以上是静止的数据地图,但我们的数据里是有时间字段的呀,这个时间字段放哪里呢?我们可以看到刚好有一个【时间】选项卡,我们把时间添加进去试试看。还是以【区域】-【销售额求和】为例,把时间添加进去以后发现左边图中出现了一个时间滚动条,我们点开来看一下。

    六、多图层叠加

    在图层1里将可视化更改为区域,高度为空,类别选择地区,就得到了如下的彩色区域图,这个图层用来打底。

     

    添加一个图层2,在图层2中同样的【位置】选择省市自治区,【高度】选择销售额求和,【时间】选择时间,可视化更改为簇状柱形图。可以看到在底层上多了柱状图。

     

    同样地添加图层3,将图层3的可视化改为气泡图。

     

    现在播放时间轴看看效果,其实和之前是一样的。(但为什么感觉花花绿绿的更丑了呢)

     就是这个意思,我们可以添加不同的图层来展示多个数据效果。

     

    七、场景与输出

    整个数据地图是可以作为视频文件输出的,而场景选项卡是可以定义动画效果,类似PPT中的动画。在【场景选项】的【效果】里,可以选择圆形、滑动、飞入等效果。就还以刚才花花绿绿的图层进行演示吧,将效果选择为“旋转地球”。

    如果数据是全球的数据,那么旋转地球的动画应该会更炫。

    有任何疑问欢迎评论留言

    展开全文
  • 思维导图是一学习方法,它可以将学习者的...思维图的8种类型 根据用途的不同,有八图形表示方式,每一思维导图都需要使用者具备认知能力和强大的逻辑思维。所有的思维导图都可以进行创造性的组合。 圆环图—

    思维导图是一种学习方法,它可以将学习者的思维和抽象的思想以具体的视觉形象化。具体来说,思维导图可以帮助学习者有效地组织他们的想法和信息。

    此外,学习者可以更容易地将他们的信息碎片连接起来,这可以提高他们的理解能力。这可以提高他们的理解能力。通常情况下,思维导图在创造性和思维过程中发挥作用。在学校教育中,中小学教师在教学过程中经常使用这种工具。

    思维图的8种类型

    根据用途的不同,有八种图形表示方式,每一种思维导图都需要使用者具备认知能力和强大的逻辑思维。所有的思维导图都可以进行创造性的组合。

    圆环图——头脑风暴专题

    圆环图是用户在个人和小组活动中理解某一特定主题的有效方法。有两个圈:内圈和大圈。内圈是主要的主题或思路,而周围较大的圆圈通常反应了与主要主题的联系和定义。

    使用这张图的另一个原因是设定用户的目标。这张地图可以将最终目标分解成若干块。在整个拼凑最终目标的过程中,对用户一步步实现是有效的。比如,将今年下半年的目标分为六个小目标,每个小目标可以更具体、更简洁地指导。

    总的来说,气泡图的这一特点用更多的细节来描述和支持你的中心议题。

    你想知道的8种思维导图的类型及其工作方式

    气泡图——描述主体

    气泡图是一种用形容词来描述一个主题的工具。这可以使学习者对某一主题进行更深入的思考,所以在学校里,学生可以找出并总结出相关的主题形容词,如动物。对于学生在课堂上描述小说书中的某个情境或人物也很有用。

    在复杂的计划之前,这个地图是用来连接简单的想法或学习者的头脑风暴。比如,学习者想在里面的主题中学习IG的故事?可以围绕这个话题在大圆圈里写出一些想法和问题。这种头脑风暴的方式就是我们所说的圈图。

    总的来说,这是一个很好的方法,在某个主题的开始,可以打开和保留更多的信息。

    你想知道的8种思维导图的类型及其工作方式

    流程图——顺序和排列

    流程图旨在将一个过程和进展可视化。流程中的信息和步骤可以很好地、具体地进行标注和识别。

    如果人们需要找路,这张地图还可以引导人们一步步进入一些入口或目的地。在学校里,流程图可以引导家长和孩子在学校开放日进行注册。

    总的来说,流程图可以帮助用户表示一系列的指示。

    你想知道的8种思维导图的类型及其工作方式

    多流程图——分析原因和结果

    多流程图的重点是分析原因和结果。左边的矩形代表原因,右边的矩形代表可能的结果。

    在某些场合,效果也可能是贡献之一,这就形成了一个反馈循环。因此,多流程图是分析一个事件的好方法,找出主要因素和可能的影响。

    你想知道的8种思维导图的类型及其工作方式

    支撑图——辨别组成部分

    支撑图的目的是部分与整体主题之间的关系。与树状图相比,支架图倾向于组织和概念化整个主题的组成部分。但是,由于支架图只考虑到真实的物体或情境,所以不能包含抽象的思想和观念。

    在学校里,科学教师可以根据这张支架图准备体验工具,因为这张地图可以显示出所需体验的每一个组成部分。又如,生物课上植物的各部分。植物分成三个部分,每个部分包括更多的东西。孩子们可以有条理地、清晰地理解植物的各个部分。

    总的来说,支架图是一种指导人们的工具,包括某些学科的组成部分。

    你想知道的8种思维导图的类型及其工作方式

    树形图——分类和组织

    和分类图一样,树状图也是将信息组织起来,让人们可以根据对象与主要类别的联系进行分类。通常情况下,主要的主题在上面,而相关的信息只是列在下面。

    在小学阶段,学生可以通过这个树状图了解一组动物科和其他哺乳动物科。这对学生整理和记忆基础知识很有帮助。

    另一个例子是英语学习。学习者可以看到不同类型的动词,并找到这些动词之间的联系。总的来说,树状图可以帮助用户对信息进行排序和总结。

    你想知道的8种思维导图的类型及其工作方式

    双气泡图——比较与对比

    双泡图把两张泡图放在一起,这样用户就可以很方便的比较出异同。组合后的阴影是相似之处,而不同之处则在圆圈的左边各部分。

    与维恩图相比,双气泡图因为将要点分别列出,所以更加直观、有序。学校学生经常使用双泡图进行文学分析。可以比较同类小说中的人物、情境以及情节。哪些相似的经历使他们成功,哪些不同的经历使他们有不同的人生结局。

    总的来说,双泡图在比较和联系上做得很好。

    你想知道的8种思维导图的类型及其工作方式

    桥梁图——见异思迁

    桥梁图帮助用户通过比较找到对象之间的相似性和联系。人们学习新事物时,很自然地就会联系到先前的知识。在这种情况下,类比能力是非常重要的。

    这张图搭建了新旧事物之间的桥梁,让人们可以快速找到联系,并掌握它。例如,日常食物和营养学术语之间的联系。对于儿童来说,橘子中含有维生素C的知识可以快速传递给学生,力度大,印象深刻。

    总的来说,桥梁图将人们以前的知识与新知识联系起来。

    你想知道的8种思维导图的类型及其工作方式

    热评思维导图工具推荐

    全行业唯一的网状思维导图工具——TheBrian

    这是一款基于Java开发的思维导图软件,在Windows/macOS/Linux上实现了完全的跨平台,也是目前全行业真正唯一一个网状思维导图工具。

    与传统思维导图软件相比,TheBrain拥有无限制的思维节点,可以有多个父节点、跳跃节点和子节点。同时它还具有以某个节点为根节点查看的功能,用来处理多重关系如人脉、线索之类的思维整理再合适不过。用起来贼酷炫的!据说,某国的警察还经常用它来做刑侦工具。

    640.webp.jpg

    如果你是一个产品经理,那么小编强烈安利这款工具。因为TheBrain能够极大地提升你的发散性思维,非常有利于锻炼思维能力。并且,TheBrain还支持同步或共享到云服务,使用很方便。

     

    强大的头脑风暴和思维导图工具——XMind 2020

    XMind:ZEN是一款在Xmind基础上重写了思维导图的思维导图和头脑风暴软件,现已更新到2020版本。最新版黑暗的UI设计、独特的ZEN模式、丰富的风格和主题、多分支的颜色等功能,在视觉感官上也会给你带来最佳体验的同时,也让你的工作更加便捷和高效。

    a6df504b2e2d4df9bab9308708d300d4636897977052150136.png

    XMind 2020对所有主题进行了重新设计,为每一张导图都注入新的活力,专业的同时又不失丰富元素。无论你是用Mac还是Windows创建思维导图,所有文字都以同一样式清晰呈现,支持Markdown格式。

     

    专业好用的思维导图软件——Edraw MindMaster

    Edraw MindMaster是亿图最新推出的一款跨平台、多功能的思维导图软件,其基本功能无水印限制和使用时间限制,普通用户可以使用它来绘制精美的思维导图、概念图、组织架构图图。

    12structures.png

    Edraw MindMaster具有简洁的操作界面、稳定性高、自定义功能强大等特点,可快速创建内容丰富的思维导图。提供30多种主题风格,可以高度自定义每一个细节,包括填充色、线条色、线条样式、连接线风格、主题形状、布局方式、背景等等,让你的创意灵感随时展现。

     

    全球使用人数最多的思维导图软件——Mindmanager

    MindManager是一个可视化的工具,常用于头脑风暴、知识管理、项目管理和战略决策。它较类思维导图软件最大的优势是与Microsoft软件的完美契合,可以快速将数据导入或导出到Microsoft Word、PowerPoint、Excel、 Outlook、Project和Visio中,输出的图片可以自定义,质量较高。

    它能为商务人士提供一个更有效的、电子化的手段来进行捕捉、组织和联系信息和想法,帮助他们更快的理解、更好的判断和减少会议时间、提高工作效率。

    MindManager有Mac和Windows两个版本:

    • MindManager for Mac是MindManager在Mac平台上的应用,包含了在原始Mac OS界面中MindManager信息思维导图所需的所有基础工具。其基于云计算的协作和文档管理功能,可以让整个团队通过不同设备轻松访问及共享Mindjet思维导图。

    • MindManager for windows能够将独创性理念、战略性思维以及业务信息转换成行动蓝图,让团队和组织更快、更睿智、更和谐地工作。

    大家还有什么思维导图推荐,多多评论咯。

    展开全文
  • 公司项目使用百度地图需要实现自定义框选区域后判断设备点是否在区域内,因用户自定义区域可能是圆型或者是多边形,就需要在用户用鼠标创建完自定义图形后判断图形的类型。 百度已经给出了用鼠标绘制各类覆盖物的...
  • 利用Excel表格中数据生成地图类型可视化图形案例,详细说明从读取数据到创建地图到生成网页文件的全过程。
  • 本片博客主要介绍的是小程序利用百度地图搜索附近公里信息 开篇先提一下,网上有很多关于小程序搜索框的,地图地点信息检索的,路线导航的,以及一个找事吧APP模仿的小程序。我也看过这些内容,整理一下,就是...
  • Super Iservice 发布地图三维服务

    千次阅读 2018-08-01 16:10:55
    SuperMap Iservice 发布地图服务 发布地图流程图 如上图所示,我们有两种地图发布的途径,分别为使用桌面应用程序(idesktop)直接发布和使用Iserver发布。 一、使用idesktop发布Iserver Rest服务 ...
  • java初学者,最近写了一个走迷宫的代码,迷宫地图是存储在二维数组中的,0代表路, 1代表墙,2代表终点,3代表找到的路径。 希望能给一块代码能够弹出一个窗口显示迷宫,并且不同的类型显示不一样的颜色。 类似的也...
  • 维实景建模技术是安防技术中由地理测绘技术、激光雷达遥感技术、大规模视频融合拼接技术、BIM技术、维GIS技术等多种技术通过实景复刻维重建手段相结合的一新兴技术。维实景建模技术脱胎于智慧城市安防...
  • 实验目的:掌握计算机辅助下遥感专题地图的制作。 实验平台:ERDAS 9.1 实验要求:掌握专题地图的编辑;制图文件路径的编辑;系列地图编辑工具的使用。 实验步骤: 1 专题地图的编辑 1.1 准备专题制图数据 (1) ...
  • Android探索之百度地图开发

    千次阅读 2019-08-01 18:02:36
    文章目录前言地图图层介绍地图覆盖物介绍地图事件POI检索公交线路查询线路规划地理编码 前言 之前自己在做一个小项目时涉及到了百度地图的一些内容,当时因为对百度地图的开发流程不是很了解,于是就查阅了一下官方...
  • 数字栅格地图矢量化及维显示教程

    万次阅读 多人点赞 2018-04-22 14:31:19
    对等高线地形图扫描件在ArcMap中依次进行地理配准、地理要素矢量化、拓扑检查、等高线平滑、附高程值、生成TIN、在TIN间拉伸操作,在ArcScene中进行叠加遥感影像、浮动于自定义表面操作,最终得到一幅维地形图。...
  • 前言 小O地图EXCEL版软件是什么,干什么用的? EXCEL与地图结合,效果对比PowerBI、Tableau专业软件,小O地图的表现如何......,有什么脱颖而出功能,带着...小O地图简而言之,能够在EXCEL中实现 地图浏览、地图
  • java版GPS坐标转换为高德地图坐标

    热门讨论 2015-12-25 14:03:24
    此文件为纯java编写的GPS坐标转换到高德地图坐标,直接将文件添加到工程目录,调用转换函数即可,输入是double类型输出是double数组,注意:输入输出数据的单位都是度。
  • ArcGIS Engine下实现地图输出

    千次阅读 2015-07-23 15:34:43
    摘要:我们在用ArcGIS Engine定制开发的时候,常常需要将当前的地图文档输出,或者以bmp的形式拷贝到剪贴板,那么到底该如何实现这些操作呢?这篇文章将会给我们介绍两常用的方法。  我们在用ArcGIS Engine定制...
  • Android App跳转百度地图、高德地图、腾讯地图进行目的地导航。 先放上百度、高德、腾讯地图调起API文档地址,有些参数不懂可以参考。 百度地图:http://lbsyun.baidu.com/index.php?title=uri/api/android 高德...
  • 大疆精灵4航测输出正摄影和维模型教程

    万次阅读 多人点赞 2019-03-15 12:04:39
    随便拿台大疆四旋翼无人机,配上免费的第方航线规划软件,再用网上到处能下载的无人机影像处理软件,就能轻松生成正射影像和倾斜维模型。今天以大疆精灵系列无人机为例,主要介绍使用Pix4dCapture和Altizure软件...
  • Map集合常用的三种遍历方式

    千次阅读 2022-02-01 22:20:28
    } 结果 san—>1212 zhang—>11 总结 再上述三种方式中,采用的Map实现类是Hash Map,哈希表也称为散列表,存储数据是由一个Hash函数进行定位的,所以元素输出的顺序就会导致和存储时的位置不一样,如果想要一样,就...
  • 1、开发背景 2、开发环境 2.1基础开发环境 2.2百度地图环境 2.3高德地图环境 2.4腾讯地图环境 3、工程配置 3.1 添加jar包 3.2 添加so文件 3.3 AndroidMainfest.xml配置 ...现在将市面上应用最广泛的家...
  • 调数据库标准和输出表格

    万次阅读 2020-05-10 21:21:52
    地类图斑属性结构中删除了线状址物和零星地物相关属性字段, 增加了 “线性图斑宽度”、“图斑细化代码”、“图斑细化名称”"“耕地种植属性代码”、“耕地 植属性名称”、“耕地等别”、“城镇村属性码”和“数舞...
  • 评论显示OP使用Windows以及Spyder.由于Spyder重定向stdout并且Windows不支持forking,因此新的子进程将无法打印到...有两选择:>使用logging模块.这将包括创建所有消息并将其记录到一个或多个文件.使用单个日志...
  • 在 ArcScene 中构建地图模型 最终效果展示 软件准备 LocaSpaceViewer 4 下载地址:http://www.locaspace.cn/LSV.jsp 说明:这个地图数据下载软件真的是蛮好用的,可以免费、方便的下载到卫星影像数据和 DEM...
  • 如何使用QGIS下载在线地图

    万次阅读 多人点赞 2017-12-05 09:36:48
    如何使用QGIS下载在线地图本文介绍如何使用QGIS来下载在线地图,如高德地图、Google地图等。首先从QGIS官网下载最新版的QGIS安装,然后配置在线地图地址,最后选择区域另存即可。 QGIS下载安装 在线地图配置 地图...
  • 地图定位技术揭秘()

    千次阅读 2018-11-16 13:12:07
    而定位技术在地图软件里的应用可谓无法替代,尤其是在小范围的室内定位环境下,如何帮助用户高精度搜索导航,是百度地图定位技术的研究重点。 我们一提到定位,大家印象中最熟悉的技术可能就是GPS定位。其实更为准确...
  • 软件实现地图引擎的研究

    千次阅读 2016-10-22 11:30:47
    写在前面: 这篇东西,本来写下来是想去投出版社的。...当前在许多导航类产品中地图引擎的使用已经很多见了,特别是随着近些年硬件技术的发展,加上许多维的图形绘图软硬件库的支持,使得地图
  • Unity 制作一个网格地图生成组件

    千次阅读 多人点赞 2021-08-01 19:03:13
    如果你玩过三国志这种类型的战旗游戏或者模拟城市、部落冲突、海岛奇兵这种模拟经营类的游戏,那么你对网格地图一定不会陌生。在这些游戏中,所有地图场景中的物体都是基于整齐的网格来记录位置等信息。 如果你还是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 41,693
精华内容 16,677
关键字:

地图输出的三种类型