`
yzmduncan
  • 浏览: 332074 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

网络流之--混合图的欧拉回路

阅读更多

基础知识

    欧拉回路是图G中的一个回路,经过每条边有且仅一次,称该回路为欧拉回路。具有欧拉回路的图称为欧拉图,简称E图。

    无向图中存在欧拉回路的条件:每个点的度数均为偶数。

    有向图中存在欧拉回路的条件:每个点的入度=出度。

    欧拉路径比欧拉回路要求少一点:

    无向图中存在欧拉路径的条件:每个点的度数均为偶数或者有且仅有2个度数为奇数的点。

    有向图中存在欧拉路径的条件:除了2个点外,其余的点入度=出度,且在这2个点中,一个点的入度比出度大1,另一个出度比入度大1。

     欧拉路径的输出:经典的套圈算法。

 

    下面来重点讲讲混合图的欧拉回路问题。

    混合图就是边集中有有向边和无向边同时存在。这时候需要用网络流建模求解。

    建模:

    把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路。 因为欧拉回路要求每点入度 = 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路。

    好了,现在每个点入度和出度之差均为偶数。那么将这个偶数除以2,得x。也就是说,对于每一个点,只要将x条边改变方向(入>出就是变入,出>入就是变出),就能保证出 = 入。如果每个点都是出 = 入,那么很明显,该图就存在欧拉回路。

    现在的问题就变成了:我该改变哪些边,可以让每个点出 = 入?构造网络流模型。

    首先,有向边是不能改变方向的,要之无用,删。一开始不是把无向边定向了吗?定的是什么向,就把网络构建成什么样,边长容量上限1。另新建s和t。对于入 > 出的点u,连接边(u, t)、容量为x,对于出 > 入的点v,连接边(s, v),容量为x(注意对不同的点x不同)。
    之后,察看从S发出的所有边是否满流。有就是能有欧拉回路,没有就是没有。欧拉回路是哪个?察看流值分配,将所有流量非 0(上限是1,流值不是0就是1)的边反向,就能得到每点入度 = 出度的欧拉图。 
    由于是满流,所以每个入 > 出的点,都有x条边进来,将这些进来的边反向,OK,入 = 出了。对于出 > 入的点亦然。那么,没和s、t连接的点怎么办?和s连接的条件是出 > 入,和t连接的条件是入 > 出,那么这个既没和s也没和t连接的点,自然早在开始就已经满足入 = 出了。那么在网络流过程中,这些点属于“中间点”。我们知道中间点流量不允许有累积的,这样,进去多少就出来多少,反向之后,自然仍保持平衡。
    所以,就这样,混合图欧拉回路问题,解了。

 

例:HDU3472

题意:给出一些单词,其中有些单词反转之后也是有意义的单词,问是否能将所有单词首尾相连,每个单词用1次且仅用1次。

解:这题是混合路的欧拉路径问题。

    1.首先判断图的连通性,若不连通,无解。

    2.然后任意定向无向边,计算每个点i的入度和出度之差deg[i]。若deg[i]为奇数,无解。

    3.设立源点s和汇点t,若某点i入度<出度,连边(s,i,-deg[i]/2),若入度>出度,连边(i,t,deg[i]/2);对于任意定向的无向边(i,j,1)。

    4.若有两个度数为奇数的点,假设存在欧拉路径,添加一条容量为1的边,构成欧拉回路,不影响结果。若全为偶数,直接最大流。

    5.若从S发出的边全部满流,证明存在欧拉回路(路径),否则不存在。

    ps:若要求输出路径,将网络中有(无)流量的边反向,加上原图的有向边,用套圈算法即可。

 

/*
混合图的欧拉回路
    建模:将有向边删除,给无向边任意定向,计算每个点的入度与出入之差,若为奇数,肯定无解;
    若为偶数,若图中存在边(i,j),那么设容量为1;对于每个点i,若deg[i]<0,从s连边道i,容量为-deg[i]/2,若>0,连边(i,t,deg[i]/2)
    求最大流,如果所有从s出发的弧都满载,则存在欧拉回路,否则不存在。
    把图中所有有(无)流量的弧都反向,把原图中的有向边加上,就构成了一个欧拉回路。
*/
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int INF = 0x7fffffff;
const int maxv = 30;
const int maxe = 5000;
int n;
struct Edge
{
    int v;
    int next;
    int flow;
};
Edge e[maxe];
int head[maxv],edgeNum;
int now[maxv],d[maxv],vh[maxv],pre[maxv],preh[maxv];
int deg[30];
bool used[30];
int p[30],rank[30];

void addEdge(int a,int b,int c)
{
    e[edgeNum].v = b;
    e[edgeNum].flow = c;
    e[edgeNum].next = head[a];
    head[a] = edgeNum++;
    e[edgeNum].v = a;
    e[edgeNum].flow = 0;
    e[edgeNum].next = head[b];
    head[b] = edgeNum++;
}

void Init()
{
    edgeNum = 0;
    memset(head,-1,sizeof(head));
    memset(d,0,sizeof(d));
}

int sap(int s,int t,int n)       //源点,汇点,结点总数
{
    int i,x,y;
    int f,ans = 0;
    for(i = 0; i < n; i++)
        now[i] = head[i];
    vh[0] = n;
    x = s;
    while(d[s] < n)
    {
        for(i = now[x]; i != -1; i = e[i].next)
            if(e[i].flow > 0 && d[y=e[i].v] + 1 == d[x])
                break;
            if(i != -1)
            {
                now[x] = preh[y] = i;
                pre[y] = x;
                if((x=y) == t)
                {
                    for(f = INF,i=t; i != s; i = pre[i])
                        if(e[preh[i]].flow < f)
                            f = e[preh[i]].flow;
                    ans += f;
                    do
                    {
                        e[preh[x]].flow -= f;
                        e[preh[x]^1].flow += f;
                        x = pre[x];
                    }while(x!=s);
                }
            }
            else
            {
                if(!--vh[d[x]])
                    break;
                d[x] = n;
                for(i=now[x]=head[x]; i != -1; i = e[i].next)
                {
                    if(e[i].flow > 0 && d[x] > d[e[i].v] + 1)
                    {
                        now[x] = i;
                        d[x] = d[e[i].v] + 1;
                    }
                }
                ++vh[d[x]];
                if(x != s)
                    x = pre[x];
            }
    }
    return ans;
}

void makeSet()
{
    for(int i = 0; i < 26; i++)
    {
        p[i] = i;
        rank[i] = 0;
    }
}

int findSet(int x)
{
    if(x != p[x])
        p[x] = findSet(p[x]);
    return p[x];
}

void Union(int x, int y)
{
    x = findSet(x);
    y = findSet(y);
    if(x == y)
        return;
    if(rank[x] > rank[y])
        p[y] = x;
    else
    {
        p[x] = y;
        if(rank[x] == rank[y])
            rank[y]++;
    }
}

int main()
{
    int i,j,k;
    int t,T;
    char wd[22];
    scanf("%d",&T);
    for(t = 1; t <= T; t++)
    {
        scanf("%d",&n);
        Init();
        makeSet();
        memset(deg,0,sizeof(deg));
        memset(used,0,sizeof(used));
        bool flag = true;
        for(i = 1; i <= n; i++)
        {
            scanf("%s %d",wd,&k);
            int len = strlen(wd);
            int a = wd[0]-'a';
            int b = wd[len-1]-'a';
            used[a] = true;
            used[b] = true;
            deg[a]--;
            deg[b]++;
            if(k == 1)
                addEdge(a,b,1);
            Union(a,b);
        }
        int start = 26;
        int end = 27;
        for(i = 0; i < 26 && flag; i++)                 //连通性
        {
            for(j = i+1; j < 26 && flag; j++)
            {
                if(used[i] && used[j] && findSet(i)!=findSet(j))
                    flag = false;
            }
        }
        int tmpt = 0;
        int v1=-1,v2=-1;
        for(i = 0; i < 26 && flag; i++)                 //度数为奇数的点为0个或者2个
        {
            if(deg[i]%2 == 1 || deg[i]%2 == -1)
            {
                tmpt++;
                if(deg[i] < 0)  //起点
                    v1 = i;
                if(deg[i] > 0)  //终点
                    v2 = i;
            }
        }
        if(tmpt==0 || (tmpt==2&&v1!=-1&&v2!=-1))
        {
            if(tmpt == 2)
                addEdge(v2,v1,1);
        }
        else
            flag = false;
        int sum = 0;
        for(i = 0; i < 26 && flag; i++)
        {
            if(deg[i] < 0)
            {
                addEdge(start,i,-deg[i]/2);
                sum += -deg[i]/2;
            }
            else
                addEdge(i,end,deg[i]/2);
        }
        if(!flag || sum != sap(start,end,end+1))
            printf("Case %d: Poor boy!\n",t);
        else
            printf("Case %d: Well done!\n",t);
    }
    return 0;
}

 

 

 

分享到:
评论

相关推荐

    Python 实现WOA-CNN-GRU鲸鱼算法优化卷积门控循环单元多输入单输出回归预测(含模型描述及示例代码)

    内容概要:本文档详细介绍了如何利用Python实现鲸鱼优化算法(WOA)结合卷积神经网络(CNN)和门控循环单元(GRU)来进行多输入单输出回归预测。主要涵盖的内容包括:背景介绍、项目目标与意义、面临的挑战及其应对方法、项目的特点与创新之处、以及广泛的潜在应用领域(如金融、能源、气象、环保等)。通过对模型架构的具体阐述和示例代码演示,展示了该模型在处理复杂时间序列问题方面的优越性能。此外,还讨论了使用WOA优化CNN-GRU模型超参数的过程,从而提升模型在训练时的表现和准确性。 适用人群:面向有兴趣探索深度学习在时序数据处理中应用的专业人士,特别是那些希望深入了解并尝试将优化算法应用于深度学习架构的研发人员和技术爱好者。 使用场景及目标:此资源可用于指导开发人员在各类实际业务环境中实施高精度的时间序列预测系统,如金融市场预测、能源需求估计或者气候条件预测等。具体来说,它可以用来①改进现有模型以增加其准确性和鲁棒性;②加速模型迭代速度并降低成本;③促进跨学科交叉研究,推动技术创新。 其他说明:文中提供了从头搭建WOA-CNN-GRU框架所需的全部必要步骤,包括但不限于数据清理与标准化处理

    Apache:Apache的安装与配置:14. Apache性能调优与安全加固.pdf

    Apache:Apache的安装与配置:14. Apache性能调优与安全加固.pdf

    Comsol电弧冲击击穿模型:多相流模拟电弧产生与多物理场分布研究,Comsol电弧冲击击穿模型:多相流模拟电弧产生与多物理场分布研究,comsol电弧冲击击穿模型,采用多相流模拟电弧的产生,可以得到

    Comsol电弧冲击击穿模型:多相流模拟电弧产生与多物理场分布研究,Comsol电弧冲击击穿模型:多相流模拟电弧产生与多物理场分布研究,comsol电弧冲击击穿模型,采用多相流模拟电弧的产生,可以得到电弧温度场,流体场,电磁场分布, ,核心关键词:Comsol电弧冲击击穿模型; 多相流模拟; 电弧产生; 电弧温度场; 流体场; 电磁场分布;,COMSOL电弧冲击多相流模拟模型

    粒子群算法优化光伏发电MPPT实现多峰值寻优,解决阴影遮蔽问题,基于MATLAB编程与S-function调用,粒子群算法(PSO)与阴影遮蔽在光伏发电中的MPPT多峰值寻优实现:突破局部最优,实现最

    粒子群算法优化光伏发电MPPT实现多峰值寻优,解决阴影遮蔽问题,基于MATLAB编程与S-function调用,粒子群算法(PSO)与阴影遮蔽在光伏发电中的MPPT多峰值寻优实现:突破局部最优,实现最大峰值功率输出,粒子群算法(PSO)光伏发电 MPPT实现多峰值寻优,阴影遮蔽光伏发电算法 使用s函数编写粒子群算法,阴影遮蔽,实现多峰值寻优,解决经典mppt算法会形成局部最优的问题,追踪到最大峰值功率输出。 粒子群算法使用matlab编程实现,再simulink中用S-function调用 ,PSO; 多峰值寻优; 阴影遮蔽; 光伏发电; MPPT算法; S-function; MATLAB编程; Simulink调用,粒子群算法优化MPPT:阴影遮蔽光伏发电多峰值寻优的MATLAB实现

    solr3.6.1整合tomcat及中文分词,并索引mysql数据库实现搜索功能.zip(毕设&课设&实训&大作业&竞赛&项目)

    项目工程资源经过严格测试运行并且功能上ok,可复现复刻,拿到资料包后可实现复刻出一样的项目,本人系统开发经验充足(全栈),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:包含源码、工程文件、说明等。资源质量优质,放心下载使用!可实现复现;设计报告可借鉴此项目;该资源内项目代码都经过测试运行,功能ok 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 【提供帮助】:有任何使用上的问题欢迎随时与我联系,及时抽时间努力解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 质量优质,放心下载使用。下载后请首先打开说明文件(如有);项目工程可实现复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,网络商品/电子资源资料具可复制性不支持退款,勿用于商业用途。质量优质,放心下载使用。

    上市公司-企业敏捷响应度数据(2001-2023年).xlsx

    企业敏捷响应度是企业适应外部环境变化、迅速调整策略以抓住市场机遇和应对挑战的能力。这种能力在当今快速变化的市场环境中尤为重要,因为它直接关系到企业的竞争力和可持续发展。 本数据参考C刊《经济管理》范合君(2024)老师的做法,现代企业特别是上市公司重大决策是由董事会讨论做出的鉴于此,本文采用当期董事会会议次数测度企业敏捷响应度(测算结果为agility_1),次数越多,表明企业对外界变化的响应速度越快。此外,本文还采用企业当期召开的股东大会会议次数作为敏捷响应度的替代变量进行稳健性检验。(测算结果为agility_2) 数据名称:上市公司-企业敏捷响应度数据 数据年份:2001-2023年 参考文献:数字化转型、敏捷响应度与企业韧性[J].经济管理-范合君,潘宁宁. ## 02、相关数据 代码、年份、董事会会议次数、监事会会议次数、股东大会召开次数、agility_1、agility_2。

    企业内部ITSS-12-01备品备件管理系统程序,用于规范备品备件采购与管理

    内容概要:本文档《ITSS-12-01备品备件控制程序》为企业提供了关于备品备件管理系统的详细规范,覆盖从供应商评估与选择到仓库管理和库存盘点的所有步骤。具体来说,文档明确了综合部门负责的各项管理任务,规定应急采购流程、常规入库与领用程序、备件返修操作和定期的安全库存检测机制。为了保障高效运作,该程序还强调了一系列的细节要求,如合格供方的标准确定和对重要事项如《供应商年度评价表》的周期性评审。 适用人群:适用于参与企业管理、运营和维护团队成员,尤其是那些关注备品备件供应链效率的人群。 使用场景及目标:主要用于确保企业能够通过规范化的方法来优化备品备件的存储和使用,降低不必要的开销。同时帮助企业管理人员更好地理解和应用具体的管理措施和技术手段,提高设备维修响应速度,并保障服务质量。这将有助于提高整个企业的运作效率,减少因设备故障带来的损失。 其他说明:该控制程序适用于特定企业环境,并包含了多项实际工作中使用的表格模板,如‘供应商选择’、‘备件领用单’等。

    西门子S7-300系统甲醛生产线博途TIA STEP7与WINCC RT Advanced上位机编程案例:采用V15+博图软件与PLC 315系列,高效控制甲醛生产线,西门子S7-300系统甲醛生产线

    西门子S7-300系统甲醛生产线博途TIA STEP7与WINCC RT Advanced上位机编程案例:采用V15+博图软件与PLC 315系列,高效控制甲醛生产线,西门子S7-300系统甲醛生产线博途TIA STEP7与WINCC RT Advanced上位机编程案例:采用V15+博图软件与PLC 315系列控制程序实践,西门子S7-300系统甲醛生产线博途控制系统程序案例,编程软件采用西门子博途TIA STEP7和WINCC RT Advanced上位机画面程序例程,硬件PLC采用315系列。 博图版本V15及以上。 ,西门子S7-300系统; 甲醛生产线; 博途控制系统程序案例; TIA STEP7; WINCC RT Advanced; 硬件PLC 315系列; 博图版本V15及以上,西门子S7-300甲醛生产线博途V15控制程序案例:TIA STEP7与WINCC RT Advanced联控实践

    k8s1.26+containerd安装-kubeadm快速安装-ingress-nginx-controller

    ingress控制器

    西门子S1500 PLC飞剪控制程序经典案例(含触摸屏编程)-博图V16打开,含注释适合学习参考,含S200smart追剪程序,西门子S1500 PLC飞剪程序及触摸屏实战案例,含注释,学习参考经典案

    西门子S1500 PLC飞剪控制程序经典案例(含触摸屏编程)-博图V16打开,含注释适合学习参考,含S200smart追剪程序,西门子S1500 PLC飞剪程序及触摸屏实战案例,含注释,学习参考经典案例,含S200smart追剪程序,西门子S1500 PLC飞剪程序(含触摸屏程序) 程序有注释、非常适合用来学习西门子s1500飞剪控制,文件包括西门子plc程序和西门子触摸屏程序,程序用博图V16打开,是西门子S1500飞剪控制的借鉴和参考经典案列。 西门子S200smart PLC的追剪程序也有(含触摸屏程序) ,S1500 PLC飞剪程序; 注释; 博图V16; S1500飞剪控制案例; S200smart PLC追剪程序; 触摸屏程序。,西门子S1500飞剪控制与S200 Smart PLC追剪程序合集:经典案例与注释详解

    【9463】基于Springboot+vue的学生信息管理系统lw.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【数据库】:mysql 5.7+ 资源包含项目源码+数据库脚本+万字文档。 项目包含前后台完整源码,都经过本人调试,确保可以正常运行! 具体项目介绍可查看博主文章或私聊获取。 也可提供远程调试、二次开发、项目讲解服务,有意向可私聊。 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧!

    MISRA C 2012规则

    难得软件安全材料

    2025年最新单页图床+最新完整版图床系统修复版

    2025年最新单页图床+最新完整版图床系统修复版,图床系统是一种用于存储和管理图片文件的在线服务。它允许用户上传图片文件,并生成相应的图片链接,从而方便用户在网页、社交媒体或其他平台上分享图片。 功能特点: 图片上传: 用户可以通过图床系统将本地图片文件上传到服务器上。 图片存储: 图床系统会将用户上传的图片文件存储在服务器上,确保图片文件的踩院涂煽啃浴� 图片链接生成: 每张上传的图片都会生成一个唯一的链接,用户可以通过该链接访问和分享图片。 图片管理: 用户可以在图床系统中管理上传的图片,包括查看、删除、编辑等操作。 批量上传: 支持用户一次性上传多张图片,提高上传效率。 图片预览: 提供图片预览功能,让用户在上传前能够查看图片内容。 响应式设计: 图床系统可以在不同设备上进行自适应,保证用户在各种屏幕大小下都能方便使用。

    规划及控制算法深度解析:自动驾驶规划模块与多种控制算法比对,经验总结,助力求职季,规划及控制算法深度解析:自动驾驶规划模块与多种控制算法比对,经验总结(附带Apollo6.0 EMplanner分析与

    规划及控制算法深度解析:自动驾驶规划模块与多种控制算法比对,经验总结,助力求职季,规划及控制算法深度解析:自动驾驶规划模块与多种控制算法比对,经验总结(附带Apollo6.0 EMplanner分析与经验宝贵的控制算法实战应用),规划及控制算法理论分析, 涵盖详细的自动驾驶规划及控制模块的算法理论(规划大约有18页,控制大约有17页)。 其中规划模块主要围绕Apollo6.0实现的EMplanner展开,控制算法详细叙述了常用控制算法包括PID、模糊控制、LQR、MPC的算法原理并结合实际工程经验进行算法比对。 控制领域有句老话,做自动驾驶控制的人才是真正依靠经验积累出来的,经验无价。 同时正值biye季,希望这两份文档给需要人带来帮助。 实实在在的工作经验总结 ,核心关键词: 规划及控制算法理论; 自动驾驶规划模块; Apollo6.0实现的EMplanner; 控制算法; PID控制; 模糊控制; LQR; MPC; 经验积累; 工作经验总结。,深入剖析:Apollo6.0下的自动驾驶规划与控制算法理论

    共赢天下互助平台理财源码 自适应PC WAP ThinkPHP内核

    共赢天下互助平台理财源码 自适应PC WAP ThinkPHP内核,,自适应手机端可打包APP 带激活码+排单系统+自动匹配+奖金+经理人+分拆 功能还是比较齐全的一套互助系统,这类台子接触的不多,所以玩法我不是很熟悉,也就大概理解下字面意思,对互助众筹这类台子有接触或者感兴趣的兄弟可以研究研究 ,对于懂这类平台的兄弟话这套程序就是绝对的好东西。

    风光出力场景生成与消减模拟技术详解:蒙特卡洛与拉丁超立方生成技术,结合快速削减方法!,风光出力场景生成与消减:蒙特卡洛模拟与拉丁超立方生成技术结合快速前推法与同步回代削减策略,风光出力场景生成与消减

    风光出力场景生成与消减模拟技术详解:蒙特卡洛与拉丁超立方生成技术,结合快速削减方法!,风光出力场景生成与消减:蒙特卡洛模拟与拉丁超立方生成技术结合快速前推法与同步回代削减策略,风光出力场景生成与消减 可采用蒙特卡洛模拟和拉丁超立方生成光伏和风电出力场景,并采用快速前推法或同步回代消除法进行削减,可以对生成场景数和削减数据进行修改。 可增加负荷功率的场景生成与削减,根据需求进行修改-改进 ,风光出力场景生成与消减;蒙特卡洛模拟;拉丁超立方生成;快速前推法;同步回代消除法;负荷功率场景生成与削减。,风光出力场景生成与消减技术:蒙特卡洛模拟与优化策略研究

    OpenDrive高精地图解析源码SDK:全网最全最轻量级,深入解析与工程项目移植的宝贵资源,OpenDrive高精地图解析源码SDK:全网最全,轻量级解析,深入了解内部机理与项目移植的宝贵资源,op

    OpenDrive高精地图解析源码SDK:全网最全最轻量级,深入解析与工程项目移植的宝贵资源,OpenDrive高精地图解析源码SDK:全网最全,轻量级解析,深入了解内部机理与项目移植的宝贵资源,opendrive高精地图解析源码SDK , 毫不夸张的说这是全网最全最轻量级的opendrive高精地图解析源码,希望深入了解opendrive高精地图解析内部机理的朋友,又或者希望直接将该SDK移植到工程项目中的朋友,这个源码SDK不可多得。 实实在在的工作经验总结 ,核心关键词: opendrive高精地图解析源码SDK; 最全最轻量级; 内部机理; 移植工程项目; 工作经验总结,《全网最全OpenDrive高精地图解析源码SDK,助力项目实战经验分享》

    【9490】基于springboot+vue的影院购票系统录像.zip

    技术选型 【后端】:Java 【框架】:springboot 【前端】:vue 【JDK版本】:JDK1.8 【数据库】:mysql 5.7+ 资源包含项目源码+数据库脚本+万字文档。 项目包含前后台完整源码,都经过本人调试,确保可以正常运行! 具体项目介绍可查看博主文章或私聊获取。 也可提供远程调试、二次开发、项目讲解服务,有意向可私聊。 助力学习实践,提升编程技能,快来获取这份宝贵的资源吧!

    Apache:Apache的基本概念:Apache日志管理与分析.pdf

    Apache:Apache的基本概念:Apache日志管理与分析.pdf

    ANSYS Workbench环境下芯片回流焊的温度循环热应力仿真分析-基于录屏与案例实践解析,ANSYS Workbench下芯片回流焊过程温度循环热应力仿真分析案例-有录屏详解,助你轻松掌握技

    ANSYS Workbench环境下芯片回流焊的温度循环热应力仿真分析——基于录屏与案例实践解析,ANSYS Workbench下芯片回流焊过程温度循环热应力仿真分析案例——有录屏详解,助你轻松掌握技术要点。,ansys workbench 芯片回流焊,温度循环热应力仿真分析,有录屏,案例分析 ,ansys workbench; 温度循环热应力仿真分析; 芯片回流焊; 录屏; 案例分析,ANSYS Workbench: 芯片回流焊热应力仿真与案例录屏

Global site tag (gtag.js) - Google Analytics