当前位置: 首页 > wzjs >正文

12306网站开发时间深圳做网站服务

12306网站开发时间,深圳做网站服务,有趣的个人网站,wordpress子页面怎么修改密码文章目录 1. 图的基本概念2. 图的一些现实的应用2.1 ABCDE各个城市之间的关系2.2 社交关系 3. 图的存储结构3.1邻接矩阵3.2 邻接矩阵的实现3.3 邻接表 1. 图的基本概念 1. (graph)图由边(edge)和顶点(Vertex&#xff…

文章目录

  • 1. 图的基本概念
  • 2. 图的一些现实的应用
    • 2.1 ABCDE各个城市之间的关系
    • 2.2 社交关系
  • 3. 图的存储结构
    • 3.1邻接矩阵
    • 3.2 邻接矩阵的实现
    • 3.3 邻接表

在这里插入图片描述

1. 图的基本概念

1. (graph)(edge)和顶点(Vertex)构成
2. 图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V, E),其中:顶点集合V = {x|x属于某个数据对象集}是有穷非空集合
3. E = {(x,y)|x,y属于V}或者E = {<x, y>|x,y属于V && Path(x, y)}是顶点间关系的有穷集合,也叫做边的集合。
4. 图更关注元素与元素之间的关系
5. 图分为有向图和无向图
6. 二叉树也是图吗?
树是一种特殊的(无环联通图)图,但是图不一定是树,再者树关心的是节点中存的值,图关注的是顶点和边的权值

在这里插入图片描述

2. 图的一些现实的应用

2.1 ABCDE各个城市之间的关系

1. 顶点:城市
2. 边:城市之间的关系(比如它们之间的距离,到达的时间,)
3. 保证联通情况下的最小开销,D点要到达B点的最小距离就可以是一个最小生成树的问题
4. 最小生成树:用最小的代价,把图中的两个点间接地连在一起

在这里插入图片描述

2.2 社交关系

1. 顶点:人
2. 边:表示两个人是好友
3. 权值:可以表示两个人之间的亲密度
4. qq,微信等都是无向图,是强社交关系:表示两个人互相都是好友
5. 微博,抖音等都是有向图,是社交媒体关系,是弱社交关系:我可以关注喜欢的博主,但是博主不一定关注了我

在这里插入图片描述

3. 图的存储结构

3.1邻接矩阵

1. 因为节点与节点之间的关系就是连通与否,即为0或者1,因此邻接矩阵(二维数组)即是:先用一个数组将定点保存,然后采用矩阵来表示节点与节点之间的关系。

在这里插入图片描述
2. 无向图的邻接矩阵是对称的,第i行(列)元素之和,就是顶点i的度。有向图的邻接矩阵则不一定是对称的,第i行(列)元素之后就是顶点i 的出(入)度。
3. 如果边带有权值,并且两个节点之间是连通的,上图中的边的关系就用权值代替,如果两个顶点不通,则使用无穷大代替

在这里插入图片描述
4. 用邻接矩阵存储图的好处是能够快速知道两个顶点是否连通O(1)缺陷如果顶点比较多,边比较少时,矩阵中存储了大量的0成为系数矩阵,比较浪费空间,并且要求两个节点之间的路径不是很好求,不适合查找一个顶点所连接的所有边O(N),比如查找3这个顶点的所有边,要看0,1,2,3是否为1,也就是要查找N次

在这里插入图片描述

3.2 邻接矩阵的实现

#pragma once#include<iostream>
#include<vector>
#include<string>
#include<map>
using namespace std;// 邻接矩阵
namespace matrix
{// 无向图,V顶点,W边template<class V,class W,W MAX_W = INT_MAX,bool Direction = false>class Graph{public:// 图创建的方式:// 1.io输入,不方便测试,oj测试比较方便// 2.图的结构写到文件中,读取文件// 3.手动添加边,方便测试// 图的初始化Graph(const V* a, size_t n)// 传一个顶点相关的集合进行初始化{// 顶点的集合_vertexs.reserve(n);for (size_t i = 0; i < n; i++){_vertexs.push_back(a[i]);_indexMap[a[i]] = i;// 顶点和下标的映射}_matrix.resize(n);for (int i = 0; i < _matrix.size(); i++){_matrix[i].resize(n,MAX_W);}}// 获取顶点的下标,检查顶点是否是错误的size_t GetVertexIndex(const V& v){auto it = _indexMap.find(v);if (it != _indexMap.end()){return it->second;}else{// 抛异常throw invalid_argument("顶点不存在");return -1;}}// 给序号为两个节点的添加边(权值)void AddEdge(const V& src,const V& dst,const W& w){size_t srci = GetVertexIndex(src);size_t dsti = GetVertexIndex(dst);_matrix[srci][dsti] = w;// 无向图需要添加两个有关联的边if (Direction == false) _matrix[dsti][srci] = w;}// 打印void Print(){// 顶点for (int i = 0; i < _vertexs.size(); i++){cout << "[" << i << "]" << "->" << _vertexs[i] << '\n';}cout << '\n';cout << "  ";// 横着的下标for (int i = 0; i < _vertexs.size(); i++){cout << i << " ";}cout << '\n';// 邻接矩阵for (int i = 0; i < _matrix.size(); i++){// 竖着的下标cout << i << " ";for (int j = 0; j < _matrix[i].size(); j++){if (_matrix[i][j] == MAX_W){cout << "*" << " ";}elsecout << _matrix[i][j] << " ";}cout << '\n';}}private:vector<V> _vertexs;// 顶点集合map<V, int> _indexMap;// 顶点映射下标vector<vector<W>> _matrix;// 邻接矩阵};void TestGraph(){char vertices[] = { '0', '1', '2', '3' };  // 显式传入 char 数组Graph<char, int, INT_MAX, true> g(vertices, 4);g.AddEdge('0', '1', 1);g.AddEdge('0', '3', 4);g.AddEdge('1', '3', 2);g.AddEdge('1', '2', 9);g.AddEdge('2', '3', 8);g.AddEdge('2', '1', 5);g.AddEdge('2', '0', 3);g.AddEdge('3', '2', 6);g.Print();}
}#include"Graph.h"
using namespace std;int main()
{matrix::TestGraph();return 0;
}

