没有合适的资源?快使用搜索试试~ 我知道了~
常用算法大全
4星 · 超过85%的资源 需积分: 10 7 下载量 130 浏览量
2014-06-21
02:52:28
上传
评论
收藏 800KB PDF 举报
温馨提示
试读
88页
常用的算法都有 用的是C++ C语言
资源推荐
资源详情
资源评论
第 1 章 贪婪算法
虽然设计一个好的求解算法更像是一门艺术,而不像是技术,但仍然存在一些行之有效的能够用于解
决许多问题的算法设计方法,你可以使用这些方法来设计算法,并观察这些算法是如何工作的。一般情况
下,为了获得较好的性能,必须对算法进行细致的调整。但是在某些情况下,算法经过调整之后性能仍无
法达到要求,这时就必须寻求另外的方法来求解该问题。
本章首先引入最优化的概念,然后介绍一种直观的问题求解方法:贪婪算法。最后,应用该算法给出
货箱装船问题、背包问题、拓扑排序问题、二分覆盖问题、最短路径问题、最小代价生成树等问题的求解方案。
1.1 最优化问题
本章及后续章节中的许多例子都是最优化问题( optimization problem),每个最优化问题都包含一组
限制条件( c o n s t r a i n t)和一个优化函数( optimization function),符合限制条件的问题求解方案称
为可行解( feasible solution),使优化函数取得最佳值的可行解称为最优解(optimal solution)。
例 1-1
[ 渴婴问题] 有一个非常渴的、聪明的小婴儿,她可能得到的东西包括一杯水、一桶牛奶、多罐不
同种类的果汁、许多不同的装在瓶子或罐子中的苏打水,即婴儿可得到 n 种不同的饮料。根据以前关于这 n
种饮料的不同体验,此婴儿知道这其中某些饮料更合自己的胃口,因此,婴儿采取如下方法为每一种饮料
赋予一个满意度值:饮用 1 盎司第 i 种饮料,对它作出相对评价,将一个数值 si 作为满意度赋予第 i 种饮
料。
通常,这个婴儿都会尽量饮用具有最大满意度值的饮料来最大限度地满足她解渴的需要,但是不幸的
是:具有最大满意度值的饮料有时并没有足够的量来满足此婴儿解渴的需要。设 ai 是第 i 种饮料的总量
(以盎司为单位),而此婴儿需要 t 盎司的饮料来解渴,那么,需要饮用 n 种不同的饮料各多少量才能满
足婴儿解渴的需求呢?
设各种饮料的满意度已知。令 xi 为婴儿将要饮用的第 i 种饮料的量,则需要解决的问题是:
找到一组实数 xi(1≤i≤n),使 n ?i = 1si xi 最大,并满足:n ?i=1xi =t 及 0≤xi≤ai 。
需要指出的是:如果 n ?i = 1ai < t,则不可能找到问题的求解方案,因为即使喝光所有的饮料也不能
使婴儿解渴。
对上述问题精确的数学描述明确地指出了程序必须完成的工作,根据这些数学公式,可以对输入/ 输
出作如下形式的描述:
输入:n,t,si ,ai(其中 1≤i≤n,n 为整数,t、si 、ai 为正实数)。
输出:实数 xi(1≤i≤n),使 n ?i= 1si xi 最大且 n ?i=1xi =t(0≤xi≤ai)。如果 n ?i = 1ai <t,则输出
适当的错误信息。
在这个问题中,限制条件是 n ?i= 1xi =t 且 0≤xi≤ai,1≤i≤n。而优化函数是 n ?i= 1si xi 。任何满足
限制条件的一组实数 xi 都是可行解,而使 n ?i= 1si xi 最大的可行解是最优解。
例 1-2
[装载问题] 有一艘大船准备用来装载货物。所有待装货物都装在货箱中且所有货箱的大小都一
样,但货箱的重量都各不相同。设第 i 个货箱的重量为 wi(1≤i≤n),而货船的最大载重量为 c,我们的目
的是在货船上装入最多的货物。
这个问题可以作为最优化问题进行描述:设存在一组变量 xi ,其可能取值为 0 或 1。如 xi 为 0,则货
箱 i 将不被装上船;如 xi 为 1,则货箱 i 将被装上船。我们的目的是找到一组 xi ,使它满足限制条件 n ?i =
1wi xi ≤c 且 x i ? {0, 1}, 1 ≤i≤n。相应的优化函数是 n ?i= 1xi 。
满足限制条件的每一组 xi 都是一个可行解,能使 n ?i= 1xi 取得最大值的方案是最优解。
例 1-3
[最小代价通讯网络] 城市及城市之间所有可能的通信连接可被视作一个无向图,图的每条边
都被赋予一个权值,权值表示建成由这条边所表示的通信连接所要付出的代价。包含图中所有顶点(城市 )
的连通子图都是一个可行解。设所有的权值都非负,则所有可能的可行解都可表示成无向图的一组生成树 ,
而最优解是其中具有最小代价的生成树。
1
在这个问题中,需要选择一个无向图中的边集合的子集,这个子集必须满足如下限制条件:所有的
边构成一个生成树。而优化函数是子集中所有边的权值之和。
1.2 算法思想
在贪婪算法(greedy method)中采用逐步构造最优解的方法。在每个阶段,都作出一个看上去最优的
决策(在一定的标准下)。决策一旦作出,就不可再更改。作出贪婪决策的依据称为贪婪准则(greedy
criterion)。
例 1-4
[找零钱] 一个小孩买了价值少于 1 美元的糖,并将 1 美元的钱交给售货员。售货员希望用数目
最少的硬币找给小孩。假设提供了数目不限的面值为 2 5 美分、1 0 美分、5 美分、及 1 美分的硬币。售货员分
步骤组成要找的零钱数,每次加入一个硬币。选择硬币时所采用的贪婪准则如下:每一次选择应使零钱数
尽量增大。为保证解法的可行性(即:所给的零钱等于要找的零钱数),所选择的硬币不应使零钱总数超过
最终所需的数目。
假设需要找给小孩 6 7 美分,首先入选的是两枚 2 5 美分的硬币,第三枚入选的不能是 2 5 美分的硬
币,否则硬币的选择将不可行(零钱总数超过 6 7 美分),第三枚应选择 1 0 美分的硬币,然后是 5 美分
的,最后加入两个 1 美分的硬币。
贪婪算法有种直觉的倾向,在找零钱时,直觉告诉我们应使找出的硬币数目最少(至少是接近最少的
数目)。可以证明采用上述贪婪算法找零钱时所用的硬币数目的确最少(见练习 1)。
例 1-5
[机器调度] 现有 n 件任务和无限多台的机器,任务可以在机器上得到处理。每件任务的开始时
间为 si,完成时间为 fi ,si < fi 。[si , fi ] 为处理任务 i 的时间范围。两个任务 i,j 重指两个任务的时间范围
区间有重叠,而并非是指 i,j 的起点或终点重合。例如:区间[ 1,4 ]与区间[ 2,4 ]重叠,而与区间[ 4,7
]不重叠。一个可行的任务分配是指在分配中没有两件重叠的任务分配给同一台机器。因此,在可行的分配
中每台机器在任何时刻最多只处理一个任务。最优分配是指使用的机器最少的可行分配方案。
假设有 n= 7 件任务,标号为 a 到 g。它们的开始与完成时间如图 13-1a 所示。若将任务 a 分给机器 M1,任
务 b 分给机器 M2,. . .,任务 g 分给机器 M7,这种分配是可行的分配,共使用了七台机器。但它不是最优
分配,因为有其他分配方案可使利用的机器数目更少,例如:可以将任务 a、b、d 分配给同一台机器,则机
器的数目降为五台。
一种获得最优分配的贪婪方法是逐步分配任务。每步分配一件任务,且按任务开始时间的非递减次序
进行分配。若已经至少有一件任务分配给某台机器,则称这台机器是旧的;若机器非旧,则它是新的。在选
择机器时,采用以下贪婪准则:根据欲分配任务的开始时间,若此时有旧的机器可用,则将任务分给旧的
机器。否则,将任务分配给一台新的机器。 根据例子中的数据,贪婪算法共分为 n = 7 步,任务分配的顺序
为 a、f、b、c、g、e、d。第一步没有旧机器,因此将 a 分配给一台新机器(比如 M1)。这台机器在 0 到 2 时刻处
于忙状态。在第二步,考虑任务 f。由于当 f 启动时旧机器仍处于忙状态,因此将 f 分配给一台新机器(设为
M2 )。第三步考虑任务 b, 由于旧机器 M1 在 Sb = 3 时刻已处于闲状态,因此将 b 分配给 M1 执行,M1 下一
次可用时刻变成 fb = 7,M2 的可用时刻变成 ff = 5。第四步,考虑任务 c。由于没有旧机器在 Sc = 4 时刻
可用,因此将 c 分配给一台新机器(M3),这台机器下一次可用时间为 fc = 7。第五步考虑任务 g,将其分
配给机器 M2,第六步将任务 e 分配给机器 M1, 最后在第七步,任务 2 分配给机器 M3。(注意:任务 d 也
可分配给机器 M2)。
上述贪婪算法能导致最优机器分配的证明留作练习(练习 7)。可按如下方式实现一个复杂性为 O (nl o
gn)的贪婪算法:首先采用一个复杂性为 O (nl o gn)的排序算法(如堆排序)按 Si 的递增次序排列各个任务,
然后使用一个关于旧机器可用时间的最小堆。
例 1-6
[最短路径] 给出一个有向网络,路径的长度定义为路径所经过的各边的耗费之和。要求找一条
从初始顶点 s 到达目的顶点 d 的最短路径。
贪婪算法分步构造这条路径,每一步在路径中加入一个顶点。假设当前路径已到达顶点 q,且顶点 q
2
并不是目的顶点 d。加入下一个顶点所采用的贪婪准则为:选择离 q 最近且目前不在路径中的顶点。这种贪
婪算法并不一定能获得最短路径。例如,假设在图 1 3 - 2 中希望构造从顶点 1 到顶点 5 的最短路径,利用
上述贪婪算法,从顶点 1 开始并寻找目前不在路径中的离顶点 1 最近的顶点。到达顶点 3,长度仅为 2 个
单位,从顶点 3 可以到达的最近顶点为 4,从顶点 4 到达顶点 2,最后到达目的顶点 5。所建立的路径为
1 , 3 , 4 , 2 , 5,其长度为 1 0。这条路径并不是有向图中从 1 到 5 的最短路径。事实上,有几条更短的路径
存在,例如路径 1,4,5 的长度为 6。
根据上面三个例子,回想一下前几章所考察的一些应用,其中有几种算法也是贪婪算法。例如,霍夫
曼树算法,利用 n- 1 步来建立最小加权外部路径的二叉树,每一步都将两棵二叉树合并为一棵,算法中
所使用的贪婪准则为:从可用的二叉树中选出权重最小的两棵。L P T 调度规则也是一种贪婪算法,它用 n
步来调度 n 个作业。首先将作业按时间长短排序,然后在每一步中为一个任务分配一台机器。选择机器所利
用的贪婪准则为:使目前的调度时间最短。将新作业调度到最先完成的机器上(即最先空闲的机器)。
注意到在机器调度问题中,贪婪算法并不能保证最优,然而,那是一种直觉的倾向且一般情况下结果
总是非常接近最优值。它利用的规则就是在实际环境中希望人工机器调度所采用的规则。算法并不保证得到
最优结果,但通常所得结果与最优解相差无几,这种算法也称为启发式方法( h e u r i s t i c s )。因此 L P
T 方法是一种启发式机器调度方法。定理 9 - 2 陈述了 L P T 调度的完成时间与最佳调度的完成时间之间的
关系,因此 L P T 启发式方法具有限定性能( bounded performance )。具有限定性能的启发式方法称为近
似算法( a p p r o x i m a t i o na l g o r i t h m)。
本章的其余部分将介绍几种贪婪算法的应用。在有些应用中,贪婪算法所产生的结果总是最优的解决
方案。但对其他一些应用,生成的算法只是一种启发式方法,可能是也可能不是近似算法。
1.3.1 货箱装船
这个问题来自例 1 - 2。船可以分步装载,每步装一个货箱,且需要考虑装载哪一个货箱。根据这种思
想可利用如下贪婪准则:从剩下的货箱中,选择重量最小的货箱。这种选择次序可以保证所选的货箱总重
量最小,从而可以装载更多的货箱。根据这种贪婪策略,首先选择最轻的货箱,然后选次轻的货箱,如此
下去直到所有货箱均装上船或船上不能再容纳其他任何一个货箱。
例 1-7
假设 n =8, [w1 , ... w8 ]=[100,200,50,90,150,50,20,80], c= 4 0 0。利用贪婪算法时,所考察货
箱的顺序为 7 , 3 , 6 , 8 , 4 , 1 , 5 , 2。货箱 7 , 3 , 6 , 8 , 4 , 1 的总重量为 3 9 0 个单位且已被装载,剩下的
装载能力为 1 0 个单位,小于剩下的任何一个货箱。在这种贪婪解决算法中得到[x1 , ..., x8 ] = [ 1 , 0 , 1 , 1
, 0 , 1 , 1 , 1 ]且?xi = 6。
定理 1-1 利用贪婪算法能产生最佳装载。
证明可以采用如下方式来证明贪婪算法的最优性:令 x = [x1 , ..., xn ]为用贪婪算法获得的解,令 y =[
y1 , ..., yn ]为任意一个可行解,只需证明 n ?i= 1xi ≥n ?i= 1yi 。不失一般性,可以假设货箱都排好了序:
即 wi≤wi + 1(1≤i≤n)。然后分几步将 y 转化为 x,转换过程中每一步都产生一个可行的新 y,且 n ?i =
1yi 大于等于未转化前的值,最后便可证明 n ?i = 1xi ≥n ?j = 1yi 。
根据贪婪算法的工作过程,可知在[0, n] 的范围内有一个 k,使得 xi =1, i≤k 且 xi =0, i>k。寻找[ 1
,n]范围内最小的整数 j,使得 xj≠yj 。若没有这样的 j 存在,则 n ?i= 1xi =n ?i = 1yi 。如果有这样的 j 存在,
则 j≤k,否则 y 就不是一个可行解,因为 xj≠yj ,xj = 1 且 yj = 0。令 yj = 1,若结果得到的 y 不是可行
解,则在[ j+ 1 ,n]范围内必有一个 l 使得 yl = 1。令 yl = 0,由于 wj≤wl ,则得到的 y 是可行的。而且,得到
的新 y 至少与原来的 y 具有相同数目的 1。
经过数次这种转化,可将 y 转化为 x。由于每次转化产生的新 y 至少与前一个 y 具有相同数目的 1,
因此 x 至少与初始的 y 具有相同的数目 1。货箱装载算法的 C + +代码实现见程序 1 3 - 1。由于贪婪算法按
3
货箱重量递增的顺序装载,程序 1 3 - 1 首先利用间接寻址排序函数 I n d i r e c t S o r t 对货箱重量进行
排序(见 3 . 5 节间接寻址的定义),随后货箱便可按重量递增的顺序装载。由于间接寻址排序所需的时间
为 O (nl o gn)(也可利用 9 . 5 . 1 节的堆排序及第 2 章的归并排序),算法其余部分所需时间为 O (n),因此
程序 1 3 - 1 的总的复杂性为 O (nl o gn)。
程序 13-1 货箱装船
template<class T>
void ContainerLoading(int x[], T w[], T c, int n)
{// 货箱装船问题的贪婪算法
// x[i] = 1 当且仅当货箱 i 被装载, 1<=i<=n
// c 是船的容量, w 是货箱的重量
// 对重量按间接寻址方式排序
// t 是间接寻址表
int *t = new int [n+1];
I n d i r e c t S o r t ( w, t, n);
// 此时, w[t[i]] <= w[t[i+1]], 1<=i<n
// 初始化 x
for (int i = 1; i <= n; i++)
x[i] = 0;
// 按重量次序选择物品
for (i = 1; i <= n && w[t[i]] <= c; i++) {
x[t[i]] = 1;
c -= w[t[i]];} // 剩余容量
delete [] t;
}
1.3.2 0/1 背包问题
在 0 / 1 背包问题中,需对容量为 c 的背包进行装载。从 n 个物品中选取装入背包的物品,每件物品 i
的重量为 wi ,价值为 pi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指
所装入的物品价值最高,即 n ?i=1pi xi 取得最大值。约束条件为 n ?i =1wi xi≤c 和 xi?[ 0 , 1 ] ( 1≤i≤n)。
在这个表达式中,需求出 xt 的值。xi = 1 表示物品 i 装入背包中,xi =0 表示物品 i 不装入背包。0 / 1 背包问
题是一个一般化的货箱装载问题,即每个货箱所获得的价值不同。货箱装载问题转化为背包问题的形式为 :
船作为背包,货箱作为可装入背包的物品。 例 1-8 在杂货店比赛中你获得了第一名,奖品是一车免费杂货。
店中有 n 种不同的货物。规则规定从每种货物中最多只能拿一件,车子的容量为 c,物品 i 需占用 wi 的空间,
价值为 pi 。你的目标是使车中装载的物品价值最大。当然,所装货物不能超过车的容量,且同一种物品不
得拿走多件。这个问题可仿照 0 / 1 背包问题进行建模,其中车对应于背包,货物对应于物品。
0 / 1 背包问题有好几种贪婪策略,每个贪婪策略都采用多步过程来完成背包的装入。在每一步过程中
利用贪婪准则选择一个物品装入背包。一种贪婪准则为:从剩余的物品中,选出可以装入背包的价值最大
的物品,利用这种规则,价值最大的物品首先被装入(假设有足够容量),然后是下一个价值最大的物品 ,
如此继续下去。这种策略不能保证得到最优解。例如,考虑 n=2, w=[100,10,10], p =[20,15,15], c = 1 0 5。
当利用价值贪婪准则时,获得的解为 x= [ 1 , 0 , 0 ],这种方案的总价值为 2 0。而最优解为[ 0 , 1 , 1 ],其
总价值为 3 0。
另一种方案是重量贪婪准则是:从剩下的物品中选择可装入背包的重量最小的物品。虽然这种规则对
4
于前面的例子能产生最优解,但在一般情况下则不一定能得到最优解。考虑 n= 2 ,w=[10,20], p=[5,100], c=
2 5。当利用重量贪婪策略时,获得的解为 x =[1,0], 比最优解[ 0 , 1 ]要差。
还可以利用另一方案,价值密度 pi /wi 贪婪算法,这种选择准则为:从剩余物品中选择可装入包的
pi /wi 值最大的物品,这种策略也不能保证得到最优解。利用此策略试解 n= 3 ,w=[20,15,15], p=[40,25,25],
c=30 时的最优解。
我们不必因所考察的几个贪婪算法都不能保证得到最优解而沮丧, 0 / 1 背包问题是一个 N P-复杂问
题。对于这类问题,也许根本就不可能找到具有多项式时间的算法。虽然按 pi /wi 非递(增)减的次序装入
物品不能保证得到最优解,但它是一个直觉上近似的解。我们希望它是一个好的启发式算法,且大多数时
候能很好地接近最后算法。在 6 0 0 个随机产生的背包问题中,用这种启发式贪婪算法来解有 2 3 9 题为最
优解。有 5 8 3 个例子与最优解相差 1 0 %,所有 6 0 0 个答案与最优解之差全在 2 5 %以内。该算法能在 O
(nl o gn)时间内获得如此好的性能。我们也许会问,是否存在一个 x (x<1 0 0 ),使得贪婪启发法的结果与
最优值相差在 x%以内。答案是否定的。为说明这一点,考虑例子 n =2, w = [ 1 ,y], p= [ 1 0 , 9y], 和 c= y。贪
婪算法结果为 x=[1,0], 这种方案的值为 1 0。对于 y≥1 0 / 9,最优解的值为 9 y。因此,贪婪算法的值与最
优解的差对最优解的比例为( ( 9y - 1 0)/9y* 1 0 0 ) %,对于大的 y,这个值趋近于 1 0 0 %。但是可以建
立贪婪启发式方法来提供解,使解的结果与最优解的值之差在最优值的 x% (x<100) 之内。首先将最多 k
件物品放入背包,如果这 k 件物品重量大于 c,则放弃它。否则,剩余的容量用来考虑将剩余物品按 pi /wi
递减的顺序装入。通过考虑由启发法产生的解法中最多为 k 件物品的所有可能的子集来得到最优解。
例 13-9
考虑 n =4, w=[2,4,6,7], p=[6,10,12,13], c = 11。当 k= 0 时,背包按物品价值密度非递减顺序
装入,首先将物品 1 放入背包,然后是物品 2,背包剩下的容量为 5 个单元,剩下的物品没有一个合适的,
因此解为 x = [ 1 , 1 , 0 , 0 ]。此解获得的价值为 1 6。
现在考虑 k = 1 时的贪婪启发法。最初的子集为{ 1 } , { 2 } , { 3 } , { 4 }。子集{ 1 } , { 2 }产生与 k= 0 时
相同的结果,考虑子集{ 3 },置 x3 为 1。此时还剩 5 个单位的容量,按价值密度非递增顺序来考虑如何利
用这 5 个单位的容量。首先考虑物品 1,它适合,因此取 x1 为 1,这时仅剩下 3 个单位容量了,且剩余物
品没有能够加入背包中的物品。通过子集{ 3 }开始求解得结果为 x = [ 1 , 0 , 1 , 0 ],获得的价值为 1 8。若
从子集{ 4 }开始,产生的解为 x = [ 1 , 0 , 0 , 1 ],获得的价值为 1 9。考虑子集大小为 0 和 1 时获得的最优
解为[ 1 , 0 , 0 , 1 ]。这个解是通过 k= 1 的贪婪启发式算法得到的。
若 k= 2,除了考虑 k< 2 的子集,还必需考虑子集{ 1 , 2 } , { 1 , 3 } , { 1 , 4 } , { 2 , 3 } , { 2 , 4 }和{ 3 ,
4 }。首先从最后一个子集开始,它是不可行的,故将其抛弃,剩下的子集经求解分别得到如下结果: [ 1 ,
1 , 0 , 0 ] , [ 1 , 0 , 1 , 0 ] , [ 1 , 0 , 0 , 1 ] , [ 0 , 1 , 1 , 0 ]和[ 0 , 1 , 0 , 1 ],这些结果中最后一个价值为 2
3,它的值比 k= 0 和 k= 1 时获得的解要高,这个答案即为启发式方法产生的结果。 这种修改后的贪婪启
发方法称为 k 阶优化方法(k - o p t i m a l)。也就是,若从答案中取出 k 件物品,并放入另外 k 件,获得
的结果不会比原来的好,而且用这种方式获得的值在最优值的( 1 0 0 / (k + 1 ) ) %以内。当 k= 1 时,保证
最终结果在最佳值的 5 0 %以内;当 k= 2 时,则在 3 3 . 3 3 %以内等等,这种启发式方法的执行时间随 k
的增大而增加,需要测试的子集数目为 O (nk ),每一个子集所需时间为 O (n),因此当 k >0 时总的时间开
销为 O (nk+1 )。实际观察到的性能要好得多。
1.3.3 拓扑排序
一个复杂的工程通常可以分解成一组小任务的集合,完成这些小任务意味着整个工程的完成。例如,
汽车装配工程可分解为以下任务:将底盘放上装配线,装轴,将座位装在底盘上,上漆,装刹车,装门等
等。任务之间具有先后关系,例如在装轴之前必须先将底板放上装配线。任务的先后顺序可用有向图表示—
—称为顶点活动( Activity On Vertex, AOV)网络。有向图的顶点代表任务,有向边(i, j) 表示先后关系:任
务 j 开始前任务 i 必须完成。图 1 - 4 显示了六个任务的工程,边( 1 , 4)表示任务 1 在任务 4 开始前完成,
同样边( 4 , 6)表示任务 4 在任务 6 开始前完成,边(1 , 4)与(4 , 6)合起来可知任务 1 在任务 6 开
5
剩余87页未读,继续阅读
资源评论
- linjinbei66882014-06-21好资源,谢谢共享!
qwerty200696
- 粉丝: 41
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 采用P-f和Q-V滞控的去中心化逆变器型交流微电网的模拟(Simulink仿真实现)
- 彩虹聚合二级域名DNS管理系统源码v1.3
- 【TOF相机笔记3】Simulink使用方法
- 算法部署-基于C++和Python使用ONNXRuntime部署RT-DETR目标检测算法-附项目源码-优质项目实战.zip
- Bitree.cpp
- 改变浏览器大小,图片(img)内容居中显示
- 全景分割-基于FAIR-DETR对Cityscapes数据集进行微调实现全景分割-附项目源码-优质项目实战.zip
- Tru master.m4a
- 基于ELMAN神经网络的用气量预测,基于ELMAN的天然气消费量预测(代码完整,数据齐全)
- 基于Vue3+ThreeJS实现机械臂控制和预览+源码+开发文档+代码解析(高分优秀项目)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功