学习笔记——网络流博客

网络流:所有弧上流量的集合\(f = {f(u,v)}\),称为该流量网络的一个网络流。

弧的流量:通过流量网络\(G\)中的每条弧\((u,v)\)上的实际流量(简称流量),记作\(f(u,v)\)。

对于任意一个时刻,设\(f(u,v)\)为实际流量,则整个图\(G\)的流网络满足3个性质:

可行流:在流量网络\(G\)中满足以下条件的网络流\(f\),称为可行流

\(1\).弧流量限制条件:\(0 \le f(u,v) \le c(u,v)\)

\(2\).平衡条件:流入\(u\)点的流量等于流出\(u\)点的流量(源点和汇点除外)

举个栗子:

上图中可行流为:\(2+1+2=5\)

零流:网络流上每条弧的流量都为\(0\)。

伪流:如果一个网络流只满足弧流量限制条件,不满足平衡条件,则这种网络流为伪流或容量可行流(预流推进算法有用)。

最大流最小割定理:在容量网络中,满足弧流量限制条件和平衡条件并且具有最大流量的可行流,称为网络最大流(简称最大流)。

对于网络流图\(G\),流量最大的可行流\(f\),称为最大流

在流量网络中,相邻两个顶点之间有一条弧(不要求所有弧的方向都和链的方向相同),则称该顶点序列(\(u_1\)、\(u_2\)......\(u_n\))为一条链。

无向图的割集:\(C(A,B)\)将图\(G\)分为\(A\)、\(B\)两个点集,\(A\)集和\(B\)集之间所有边的集合称为无向图的割集。

网络的割集:\(C(S,T)\)将网络\(G\)分为\(S\)、\(T\)两个点集(\(s \in S\),\(t \in T\),其中\(s\)为源点,\(t\)为汇点),\(S\)集和\(T\)集之间所有边的集合称为网络的割集。

带权图的割集:割集中所有边的权值和

通俗的理解一下: 割集好比是一个恐怖分子,把你家和自来水厂之间的水管网络砍断了一些,然后自来水厂无论怎么放水,水都只能从水管断口哗哗流走了,你家就停水了,割的大小应该是恐怖分子应该关心的事,毕竟细管子好割一些 ,而最小割花的力气最小

定义:如果一个可行流不是最大流,那么当前网络中一定存在一条增广路。

前置知识:

前向弧:方向和链的正方向一致的弧。

后向弧:方向和链的正方向一相反的弧。

设\(f\)是一个容量网络\(G\)中的一条可行流,\(P\)是从源点到汇点的一条链,若\(P\)满足:

\(P\)中所有前向弧都是非饱和弧

\(P\)中所有后向弧都是非零弧

则称\(P\)为关于可行流\(f\)的一条增广路,沿这增广路改进可行流的操作称为增广。

图文结合理解一下

给定容量网络\(G(V,E)\)及可行流\(f\),弧\((u,v)\)上的残留容量记为\(cl(u,v)=c(u,v)-f(u,v)\),每条弧上的残留容量表示这条弧上可以增加的流量。因为从顶点\(u\)到顶点\(v\)的流量减少,等价于从顶点\(v\)到顶点\(u\)的流量增加,所以每条弧\((u,v)\)上还有一个反方向的残留容量\(cl(v,u)=-f(u,v)\)。

在一个网络流图上,找到一条从源点到汇点的路径(即找到了一个流量)后,对路径上所有的边的容量都减去此次找到的量,并添加一条反向边(容量也等于此次找到的流量),这样得到的新图,就称为原图的“残余网络”。

最大流最小割定理:网络的最大流等于最小割

具体的证明分三部分

1.任意一个流都小于等于任意一个割。这个很好理解:自来水公司随便给你家通点水,构成一个流,恐怖分子随便砍几刀,砍出一个割,由于容量限制,每一根的被砍的水管子流出的水流量都小于管子的容量,每一根被砍的水管的水本来都要到你家的,现在流到外面,加起来得到的流量还是等于原来的流,管子的容量加起来就是割,所以流小于等于割。由于上面的流和割都是任意构造的,所以任意一个流小于任意一个割