3.3 邻接表

邻接表:使用数组表示顶点的集合,使用链表表示边的关系。
1.无向图邻接表存储

在这里插入图片描述
2. 有向图邻接表存储,一般情况下,存储一个出边表即可,主要是为了找到一个顶点连接出去的路径有哪些

在这里插入图片描述

总结一下,邻接矩阵和邻接表是相辅相成的关系,各有优缺点,两者具有互补的关系

在这里插入图片描述


文章转载自:

http://02mdVWkl.trpLf.cn
http://yrH25YRF.trpLf.cn
http://hYb5bGhG.trpLf.cn
http://6LvSWeoN.trpLf.cn
http://godAAwvj.trpLf.cn
http://GdeV0mD9.trpLf.cn
http://lD2iX3xC.trpLf.cn
http://cJNM9F3V.trpLf.cn
http://7lb0X1Tf.trpLf.cn
http://vSL2sJoV.trpLf.cn
http://fD7NLxhK.trpLf.cn
http://qwmlYW4x.trpLf.cn
http://22hZK6ws.trpLf.cn
http://uCwT3u57.trpLf.cn
http://tvrPml02.trpLf.cn
http://aYXPZpmx.trpLf.cn
http://vqWPeB4E.trpLf.cn
http://wGHAvDgw.trpLf.cn
http://m0XI0LVb.trpLf.cn
http://zGupujhr.trpLf.cn
http://aJTkHQkd.trpLf.cn
http://djsvKF9j.trpLf.cn
http://bhPKeuO2.trpLf.cn
http://yClDrtEI.trpLf.cn
http://sdC3ivDf.trpLf.cn
http://YYhmHfrs.trpLf.cn
http://krmHFRqM.trpLf.cn
http://bOzoNCci.trpLf.cn
http://dDcpB3Ri.trpLf.cn
http://ex1TSazL.trpLf.cn
http://www.dtcms.com/wzjs/722493.html

相关文章:

  • 校园网站建设 德育松滋网站开发
  • 会议网站建设方案免费凡科建站官网
  • 台州椒江网站制作公司it外包公司是做什么的
  • 婚恋网站哪家做的最好中山网络公司网站
  • 职友集 一家做职业点评的网站argo wordpress 汉化
  • 三亚门户网站青岛网站营销推广
  • 做网站申请域名大概花费多少最近一周新闻热点大事件
  • phpcms 做购物网站网站推广排名
  • 杭州建设职业学校网站下面有关网络营销特点的论述正确的有
  • 网站网页切换怎么做的wordpress 招聘公司模版
  • 国外网站备案流程电商运营培训大概多少学费
  • 瑞安 网站建设培训WordPress 支付宝支付
  • 制作个简单公司网站要多少钱什么手机可做网站
  • vps网站如何绑定多个域名网站服务器的DNs怎么查
  • 网站域名有版权吗app 微网站
  • eclipse 开发jsp网站开发网页传奇怎么制作
  • 做的好的h游戏下载网站有哪些在自己电脑上建网站
  • 网站制作的网站开发国外企业档案馆网站的特色
  • 学生心理健康网站建设论文网站一般用什么工具做
  • wordpress管理软件百度seo在线优化
  • 优化方案化学网站优化排名软件
  • 做IPv6网站升级的公司有哪些网站开发常用图标
  • 定制型网站建设平台免费建网站电话
  • ssh鲜花礼品网站建设app详情页设计
  • 六安网站制作多少钱湘潭网站建设 沟通磐石网络
  • 网站建设有哪些板块常州商城网站建设
  • 惠州企业网站建设选哪家常设中国建设工程法律论坛网站
  • 用wordpress建的网站tinypng图片压缩网站
  • 网站建设需要微信账号和密码适合中考做的微机题网站
  • 响应式网站框架wordpress抓取设置