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

怎么建一个小说网站/百度平台商家订单查询

怎么建一个小说网站,百度平台商家订单查询,做pc端网站哪家好,pageadmin的优势1 图的基本概念 1.1 基本概念 1.1.1 定义【多对多的关系】 一个图不可能是空图!!!一个图的顶点集一定是非空集,但是边集可以为空集! 1.1.2 应用 1.2 无向图和有向图 弧头是有箭头的那一边,弧尾是没有箭头…

1 图的基本概念

1.1 基本概念

1.1.1 定义【多对多的关系】

一个图不可能是空图!!!一个图的顶点集一定是非空集,但是边集可以为空集!

1.1.2 应用

1.2 无向图和有向图

弧头是有箭头的那一边,弧尾是没有箭头的那一边!!!

1.3 简单图和多重图

怎末判断是不是社交达人是不是大V?所以研究顶点有多少的相连的边是很有意义的一件事情!

1.4 顶点的度、入度、出度

入度和出度之和!!!

在无向图中:

度之和等于边个数的两倍!!!

在有向图中:

出度和入度是相等的!

1.5 顶点与顶点的关系描述

顶点和顶点之间可能不存在路径!

不重复出现是简单!

强联通!

连通图、强连通图!!
无向图不用形成回路就可以连通  但是有向图只有形成回路才是强联通了!!!

1.6 子图

生成子图!:有所有的顶点但是可能少拿的几个边!!

1.7 连通分量!!!

极大 连通 子图!

1.8 强连通子图

形成回路!!!

1.9 生成树!!【连通图】

顶点是n的树,一定有n-1条边,砍掉一条边则不连通,加上一个边必然形成回路!!!

树是:没有回路但是连通的无向图!!!!

1.10 生成森林【非连通图】

连通分量的生成树构成了生成森林!

1.11 边的权、带权图/网

带权路径之和!

1.2 几种特殊形态的图

完全

任何两个顶点都存在边!--完全

稀疏、稠密

树、有向树

有向树不连通哦!有一个顶点入度为0说明谁都达到不了哦!那肯定不连通咯

总结

2  图的存储及基本操作

2.1 邻接矩阵法

有边则对应位置为1

用二维数组存放【0,1】和一个一维数组存放顶点!

一维数组存放的顶点 对应的坐标就是矩阵的第几列!

入度出度

时间复杂度

是o(|v|) 其中|v|表示的是顶点的个数!

带权图

定义无穷时:可用int的上限定义无穷大!

有时把自己指向自己的权值记为0,也就是说当值为0或无穷是 就是没有自己指向自己的边!

空间复杂度

无向图的邻接矩阵是对称矩阵可以使用压缩存储的方法!!!

详情可见:数据结构(3)栈、队列、数组-CSDN博客

矩阵的性质:相乘

B-B 长度为2的路径一共有3条!

总结

2.2 邻接表法

用一维数组存放顶点的信息 指向顶点的第一条边!

和树的孩子表示法是一样的,指向第一个孩纸!!

先创建结点,然后初始化   【//“结点”---//用邻接表存储的图】!

时间复杂度

入度、出度

度:无向图是很简单的,只需要遍历对应的顶点后边连了几个就行

[超大缺点!!!]

入度:这个比较麻烦,所有顶点的边列表遍历一遍然后计算出所求顶点的入度!

出度:也是和无向图一样

邻接表不唯一,但是邻接矩阵一定唯一!!!!

总结

2.3 十字链表【有向图】

解决了找顶点不方便和计算入度不方便的问题!!

十字链表的画法

时间复杂度

顺着橙色的就可以找到入度,只需要顺着橙色这找卡看有几个;同理出度顺着绿色的找!!

从绿色出发找到出度:

最后一个指向null

从橙色出发找到入度:

其实整体画出来之后可以看出来,绿色数字代表画在了第几行,橙色数字代表画在了第几列,每一个方块表示的是:从绿色到橙色有一条边!

2.4 邻接多重表存储【只 无向图】

每个边对应两分冗余的数据,那么处理起来解很麻烦!