2.构造出一个流等于一个割。当达到最大流时,根据增广路定理,残留网络中\(s\)到\(t\)已经没有通路了,否则还能继续增广,我们把\(s\)能到的的点集设为\(S\),不能到的点集为\(T\),构造出一个割集\(C[S,T]\),\(S\)到\(T\)的边必然满流,否则就能继续增广,这些满流边的流量和就是当前的流即最大流把这些满流边作为割,就构造出了一个和最大流相等的割

3.最大流等于最小割。设相等的流和割分别为\(Fm\)和\(Cm\),则因为任意一个流小于等于任意一个割,任意\(F≤Fm=Cm≤\)任意\(C\)。

证明如下:对于一个网络流图\(G=(V,E)\),其中有源点\(s\)和汇点\(t\),那么下面三个条件是等价的:

首先证明\(1 => 2\):我们利用反证法,假设流\(f\)是图\(G\)的最大流,但是残留网络中还存在有增广路\(p\),其流量为\(fp\)。则我们有流$ f' = f + fp > f \(。这与\)f$是最大流产生矛盾。

接着证明\(2 => 3\):假设残留网络\(Gf\)不存在增广路,所以在残留网络\(Gf\)中不存在路径从\(s\)到达\(t\)。我们定义\(S\)集合为:当前残留网络中\(s\)能够到达的点。同时定义\(T=V-S\)。此时\((S,T)\)构成一个割\((S,T)\)。且对于任意的\(u∈S\),\(v∈T\),有\(f(u,v)=c(u,v)\)。若\(f(u,v) < c(u,v)\),则有\(Gf(u,v) > 0\),\(s\)可以到达\(v\),与\(v\)属于\(T\)矛盾。因此有\(f(S,T)=Σf(u,v)=Σc(u,v)=C(S,T)\)。

最后证明\(3 => 1\):由于\(f\)的上界为最小割,当\(f\)到达割的容量时,显然就已经到达最大值,因此\(f\)为最大流。 这样就说明了为什么找不到增广路时,所求得的一定是最大流。

​​以上概念均摘自A_Comme_Amour dalao的CSDN​​

下面是所有最大流算法的精华部分:引入反向边

为什么要有反向边呢?

我们第一次找到了\(1-2-3-4\)这条增广路,这条路上的\(delta\)值显然是\(1\)。于是我们修改后得到了下面这个流。(图中的数字是容量)

这时候\((1,2)\)和\((3,4)\)边上的流量都等于容量了,我们再也找不到其他的增广路了,当前的流量是1。

但这个答案明显不是最大流,因为我们可以同时走\(1-2-4\)和\(1-3-4\),这样可以得到流量为\(2\)的流。

那么我们刚刚的算法问题在哪里呢?问题就在于我们没有给程序一个“后悔”的机会,应该有一个不走\((2-3-4)\)而改走\((2-4)\)的机制。那么如何解决这个问题呢?回溯搜索吗?那么我们的效率就上升到指数级了。

而这个算法神奇的利用了一个叫做反向边的概念来解决这个问题。即每条边\((u,v)\)都有一条反向边\((v,u)\),反向边也同样有它的容量。

我们直接来看它是如何解决的:

在第一次找到增广路之后,在把路上每一段的容量减少\(delta\)的同时,也把每一段上的反方向的容量增加\(delta\)。即在\(dec(c[x,y],delta)\)的同时,\(inc(c[y,x],delta)\)

我们来看刚才的例子,在找到\(1-2-3-4\)这条增广路之后,把容量修改成如下

这时再找增广路的时候,就会找到\(1-3-2-4\)这条可增广量,即\(delta\)值为\(1\)的可增广路。将这条路增广之后,得到了最大流\(2\)。

那么,这么做为什么会是对的呢?我来通俗的解释一下吧。

