首页 > 其他分享 >时间复杂度

时间复杂度

时间:2024-09-23 20:36:05浏览次数:1  
标签:max 复杂度 时间 随机 游走 方法 节点

您提供的新方法与旧方法在子图生成方面有以下主要差异和优势:

新方法(基于BFS与嵌入相似性的方法)

  • 优势

    1. 可控性更强:新方法通过BFS算法和设置最大跳数(max_hops)与重新启动概率(restart_prob),对生成子图的范围和节点数量有更好的控制。
    2. 确保子图连通性:BFS确保了生成的子图是连通的,并且通过最大跳数限制可以保持子图的合理规模和拓扑结构。
    3. 灵活性:您可以通过调整 max_hopsrestart_prob 参数来适应不同的任务和数据集,生成更具代表性的子图。
  • 潜在不足

    • 对于较大的图,BFS可能会涉及较多计算,尤其是当跳数较大时。不过,由于您设置了 max_nodesmax_hops,实际开销是可控的。

旧方法(基于随机游走的方法)

  • 优势

    1. 探索性更强:随机游走生成的子图在探索不同节点的连接关系时更具多样性,这在某些任务中可以帮助捕捉到不同区域的信息。
    2. 处理大规模图更有效:随机游走方法在处理大规模图时,能够快速采样节点,通常效率较高。
  • 不足

    • 连通性不保证:随机游走生成的子图可能不连通,这会对基于图结构的模型训练产生不利影响。
    • 不确定性较高:随机游走结果可能受到初始化或随机性影响,导致生成的子图质量不稳定。

综合对比

  • 性能:新方法通常能够生成更高质量和更具连通性的子图,因此在任务需要连通性和结构化信息的场景下表现更好。
  • 适用性:旧方法更适合对大规模图进行快速采样,并且对图的全局探索性更好。因此,如果您的任务需要探索整个图的不同区域,随机游走可能更有效。

结论

新方法更适合您当前任务,因为它确保了子图的连通性,生成的子图在结构上更具代表性,且能捕获与节点相关的局部信息。这在需要子图连通性和稳定性的对比学习任务中尤为重要。

建议:在大多数情况下,新方法会比旧方法更有效,但您可以在小规模的实验中验证两者的性能差异,以选择最佳方案。

时间复杂度上面呢

在讨论时间复杂度时,我们可以比较两种方法的主要步骤,并分析其效率。

新方法(基于 BFS 的子图生成)

时间复杂度分析

  1. BFS 部分

    • BFS 遍历节点的时间复杂度为 (O(E + V)),其中 (E) 是邻居的边数,(V) 是节点数。然而,由于我们限制了最大跳数 max_hops 和子图节点数量 max_nodes,实际复杂度将受到这些参数的限制。
    • 在最坏情况下,遍历最多会执行 max_hops 次完整的邻接节点遍历,但通常情况下由于设置了 max_nodes,实际时间复杂度接近 (O(\text{max_nodes} \cdot d)),其中 (d) 是平均度。
  2. 随机节点补全

    • 如果子图的节点数不足 max_nodes,则需要进行额外的随机选择,时间复杂度为 (O(\text{max_nodes}))。

总时间复杂度:约为 (O(\text{max_nodes} \cdot d)),在设置合理参数的情况下,通常比完整的 (O(E + V)) 更小。

旧方法(基于随机游走的子图生成)

时间复杂度分析

  1. 随机游走

    • 对每个节点执行随机游走的复杂度为 (O(\ell)),其中 (\ell) 是随机游走的最大步长。通常,随机游走不会遍历所有节点,所以实际复杂度要低于 (O(E + V))。
  2. 重新尝试的次数

    • 如果随机游走的子图节点数量不足,还需要额外进行多次尝试。在最坏情况下,这部分的复杂度可以高达 (O(\ell \cdot r)),其中 (r) 是重新尝试的次数。

总时间复杂度:在每次随机游走的步长限制为 (\ell),总复杂度近似为 (O(\ell \cdot d)),其中 (d) 是平均度。

比较两者的时间复杂度

  • 新方法:时间复杂度 (O(\text{max_nodes} \cdot d)),在典型情况下受限于 max_nodesmax_hops,有较好的时间控制。
  • 旧方法:时间复杂度近似为 (O(\ell \cdot d)),随机游走时间复杂度随步长增长,并且可能因多次尝试导致复杂度更高。

综合比较

  • 在控制参数的情况下,新方法的 BFS 有更明确的时间上限,确保子图连通性与合理规模,复杂度是更可控的。
  • 旧方法,尽管单次随机游走效率较高,但可能因多次尝试和缺乏连通性而使得实际时间复杂度更高,尤其是当需要补全节点时。

