【人工智能/算法】搜索求解(Solving Problems by Searching)

news/2024/5/20 5:35:31/文章来源:https://blog.csdn.net/qaqwqaqwq/article/details/128143085

文章目录

  • 一、求解与搜索
  • 二、盲目式搜索
    • 1. 深度优先搜索(Depth First Search, DFS)
      • 回溯搜索(Backtracking Search)
    • 2. 广度优先搜索(Breadth First Search, BFS)
      • 一致代价搜索(Uniform-cost Search)
  • 三、启发式搜索
    • 1. 爬山搜索
    • 启发函数(Heuristic Function)h(n)
    • 评价函数(Evaluation Function)f(n)
    • 2. 贪婪搜索(Greedy Search)
    • 3. A算法(A Search Algorithm)
    • 4. A\*算法(A\* Search Algorithm)

人工智能问题通常是在某个可能的解答空间中寻找一个解的求解过程。

一、求解与搜索

搜索:根据问题实际情况,不断寻找可利用的知识(或条件),构造一条代价最小的推理路线,寻求问题解决的过程

搜索技术的关键:2W

  • What:搜索什么——搜索目标
  • Where:在哪里搜索——搜索空间

搜索两个方面:

  • 找到从初始事实到问题最终笞案的一条推理路径
  • 找到的这条路径在时间和空间上复杂度最小

许多搜索问题都可以转化为图搜索问题

搜索类型:

  • 按问题表示方法分类:
搜索算法
状态空间搜索
(状态空间法)
与/或树搜索
(问题归纳法)
  • 按是否使用启发式信息分类:
搜索算法
盲目搜索
(无信息搜索)
启发式搜索
(有信息搜索)

存在问题:深度问题、死循环问题
解决方法:对搜索深度加以限制、记录从初始状态到当前状态的路径

搜索算法的通常类型

搜索算法
盲目搜索/无信息搜索
启发式搜索/有信息搜索
深度优先搜索
深度限制搜索
广度优先搜索
贪婪搜索
A搜索
A*搜索

图搜索包括穷举搜索和启发式搜索

