最短路径 Shortest Path

在这里插入图片描述

  • 最短路径问题,如上图(右),求从地图上某一点出发, 到另一点的最短路径
  • 解决这类问题,首先要把真实的地图变成计算机中的Graph(图结构),如上图(中)
  • 在这个Graph中的每一个节点都是有意义的一个地点,这些点之间都可能有一些边,表示两者的距离或者称为通信的代价
  • 这些代价可能是距离,也可能是时间,也可能是油费,路费,不一而足
  • 这个算法出自图领奖得主鼎鼎大名的计算机科学家Dijkstra,中文译为:迪杰斯特拉, 如上图(左)

原理 Principle

在这里插入图片描述

  • 上图右边照片是一位土耳其的教授,照片应该是1999年拍摄的,看上去好像是马克·鲁法洛(Mark Alan Ruffalo, 漫威绿巨人&布鲁斯·班纳博士的扮演者)

在这里插入图片描述

  • 在科学界和电影界总是惊人的相似,邓俊辉老师(上左)和演员汤姆·加瓦那(Tom Cavanagh, 闪电侠哈里森·威尔斯博士的扮演者)(上右),在某些时候也是惊人的相似
  • 这位土耳其教授在讲解Dijkstra算法的时候,手中拿着像是编制的网兜一样的线条,就是用这个工具来计算图中两点之间的最短距离
  • 如果将计算机中的图,变成教授手中拿着的这个工具,有多少地点就准备几个珠子,然后准备一些丝线,按照计算机中的图结构,如上上图(中)连接起来
  • 两点之间如果权重(通信代价)是几,就用几个单位的线连接起来,这样就把每条边转换为对应长度的丝线
  • 有了这样的工具之后,只要用我们的双手一边拉着起点(source),一边拉着终点(destination),像是网兜一样拎起来
  • 接下来,两只手向相反方向移动,这样可以迅速地(基本上就一次操作,在O(1)的时间)找到一条拉直的路,这条路就是最短路径,这是最自然的思维
  • 在一张图(Graph)上,立足于某一点A,计算其他点(B,C,D…)到这一点A的最短路径,我们可以借助重力,也就是只用一只手完成一个点的最短路径计算
  • 只需要将这个工具放置于桌面上,用一只手抓住A点, 匀速向上提起,在第0.00001秒(这里指最短的初始时间), 点A就会离开桌面
  • 在若干时间之后,下一个点就会离开桌面,这个点就是距离A点最近的一个点,这是人的自然直觉,但也是非常严格的
  • 同样的道理,若干时间之后,第三,第四,第五…等分别离开桌面,这个道法自然的过程已经完美的把最短路径问题解决了,并且得到了所有点距离点A的距离
  • Dijkstra算法就是用计算机来模拟这个过程,用计算机来模拟这个自然的东西虽然比不过自然,但也能解决问题
    • 如上上图(左), s代表起起点, 意为source, 图上绳子弯曲并不代表没有绷直(这里的弯曲代表中间可能经过多个点,也就是一系列点和线的组合)
    • 在这一系列点线组合中, 可见s早已离开桌面, 从刚要离开桌面的v, 到u, 最后到达s, 这些线段其实都是绷直的
    • 在这条绷直的线上,针对任何一点,如u,到s也应该有一条最短路径, 这恰好是以u为截止的前缀, 即s-u这一段
    • 也就是说在这条线上任何一点的最短路径仍在这条线上,我们假设这些点计算最短路径时,没有两个相等的路径
    • 这样就不会构成环路,也就是构成了连通的无环图,这样的结构就是一个树形结构(从s可以到达任何点, 并且没有环路)
    • 下面我们来模拟一下这个过程
      • 这个网兜模型平摊在桌面上,在桌子上立上一根标尺(可代表距离或时间)
      • 我们可以拉着s点提升网兜,也可以拉住S点让桌子下降,都是等效的
      • 在这个匀速运动的过程中,各个点按ABCD…的次序逐个离开桌面
      • 这里各个点的垂直距离就是该点的最短路径,下图使用直角拐弯的边用于视觉上区分垂直距离(水平的边是没有代价的),以示区别
      • 在一个将要离开桌子的点上,其最短路径线条上必然连着一个已经离开桌面的点
      • 这样一步一步走的过程,也可以看成一个减而治之的过程
      • 在下图每一个典型的时刻都可分为两大类,绿色和蓝色(红色的s广义上也可以划分到绿色范围中去)
      • 就像是C点将要离开桌面时,它可以被B拉着,也可被D拉着离开,但是在C-S的最短路径中,含有B-C这条线段的明显更短,B是绿色, 而D是蓝色
      • 也就是说,在这个过程中下一个被拉起来的点一定是蓝色的点, 而拉着它的另一个点也一定是绿色的点
      • 所以这种边如果考虑的话,一定是绿色和蓝色之间的边,这个和之前做最小支撑树的时候的"割"的概念很像
      • 每次计算,我们只要考虑这种cross的边(跨绿色和蓝色的边)即可,也就是红色的线条所示
      • 而计算最短路径,我们说最短是该点(蓝色的点)相对于起点S而言的(直接牵引它的有可能是起点S, 也有可能是前一个绷直的绿点)
      • 我们只要把每条红色的边作一次候选,红色的边就是将来潜在被绷直的边
      • 最短路径为:下一个被绷直的红边(最短的红边) + 上一个绿点到起点S的距离(没有绿点则此项省略)
      • 用数学符号表示:dist(v)=min{dist(v)dist(u)+∣∣uvˉ∣∣dist(v)= min \left\{ \begin{aligned} dist(v) \\ dist(u) + ||\bar{uv}|| \end{aligned} \right.dist(v)=min{dist(v)dist(u)+uvˉ,不断对比取最小,持续做下去
      • 我们不考虑负权重的存在,如果存在负权重,则Dijkstra算法会失效
      • 负权重有一定的应用场景,比如在计算路费的时候,客户扫码获得了一些补贴,补贴可反噬代价, 造成负权重的存在
      • 如连接C和D的线条,如果为负数,加成后则生成了更短的路径距离,也就是从C到D, 形成了S-D比S-C还要短
      • 无形中算法复杂度就没法控制了,还有一种更致命的情况,形成了总权重是负权重的一条环路
      • 举个例子,也就是从C-D是负的,从D-C也是负的,而且在一定时间内可反复完成,这种情况要用动态规划来处理
      • 运动过程如下图所示:

在这里插入图片描述

  • 现在的计算机往前面追述是冯诺依曼模型,再往前追溯是图灵机的模型,一脉相承,这些模型的计算在很多方面都会有极限
  • 如果有可能,你可以造一个新的工具,当然可能会超越现在的认知,也可能就是这么一个网兜架构,在O(1)的时间就可解决最短路径的问题
  • 可以对比下,普通计算机基于图灵机模型,而量子计算机基于量子力学,底层不同,效率更是不同,同样的道理,在此处开开脑洞…

算法实现 Algorithm

// Dijkstra by PFStemplate <typename Tv, typename Te> // 点类型、边类型
template <typename PU> // 优先级更新器 (函数对象)void Graph<Tv, Te>::pfs(int s, PU prioUpdater) {// 优先级更新策略,因算法而异priority(s) = 0; status(s) = VISITED; parent(s) = -1; // 起点s加至PFS树中// 将下一定点和边加至PFS树中while(1) {// 依次引入n-1个顶点(和n-1条边)for(int w = firstNbr(s), -1 < w; w = nextNbr(s,w)) {// 对s个邻居w更新顶点w的优先级及其父顶点prioUpdater(this, s, w);}for(int shortest = INT_MAX, w = 0; w < n; w++) {if(UNDISCOVERED == status(w)) {// 从尚未加入遍历树的顶点中if(shortest > priority(w)) {// 选出下一个优先级最高的顶点sshortest = priority(w); s = w;}}}if(VISITED == status(s)) {break; // 直至所有顶点均已加入}status(s) = VISITED;type(parent(s), s) = TREE; // 将s加入遍历树}
}g->pfs(0, DijkstraPU<char, int>() ); // 从顶点0出发,启动Dijkstra算法
template <typename Tv, typename Te> // 顶点类型、边类型struct DijkstraPU {// Dijkstra算法的定点优先级更新器virtual void operator() (Graph<Tv, Te>* g, int uk, int v) {// 对uk的每个尚未被发下的邻居v, 按Dijkstra策略做松弛if(UNDISCOVERED != g->status(v)) {return;}// 优先级数字越小越高,因为我们求的是最短路径,这里用大于号if(g-> priority(v) > g->priority(uk) + g->weight(uk, v)) {g->priority(v) = g-> priority(uk) + g->weight(uk, v);g->parent(v) = uk;}}
}
  • 核心的一步就是中间的循环,不断循环,逐个把除了起点之外的n-1个点, 及覆盖的n-1条边逐一引入
  • 每一次遍历所有邻居,然后把邻居的权重更新,之后做个过滤找到权重的最小者作为新的点加进去
  • 从上面代码可见,要持续更新优先级,这个算法应该用堆来实现
    • 以桌面为界,把还没有被提升上去的所有点组织成一个堆结构,堆的作用是始终维护了一个Max
    • 当堆顶元素被提升起来的时候,很快的以O(logn)的时间把剩下的点又恢复成一个堆
    • 除此之外,还要稍微做一个动作,就是找到刚提升点的邻居,为他们提供一种新的可能,这种可能会优化原来的优先级,变得更高
    • 这个时候,只需要对邻居做一个上滤操作,把他们调整到相应的位置,它们可能上升一点,也可能变成新的堆顶
    • 只要有这个堆结构,这个工作就很容易做,只需要给这个堆加一个新接口:increase(n, p)
      • n是邻居点,p是新的优先级priority
      • 如果它的值变化了, 像刚才那样,在内部做的无非就是从它当前的位置,跟它父亲不断的比

算法演示

在这里插入图片描述

  • 这是一个带权图, 红色表示起点, 蓝色表示桌面上的点, 中间的连线在一开始都是松弛的, 有各自的长度
  • 在第0秒的时候,只有A点跃跃欲试,呼之欲出,马上将要离开,但还没有离开桌面

在这里插入图片描述

  • 在第0秒后及其短暂的一瞬间离开桌面, 我们把它的时间记为0, 这时整个图已经有了一个cut, 整个cut是1对n-1,一个点被提起来,其他点仍在桌面
  • 我们要把目光放在cross边上,即红色的边(连接于提升起来的点和未被提升起来的点之间的边),当一个点被提升上去后会招呼它的同伴(剩下的所有点)
  • 剩下的同伴在数学上都各自有一个到起点的距离, 但是有些我们可能并不知道,这时候我们把这些距离记为无穷大,用$符号来表示,如图
  • 最开始的时候,除了红色的起点之外,我们都记为$, 在红色起点被提升完之后,就会发现它的cross边,这些cross边的终点即蓝色的点就各自拥有了一个新的选择的权重了
  • 它们不再是无穷,而是一个有穷的数字,准确来说,第一步,它们是平凡的,没有别的点可以连接就是到起点的距离,而且起点自己到自己是0
  • 所以这条边是多少,它的权重就会优化成多少,比如:4,6,7 如上图所示,剩下来蓝色的点组织成堆,我们在堆中取最大权重的点(数字越小,优先级越高)
  • 所以,在接下来的时间权重为4的边的蓝色点就会被绷直,它就会被提升,离开桌面, 如下图所示

在这里插入图片描述

  • 当这个点离开了桌面,它的所有邻居也会因此得到好处,它会发现自己非无穷的有意义的通道
  • 这条边权重为12, 基于之前的4,我们将其标记为16,这个16就是这个点到红色起点的距离
  • 这样的话就完成了新的update
  • 接下来继续减而治之,接下来又是selection, 要在所有的还未离开桌面的蓝色点中(堆中)询问一下,你们谁的权重最大
  • 当然那些无穷的不会被考虑,至少是有线连接的,于是就发现了6这个点(计算机遍历发现是6),如果是堆结构,则需要O(logn)的时间即可找到

在这里插入图片描述

  • 此时由于6这个点被提升了,所以它的邻居们也会沾光(有的是有穷的,有的是无穷的),一些无穷的会转变成有穷的数字
  • 由于绿色的6点的原因,将原来蓝色的16点更新成15(6+9=15),这个15点在人性上表现的有些见利忘义,我们称之为三姓家奴
  • 也就是说谁能使自己离红色起点最近,就投靠谁,同样的道理,比如蓝色7这个点在7和8(6+2=8)两者之间果断选择7的权重

在这里插入图片描述

  • 可见权重为7的点又会变成呼之欲出,将要离开桌面的点
  • 当蓝色的7被拉起来之后,又会做同样的事情,在剩余的邻居中互换优先级最大的点(权重最大,路径最小)
  • 同时它的朋友又可能会见利忘义的改变自身的优先级,可见19变成18,同时把它的父亲从6更新为7
  • 无穷大邻居的优先级也同时变成了21

在这里插入图片描述

  • 紧接着15呼之欲出,被提升离开桌面,也会因此引出两条新的有效的cross边,如上图红色边
  • 同时更新它的邻居节点,18变成16,它的父节点从7变成15,而且最后一个无穷大邻居被更新成了17

在这里插入图片描述

  • 同样,16将会被选中离开桌面,重复之前的逻辑,找到它的cross边,经过对比,这些边对优化没有意义,用红色的虚线表示,如上图

在这里插入图片描述

  • 之后是17,如上图,邻居从21变成了20

在这里插入图片描述

  • 最终是20,如上图所示
  • 这个过程完成了一个筛选,原来的边有些用了用实线表示,有的没用,用虚线表示
  • 总共用了n-1条边,每一条边都是伴随一个点转绿,每个边拉直都会带动一个点,反之亦然
  • 所以,由n个点和n-1条边构成一棵没有环路的树,这棵树就称为最短路径树SPT(shortest path tree)
  • 这棵树蕴含了所有最短路径的信息

Dijkstra: d-Heap

在这里插入图片描述
n⋅d⋅logdn+e⋅logdn=(n⋅d+e)⋅logdn=O(e⋅log(e/n+2)n)(whend≈e/n+2)=O(max(nlogn,e))n \cdot d \cdot log_d n + e \cdot log_d n \\ = (n \cdot d + e) \cdot log_d n \\ = O(e \cdot log_{(e/n+2)} n) (when \ d \approx e/n + 2) \\ = O(max(nlogn, e)) ndlogdn+elogdn=(nd+e)logdn=O(elog(e/n+2)n)(when de/n+2)=O(max(nlogn,e))

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. HBuilderX里面创建项目时没有模板解决方案

    问题描述&#xff1a; 初次使用HBuilderX创建项目时&#xff0c;没有模板任何模板 解决方案&#xff1a; 检查plugins目录下&#xff0c;是否存在templates 如果不存在templates&#xff0c;有可能是解压的过程中&#xff0c;出现了问题。重新解压即可 结果&#xff1a;...

    2024/4/7 12:31:20
  2. Leetcode每日一题(20200921,二叉树)

    今日题目 T538 把二叉搜索树转换为累加树(简单&#xff0c;二叉树遍历) 题目描述 给定一个二叉搜索树&#xff08;Binary Search Tree&#xff09;&#xff0c;把它转换成为累加树&#xff08;Greater Tree)&#xff0c;使得每个节点的值是原来的节点值加上所有大于它的节点…...

    2024/4/9 10:14:43
  3. [知识点]ss,dsds/dsda,tsts,qsqs

    ProjectConfig.mk MTK_MULTI_SIM_SUPPORT 1.ss -单卡单待single standby 2.dsds/dsda -双卡 &#xff08;区别&#xff1a;dsds双卡双待Dual SIM Dual Standby&#xff0c;dsda双卡双通Dual SIM dual active&#xff0c;我们公司基本都是dsds) 双卡双待又可以分双模双待&#x…...

    2024/4/26 4:45:47
  4. 虚拟机安装

    虚拟机安装 首先要先下载虚拟机的安装包&#xff0c;尽量下载最新版本VMware。 虚拟机的安装包下载完毕后&#xff0c;安装到电脑里就可以&#xff0c;一直下一步就行了。 然后是镜像的下载&#xff0c;下载好后放在一个地方。 虚拟机安装完毕后&#xff0c;界面是下面这样 …...

    2024/4/9 22:51:18
  5. Unity插件EasyTouch学习笔记

    前言 EasyTouch是一款非常好用识别手机操作的插件&#xff0c;比如各种手势、摇杆等等&#xff0c;熟悉之后可以节约大量造轮子的时间。 我是在2019版本的Unity上进行测试的。 4.x用法 注意事项&#xff1a; 代码需要引用HedgehogTeam.EasyTouch。 场景中必须有EasyTouch物体…...

    2024/4/26 17:06:19
  6. 2020茶艺师(初级)复审模拟考试及茶艺师(初级)考试软件

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020茶艺师&#xff08;初级&#xff09;复审模拟考试及茶艺师&#xff08;初级&#xff09;考试软件&#xff0c;包含茶艺师&#xff08;初级&#xff09;复审模拟考试答案解析及茶艺师&#xff08;初级&#xff09;…...

    2024/4/9 17:01:54
  7. 2020流动式起重机司机模拟考试及流动式起重机司机实操考试视频

    题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2020流动式起重机司机模拟考试及流动式起重机司机实操考试视频&#xff0c;包含流动式起重机司机模拟考试答案解析及流动式起重机司机实操考试视频练习。由安全生产模拟考试一点通公众号结合国家流动式起重机司机考试…...

    2024/4/24 20:09:56
  8. iOS的事件传递和响应机制

    目的&#xff1a;了解事件传递过程和响应机制能够帮助处理一些手势冲突&#xff0c;自定义手势等问题 ###1、事件分类&#xff1f; 1.1 在iOS系统中把事件分为4类事件&#xff1a; UIEventTypeTouches: 触摸手机屏幕事件UIEventTypeMotion&#xff1a;手机的摇晃和运动事件。…...

    2024/4/23 13:10:05
  9. 机器怎样可以学得更好?

    本系列是台湾大学资讯工程系林軒田&#xff08;Hsuan-Tien Lin&#xff09;教授开设的《机器学习基石》课程的梳理。重在梳理&#xff0c;而非详细的笔记&#xff0c;因此可能会略去一些细节。 该课程共16讲&#xff0c;分为4个部分&#xff1a; 机器什么时候能够学习&#x…...

    2024/4/23 17:13:14
  10. 2020-9-21训练

    B. Balls of Buma 祖玛游戏&#xff0c;如果我们只射出一个子弹可以把所有都消掉的话那么我们分段的数量一定是一个奇数&#xff0c;然后对称的地方的种类是相同的并且对称位置相加后的数字一定是大于3的。 #include <bits/stdc.h> //#define int long long using name…...

    2024/4/7 10:12:16
  11. 【转】老邹说Magento的前世今生

    文章目录[隐藏] Magento Commerce的历史Magento 2版本历史Magento电子商务的特点和功能Magento市场Magento认证Magento事件为什么Magento统治电子商务领域 想要深入了解magento&#xff0c;我们有必要回顾一下Magento的前世今生&#xff0c;看它是如何一步步成长起来的。 为什…...

    2024/4/23 17:17:43
  12. Python数据抓取和可视化小案例

    计算机技术日新月异&#xff0c;编程语言众多&#xff0c;每种编程语言又有自己的特点和适用场景&#xff0c;究竟应该如何选择呢&#xff1f;众说纷纭。我们可以参考编程语言的热度排名&#xff0c;了解世界范围内&#xff0c;各种编程语言的热度及发展趋势。 TIOBE编程语言排…...

    2024/4/7 12:31:13
  13. Java基础知识总结(完)

    29.抽象类和接口区别? 抽象类&#xff1a;用abstract修饰&#xff0c;抽象类不能创建实例对象。抽象方法必须在子类中实现&#xff0c;不能有抽象构造方法或者抽象静态方法。 接口&#xff1a;抽象类的一种特例&#xff0c;接口中的方法必须是抽象的。 两者的区别&#xff…...

    2024/4/9 12:28:24
  14. MySQL简单查询

    SQL查询 一,准备 create table product(pid int primary key,pname varchar(20),price double,category_id varchar(32) ); INSERT INTO product(pid,pname,price,category_id) VALUES(1,联想,5000,c001); INSERT INTO product(pid,pname,price,category_id) VALUES(2,海尔,3…...

    2024/4/13 14:36:15
  15. 搭建WEB网站服务(一)

    搭建WEB网站服务 一、apache 1、apache的发展和作用 1&#xff09;apache的发展 Apache1995年加入开源 linux发布1994年 apache归ASF的apache及机会管理 2&#xff09;apache的作用 开源的网站服务器端 2、apache的优势和版本 1&#xff09;apache的优势 开源&#xff1a;免费 …...

    2024/4/7 12:31:11
  16. VMware 安装图解,以及新建虚拟机

    这里写目录标题安装VMware建立虚拟机安装VMware 1.点击安装包&#xff0c;双击安装 2.下一步 3.接受条款 4.选择安装目录&#xff0c;不建议有中文目录和空格目录。下一步 5.下一步 6.这两个选项根据可以爱好习惯选择&#xff0c;下一步 7.安装 8.完成 建立虚拟机 1…...

    2024/4/16 19:36:39
  17. 天池-贷款违约挑战赛-特征工程

    文章目录前言一、学习目标二、代码示例1.引入库2.读入数据3.特征预处理3.1 缺失值3.2 处理时间格式3.3 特征转换为数值4.异常值处理4.1 均方差检测4.2 箱型图5.数据分箱5.1 分箱的目的5.2 分箱的对象5.3 分箱的优点5.4 分箱的原则5.5 分箱的方法总结前言 本文是对天池-贷款违约…...

    2024/4/13 16:05:59
  18. 保健功能纺织品远红外发射率检测

    保健功能纺织品远红外发射率检测 远红外纺织品是具有远红外辐射功能的一类功能性纺织品的统称&#xff0c;在我国,其可能是最早实现产业化开发的功能性纺织品之一。 远红外纺织品可在很宽的波长范围内吸收环境或人体发射出的电磁波并辐射出波长范围在2.5 &#xff5e;30μm 的…...

    2024/4/24 11:46:59
  19. CorelDRAW x4提示非法软件产品被禁用解决方法教程

    说起PS大部分人都有所耳闻&#xff0c;甚至会一些简单的操作。但是CDR x4这名字相信有很多人就很陌生了&#xff0c;所以在这里也很有必要先说一下CDR到底是个什么样的存在。 CDR全名CorelDRAW &#xff0c;是加拿大Corel公司出品的矢量图形制作工具软件&#xff0c;这个图形…...

    2024/4/24 1:42:57
  20. ROS在虚拟机vmware上连接笔记本集成的摄像头

    1、虚拟机连接到摄像头 点击虚拟机vmware的右下角摄像头标记连接到摄像头 2、在ubuntu的终端中查看usb摄像头lsusb 3、安装uvc camera功能包 sudo apt-get install ros-kinetic-uvc-camera 4、安装image相关功能包 sudo apt-get install ros-kinetic-image-* sudo apt-get i…...

    2024/4/25 11:38:10

最新文章

  1. Node框架Express搭建服务器和API

    新建一个空文件夹 初始化项目 yarn init -y > package.json 配置 .gitignore 文件 node_modules/ 安装Express插件 yarn add express 创建 app.js 用于搭建后端服务器 js ├── README.en.md ├── README.md ├── app.js ├── package.json └── yarn.lockcon…...

    2024/4/26 18:14:52
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 基于Android封装Java-WebSocket,开箱即食

    前置条件&#xff0c;build.gradle引入依赖&#xff1a; implementation org.java-websocket:Java-WebSocket:1.4.0 封装websocket类&#xff1a; public class WsHelper {private static Option option new Option();public JWebSocketClient client;public Boolean ping_…...

    2024/4/17 19:10:44
  4. 3d representation的一些基本概念

    顶点&#xff08;Vertex&#xff09;&#xff1a;三维空间中的一个点&#xff0c;可以有多个属性&#xff0c;如位置坐标、颜色、纹理坐标和法线向量。它是构建三维几何形状的基本单元。 边&#xff08;Edge&#xff09;&#xff1a;连接两个顶点形成的直线段&#xff0c;它定…...

    2024/4/23 4:53:09
  5. C#-实现软删除

    文章目录 前言1. 使用布尔字段标记删除状态2. 修改查询以忽略软删除的记录3. 实现软删除的方法4. 考虑使用全局查询过滤器5. 处理关联实体6. 考虑性能和存储软删除的好处&#xff1a;软删除的坏处&#xff1a; 总结 前言 后端中&#xff0c;经常使用软删除来标志删除一些数据。…...

    2024/4/23 6:22:08
  6. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/26 1:36:40
  7. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/25 21:14:51
  8. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/26 8:22:40
  9. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/26 11:10:01
  10. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/25 16:50:01
  11. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/25 13:02:58
  12. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/26 0:25:04
  13. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/26 6:06:14
  14. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/26 17:59:13
  15. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/25 17:43:00
  16. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/26 17:00:23
  17. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/25 17:42:40
  18. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/26 9:43:47
  19. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/26 9:43:47
  20. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/25 13:40:45
  21. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/25 13:01:30
  22. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/25 15:31:26
  23. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/25 17:31:15
  24. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/25 13:22:53
  25. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/26 9:43:45
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57