Keywords: generate all maximal independent set
keywords: generate all shortest path
最近这几天在做一个无线网络中scheduling算法的项目,不可避免的要用到maximal independent sets来生成schedules,这个的算法是np-hard的,要自己写一个算法不经任何优化的程序对于稍微大一点图来说运算结果是灾难性的。google了一下,网上几乎找不到一个很好的解决方法,最后我找到的解决方法应该是最简单的。
是用python加上networkx库来实现的:
1) generate all maximal independent set (生成所有的最大独立节点)
import networkx as nx
#Construct your graph here by adding nodes and edges as Graph NG
#assuming you want to get maximal independent nodes for node graph NG
#calculate all maximal independant sets
list(nx.find_cliques(nx.complement(NG)))
#assuming you want to get maximal independent links
#convert the node graph to link graph
LG=nx.line_graph(NG)
#calculate all maximal independant sets
list(nx.find_cliques(nx.complement(LG)))
原理就是首先从node graph生成link graph,然后要用到一个定理,原图的补图的max cliques就是原图的max independent sets.
经过我的测试,40个节点的图算出结果还是很快的,60个节点的就有点慢了,有时候可以给出结果,有时候不行,但是没经过优化的c语言算60个节点的一个晚上也算不出来!
2)generate all routing
nx.all_pairs_shortest_path(NG)
分享到:
相关推荐
用NetworkX生成并绘制(带权)无向图 NetworkX是一个强大的网络科学工具,封装了图的数据结构和许多经典图算法,也内置了许多可视化函数可供调用。在这篇文章中,我们将学习如何使用NetworkX生成并绘制(带权)无向...
3.10 匹配(Matching)和最小独立集(Maximal independent set): - 匹配用于寻找网络中边集的匹配对,而最小独立集用于找出无交集的节点子集。 3.11 网络同构(Isomorphism)与节点分类(Node Classification)...
- **最大独立集算法** (Maximal Independent Set):寻找图中的最大独立集。 - **最小生成树算法** (Minimum Spanning Tree):计算图的最小生成树。 - **运算符算法** (Operators):定义图的合并、分解等操作。 - **...
### NetworkX 2.2 官方文档知识点总结 #### 一、介绍 **NetworkX** 是一个用于创建、操作以及研究复杂数学网络结构、动态与功能的 Python 库。NetworkX 提供了高效的类来存储和操作图结构,并且包含标准图形算法的...
NetworkX支持各种图论算法,包括但不限于生成树、最大流、最短路径、非降路径和欧拉一笔画问题等。 NetworkX库中的图分为有向图和无向图,它能够处理边有权重和标签的复杂图形。节点可以是任何哈希对象,如字符串、...
【Python图论算法实现工具——NetworkX(3)有向图、多图等图生成器及图的可视化1】 在图论中,图形是数据结构的一种抽象表示,用于描述对象之间的关系。Python中的NetworkX库提供了对各种图类型的支持,包括有向图...
它提供了许多算法,如图的生成、分析、遍历、计算度中心性、聚类系数等,是数据科学和社交网络分析领域的重要工具。这篇教程将详细介绍如何安装NetworkX以及所需的依赖软件,确保你的环境配置顺利。 首先,安装...
NetworkX是一个基于Python的开源软件包,用于创建、操作和研究复杂网络的结构、动态和功能。它具有广泛的功能,支持各种类型的图(包括多图和加权图)、各种图的生成器以及大量图算法。NetworkX参考手册涵盖了这些...
networkx官方文档,网络分析、网络可视化利器,方便科研、学习使用。 NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
学习networkx的Jupyter笔记
除了基本的网络操作,`networkx`还支持网络的转换和生成器,如将图转换为矩阵或使用随机网络生成器创建特定类型的网络。这些功能极大地扩展了分析网络结构的可能方式。 至于可视化,`networkx`虽然不自带图形渲染,...
networkx学习
NetworkX还可以处理多图、树形结构、图的生成器和转换等功能,支持读写多种图文件格式,如GML、GraphML、JSON等,以及与其他软件如Gephi的交互。 八、实战案例 在实际应用中,NetworkX常用于社交网络分析、生物...
根据给定文件内容,以下是“Networkx 官方文档”的相关知识点概述: ***workX基础 NetworkX是一个用Python编写的开源包,专门用于创建、操作复杂网络的图论和网络分析。它提供了丰富的数据结构,以及一套广泛的算法...
**Python复杂网络工具NetworkX详解** NetworkX是一个用于创建、操作和研究复杂网络结构的开源库,它在Python编程环境中提供了丰富的数据结构和算法。这个强大的工具被广泛应用于社交网络分析、生物信息学、信息科学...
"如何用Networkx画路线图"这个主题恰好聚焦于如何利用Python中的两个重要库——NetworkX和Matplotlib来实现这一目标。NetworkX是一个强大的库,用于创建、操作和研究复杂网络的结构、动态和功能;而Matplotlib则是...
networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx 最新源代码networkx ...
在Python的世界里,NetworkX是一个强大的图形库,用于创建、操作和研究复杂网络的结构、动态和功能。本文将深入探讨如何使用NetworkX处理无向图。无向图是图论中的基本概念,其中任意两个节点之间的边没有方向性。 ...