事实上,当我们第二次的增广路走\(3-2\)这条反向边的时候,就相当于把\(2-3\)这条正向边已经是用了的流量给”退”了回去,不走\(2-3\)这条路,而改走从\(2\)点出发的其他的路也就是\(2-4\)。(有人问如果这里没有\(2-4\)怎么办,这时假如没有\(2-4\)这条路的话,最终这条增广路也不会存在,因为他根本不能走到汇点)同时本来在\(3-4\)上的流量由\(1-3-4\)这条路来“接管”。而最终\(2-3\)这条路正向流量\(1\),反向流量\(1\),等于没有流量。

这就是这个算法的精华部分,利用反向边,使程序有了一个后悔和改正的机会

原理:求最大流的过程,就是不断找到一条源到汇的路径,若有,找出增广路径上每一段[容量-流量](就是剩余流量)的最小值\(delta\),然后构建残余网络,再在残余网络上寻找新的路径,使总流量增加。然后形成新的残余网络,再寻找新路径…..直到某个残余网络上找不到从源到汇的路径为止,最大流就算出来了。

思路:不断用BFS寻找增广路并不断更新最大流量值,直到网络上不存在增广路为止

实现过程:在\(BFS\)寻找一条增广路时,我们只需要考虑剩余流量不为\(0\)的边,然后找到一条从\(S\)到\(T\)的路径,同时计算出路径上各边剩余容量值的最小值\(incf[n]\) ,则网络的最大流量就可以增加\(incf[n]\)(经过的正向边容量值全部减去\(incf[n]\),反向边全部加上\(incf[n]\))

\(Q\):为什么不能用\(dfs\)找最大流

\(A\):如果运气不好这种图会让程序执行\(200\)次\(dfs\),虽然实际上最少只要\(2\)次我们就能得到最大流

代码

\(EK\)算法每次都可能会遍历整个残量网络,但只找出一条增广路,是不是有点不划算?能不能一次找多条增广路呢?这时候,\(Dinic\)算法就闪亮登场了

思路:

但是要警惕绕远路、甚至绕回的情况,不加管制的话极易发生。怎么管?

综合上面两条。每回合也是从源点出发,先按照当前残量网络分一次层,随后多路增广,尽可能增加流量。增广过程中,会加入一些反向边,这些反向边逆着层次图,本回合并不会走。所以还需要进入下一回合。一直到 bfs 分层时搜不到汇点(即残量网络断了)为止。

\(Dinic\)算法框架

1.在残量网络上\(BFS\)求出节点的层次,构造分层图

2.在分层图上\(DFS\)寻找增广路,在回溯时同时更新边权

\(HLPP\) (\(Highest\) \(Label\) \(Preflow\) \(Push\))最高标签预流推进算法是处理网络最大流里两种常用方法——增广路&预流推进中,预流推进算法的一种。据传由\(tarjan\)发明怎么又是他 ,并被其他科学家证明了其复杂度是紧却的\(O(n^2 \sqrt{m} )\) 。在随机数据中不逊色于普通的增广路算法,而在精心构造的数据中无法被卡,所以是一种可以替代\(Dinic\)的方法(随我怎么说,代码又长又难调,所以还是\(Dinic\)好啊\(TAT\))

但无论怎样,\(wiki\)里面已经承认\(HLPP\)是现在最优秀的网络流算法了。

主要思路:对每个点记录超额流(\(Extra\) \(Flow\)) ,即允许流在非源点暂时存储,并伺机将超额流推送出去。不可推送的,就会流回源点。那么最终答案显然存储在 \(Extra[T]\) 里面。(显然,因为\(t\)节点无法推送到其他节点,所以最终暂存在\(t\)节点的流量就是最大流量)

但同时这也有一个问题,就是会出现两个点相互推送不停的情况。为了防止这样,我们采用最高标号的策略:给每个点一个高度,对于一个点\(u\)以及它的伴点集合{\(v\)},当且仅当\(h_u = h_v + 1\)时才可以推送流。并且我们对于源点\(S\),设置\(h_S = n\),并对于\(S\)实行无限制推送(源点流量无限)。那么最后的答案就保存在\(Extra[T]\)里面 。

