Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
think-comp-2e-zh
提交
b36f36f1
T
think-comp-2e-zh
项目概览
OpenDocCN
/
think-comp-2e-zh
10 个月 前同步成功
通知
0
Star
16
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
think-comp-2e-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b36f36f1
编写于
11月 01, 2017
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
3.3
上级
a97ab161
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
57 addition
and
0 deletion
+57
-0
3.md
3.md
+57
-0
未找到文件。
3.md
浏览文件 @
b36f36f1
...
...
@@ -48,4 +48,61 @@ Watts 和 Strogatz 发现,较小的`p`值产生高群聚性的图,如正则
+
然后,我们为范围内的
`p`
值计算群聚度和路径长度。
+
最后,我将介绍一种用于计算最短路径的高效算法,Dijkstra 算法。
## 3.3 环格
![](
img/3-1.jpg
)
> 图 3.1 `n=10`,`k=4`的环格
正则图是每个节点具有相同数量的邻居的图;邻居的数量也称为节点的度。
环格是一种正则图,Watts 和 Strogatz 将其用作模型的基础。 在具有
`n`
个节点的环格中,节点可以排列成圆形,每个节点连接
`k`
个最近邻居。
例如,
`n = 3`
和
`k = 2`
的环形网格将拥有以下边:
`(0, 1), (1, 2), (2, 0)`
。 请注意,边从编号最高的节点“绕回”0。
更一般地,我们可以像这样枚举边:
```
py
def
adjacent_edges
(
nodes
,
halfk
):
n
=
len
(
nodes
)
for
i
,
u
in
enumerate
(
nodes
):
for
j
in
range
(
i
+
1
,
i
+
halfk
+
1
):
v
=
nodes
[
j
%
n
]
yield
u
,
v
```
`adjacent_edges`
接受节点列表和参数
`halfk`
,它是
`k`
的一半。它是一个生成器函数,一次产生一个边。它使用模运算符
`%`
,从编号最高的节点绕回最低的节点。
我们可以这样测试:
```
py
>>>
nodes
=
range
(
3
)
>>>
for
edge
in
adjacent_edges
(
nodes
,
1
):
...
print
(
edge
)
(
0
,
1
)
(
1
,
2
)
(
2
,
0
)
```
现在我们可以使用
`adjacent_edges`
来生成环格。
```
py
def
make_ring_lattice
(
n
,
k
):
G
=
nx
.
Graph
()
nodes
=
range
(
n
)
G
.
add_nodes_from
(
nodes
)
G
.
add_edges_from
(
adjacent_edges
(
nodes
,
k
//
2
))
return
G
```
注意,
`make_ring_lattice`
使用地板除计算
`halfk`
,所以如果
`k`
是奇数,它将向下取整并产生具有度
`k-1`
的环格。这可能不是我们想要的,但现在还不错。
我们可以像这样测试函数:
```
py
lattice
=
make_ring_lattice
(
10
,
4
)
```
图(?)展示了结果。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录