上边的数组的含义就是橙色指向绿色的边!!!

B存在在那个颜色就顺着那个颜色往后找!

边结点只有一个 删除起来就比较简单!

空间复杂度

存储方式大全总结

2.5 图的基本操作

邻接矩阵和邻接表是比较重要的,那两个太复杂考研不考!

遍历所有的边结点!E是一共有多少个边边

只需修改一行和一列的数据,然后在定义的时候给出顶点是空顶点的bool变量即可,这样可以避免大量的数据移动!!!

邻接表 删除的结点有两部分哦!!!

这个是无向图,就是说结点是冗余出现的,因此只需要 遍历与之链接的边结点 找到对应重复的哪一个边结点然后删除就好了

邻接表添加元素可以使用尾插法和头插法,省时间的是头插法!(o(1))(不用遍历!)

出边是行、入边是列!

基本操作总结

黄色的两个算法经常在图的遍历算法中使用到!

直接调用函数接口也是可以的!

3 图的遍历

3.1 图的广度优先遍历BFS

树是特殊的图!

1 234 5678横向的找

2 16 537 48

树vs图

通过一个结点找到相邻的其它结点

树实现:找孩子

图:有回路可能重复访问同一个元素!

无向图的代码实现

所以那个for循环一直到 -- 下一个没有了,返回的是-1时!!

遍历序列的可变性

邻接矩阵的表示方式一定唯一,是递增的顺序排列的!

但是邻接表就不一定了哦!

算法存在的问题:非连通图可能没遍历完,进一步完善!

复杂度分析
空间复杂度:

主要来源于辅助队列!!![不是那个标记数组!!!]就是入队出队那个进行广度优先遍历的那个!!

时间复杂度:

主要来源访问各个顶点以及探索各条边

邻接矩阵不知道那个位置是1所以要全部遍历 则是v*v

邻接表后边的就是相连的!!,所以访问 所有的顶点的预期相连的边 在无向图中 后面一共有2E条;在有向图中 一共有E个!

不要钻到代码里!的循环里 容易乱哦!

广度优先生成树

根据广度优先的顺序生成的

当邻接表的表示方式改变时,过度优先生成树可能不同

广度优先生成森林

有向图BFS代码实现

3.2 图的深度优先遍历DFS

树的深度优先遍历

图的深度优先遍历

递归函数的调用过程要用栈!进行辅助理解!

DFS代码实现:

空间复杂度

时间复杂度

深度优先手写

邻接表不一样的话结果可能也不一样

深度优先生成树

把写出深度优先序列的经过的边标红 最后没有标红的不要 然后展开!

深度优先生成森林

连通分量大于1的时候就可以生成森林了

3.3 图的遍历的图的连通性

4 图的应用

4.1 最小生成树

4.1.1 最小生成树的概念

边是n-1个这才是极小连通子图!

最小生成树题目描述

简单试一下

最小生成树概念

最小生成树可能有多个!

4.1.2 Prim算法【不要求代码!】

怎么确定是哪个顶点呢?从那个顶点好像都一样

 实现的代码思想:

没加入顶点之后 都更新lowCost数列!【检查没有加入的顶点是否和新加入的顶带你有边如果有的话,是否比原来的要小,小的话就更新数列中的值!】

时间复杂度

每一轮的处理中都需要进行两次的循环遍历,一次给isjoin,一次给lowcost;所以合起来是2n

4.1.3 Kruskal算法(克鲁斯卡尔)

找一个最小的边

实现的思想:

初始:将各条边按照权值排序

看两个顶点是否相连用到了并查集的概念!

4.1.4 Prim算法v.s. Kruskal算法

总结:

4.2 最短路径问题

常见的两种问题类型:

4.2.1 BFS算法【广度优先算法】

只适用于无权图!

d[]存储距离

path[]存储前驱结点

vistied[]表示是否被访问过

过程:

1、把初始路径长度d[]记为无穷 path[]的值置为-1

2、将出发顶点的d[]置为0

3、访问下一个顶点并作以下操作:路径长度+1;path[]更新;visited[]更新