但有时,我们发现有个点是“谷”,即周围点的高度都比它高,但是它有超额流。那么我们此时考虑拔高它的高度,即重贴标签(\(relabel\))操作。

算法框架:

以下用\(Extra_u\)表示\(u\)的超额流,\(h_u\)表示\(u\)的高度,用\(f_k\)表示边\(k\)的容量。

代码

模型简述:给定一个流量网络,每一条边包含容量和单位费用两个属性,且这条边的费用相当于这条边的流量$\times $单位费用,求得到最大流时的最小费用。

算法框架:

只要将\(EK\)算法中的\(BFS\)更改为\(SPFA\)即可。

\(Q\):为什么不用效率更高的\(Dinic\)算法

\(A\):因为\(Dinic\)算法一次找出多条增广路,不能保证一次增广的流量$\times \(流到\)t$点的最小费用就是该次增广的总费用(可能流最小费用的路径已经用过了(达到流量上限),但其他路径依然按最小费用进行计算,导致最小费用偏小)

代码(其实就是\(EK\)再套一个\(SPFA\)的板子)

1.割:给定一个图\(G(V,E)\),其中\(V\)是点集,\(E\)是边集。在\(E\)中去掉一个边集\(C\)使得\(G(V,E-C)\)不连通,\(C\)就是图\(G(V,E)\)的一个割。

2.最小割:在\(G(V,E)\)所有割中,边权和最小的割就是最小割。

最大流最小割定理:

1.最小割等价于最大流。

2.最小割在最大流中一定是满流边,是增广路径中容量最小的边。

3.一条增广路径只对应一条最小割。(如果一条增广路中两条满流且都需要割掉,那一定通过反向边分成两条增广路)

一条最小割可以对应多条增广路径,但一条增广路径只能对应一条最小割(或最小割的可能性)

求最小割就是求增广路径中容量最小的边,所以恰好和最大流的求解一致。

首先有一个有向连通图,每个点带有一个权值,例如:

在此基础上构造一个超级源点\(s\)和超级汇点\(t\),由\(s\)连向点权为正的点,容量为该点权值,由点权为负的点连向\(t\),容量为该点权值的绝对值,原先点与点之间的边不变,容量为\(INF\),如下图

此时,我们可以得到以下结论:

简单割:割集中所有的边,都与\(s\)或\(t\)连接。

理解:该图中不与\(s\)或\(t\)相连的边容量都为\(INF\),所以最小割一定在与\(s\)或\(t\)连接的边上。

闭合图:取图中一些节点及与它们相连的边构成集合{\(V\),\(E\)},若集合\(V\)中任意节点连接的任意出弧所指向的终点也在集合\(V\)中 ,则{\(V\),\(E\)}构成闭合图。

理解:简单割内不包含边权为\(INF\)的边,图\(S\)中没有边与图\(T\)连通,那么所有的权值不为\(INF\)的出弧都只能连接在图\(S\)之内,即为闭合图。

栗子:

最大权闭合子图:在整个图中,有多个子图是满足闭合图的条件的,其中点权之和最大的,为最大权闭合子图。

理解:因为割集中的所有边不是连接在\(s\)上就是连接在\(t\)上,所以我们令割集中所有连接在\(s\)上的边的权值和为\(x_1\),所有连接在\(t\)上的边的权值和为\(x_2\),则割集中所有边的权值和为\(X = x_1 + x_2\)。

令图\(S\)中所有点的权值和为\(W\),记其中正权值之和为\(w_1\),负权值之和的绝对值为\(-w_2\),\(W = w_1 - w_2\)。

所以\(W + X = x_1 + x_2 + w_1 - w_2\)

又因为\(x_2 = w_2\)(因为图\(S\)中所有负权值的点,必然连接到\(t\)点,而图\(S\)必然要与\(t\)分割开,所以割集中连接在\(t\)点上的边权值和就是图\(S\)中所有负权值点的权值之和)

所以\(W + X = w_1 + x_1\)

又因为\(w_1 + x_1\)为图中所有的正权值之和,记为\(sum\),且\(sum\)为一个定值

