R语言-关键节点问题-方案四-K-shell分解法

本文介绍了使用R语言实现K-shell分解法的详细步骤,包括逐步查找并移除度为1和2的节点,直至网络中无剩余节点。此方法适用于网络关键节点分析。

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

K-shell分解法,O(N)
     step 1  查找网络中所有度为1的节点,并将这些节点及连接的边去掉。 
     step 2  经过步骤1后,网络中可能会出现新的度为1的节点,循环执行步骤1,直至所剩的网络中没有度为1的节点为止。 
     step 3  去掉网络中剩余度为2的节点,一次类推,重复循环执行。 
     step 4  重复以上操作,直至网络中没有节点为止。

代码实现:

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 nodeID,Weight FROM NODEWeight1 ORDER BY nodeID")
dat <- dbFetch(res, n=-1)             #n=-1表示取所有数据,n=2表示取2条数据
res1 <- dbSendQuery(conn, "SELECT nodeID1,nodeID2 FROM NODEMap1 ORDER BY nodeID2")
dat1 <- dbFetch(res1, n=-1)           #n=-1表示取所有数据,n=2表示取2条数据
dbDisconnect(conn)

output <- data.frame(nodeID = 0,seq = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值