4、弹出队列中的下一个顶点重复 visitied的过程!

最后得到两个数组:

使用:

与广度优先生成树的关系

4.2.2 Dijkstra算法

BFS的局限性

Dijkstra算法【有向或者无向图】(不要求代码)

第一轮循环:

先找到和v0直接相连中路径最短的边 纳入

然后从这个顶点出发检查路径的大小【全部】是否优于原来的 如果优于就更新

第二轮:

【从谁开始更新谁的final值就设为true】

看更新之后的dist 找到最小的那个对应的顶点 从这个出发进行新一轮的更新!

更新只需要更新Final[]值为false的!

使用数组信息

反着找!

代码【不要求】

时间复杂度

每一次都需要把dist扫一遍 长度是V

一共弄了V-1遍

所以时间复杂度是O(v^2)

对比prim算法

小坑:有负的权值的话,可能找不到最短的路径

对于v2就是不对的

4.2.3 Floyd算法

动态规划思想!

算法实现过程:

两个矩阵:是横坐标表示的到纵坐标表示的有向图!

然后一个一个顶点当中转点,知道没有点了

初始:

在v0中转

允许在v1中转

允许在v2中转

怎末看表

代码实现
时间复杂度和空间复杂度

看个更复杂的

当没有中转点时,即path[]=-1时说明两个之间没有东西,顶点才写完!

写完红色的检查 两次0-3 有无中转 【即检查path[0][3] = -1则无中转否则就是有 有的话把那个顶点加进来,两两之间再进行检查看是不是直接到达!一直到写出完整的路径信息】

path矩阵递归地找到完整路径!【代码不要求 他也没说!】
Floyd算法可以用于负权图

但也有局限性:不能解决带有“负权回路”的图

因为转的圈数越多,代价就会变得越小,所以求不出来就不存在最短路径

4.2.4 三个算法总结

BFS两个时间复杂度:v^2 是当存储方式是邻接矩阵时;另一个是狼存储方式是邻接表时

4.3 有向无环图描述表达式【没有环路!】

算数表达式可以用树存储,但会重复

干掉一个树,节省存储空间

再干掉一个

两个b还能合并 最后就变成了

很乱的过程但是有真题

真题

应该选A

写出有向无环图的 不会漏方法

不会出现重复的操作数!

操作符肯定不能重复

下面一层一层的检查 运算符是否能合并【只有当左右  相连的东西 都一样的时候才可以合并!】

练习:

但是当运算符的优先顺序进行调整的话,发现最后的结果不一样,说明得到的结果可能不唯一!!!

4.4 拓扑排序

必须式DAG图,即有向无环图!

AOV网

活动有先后顺序! 一定是有向无环图!

如果有环路的话 没完了 

拓扑排序

为了找到做事的先后顺序

拓扑排序序列的结果不唯一!

实现步骤

代码实现:

有无回路看count!

代码少了声明了两个数组:indegree[]和print[]

初始化 第一次循环

count是一个指针的作用用于记录弹出的是谁 存储再print数组中

count++先用count的值 然后再对count的值进行+1的操作!

弹出的那个顶点会从有向无环图(DAG)中删除,那么与其相连的顶带度会-1

最后当count的值是顶点的个数的时候 说明拓扑排序成果;如果不是说明有回路,拓扑排序失败!

时间复杂度

逆拓扑排序:

删除一个顶点,就要删除指向这个顶点的边:

如果采取邻接表 每次都要从头遍历!邻接矩阵只需要遍历他所在的那一列就行!

也可以采取逆存储邻接表

逆拓扑排序的DFS实现

DFS就是按照深度优先遍历的原则 将顶点一个一个压入栈中 后继无人的时候一个个弹出 直到栈为空 栈为空时检查vistied[]标记序列是否都为TRUE 如有FALSE说明还有顶点没有访问过,从这个顶点出发再次DFS 直到后继无人然后弹出栈 

如果有回路怎么办!!!!???怎末识别出来回路

如果下一个顶点是已经true的那一定有回路了 一个顶点灰了两次还得了!

