R语言-关键节点问题-方案二

针对大规模网络中寻找关键节点的问题,该文提出了优化方案。鉴于原方案因逐个输出权重最高节点而导致效率低下,新方案选择一次性输出所有权重最大的节点,以显著缩短运行时间至3小时以内。然而,此优化可能导致结果精度下降,因为高权重节点间可能存在相关性。为平衡精度和效率,设定在最大权重达到5时停止输出。
摘要由CSDN通过智能技术生成

紧接方案一

由于方案一每次输出一个权重最高结点,然原始网络规模达100W,到假设一秒输出一个结点也约需要277小时,到中间阶段,有很多结点具有相同的权重。

因此做性能优化,每次输出权重最大的全部结点,预计可以吧时间缩短在3小时以内。

缺点是同属最大权重的结点间可能相关,导致结果不是特别精准,尤其随着权重变小,规模变大,尤其明显,所以设置当最大权重为5的时候停止输出。

实现代码:

library(dplyr)
library(RMySQL)                       # 载入RMySQL包
conn <- dbConnect(MySQL(),dbname = "NETWORKS",username = "root") # 建立数据库连接
dbSendQuery(conn, "SET @@sql_mode=ANSI;") # 启动非严格模式
dbSendQuery(conn, "SET NAMES GBK")    # win7环境下如果汉字乱码,就运行这条命令
res <- dbSendQuery(conn, "SELECT * FROM NODEWeight1")
dat <- dbFetch(res, n=-1)             #n=-1表示取所有数据,n=2表示取2条数据
res1 <- dbSendQuery(conn, "SELECT * FROM NODEMap1")
dat1 <- dbFetch(res1, n=-1)           #n=-1表示取所有数据,n=2表示取2条数据

output <- data.frame(node
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值