所以\(W = sum - X\),即“图\(S\)中所有点的正权值和”\(=\)“整个图中所有的正权值之和”\(-\) “割集中所有的边权和”

所以只要减去最小割,就可以得到最大权闭合子图。

综上所述,我们可以得到求解此类题目的一般步骤:

1.记录整个图中所有的正权值和

2.建立对应的流网络,跑最大流(最大流在数值上等于最小割)

3.用正权值之和减去最大流,得到最大权闭合子图权值和。

本题要求掌握顺难则反的思想,可以将题目转化为求不满足的要求的最小代价(最小割),并熟悉建边及退流思想

本题有路径限制,即最多可以流的节点数,就可以在临界点(设为\(v\))连接一条回到初始点(设为\(u\))的容量为\(INF\)边(保证不会被割掉),其中\(u\)到\(v\)之间跨过的点数就是限制。

对于平面图最短路,首先要了解其与最大流最小割的关系,有

对偶图最短路 \(=\) 最大流 \(=\) 最小割

一般来说,此类题目会卡最大流(包括当前弧优化的\(Dinic\)),所以一般要转化为对偶图最短路。主要了解对偶图的建边方式——对于每一个封闭区间看做一个点,分割相邻两个封闭区间的边的容量就是该两个封闭区间连边的长度,再由原先的起点和终点的连边将最外围的封闭区间分成两个点(即对偶图的起点和终点),用\(dijkstra\)跑一遍最短路即可。如下图:

本题同样运用顺难则反的思想,求其不满足的最小代价。对于本题的边,可以从源点连接两条到该边两端点的边权为\((\dfrac{E_{a[i]}}{2})\)的边,再连接两条从该边两端点到汇点的边权为\((\dfrac{E_{b[i]}}{2})\)的边,因为有可能割的是一条连接源点的边,一条连接汇点的边,所以在这两点之间连接一条边权为\((\dfrac{E_{a[i]} + E_{b[i]}}{2}) + E_{c[i]}\)的无向边,保证这种情况时该无向边被割掉或改为割与汇点相连的两条边,从而保证答案的正确性。

例题

本题主要要掌握拆点技巧,将一个点拆成两个(设为\(x,y\)),加一条由源点流向\(x\)和\(y\)流向汇点的边,将原图中要连边的两点(设为\(u,v\))中\(u_x\)连向\(v_y\),再跑一遍最大流,最大流量就是可以合并的边数,最小路径覆盖就是节点数减去最大流量。

本题是修车的加强版,由于可能会\(T\)飞,所以我们要优化:对于每一个厨师,只有当他做完一道菜后才有可能做其他的,所以我们一开始只要连该点乘一倍的情况,每次找到一条增广路后从所有菜向该节点连前一倍数加一的边,就可以大大减少\(SPFA\)的复杂度(防止我们SPFA)

本题让我们对网络流有了更深的理解:在一些限制条件较多的题目中,我们可以用网络流来进行求解,又因为在本题中一个决策会导致多个限制条件的改变,而网络流的流量是一对一的,所以我们可以以一个人为一点流量,让这一点流量覆盖\(s_i\)到\(t_i\)天(具体就是从\(s_i\)天向\(t_i+1\)天连一条容量无限费用为\(c_i\)的边)。再以天数为点,相邻两天的边的容量为该天需要的人数的负数,补齐人数限制,跑一遍最小费用最大流即可。

注意到网络流的容量不能为负数,所以相邻两条边的容量为\(INF-\)当天的需要人数,费用为\(0\)。

Docker网络可以:实现容器间的互联和通信以及端口映射容器IP变动时,可以通过服务名直接网络通信而不受影响。常用命令docker network --helpUsage: docker network COMMANDManage networksCommands: connect Connect a container to a network create

在使用自定义网络前启动两个容器:docker run -d --name tomcat01 billygoo/tomcat8-jdk8docker run -d --name tomcat02 billygoo/tomcat8-jdk8此时进入到这两个容器中使用ip addr 查看ip,或者使用docker inspect查看他们的IP可以得到tomcat01的IP是172.17.0.3 to