状态空间法:利用状态变量和操作符好表示系统或问题的有关知识的符号体系
状态空间用四元组表示:(S,O,S0,G)(S,O,S_0,G)(S,O,S0,G)(分别为状态集合、操作算子集合、初始状态集合、目标状态集合)(S0⊂SS_0\subset SS0SG⊂SG\subset SGS

状态空间图:状态=节点,边=状态之间的关系(操作算子)

图搜索策略:初始节点出发、按照问题的约束条件寻找到达目标点(状态)路径的方法

路径:一个状态序列(初始状态→目标状态)

一般是便搜索边生产图

搜索问题的描述:

  • 状态
  • 动作
  • 状态转移
  • 路径
  • 代价(通过每条路径的时间)
  • 目标测试(评估当前状态是否为所解的目标状态)

搜索树:

  • 根节点:初始状态
  • 目标节点:目标状态
  • 父节点
  • 子节点
  • 兄弟节点
  • 扩展:从父节点产生子节点

搜索空间:一系列状态的汇集

搜索算法的评价指标:

  • 完备性:求解能力,可以确保一个解决方案
  • 最优性:求解质量,提供最佳解决方案
  • 时间复杂度:是花费的时间度量
  • 空间复杂度:所需的最大存储空间

时间/空间复杂度的确定:

  • 分支因子bbb:搜索树中每个节点最大的分支数目
  • 目标节点所在的最浅深度ddd:搜索树中最早出现的目标所在层数
  • 状态空间中任何路径的最大长度mmm:字面意思
  • 状态空间的大小nnn:状态空间中状态的数目

二、盲目式搜索

特点:没有利用任何与问题有关的知识或信息

1. 深度优先搜索(Depth First Search, DFS)

基本思想:优先扩展深度最深的节点

从根节点开始,在回溯之前沿每个分支搜索至深度界限

回溯搜索(Backtracking Search)

是深度优先搜索的一种,核心思想是:发现原先选择并不优或达不到目标,就退回一步重新选择,“走不通就退回再走”

深度优先搜索和回溯法的主要区别是:

  • 回溯法在求解过程中不报亏完整的树结构,而深度优先搜索则记录下完整的搜索树
  • 为了减少存储空间,在深度优先搜索中,用标志的方法记录访问过的状态,这种处理方法使得深度优先搜索法与回溯法没什么区别了
  • 回溯法花费时间较长,所以对于没有明确的动态规划(DP)和递归解法的或问题要求满足某种性质(约束条件)的所有解或最优解时,才考虑使用回溯法

深度优先搜索的特点:

  • 具有通用性
  • 每次选择一个深度最深的节点进行扩展
  • 一般不能保证找到最优解,可能遇到“死循环”,是不完备搜索
  • 可以加入深度限制——到达某深度强制进行回溯,但限制过深则影响效率,限制过浅则可能找不到解
  • 占用大量的时间和空间
  • 存在搜索与回溯交替出现的现象

2. 广度优先搜索(Breadth First Search, BFS)

基本思想:优先扩展同级直接相连的节点

以接近起始节点的程度依次扩展节点、逐层搜索:从根节点开始,在移动到下一个深度级别的节点之前,探索当前深度的所有邻居节点

广度优先搜索的特点:

  • 优先搜索深度浅的节点
  • 具有通用性
  • 当问题有解时一定能找到解,是完备的搜索
  • 若找到目标节点,一定是最浅的目标节点
  • 如果路径是非递减函数,广度优先搜索是最优的

深度优先搜索与广度优先搜索比较:

算法深度优先搜索(DFS)广度优先搜索(BFS)
完备性不一定(若解不在某个分支,而这个分支又是无穷分支,那就永远出不来了)完备(在分支因子bbb优有限的情况下)
最优性不具备最优(如果路径代价是节点深度的非递减函数)
不一定最优(通常情况下)
时间复杂度O(bm)O(b^m)O(bm)O(bd)O(b^d)O(bd)
空间复杂度O(bm)O(b^m)O(bm)O(bd)O(b^d)O(bd)

注解:

  1. b,d,m,lb,d,m,lb,d,m,l分别为分支因子、解的深度、搜索树最大深度、深度限制。解的深度是解所在的深度,而搜索树的最大深度是DFS过程中探到的最大深度。
  2. 如果m>dm>dm>d则DFS的时间复杂度会很高,但如果解决方案密集,可能比BFS快很多
  3. BFS最优的情况是路径代价是节点深度的非递增函数,因为BFS一定搜索到的是深度最浅的目标节点,非递减函数在深度最浅的时候值也最小
  4. BFS占用空间很大,DFS则是一条路走到黑

一致代价搜索(Uniform-cost Search)

策略:总是扩展路径消耗最小的节点NNNNNN点的路径消耗等于前一点的路径消耗+前一点到NNN节点的路径消耗

一致代价搜索是BFS的扩展,使用优先队列而不是普通队列保存边缘中的状态;如果每一步的代价全部相等,则与BFS相同

一致代价搜索与Dijkstra算法的对比:

  • 相同点:
    • 求解初始节点到目标节点最短路径的时间复杂度相同,代码结构相同,每次扩展的节点相同,逻辑相同
  • 不同点:
    • 一致代价搜索在搜索到目标节点后就停止了,而Dijkstra需要求出图中所有节点的最短路径
    • Dijkstra需要事先明确所有节点,需要在内存中存储整张图;而一致代价搜索不需要

三、启发式搜索

启发:应用特定的经验法则或从经验衍生出来的论据,提高解决复杂问题的效率

启发式搜索(Heuristic Search):利用启发方式获得的领域知识,通过限定搜索深度或者限定搜索宽度来缩小问题空间,避开没有结果的搜索路径,也称有信息搜索

  • 引导搜索忽略最没有希望的路径,沿着一条最可能的路径到达解
  • 不是严格按照DFS、 BFS预先确定方式或方法,“凭经验”或“试错”来确定要下一步扩展的节点(不是一次性生产所有的后续节点)

1. 爬山搜索

模拟爬山过程,随机选择一个位置(节点)爬山,每次朝着更高的方向移动,直至山顶,即每次都在临近的空间中选择最优解作为当前解,直到局部最优解

从当前的节点开始,与周围的邻居节点的值进行比较

如果当前节点是最大的,那么返回当前节点,作为最大值(即山峰最高点);反之就用最高的邻居节点来替换当前节点,实现向山峰的高处攀爬的目的,直到达到最高点

爬山搜索的特点:

  • 局部最优方法,不是全面搜索,结果可能不是最佳

  • 一般存在以下问题:

    1. 局部最大:某个节点比周围任何一个邻居都高,却不是整个问题的最高点;
    2. 高地(平顶):搜索一旦到达高地,就无法确定搜索最佳方向,会产生随机走动,使得搜索效率降低;
    3. 山脊:搜索可能会在山脊的两面来回震荡,前进步伐很小
  • 算法会陷入局部最优解,能否得到全局最优解取决于初始点的位置

启发函数(Heuristic Function)h(n)

启发函数:一个关于节点的函数h(n)h(n)h(n),用于评估当前状态与目标状态接近的程度(例如用曼哈顿距离、欧几里得距离等)

h(n)≥0h(n)\ge 0h(n)0

h(n)h(n)h(n)越小,表示当前状态nnn越接近目标状态
h(n)=0h(n)=0h(n)=0表示已达到目标

启发搜索利用启发函数的值将问题状态的描述转化为问题解决程度的描述

评价函数(Evaluation Function)f(n)

评价函数:用于评价节点重要程度的函数,其主要任务是确定节点的优先级程度

评价函数f(n)f(n)f(n)的一般形式:f(n)=g(n)+h(n)f(n)=g(n)+h(n)f(n)=g(n)+h(n)
其中g(n)g(n)g(n)是从初始状态到当前状态已经付出的代价,h(n)h(n)h(n)是启发函数(从当前状态到目标状态的代价的评估)

f(n)=g(n)f(n)=g(n)f(n)=g(n):等代价搜索,按照已付出的代价进行搜索(如广度优先搜索),具有完备性
f(n)=h(n)f(n)=h(n)f(n)=h(n):按照启发函数向最靠近目标的状态(节点)搜索(如贪婪搜索),不具有完备性

2. 贪婪搜索(Greedy Search)

贪婪最佳优先搜索:试图扩展离目标最近的节点以便尽快找到问题的解

评价函数f(n)f(n)f(n)仅使用启发式信息:f(n)=h(n)f(n)=h(n)f(n)=h(n),仅依赖从当前状态到目标状态间的剩余距离

局部择优选取,其自的不是为了找到全部解,而只是找出一种可行解(当前条件下的最优)含当然找不出全局最优解,但具有高效性

大部分的贪婪算法都是基于图的方式寻找最优路径

核心:每一步试图找离目标最近的节点

贪婪最佳优先搜索的特点:

  • 不是最优搜索
  • 对错误的起点比较敏感(可能有死循环)
  • 是不完备搜索
  • 最坏情况下的时间、空间复杂度:O(bm)O(b^m)O(bm),其中bbb为节点的分支因子数目,mmm为搜索空间的最大深度
  • 贪婪算法总是做出当前最好的选择
    • 贪婪选择的依据是当前的状态,而不是问题的目标
    • 贪婪选择是不计后果的
    • 贪婪算法通常以自顶向下的方法简化子问题
  • 贪婪算法求解的问题具备以下性质:
    • 贪婪选择性质:问题的最优解可以通过贪婪选择实现
    • 最优子结构性质:问题的最优解包含子问题的最优解
  • 贪婪选择性质的证明(数学归纳法)
    • 证明问题的最优解可以由贪婪选择开始(即第一步可贪心)
    • 证明贪心选择后得到的子问题满足最优子结构(即步步可贪心)

(洛谷P3817 小A的糖果) 小A有nnn个糖果盒,第iii盒有aia_iai个糖果。小AAA每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中糖的个数之和都不大于xxx,至少得吃掉几颗糖。

分析 假设从第iii盒吃cic_ici个,求min⁡y=∑i=1ncis.t.(ai−ci)+(ai+1−ci+1)≤x,1≤i≤n−10≤ci≤ai,1≤i≤n\min y=\sum\limits_{i=1}^n c_i\\s.t.\ (a_i-c_i)+(a_{i+1}-c_{i+1})\le x,\ 1\le i\le n-1\\ 0\le c_i\le a_i,\ 1\le i\le n miny=i=1ncis.t. (aici)+(ai+1ci+1)x, 1in10ciai, 1in这个问题中,每个状态即为当前各盒的糖果数,目标状态满足相邻两盒糖果数之和小于等于xxx,初始状态为s0=(a1,a2,⋯,an)s_0=(a_1,a_2,\cdots,a_n)s0=(a1,a2,,an),状态转移为从某盒吃掉一个糖果。

设当前状态为ssssss状态下第iii盒剩余的糖果数为bi(s)b_i^{(s)}bi(s)bi(s0)=aib_i^{(s_0)}=a_ibi(s0)=ai。定义启发函数h(s)=∑i=1n−1max⁡(0,bi(s)+bi+1(s)−x)h(s)=\sum\limits_{i=1}^{n-1}\max\left(0,b_i^{(s)}+b_{i+1}^{(s)}-x\right)h(s)=i=1n1max(0,bi(s)+bi+1(s)x),目标状态ttt的启发函数值h(t)=0h(t)=0h(t)=0。对于任何当前状态sss,设下一状态为uuu,如果吃两端(第111盒或第nnn盒)最多只能使h(u)≥h(s)−1h(u)\ge h(s)-1h(u)h(s)1,而吃中间的(第2,3,⋯,n−12,3,\cdots,n-12,3,,n1盒)至多使h(u)≥h(s)−2h(u)\ge h(s)-2h(u)h(s)2,所以吃任何中间的都是最优的。同时,如果ai−1+ai>xa_{i-1}+a_i>xai1+ai>xai+ai+1>xa_{i}+a_{i+1}>xai+ai+1>x,那么吃第iii盒能使h(u)=h(s)−2h(u)=h(s)-2h(u)=h(s)2,最划算。综上,对于ai(2≤i≤n)a_i(2\le i\le n)ai(2in),若bi−1+ai>xb_{i-1}+a_i>xbi1+ai>x,则令ci=ai+1+ai−xc_i=a_{i+1}+a_i-xci=ai+1+aix,使得bi=ai−ci−1b_i=a_i-c_{i-1}bi=aici1。(即ci=max⁡(0,bi−1+ai−x)c_i=\max(0,b_{i-1}+a_i-x)ci=max(0,bi1+aix)。)代码如下:

#include <iostream>using namespace std;const int MAXN = 1e5 + 5;
int n, x, a[MAXN], b[MAXN];int main()
{cin >> n >> x;for(int i = 1; i <= n; ++i) cin >> a[i];long long y = 0;b[1] = a[1];for(int i = 2; i <= n; ++i){if(b[i - 1] + a[i] > x){int c = b[i - 1] + a[i] - x;y += c;b[i] = a[i] - c;}else{b[i] = a[i];}}cout << y << endl;return 0;
}

算法的最优性证明如下:若该策略不是最优,假设有比我们的答案yyy更小的y′y'y,不妨设y′=y−1y'=y-1y=y1,则必∃j(2≤j≤n)\exists j(2\le j\le n)j(2jn)使得ci′=ci−1c_i'=c_i-1ci=ci1。我们知道,ci=max⁡(0,bi−1+ai−x)(2≤i≤n)c_i=\max(0,b_{i-1}+a_i-x)(2\le i\le n)ci=max(0,bi1+aix)(2in),当bi−1+ai−x>0b_{i-1}+a_i-x>0bi1+aix>0时,bi−1+bi=xb_{i-1}+b_{i}=xbi1+bi=x。但ci′=ci−1c_i'=c_i-1ci=ci1,使得bi′=bi+1b_i'=b_i+1bi=bi+1,此时bi−1+bi=x+1>xb_{i-1}+b_i=x+1>xbi1+bi=x+1>x,所以条件不满足,矛盾。因此我们的策略是最优策略。

3. A算法(A Search Algorithm)

A算法的评价函数f(n)=g(n)+h(n)f(n)=g(n)+h(n)f(n)=g(n)+h(n),其中:

  • g(n)g(n)g(n)为从初始状态到当前状态的实际路径代价(并不一定最优,例如可以是当前状态在搜索树中的深度,但不一定是最小深度)
  • h(n)h(n)h(n)是启发函数,代表从当前状态到目标状态估计的最低代价路径的代价
  • f(n)f(n)f(n)是从初始状态经过节点nnn到目标状态的最低代价路径的估计总代价值

优先扩展f(n)f(n)f(n)最小的节点进行扩展

4. A*算法(A* Search Algorithm)

A*搜索:最小化总的解决方案代价估计值的最佳优先搜索

A算法对评价函数中的启发函数未做任何规定,不能评价搜索结果的优劣

A*算法的评估函数f∗(n)=g∗(n)+h∗(n)f^*(n)=g^*(n)+h^*(n)f(n)=g(n)+h(n),其中:

  • g∗(n)g^*(n)g(n):从起始点到节点nnn路径最低代价
  • h∗(n)h^*(n)h(n):从节点nnn到目标节点的最低代价路径的代价
  • f∗(n)f^*(n)f(n):从起始点出发、经过节点nnn、到达目标节点的最佳路径的估计总代价

与A算法相比(参考Stackexchange):

  • g(n)g(n)g(n)是从初始节点到当前节点的(在当前搜索树上的)路径长度,而g∗(n)g^*(n)g(n)是从初始节点到当前节点的最短路径长度,故g(n)≥g∗(n)>0g(n)\ge g^*(n)>0g(n)g(n)>0
  • h(n)h(n)h(n)是从当前节点到目标节点的估计的代价,而h∗(n)h^*(n)h(n)是从当前节点到目标节点的真实的代价,一般h∗(n)h^*(n)h(n)是无法计算的,用h(n)h(n)h(n)代替;h(n)≤h∗(n)h(n)\le h^*(n)h(n)h(n)

保证A*搜索最优化的条件:
A*搜索使用到当前的路径代价g(n)g(n)g(n)+到目标的最低路径代价h(n)h(n)h(n)。若启发函数h(n)h(n)h(n)满足下列条件,则A*算法既完备又最优:

  • 采纳性:启发函数h(n)h(n)h(n)是一个可接受的启发,即不高估到目标的代价(h(n)≤h∗(n)h(n)\le h^*(n)h(n)h(n)),则总代价f(n)f(n)f(n)也不会高估节点nnn的求解的代价
  • 一致性:启发函数h(n)h(n)h(n)是一致的,即通过节点nnn达到目标的代价不高于从节点nnn经过其他节点n′n'n达到目标的代价(类似于三角不等式)

启发式搜索的特点:

  • 优点:
    • 与盲目搜索不同,利用搜索过程中所得到的问题本身的一些特征信息,可缩小搜索范围,减少盲自性,有效提高搜索效率,更容易解决复杂的问题
  • 关键:
    1. 具有启发函数
    2. 具有评价函数
    3. 启发信息(利用额外信息,例如利用曼哈顿距离、切比雪夫距离)
  • 缺点:
    • 可能不会始终提供最佳解决方案,但肯定会在合理的时间内提供良好的解决方案
    • 在不同的启发搜索算法中,使用不同的启发式方法

启发式搜索(以及一致代价搜索)总结:

算法种类估价函数完备性最优性最坏情况下的时间、空间复杂度
一致代价搜索盲目式搜索f(n)=g(n)f(n)=g(n)f(n)=g(n)完备最优(如果路径代价是节点深度的非递减函数)
不一定最优(通常情况下
O(bd)O(b^d)O(bd)bbb为分支因子,ddd为解的深度)
爬山搜索启发式搜索-不完备非最优(仅局部最优)-
贪婪搜索启发式搜索f(n)=h(n)f(n)=h(n)f(n)=h(n)不完备非最优O(bm)O(b^m)O(bm)bbb为分支因子,mmm为搜索空间最大深度)
A算法启发式搜索f(n)=g(n)+h(n)f(n)=g(n)+h(n)f(n)=g(n)+h(n)-不一定-
A*算法启发式搜索f∗(n)=g∗(n)+h∗(n)f^*(n)=g^*(n)+h^*(n)f(n)=g(n)+h(n)(可用h(n)h(n)h(n)代替h∗(n)h*(n)h(n)启发函数满足条件则完备启发函数满足条件则最优-

盲目搜索与启发式搜索的对比:

  • 盲目搜索(非启发式搜索):
    • 只按照预定的控制策略进行搜索,搜索过程中获得的信息并不改变策略
    • 搜索总按照预定路线进行,没有考虑问题本身的特性,缺乏对问题求解的针对性
    • 需求全方位的搜索,没有选择最优的搜索途径,具有盲目性,效率不高
  • 启发式搜索(有信息搜索):
    • 根据问题本身的特性或搜索过程中产生的一些信息改变或调整搜索方向,向最有希望的方向搜索,加速问题求解并找到最优解

搜索算法对比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_229705.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BBR 数学模型直观展示

看 BBR 的理想图示&#xff1a; 但现实中数据包到达并非绝对均匀&#xff0c;考虑统计突发&#xff0c;实际情况如下&#xff1a; ​后文将 Delivery Rate 设为 B(Bandwidth)&#xff0c;将 RTT 设为 D(Delay)。 B/inflt 曲线一定上凸&#xff0c;可想象 1 个 inflt 只有一种…

北京一互联网公司被端,所有开发被全部带走!

△Hollis, 一个对Coding有着独特追求的人△这是Hollis的第 407 篇原创分享作者 l Hollis来源 l Hollis&#xff08;ID&#xff1a;hollischuang&#xff09;近日&#xff0c;北京市朝阳公安分局对外公开&#xff0c;按照公安部“净网”专项行动整体部署&#xff0c;朝阳警方深入…

学习二十大奋进新征程线上知识答题活动回顾

学习二十大奋进新征程线上知识答题活动回顾 活动背景 开展直播宣讲、组织知识竞赛答题……各地通过多种形式广泛开展学习宣传活动&#xff0c;一起学。 为深入学习宣传贯彻二十大精神&#xff0c;近日&#xff0c;我市开展“奋进新征程&#xff0c;共创强国业”学习二十大精神…

Spring MVC统一异常处理的3种方式(附带实例)

在 Spring MVC 应用的开发中&#xff0c;不管是对底层数据库操作&#xff0c;还是业务层或控制层操作&#xff0c;都会不可避免地遇到各种可预知的、不可预知的异常需要处理。 如果每个过程都单独处理异常&#xff0c;那么系统的代码耦合度高&#xff0c;工作量大且不好统一&a…

SAS,Stata,HLM,R,SPSS和Mplus分层线性模型HLM分析学生受欢迎程度数据

全文链接&#xff1a;http://tecdat.cn/?p10809本文用于比较六个不同统计软件程序&#xff08;SAS&#xff0c;Stata&#xff0c;HLM&#xff0c;R&#xff0c;SPSS和Mplus&#xff09;的两级分层线性模型的过程和输出&#xff08;点击文末“阅读原文”获取完整代码数据&#…

2021.06青少年软件编程(Python)等级考试试卷(三级)

2021.06青少年软件编程(Python)等级考试试卷(三级) 一、单选题(共25题,每题2分,共50分) 1.关于open()函数的参数,下列描述正确的是?( D ) A. "w+" 以十六进制格式打开一个文件只用于写入 B. "r+"打开一个文件用于读写。文件指针将会放在文件…

视觉SLAM十四讲ch4笔记——李群与李代数

文章目录视觉SLAM十四讲ch4——李群与李代数4.1 李群李代数基础4.2 指数映射和对数映射4.2.1 so(3)↔SO(3)so(3) \leftrightarrow SO(3)so(3)↔SO(3)4.2.2 se(3)↔SE(3)se(3) \leftrightarrow SE(3)se(3)↔SE(3)4.2.3 小总结&#xff1a;so(3)↔SO(3)so(3) \leftrightarrow SO(…

slam学习 - 基本VO代码学习

本打算学习 orb -slam3 源码&#xff0c;但还是先把《slam 14》上的代码看完再说&#xff0c;至少把整个流程走一遍。 相关参考 https://blog.csdn.net/weixin_44684139/article/details/105305564 https://blog.csdn.net/qq_35590091/article/details/97111744 代码需求分析…

耗时大半个月收整全套「Java架构进阶pdf」

花了我大半个月时间收整了全套的「Java架构进阶pdf」&#xff0c;这一波下来&#xff0c;刷完你就会知道&#xff0c;真真香啊&#xff0c;我的心血果然&#xff0c;没白费&#xff01; 请注意&#xff1a;关于全套的「Java架构进阶pdf」&#xff0c;我会从面试-筑基-框架-分布…

npm vue 路由之一级路由(npm默认已经集成了vue)

npm vue 路由之一级路由&#xff08;npm默认已经集成了vue&#xff09; 文档https://v3.router.vuejs.org/zh/installation.html npm install vue-router3.5.2 --save 1.在App.vue上面添加 <router-view></router-view>2.在main.js上面添加 import VueRouter fro…

Lattice库联合ModelSim仿真FIFO

Lattice联合ModelSim仿真FIFO前言一、添加IP二、库文件添加&#xff08;一&#xff09;方式一&#xff1a;添加器件库到ModelSim&#xff08;二&#xff09;方法二&#xff1a;直接添加器件库到Libray,和tb.v在同一个目录下仿真三、仿真&#xff08;一&#xff09;仿真文件&…

[附源码]Python计算机毕业设计Django基于java的社区管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

计网个人作业03

R14. True or false? a a. Suppose Host A is sending a large file to Host B over a TCP connection. If the sequence number for a segment of this connection is m, then the sequence number for the subsequent segment will necessarily be m 1. 假设主机A通过一…

世界连续动作预测模型-方向模型

🍿*★,*:.☆欢迎您/$:*.★* 🍿 正文 <

[附源码]JAVA毕业设计家庭理财管理系统(系统+LW)

[附源码]JAVA毕业设计家庭理财管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

[附源码]计算机毕业设计医院挂号住院管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计学生在线考试系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]计算机毕业设计医疗器械公司公告管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]JAVA毕业设计健身房管理系统(系统+LW)

[附源码]JAVA毕业设计健身房管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&a…

python使用opencv画圣诞树和画小星星函数

画星星函数&#xff1a; #img 图片 #x y 坐标 #size 大小 def darw_star(img,x,y,color,size40):poly_linenp.array([[x, y-size], [xint(size/4), y-int(size/4)], [xsize, y-int(size/4)],[xint(0.375*size),yint(size/4)],[xsize,ysize],\[x,yint(0.625*size)],[x-size,ysi…