查找并计算网络中隔离和半隔离节点的数量

2023-12-12

我正在与经历了许多的网络合作扰乱事件。因此,许多节点会因给定事件而发生故障。因此,左侧图像与右侧图像之间存在过渡:

enter image description here

我的问题:我怎样才能找到不连通的子图,即使它们只包含 1 个节点?我的目的是count他们并渲染失败了,因为在我的研究中,这适用于他们。我所说的半隔离节点是指一组孤立的节点,但彼此连接.

我知道我可以找到这样的孤立节点:

def find_isolated_nodes(graph):
    """ returns a list of isolated nodes. """
    isolated = []
    for node in graph:
        if not graph[node]:
            isolated += node
    return isolated

但是您将如何修改这些行以使它们也找到孤立的节点组,如右侧图片中突出显示的那些?

我的理论尝试

看起来这个问题已经被解决了洪水填充算法,解释如下here。但是,我想知道如何能够简单地计算巨型组件中的节点数量,然后从第 2 阶段仍处于活动状态的节点数量中减去它。您将如何实现这一点?


如果我理解正确,您正在寻找“孤立”节点,这意味着节点不在图表的最大组成部分中。正如您所提到的,识别“孤立”节点的一种方法是查找不在最大组件中的所有节点。为此,您可以使用networkx.connected_components,获取组件列表并按大小对它们进行排序:

components = list(nx.connected_components(G)) # list because it returns a generator
components.sort(key=len, reverse=True)

然后你可以找到最大的组件,并获得“孤立”节点的计数:

largest = components.pop(0)
num_isolated = G.order() - len(largest)

我把这一切放在一个例子中,我画了一个鄂尔多斯-仁义随机图,将孤立节点着色为蓝色:

# Load modules and create a random graph
import networkx as nx, matplotlib.pyplot as plt
G = nx.gnp_random_graph(10, 0.15)

# Identify the largest component and the "isolated" nodes
components = list(nx.connected_components(G)) # list because it returns a generator
components.sort(key=len, reverse=True)
largest = components.pop(0)
isolated = set( g for cc in components for g in cc )

# Draw the graph
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos=pos, nodelist=largest, node_color='r')
nx.draw_networkx_nodes(G, pos=pos, nodelist=isolated, node_color='b')
nx.draw_networkx_edges(G, pos=pos)
plt.show()

graph with isolated nodes colored blue

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找并计算网络中隔离和半隔离节点的数量 的相关文章

