首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python:一步一步地实现无标度网络的修正Barabasi-Albert模型。

Python:一步一步地实现无标度网络的修正Barabasi-Albert模型。
EN

Stack Overflow用户
提问于 2016-06-24 00:20:30
回答 1查看 6.9K关注 0票数 4

在Python中,我需要创建一个指数网络,它不同于指数随机图。

2005年,刘唐推出了指数网络。,并起源于一个轻微的变化巴拉巴西-阿尔伯特模型,用来创建无标度网络.这个新算法仍然使用增长和优先附加,但其方式是:

  • 所述网络从初始节点数n增长到最终数目N;
  • 一个新节点不是连接到高连接度的节点,而是连接到平均度最高的邻域节点。

因此,现在驱动附件的不是现有节点的程度,而是节点邻域的平均程度。这意味着生成Barabasi-Albert模型的算法需要修改,这就是我的目标。

我想用简单的一步一步的方式编写一个代码,使用嵌套的for循环来模拟生长和优先依附。另外,我希望为节点分配特定的位置,如下所示:

代码语言:javascript
运行
AI代码解释
复制
n=100 #Final number of nodes
ncols = 10 #Number of columns of a 10x10 grid
pos = {i : (i // ncols, (n-i-1) % ncols) for i in G.nodes()} #G=graph

My的问题:可以通过访问图()函数的源代码来实现这一点,但是我不知道哪个是增长阶段,哪个是优先附加阶段,以及每个节点的程度是在哪里计算的。,如果有人能给我指路,我会很高兴的。

nx.barabasi_albert_graph()函数的源代码:

代码语言:javascript
运行
AI代码解释
复制
def barabasi_albert_graph(n, m, seed=None):

    if m < 1 or  m >=n:
        raise nx.NetworkXError(\
              "Barabási-Albert network must have m>=1 and m<n, m=%d,n=%d"%(m,n))
    if seed is not None:
        random.seed(seed)

    # Add m initial nodes (m0 in barabasi-speak)
    G=empty_graph(m)
    G.name="barabasi_albert_graph(%s,%s)"%(n,m)
    # Target nodes for new edges
    targets=list(range(m))
    # List of existing nodes, with nodes repeated once for each adjacent edge
    repeated_nodes=[]
    # Start adding the other n-m nodes. The first node is m.
    source=m
    while source<n:
        # Add edges to m nodes from the source.
        G.add_edges_from(zip([source]*m,targets))
        # Add one node to the list for each new edge just created.
        repeated_nodes.extend(targets)
        # And the new node "source" has m edges to add to the list.
        repeated_nodes.extend([source]*m)
        # Now choose m unique nodes from the existing nodes
        # Pick uniformly from repeated_nodes (preferential attachement)
        targets = _random_subset(repeated_nodes,m)
        source += 1
    return G
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-27 19:50:13

我已经实现了一个Barabasi-Albert图增长动画,并且我认为该实现对于优先附加条件和节点位置来说是很容易调整的。

节点定位

您需要查看animate_BA函数的节点位置(正如我随机选择的)在第39行(用于启动节点)和第69行(用于新添加的节点)。

生长阶段

至于增长阶段,这是在一个单独的函数choose_neighbors中实现的,该函数调用该函数将一个新节点插入到图中。我的实现选择了一个概率连接的节点:(deg(i)+1)/Sum(deg(i)+1),其中i是图中的一个节点,deg(i)是该节点的程度,Sum(deg(i)+1)是图+ 1中所有节点的度之和。这是通过创建一个从0到1的浮点数列表,指定每个节点根据其degree.You选择的概率来实现的。因此,您必须创建这个列表,但不同的是,这个函数调用select_neighbors函数来根据定义的概率随机选择邻居。

其他功能主要与动画相关,因此您可能不需要查看它们。代码有文档化,您可以在那里找到进一步的解释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38008748

复制
相关文章
[笔记]使用Python一步一步地来进行数据分析
原文 http://www.cnblogs.com/nxld/p/6058998.html 你已经决定来学习Python,但是你之前没有编程经验。因此,你常常对从哪儿着手而感到困惑,这么多Python的知识需要去学习。以下这些是那些开始使用Python数据分析的初学者的普遍遇到的问题: 需要多久来学习Python? 我需要学习Python到什么程度才能来进行数据分析呢? 学习Python最好的书或者课程有哪些呢? 为了处理数据集,我应该成为一个Python的编程专家吗? 当开始学习一项新技术时,这些都是可
机器学习AI算法工程
2018/03/14
1.5K0
[笔记]使用Python一步一步地来进行数据分析
一步一步实现Android的MVP框架
内容大纲: Android 开发框架的选择 如何一步步搭建分层框架 使用 RxJava 来解决主线程发出网络请求的问题 结语 一、Android开发框架的选择 由于原生 Android 开发应该已经是一个基础的 MVC 框架,所以在初始开发的时候并没有遇到太多框架上的问题,可是一旦项目规模到了一定的程度,就需要对整个项目的代码结构做一个总体上的规划,最终的目的是使代码可读,维护性好,方便测试。 只有项目复杂度到了一定程度才需要使用一些更灵活的框架或者结构,简单来说,写个 Hello World 并不需要任何
腾讯Bugly
2018/02/09
1.5K0
一步一步实现Android的MVP框架
一步一步实现读写锁
多线程编程中,需要对共享变量进行加锁。但是频繁地加锁,会对程序效率有很大影响。在某些读多写少的场景下,多个线程进行读数据时,如果都加互斥锁,这显然是不必须的。于是读写锁便应运而生。 读写锁的加锁规则: 1 如果没有加写锁时,那么多个线程可以同时加读锁;如果有加写锁时,不可以加读锁 2 不管是加了读锁还是写锁,都不能继续加写锁。 满足这两个条件,便可以初步实现一个读写锁。我们用两个锁,一个变量,实现一个简单的读写锁,代码如下 class rwlock { public: rwlock(): read_cnt
2018/01/17
4.2K1
CocosCreator一步一步实现重力球游戏
通过手机陀螺仪,调整手机,让球从上一层的间隔中落到下一层,楼层会不断上涨,如果球碰到上方或者下方的火焰,游戏结束。
一枚小工
2020/03/02
1.6K0
一步一步学Python(3) 基础补充
最近在系统学习Python,以MOOC上面的一套Python3的课程为基础。本文主要总结一下基础部分的关键点。
Alfred Zhao
2019/05/24
3960
干货 | 2021 年如何一步一步的学习 Python
众所周知,Python 是一门重要的编程语言,广泛的应用于数据科学、web开发、软件工程、游戏开发、自动化等领域。那么学习 Python 最好的方法是什么呢?其实这是很多初学者的困惑点,都是 Python 好学也好用,但是到底该怎么学呢,下面我就分享一下我个人的一点心得!
周萝卜
2021/02/25
7440
干货 | 2021 年如何一步一步的学习 Python
复杂性思维第二版 四、无标度网络
在本章中,我们将处理来自在线社交网络的数据,并使用 WS 图对其进行建模。WS 模型像数据一样,具有小世界网络的特点,但是与数据不同,它的节点到节点的邻居数目变化很小。
ApacheCN_飞龙
2022/12/01
7450
复杂性思维第二版 四、无标度网络
摸清网络的第一步!
之前写了那么多网络的文章,竟然发现对「网络协议分层」做详细介绍,这次就把这一块补上。
小林coding
2021/01/26
3580
教程 | 一步一步,看图理解长短期记忆网络与门控循环网络
循环神经网络(RNN)很大程度上会受到短期记忆的影响,如果序列足够长,它们将很难将信息从早期时间步传递到靠后的时间步。因此,如果你试图处理一段文字来做预测,RNN 可能从一开始就遗漏掉重要的信息。
机器之心
2018/10/22
5990
教程 | 一步一步,看图理解长短期记忆网络与门控循环网络
【深度学习基础】一步一步讲解卷积神经网络
卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一。
郭好奇同学
2020/11/25
7640
【深度学习基础】一步一步讲解卷积神经网络
一步一步教你如何用python操作mysql
这是日常学python的第九篇原创文章 首先祝大家新年快乐哈!学生的估计明天也要上课了,工作的估计早就去上班了,我也快要上课了,哈哈,新年这段时间一直没有写过文章,一直忙于跑亲戚和学习,感觉有点对不起关注我的粉丝。所以,今天决定抽空写一篇技术文章来给大家看看,继上篇写了入门mysql之后,还没有学习如何用python来操作数据库,那我今天就带大家来学习如何用python操操作数据库。 还有文末有福利,这算是给大家的新年礼物(记得点赞哦) 进入正题 工欲善其事,必先利其器。所以第一步,我们先下载第三方库。在这
sergiojune
2018/04/04
1.6K0
TensorFlow 手写数字识别与一步一步实现卷积神经网络(附代码实战)
手写数字识别 接下来将会以 MNIST 数据集为例,使用卷积层和池化层,实现一个卷积神经网络来进行手写数字识别,并输出卷积和池化效果。 数据准备 MNIST 数据集下载 MNIST 数据集可以从 THE MNIST DATABASE of handwritten digits 的网站直接下载。 网址:http://yann.lecun.com/exdb/mnist/ train-images-idx3-ubyte.gz: 训练集图片 train-labels-idx1-ubyte.gz: 训练集列标 t10
磐创AI
2018/04/24
2.8K0
TensorFlow 手写数字识别与一步一步实现卷积神经网络(附代码实战)
教程 | 一步一步,看图理解长短期记忆网络与门控循环网络
大家好,欢迎来到 LSTM 和 GRU 的图解指南。在本文中,Michael 将从 LSTM 和 GRU 的背后的原理开始,然后解释令 LSTM 和 GRU 具有优秀性能的内部机制。如果你想了解这两个网络背后发生了什么,这篇文章就是为你准备的。
昱良
2018/10/23
1.1K0
教程 | 一步一步,看图理解长短期记忆网络与门控循环网络
【Vuejs】1000- 一步一步实现 Vue 3 Reactivity
在这之前,我也写了一篇《探索 Vue.js 响应式原理》 ,主要介绍 Vue 2 响应式的原理,这篇补上 Vue 3 的。
pingan8787
2021/07/20
7240
[跨界]纵深视角:无标度认知,认知进化
The Computational Boundary of a “Self”: Developmental Bioelectricity Drives Multicellularity and Scale-Free Cognition
CreateAMind
2022/06/10
4220
[跨界]纵深视角:无标度认知,认知进化
游戏任务系统太复杂,带你一步一步实现
前言:一直在写Java 方面的,今天写一写游戏设计方面的 一任务系统。任务系统是每个任务的标配,不管是普通的小游戏,还是大型的端游,手游,没了任务系统的游戏是不完整的。任务系统是游戏的驱动,是玩家的目标,有了目标才会有追求,正常完成任务都会获得奖励,有糖吃,开心。
香菜聊游戏
2021/05/26
3.6K0
游戏任务系统太复杂,带你一步一步实现
Flutter 通过源码一步一步剖析 Getx 依赖管理的实现
本文将通过 Getx 的源码剖析 Getx 依赖管理的具体实现,带你一步一步的了解 Getx 的依赖管理原理,从而在开发过程中灵活使用 Getx 的依赖注入。
loongwind
2022/09/27
1.1K0
我们是这样一步一步实现分布式锁的
昨天我给大家分享了我们电商平台是怎么去做分布式事务的(不好意思,懂分布式事务的你真的很了不起,下篇,不好意思,懂分布式事务的你真的很了不起,上篇),忘记了的朋友希望能回去扫一下,这些都是你进阶路上必须要经历的。
架构师修炼
2020/07/20
3910
我们是这样一步一步实现分布式锁的
Linux网络编程一步一步学-异步通讯聊天程序select
/************关于本文档********************************************
阳光岛主
2019/02/19
8060
图论与图学习(一):图的基本概念
本文是其中第一篇,介绍了图的一些基础知识并给出了 Python 示例。更多文章和对应代码可访问:https://github.com/maelfabien/Machine_Learning_Tutorials。
机器之心
2019/08/01
1.9K0
图论与图学习(一):图的基本概念

相似问题

实现Barabasi-Albert方法建立无标度网络

12

一步一步地实现AVL树

13

从HTML页面一步一步地实现jquery

13

python:一步一步地从流中读取整数

10

熊猫一步一步地填充

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文