总结

因此拓扑排序也适用于判断一个图里有没有环!!

4.5 关键路径

AOE网

用边表示活动!而AOV是用顶点表示活动!

AOE网的性质:

只有一个源点和汇点!

源点到汇点--就是路径 最大路径长度是关键路径!

最早时间!

最早 从前往后推,最晚从后向前推!

求所有事件的最早发生时间:

【有两条路的话就选最大的】

有拓扑排序 开始的点是0 接着往下找就可以可

拓扑序列得到可以通过DFS深度优先得到【做事的先后顺序构成了拓扑序列】

所有时间的最迟发生时间

有两条路的话就选最小的

所有活动的最早发生时间

弧尾 连接的时间的最早发生时间就是活动的最早发生时间!

所有活动的最迟发生时间

基于弧头时间的最晚发生时间 - 这个活动所需的时间就行!

所有活动的时间余量

最晚-最早   这样就可以得到那些活动一定不能拖延!

关键活动、关键路径的特性

总结!!!

相关文章:

数据结构(6):图

1 图的基本概念 1.1 基本概念 1.1.1 定义【多对多的关系】 一个图不可能是空图!!!一个图的顶点集一定是非空集,但是边集可以为空集! 1.1.2 应用 1.2 无向图和有向图 弧头是有箭头的那一边,弧尾是没有箭头…...

kaggle使用api下载数据集

背景 kaggle通过api并配置代理下载数据集datasets 步骤 获取api key 登录kaggle,点个人资料,获取到自己的api key 创建好的key会自动下载 将key放至家目录下的kaggle.json文件中 我这里是windows的administrator用户。 装包 我用了虚拟环境 pip …...

前缀表达式(波兰式)和后缀表达式(逆波兰式)的计算方式

缀是指操作符。 1. 前缀表达式(波兰式) (1)不需用括号; (2)不用考虑运算符的优先级; (3)操作符置于操作数的前面。(如 3 2 ) 1.1 中…...

智能井盖管理系统:城市窨井的井下“保镖”

随着城市化进程的加速,城市的生命线基础设施面临着越来越多的挑战。其中,旭华智能智能井盖传感器技术的发展为提升城市基础设施的安全性和管理效率提供了新的解决方案。它专门用于监控市政窨井、燃气井、供水井内的积水状况以及井盖状态,以增…...

vue3-环境变量-JavaScript-axio-基础使用-lzstring-字符串压缩-python

文章目录 1.Vue3环境变量1.1.简介1.2.全局变量的引用1.3.package.json文件 2.axio2.1.promise2.2.安装2.3.配置2.3.1.全局 axios 默认值2.3.2.响应信息格式 2.4.Axios的拦截器2.4.1.请求拦截器2.4.2.响应拦截器2.4.3.移除拦截器2.4.4.自定义实例添加拦截器 3.lz-string3.1.java…...

ubuntu下载docker依赖包

Ubuntu下载docker依赖包 ​ 公司对外客户一直偏向对安全性要求较高,因此在外部署服务得时候,安装docker是一件极为重要得事情,之前得服务器得系统是centos7。在上一家公司的时候,已经把docker所需得rpm包已经集成打包好了。并且d…...

java面向对象进阶进阶篇--《JDK8,JDK9接口中新增的方法、接口的应用、适配器设计模式》