随机推荐

  • WordPress 致命错误:第 1832 行的 wp-includes/wp-db.php 中允许的内存大小 536870912 字节已耗尽(尝试分配 77 字节)

    我最近注意到我的 WordPress 网站有时会收到 500 内部服务器错误 我检查了日志 有很多行 例如 2016 年 10 月 3 日星期一 01 25 24 357439 fcgid 警告 pid 12840 客户端 83 27 21
  • 在父 div 内对角排列 2 个 div

    我试图在父 div 内排列 2 个 div 这样看起来父 div 被对角线分成两部分 下图将显示需要什么 这是我尝试过的代码 App js import React Component from react import App css c
  • Cube on Cube 碰撞检测算法?

    我试图找到最有效的方法来检查两个任意大小的立方体是否相互碰撞 立方体的边长不一定都相等 盒子是可能的 考虑到这些限制 我如何有效地检查它们是否发生冲突 每个盒子有 24 个顶点 谢谢 它们是轴对齐的 由于两个框都是轴对齐的 因此您可以比较它
  • 升级到 VS2010 和 Re#5 后 SQLite 相关的 nUnit 测试出现问题

    使用 ReSharper5 转换为 Visual Studio 2010 后 我的一些单元测试开始失败 更具体地说 这适用于使用 NHibernate 和 SQLite 的所有单元测试 这个问题似乎与 SQLite 有关 不涉及NHiber
  • 如何在没有边框的表单周围添加阴影?

    我试图弄清楚如何使用 WinForms 在无边框表单周围添加完整的阴影 我正在考虑在表格的四个侧面周围添加阴影 我尝试过使用 DropShadow 类 尽管它只将阴影添加到底角和右侧角 我之前在搜索中多次看到这个问题被问到 但我发现没有任何
  • 如何仅在线性布局的一侧绘制边框?

    我能够将边框绘制到线性布局 但它是在所有侧面绘制的 我想将其限制为仅在右侧 就像在 CSS 中所做的那样 border right 1px Solid red 我已经尝试过这个 但它仍然吸引各方
  • CSS 变量在 Microsoft Edge 中的工作方式是否有所不同?

    我正在开发一个网站 并针对 Firefox 和 Chrome 对其进行了优化 该项目包含一个名为base css它包含在所有页面中 并且包含一些全局设置和定义 包括我用来存储颜色值的变量列表 如下所示 root yellow 1 fff8e
  • Internet Explorer 的永恒重新加载页面

    我在 Internet Explorer 7 上使用 FB 应用程序时遇到问题 我正在使用FB前一段时间提供的这段代码 auth url http www facebook com dialog oauth client id FACEBO
  • 指令集架构的定义是什么?

    我试图弄清楚指令集架构 ISA 到底是什么 根据我所读到的内容 我有两种解释 我的第一个解释是 ISA 是所有寄存器 汇编指令和伪指令 汇编指令以及构成汇编语言的指令格式的集合 可用于对实现指令集的处理器进行编程 我的第二种解释是 ISA
  • 清除 C# 表单上所有控件的最佳方法是什么?

    我记得不久前看到有人问过类似的问题 但我进行了搜索 但找不到任何东西 我试图想出最干净的方法来将表单上的所有控件清除回默认值 例如 清除文本框 取消选中复选框 你会怎么做呢 到目前为止我想出的是这样的 public static class
  • C 宏的作用域规则

    我不是一个 C 程序员 但我假设 C 宏几乎是一种查找和替换功能 其中预处理器获取宏定义并将其放在它看到宏名称的任何位置 这是 Dragon Book 的动态范围规则及其如何应用于宏的示例 define a x 1 int x 2 void
  • 在 null Laravel 5.4 上调用成员函数 connection()

    尝试编写一个单元测试 我需要执行 sql 查询 class UpdateThrowsTest extends TestCase protected bgame protected game id 95 public function set
  • 是否可以声明升序列表?

    我可以像这样制作升序整数列表 findall L between 1 5 L List 我知道我还可以使用以下方法生成值 length X 但我不认为我可以在 findall 中使用它 就像下面的循环一样 findall X length
  • 为什么 BackgroundWorker 不需要在 ProgressChanged 事件处理程序中调用?

    自从ProgressChanged事件处理程序是从某个地方引发的DoWork事件处理程序 不应该在异步操作线程上调用它们吗 DoWork也运行在 UI 线程上 而不是 UI 线程上 因此需要 Invoke 或BeginInvoke操纵控制
  • 为什么 kubernetes 需要有 2 个 coredns pod

    我安装了新的 kubernetes 单节点集群 并且看到 2 个 coredns pod 正在运行 其中一个失败了 不是这个问题的一部分 为什么他们是2个 有关 CoreDNS 的详细调整信息link CoreDNS 内存使用情况主要受集群
  • Python:找不到 os.listdir 文件[重复]

    这个问题在这里已经有答案了 我最近将配置文件移动到项目中的另一个文件夹 我尝试像这样加载 CONFIG PATH os path abspath os path dirname os path abspath file config def
  • for循环后全局变量的值不会改变

    我正在开发一个hadoop项目 我想找到某一天的客户 然后写出当天消费最多的客户 在我的减速器类中 由于某种原因 全局变量maxfor 循环后不会改变它的值 EDIT我想找到某一天消费最多的顾客 我已经设法在我想要的日期找到客户 但我在减速
  • 如何将第 3 方 JAR 添加到 jGRASP 中的编译时类路径?

    我需要做什么才能成功导入ij包裹 我收到错误 ITCN java 1 package ij does not exist 进口产品为 import ij import ij io import ij gui import ij proces
  • Service Worker 将 API 调用中的文件添加到预缓存中

    使我的应用程序能够离线运行 在安装过程中 服务人员应该 从异步 API 获取 URL 列表 重新格式化响应 将响应中的所有 URL 添加到预缓存 对于此任务 我将 Google Workbox 与 Webpack 结合使用 问题 虽然服务工
  • 查找并计算网络中隔离和半隔离节点的数量

    我正在与经历了许多的网络合作扰乱事件 因此 许多节点会因给定事件而发生故障 因此 左侧图像与右侧图像之间存在过渡 我的问题 我怎样才能找到不连通的子图 即使它们只包含 1 个节点 我的目的是count他们并渲染失败了 因为在我的研究中 这适