Nginx学习笔记状态码2xx 成功3xx 表示重定向 301表示永久重定向 302表示临时重定向4xx 请求地址出错 403表示拒绝请求 404表示请求找不到5xx 服务器内部错误Nginx反向代理解释:正向代理:在客户端代理转发请求称为正向代理 例如VPN反向代理:在服务器端代理转发请求称为反向代理 例如nginxlocation / { ro

持续更新! 基本上只是整理了一下框架qwq。 。。怎么说呢,最基础的模板我就我不说了吧qwq,具体可以参考一下这位大佬写的博客: "最大流,最小割,费用流" 费用流 跑最大费用流的时候可以把边权都变成负的,然后按照原先的方法跑最小费用流即可。 每个点只能经过一次的时候,就拆点,然后两个点之间连容量为

前言无源汇上下界可行流:模型:一个网络,求出一个流,使得每条边的流量必须且,每个点必须满足总流入量 = 总流出量 (流量守恒) (这个流的特点是循环往复,无始无终)考虑到如果存在一个可行流,那么每条边的流量至少是 ,于是我们可以预先让它先流 这样以后一个点流入量可能就不为流出量了我们考虑求出一个附加流,每条边的最终流量为附加流流量加上 具体而言,我们建边建成 考虑到最后要让流量平衡,分类讨论: 如

真的有这么丝滑吗?

Java中的流

刚刚学了有上下界的网络流问题,总结一下。大概可以分为4种:1、无源汇的可行流2、有源汇的可行流3、有源汇的最大流4、有源汇的最小流无源汇的可行流想像一条水循环系统,无源汇的可行流就是流量在整张图里循环,每一个节点都满足流量守恒,没有源点和汇点这样的特殊点。但是,在这个问题中,每条边都有一个容量下限B...

网络流(Wifi Flow) 1.相关概念 源点( \(S\) ):只出不进 汇点( \(T\) ):只进不出 容量和流量:容量通常用 \(c_{i,j}\) 表示,流量用 \(f_{i,j}\) 表示,且 \(f_{i,j}\leqslant c_{i,j}\)。 对于每个不是源点和汇点的点,流入 ...

网络流是一个博大精深的OI类别 今天浅显地理解了一下网络流,做一下笔记 定义: 1.网络:是一个有向图,每个边有一个容量c(x,y),每条边也会有一个可行的流量f(x,y),这个f被称为流函数 图中有一个源点S,不断往外流水,只流不入,汇点T则相反。其他的点流入的量等于流出的量。 流/增广路:一条从

N总 觉得费用流太简单了,于是让我赶紧学习一下。 定义 费用:给网络的每一条边都有一个费用值 \(w\),那么该条边的费用就是 \(w*f\),所有边的费用之和即为网络的费用。 费用流:一个流网络中,所有最大的可行流中,费用最小值(或最大值)。即最小费用最大流(或最大费用最大流)。 解法 只需要将 ...

P7390 先考虑什么样的子结构是合法的,因为题目没有无解,得出条件应该为 \(\sum a_i=2(n-1)\) \(1\leq a_i\leq n\) 考虑归纳证明,首先肯定存在 \(a_i=1\) 否则 \(\sum a_i\geq n\),其实肯定存在 \(a_i>1\) 否则 \(\sum ...

因为写过的网络流博客太多,一天发不完,所以就把简单题合在一起发。 O.约定 \(S\):源点 \(\mathbb{S}\):源点集合(在网络流跑完后与$S$连通的点集) \(T\):汇点 \(\mathbb{T}\):源点集合(在网络流跑完后与$T$连通的点集) \((p,q)\):一条从$p$到$

有的时候,网络流建模要考虑某些边必须选择若干次,又不能多于若干次,而且不太容易转化成比较好的限制模型, 就简单粗暴地给每条边定一个流量的上下界,求在满足上下界的基础上的一些问题。 大概有以下几种。 基本思路都是先满足下界,再调整流量守恒,一边满足最优性。 无源汇上下界可行流 每条边的流量有上下界问是

几个概念: 记图G = (V, E) 匹配:在G中两两没有公共端点的边集M⊆E (我们可以这样理解, 所有的点两两匹配, 自然所有的匹配点之间的边都没有公共点了,最大匹配就是最多能有多少点匹配,最小匹配没有意义) 边覆盖:G中任意顶点都是边F中某条边的端点的边的集合F⊆G (我们可以这样理解, 用一

网络流最大流 Dinic 算法 先回忆一下$EK$算法,$bfs$遍历整张图直到找到一条增广路,每次只能找一条,速度就比较慢,所以我们就得使用 更好的$dinic$算法,$EK$一次找一条,但是源点到汇点可能有很多条最短路经,所以我们可以一次性全部扩展 首先我们需要知道分层图:满足$d[y]=d[x ...

1.无源无汇有上下界可行流 zoj2314 做法:每条边的两个顶点分别计算出流入流出的流量之差,记为in[u],如果in[u]<0,说明流出的比流入的多,那么他需要有一些补充,于是我们设立虚拟源汇,把u和T连接,容量为-in[u],如果in[u]>0,说明流进来的多了,需要有去处,就和S连接,容量为

第12章、列表框【知识要点】  (1)列表框ListBox 【问题提出】   第8章我们学习了下拉列表框,特点是多选一,而我们实际项目中还经常会有多先多的情况,这就需要列表框,我们尝试完成以下从多个电脑品牌中同时选择多个品牌。   【在线指导】  列表框在WEB项目中也是应用较多的一个控件,我们应该很好掌握它。常用属性:     SelectionMode

混合专家(MoE)成为主流:MoE已成为在不牺牲推理效率的前提下,将模型参数扩展至数千亿乃至万亿规模的首选方案。未来的探索将聚焦于更优的路由算法、专家专业化训练以及共享专家等设计细节。注意力机制持续精化:GQA已取代MHA成为标准配置。为应对超长上下文挑战,滑动窗口注意力、注意力与线性时间复杂度模块(如DeltaNet)的混合机制,正成为新的研究热点。归一化策略的精细化调整:从Pre-LN到Post-LN变体,再到QK-Norm和“三明治”式布局,开发者们正通过精细调整归一化策略来追求极致的训练稳定性。

emini-API完善的类型系统:基于 Pydantic 确保数据交互的类型安全。

发送端NACK实现的核心流程包括RTP报文缓存、RTCP NACK处理和RTP报文重发。发送端通过Pacer发送RTP报文时,会将允许重传的媒体报文存入packet_history_缓存队列,为后续重传提供数据源。当接收端检测到丢包并发送NACK请求时,发送端通过RTPSender::OnReceivedNack处理请求,并调用ReSendPacket重传丢失的RTP报文。关键函数包括RtpSenderEgress::SendPacket负责报文发送与缓存,RtpPacketHistory::PutRtpP

THE END
0.机械制图的总结范文为了保证任务驱动教学法的实施效果,本文认为,在进行任务设计的时候,可以按照以下的方式来进行:第一,精确地分析教学内容,从实际的情况出发,确定合理的任务目标。《机械制图》是一门非常重要的课程,经过教师的讨论和分析,教学内容应该以“圆弧连接的画法和平面图形的画法”为重点,同时以4课时的方式来进行教学,进一步巩固jvzquC41yy}/i€~qq0ipo8mcqyko1;;;;5?/j}rn
1.小学六年级老师教学工作计划(精选19篇)这些学生都很喜欢上音乐课,但是不喜欢学习乐理知识,误认为音乐课就是唱歌课,而且这些歌曲可以是书本上的,也可以是现在流行的。还有的同学讨厌教师教谱,一唱谱就想睡觉的感觉。在本学期,学生将巩固并自己应用曾经学过的知识,而且,学期学习的知识又为今后几年的学习打下坚实的基础。本学期教材在乐理方面又加深了难度,如一个升号的调,升记号jvzq<84yyy4vpsx0eqs0hjsygpqv1<>92;4ivvq