个人主页→VON 收录专栏→java从入门到起飞 接口→接口和接口与抽象类综合案例 一、JDK8接口中新增的方法 在JDK 8中,接口新增了几个重要的特性和方法,其中最显著的是默认方法(Default Methods)和静态方法(Static Met…...

15.2 zookeeper java client

15.2 zookeeper java client 1. Zookeeper官方1.1 依赖1.2 Zookeeper客户端连接测试1.3***************************************************************************************1. Zookeeper官方 1.1 依赖 <!-- 集成方式一:官方集成zookeeper依赖 --><dependenc…...

素材管理太繁琐?有这一个就够了!

引言&#xff1a; 在创意行业中&#xff0c;素材管理一直是设计师们的痛点。从灵感的捕捉到作品的完成&#xff0c;每一步都离不开素材的积累与整理。然而&#xff0c;传统的素材管理方式往往繁琐且效率低下&#xff0c;让人头疼不已。今天&#xff0c;我要介绍的这款智能素材管…...

KubeSphere 部署向量数据库 Milvus 实战指南

作者&#xff1a;运维有术星主 Milvus 是一个为通用人工智能&#xff08;GenAI&#xff09;应用而构建的开源向量数据库。它以卓越的性能和灵活性&#xff0c;提供了一个强大的平台&#xff0c;用于存储、搜索和管理大规模的向量数据。Milvus 能够执行高速搜索&#xff0c;并以…...

前端canvas——贝塞尔曲线

曲线之美&#xff0c;不在于曲线本身&#xff0c;而在于用的人。 所以就有了这期贝塞尔曲线。 新规矩&#xff0c;先上个GIT。 效果图 开局一张图&#xff0c;代码全靠编。 代码 画骨 先想着怎么画一个心形吧&#xff0c;等你想好了&#xff0c;就知道怎么画了。 首先就还…...

Elasticsearch模糊查询之Wildcard

{“wildcard” : { “LPR.keyword” : { “wildcard” : “${Keyword}”} }},你的示例中使用了 wildcard 查询&#xff0c;它适用于模糊搜索&#xff0c;允许使用通配符&#xff08;* 和 ?&#xff09;来匹配字段值。你使用了 keyword 子字段来确保精确匹配&#xff0c;这是一…...

【人工智能】穿越科技迷雾:解锁人工智能、机器学习与深度学习的奥秘之旅

文章目录 前言一、人工智能1. 人工智能概述a.人工智能、机器学习和深度学习b.人工智能发展必备三要素c.小案例 2.人工智能发展历程a.人工智能的起源b.发展历程 3.人工智能的主要分支 二、机器学习1.机器学习工作流程a.什么是机器学习b.机器学习工作流程c.特征工程 2.机器学习算…...

Nginx服务 rewrite、proxy_pass 用rewrite去除URL中的特定参数

Nginx 是一个高性能的开源反向代理服务器&#xff0c;可以用于处理跨域请求、负载均衡和缓存等功能。在本文中&#xff0c;我们将介绍如何使用 Nginx 配置文件来实现反向代理。 我们可以实现跨域请求的处理&#xff0c;同时保护用户的隐私和安全。此外&#xff0c;Nginx 还…...

RocketMQ事务消息机制原理

RocketMQ工作流程 在RocketMQ当中&#xff0c;当消息的生产者将消息生产完成之后&#xff0c;并不会直接将生产好的消息直接投递给消费者&#xff0c;而是先将消息投递个中间的服务&#xff0c;通过这个服务来协调RocketMQ中生产者与消费者之间的消费速度。 那么生产者是如何…...

【C++】选择结构- 嵌套if语句

嵌套if语句的语法格式&#xff1a; if(条件1) { if(条件1满足后判断是否满足此条件) {条件2满足后执行的操作} else {条件2不满足执行的操作} } 下面是一个实例 #include<iostream> using namespace std;int main4() {/*提示用户输入一个高考分数&#xff0c;根据分…...

scrapy解决管道阻塞问题采用threadpool库线程池+twisted同步语法异步编程

实现方法&#xff1a;process_item和download任务函数像下面编写即可&#xff0c;其他管道像往常一样写法 import time import threadpool import random from twisted.internet import deferclass VideoPipeline:def __init__(self):self.pool threadpool.ThreadPool(10) # …...

Axure RP:打造动态交互的大屏可视化设计利器

Axure大屏可视化是指使用Axure RP这款原型设计工具来创建具有视觉冲击力和数据展示功能的大屏幕界面。Axure以其强大的交互设计和丰富的组件库&#xff0c;成为了实现大屏可视化的重要工具之一。以下是对Axure大屏可视化的详细阐述&#xff1a; 一、Axure在大屏可视化中的优势 …...

“八股文”在实际工作中是助力、阻力还是空谈

目录 1.概述 1.1.对实际工作的助力 1.2.存在的问题 2.“八股文”对招聘过程的影响 2.1.“八股文”在筛选候选人时的作用 2.2.面试中的比重及其合理性 2.3.如何平衡“八股文”与实际编程能力的考察 3.“八股文”在日常工作中的实用价值 3.1.在团队协作环境中进行有效沟…...

项目开发:@ControllerAdvice注解的基本应用

目录 简介基本用法全局异常处理全局拦截器全局数据绑定 注解参数1.value(): String[]2.basePackages(): String[]3.basePackageClasses(): Class<?>[]4.assignableTypes(): Class<?>[]5.annotations(): Class<? extends Annotation>[] 三.注解组成总结 简…...

Jmeter三种方式获取数组中多个数据并将其当做下个接口参数入参【附带JSON提取器和CSV格式化】

目录 一、传统方式-JOSN提取器获取接口返回值 1、接口调用获取返回值 2、添加JSON提取器 3、调试程序查看结果 4、添加循环控制器 5、设置count计数器 6、添加请求 7、执行请求 二、CSV参数化 1、将结果写入后置处理程序 2、设置循环处理器 3、添加CSV文件 4、设置…...

C++入门基础:C++中的循环语句

循环语句是编程语言中用来重复执行一段代码直到满足特定条件的一种控制结构。它们对于处理需要重复任务的场景非常有用&#xff0c;比如遍历数组、累加数值、重复执行某项操作直到满足条件等。 但是在使用循环语句的时候需要注意下哈&#xff0c;有时候一不小心会构成死循环或者…...

VUE 基础(二)

1 v-show:根据表达值的真假&#xff0c;切换元素的显示和隐藏 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…...

VMware Cloud Foundation ESXi 主机

一、准备嵌套 ESXi 主机环境# 1)物理 ESXi 主机信息 本次准备用于部署 VCF 嵌套实验环境的物理宿主机的配置信息如下图所示。其实,部署 VCF 环境主要对内存的大小要求比较高,部署完整的管理域相关组件下来差不多就要占用 200 GB左右内存,而对 CPU 和存储的需求可以根据实…...

PyTorch深度学习快速入门(下)

PyTorch深度学习快速入门&#xff08;下&#xff09; 一、现有网络模型的使用及修改&#xff08;一&#xff09;背景知识&#xff08;二&#xff09;修改网络模型的三种方法 二、网络模型的保存与加载&#xff08;一&#xff09;保存网络模型的两种方法&#xff08;二&#xff…...

轻松入门Linux—CentOS,直接拿捏 —/— <1>

一、什么是Linux Linux是一个开源的操作系统&#xff0c;目前是市面上占有率极高的服务器操作系统&#xff0c;目前其分支有很多。是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统 Linux能运行主要的UNIX工具软件、应用程序和网络协议 Linux支持 32…...

pandas安装以及导入CSV

安装pandas pip install pandas速度慢可以切换国内镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas执行导入csv操作 import pandas as pd# 读取csv文件 data pd.read_csv(yourPath)输入data查看数据 导入成功&#xff01;...

新能源车浪潮来袭,同时存在高压低压系统,如何准确进行高低压布线间距EMC分析?

摘要 随着车辆电气化水平的逐步提升&#xff0c;电气零部件布局和布线面临着前所未有的挑战&#xff0c;在不断的压缩电气零部件间间距后&#xff0c;EMC性能成为非常关键的性能指标。特别是对于新能源车型&#xff0c;同时存在高压和低压系统&#xff0c;高低压耦合若处理的不…...

QUIC 协议

详解 QUIC 协议&#xff1a;它为何比 TCP 更优越&#xff1f;...

【软件测试】--接口测试

1. 接口用例设计 接口测试的测试点 功能测试 单接口功能&#xff1a; 手工测试中的单个业务模块&#xff0c;一般对应一个接口 登陆业务 --> 登陆接口加入购物车业务 --> 加入购物车接口订单业务 --> 订单接口支付业务 --> 支付接口 借助工具、代码。绕开前端界面…...