结论

  • 新方法在时间复杂度上通常更高效且可控,尤其是在生成连通子图的情况下。
  • 旧方法在生成子图的探索性上更灵活,但在时间复杂度上较不稳定。

如果您希望获得稳定的性能并控制计算开销,新方法通常是更好的选择。

标签:max,复杂度,时间,随机,游走,方法,节点
From: https://www.cnblogs.com/csjywu01/p/18427834

相关文章

  • Linux上chrony配置时间同步、主从时间同步设备配置
    一.计算机设备上的两种时间1.硬件时间计算机主板BIOS上依靠主板电池供电维持运行的时间,设备关机后依然在持续计时,计算机系统开机启动时会自动读取这个时间。2.系统时间软件系统上的时间,软件启动后会去读取硬件时间,之后会独立于硬件时间运行。二.配置同步时间服务器1.安装服务(1)安装c......
  • 判断质数(小白秒懂版本)短时间记忆二分模板
    给定 n个正整数 ai,判定每个数是否是质数。输入格式第一行包含整数 n。接下来 n 行,每行包含一个正整数 ai。输出格式共 n行,其中第 i行输出第 i个正整数 ai是否为质数,是则输出 Yes,否则输出 No。数据范围1≤n≤100,1≤ai≤231−1输入样例:226输出样例:Yes......
  • 【PAT_Python解】1026 程序运行时间
    原题链接:PTA|程序设计类实验辅助教学平台参考资料:1、【Python】1026程序运行时间(15分)_python运行15分钟-CSDN博客2、Python实现PAT乙级1026程序运行时间_pat1026python-CSDN博客3、python3小数位的四舍五入(用两种方法解决round遇5不进)_python_脚本之家Tips......
  • 动手学深度学习8.7. 通过时间反向传播-笔记&练习(PyTorch)
    本节课程地址:本节无视频本节教材地址:8.7.通过时间反向传播—动手学深度学习2.0.0documentation(d2l.ai)本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>bptt.ipynb通过时间反向传播到目前为止,我们已经反复提到像梯度爆炸或梯度消失,以及需要对循环......
  • 数据结构 ——— 常见的时间复杂度计算例题(最终篇)
    目录前言例题1:例题2(例题1的延申):例题3:前言在前两章分析了不少常见的时间复杂度计算例题,有固定执行N次的,也有要分情况看待的数据结构———常见的时间复杂度计算例题(上篇)-CSDN博客数据结构———常见的时间复杂度计算例题(中篇)-CSDN博客接下来要分析的是递归算法的......
  • EC2机器上MySQL8 修改关闭binlog以及修改保存时间
    从库清空binlog因为MySQL8.0要修改配置文件,在mysqld下面增加skip-log-bin,且需要重启,所以换种思路直接将其设置为3分钟。##单位秒setglobalbinlog_expire_logs_seconds=180;##flushlogs;showbinarylogs;##清理日志,别一下全删完了,删到倒数第二个purgebinarylogs......
  • 时间序列无监督异常点检测算法_孤立森林,局部离群因子检测和自编码器
    数据入口:压气机异常检测一维时间序列-Heywhale.com该数据为采样自工业压气机的一维时间序列数据。本文将通过无监督时间序列算法进行时间序列异常检测。针对时间序列数据,常用的无监督异常检测算法包括:孤立森林(IsolationForest)、基于密度的局部离群因子检测(LOF)、自编码器(Au......
  • 帝国CMS为什么发布时间比实际时间相差8个小时?
    当你的PHP程序中的发布时间与实际时间相差8个小时时,这通常是因为PHP的时区设置不正确。PHP默认可能会使用格林尼治标准时间(GMT),而中国标准时间(CST)比GMT快8小时。因此,如果你的PHP环境没有正确设置为中国所在的时区,那么生成的时间就会与实际时间相差8小时。解决方法可以通过修改PHP......
  • k8s怎么配置健康检查启动时间
    动一下小手点一下赞。谢谢!你的赞就是我更新的动力。在Kubernetes(简称K8S)中,健康检查是非常重要的一个概念,它可以确保你的应用程序始终处于可用状态。而健康检查启动时间k8s,则是指在部署应用程序时,如何配置健康检查的启动时间,以确保服务在启动后一段时间内不会被认为是不可用。下面......
  • 查询 B 站注册时间
    有时候想看看自己玩B站多少年了,想知道自己什么时候注册的。此外,据说注销B站账户的话也得提供详细注册日期。‍通过创作中心查看登录网页版B站,点击右上角的创作中心,然后就能看到在B站多少天了:​‍‍然后可以找一些在线工具进行计算,例如https://calcdate.buyaocha.......