最短路之Dijkstra算法

本文详细介绍Dijkstra算法在解决稠密图最短路径问题的应用。该算法的时间复杂度为O((N+M)logN),适用于顶点关系紧密的稠密图。通过使用优先队列优化搜索过程,提高了算法效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接下来介绍比较经典的Dijkstra算法,这种算法在稠密图中发挥着巨大作用,复杂度为O((N+M)logN),我个人觉得他和SPFA差不多,就是一个priority_queue的作用,可能是我理解的不够吧,等暑假的时候好好把这些东西整理整理对比理解吧,最短路的四个算法最好对比着理解,可能会有更深刻的认识,还得多刷题,其中用优先队列这种还是跟qsc大佬学习的,似乎是一个比较懒的办法
附上代码:


/*
时间复杂度:O((N+M)logN)
适用情况:稠密图,和顶点关系密切
不能解决负权
*/
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e4 ;
int n,m;
vector<pair<int,int> > E[maxn];//储存边和距离
int d[maxn];//点s到其他点的距离
priority_queue<pair<int,int> >Q;//储存与遍历过的点直接相连的点
void init()//初始化
{
    for(int i=0;i<=n;i++) E[i].clear();
    for(int i=0;i<=n;i++) d[i]=1e9;
    while(!Q.empty()) Q.pop();
}
int main()
{
    while(cin>>n>>m){//n个点,m条边
    init();
    for(int i=0;i<m;i++) {
        int a,b,c;
        cin>>a>>b>>c;
        E[a].push_back(make_pair(b,c));//a到b的距离为c
        E[b].push_back(make_pair(a,c));//b到a的距离为c
    }
    int s,t;
        cin>>s>>t;//s点到t点的最短距离
        d[s]=0;
        Q.push(make_pair(-d[s],s));//优先队列从大到校排列,-d[s]的结果排出来的第一个是最小的
    while(!Q.empty()) {
            int now=Q.top().second;
            Q.pop();
            for(int i=0;i<E[now].size();i++) {
                int v=E[now][i].first;
                if(d[v]>d[now]+E[now][i].second)
                {d[v]=d[now]+E[now][i].second;
                Q.push(make_pair(-d[v],v));}
                }
                if(now==t) break;
            }
        if(d[t]!=1e9)
        cout<<d[t]<<endl;
        else cout<<-1<<endl;
        /*for(int i=1;i<=n;i++)
        cout<<d[i]<<endl;*/
    }
    return 0;
}

内容概要:本文详细介绍了扫描单分子定位显微镜(scanSMLM)技术及其在三维超分辨体积成像中的应用。scanSMLM通过电调透镜(ETL)实现快速轴向扫描,结合4f检测系统将不同焦平面的荧光信号聚焦到固定成像面,从而实现快速、大视场的三维超分辨成像。文章不仅涵盖了系统硬件的设计与实现,还提供了详细的软件代码实现,包括ETL控制、3D样本模拟、体积扫描、单分子定位、3D重建和分子聚类分析等功能。此外,文章还比较了循环扫描与常规扫描模式,展示了前者在光漂白效应上的优势,并通过荧光珠校准、肌动蛋白丝、线粒体网络和流感A病毒血凝素(HA)蛋白聚类的三维成像实验,验证了系统的性能和应用潜力。后,文章深入探讨了HA蛋白聚类与病毒感染的关系,模拟了24小时内HA聚类的动态变化,提供了从分子到细胞尺度的多尺度分析能力。 适合人群:具备生物学、物理学或工程学背景,对超分辨显微成像技术感兴趣的科研人员,尤其是从事细胞生物学、病毒学或光学成像研究的科学家和技术人员。 使用场景及目标:①理解和掌握scanSMLM技术的工作原理及其在三维超分辨成像中的应用;②学习如何通过Python代码实现完整的scanSMLM系统,包括硬件控制、图像采集、3D重建和数据分析;③应用于单分子水平研究细胞内结构和动态过程,如病毒入侵机制、蛋白质聚类等。 其他说明:本文提供的代码不仅实现了scanSMLM系统的完整工作流程,还涵盖了多种超分辨成像技术的模拟和比较,如STED、GSDIM等。此外,文章还强调了系统在硬件改动小、成像速度快等方面的优势,为研究人员提供了从理论到实践的全面指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值