自己问 AI、自己粘代码、自己跑出结果 —— 不注册、不下载
1967 年,有人做了个实验:把一封信交给一个人,只准靠「熟人的熟人」转交,送到一个陌生城市的陌生人手里。 结果这封信大约只转了六次手。问题是:凭什么?
下面 5 个地方,你可以按自己的顺序动手。先猜,再试,然后跟同伴说说你发现了什么。
先别动手。20 个人围成一圈,每个人只认识左右两个邻居。一封信从 1 号出发,要送到正对面的 11 号。你猜要转几次手?先把这个数记下来。
挑 4 位你最常来往的同学,把名字写进去。然后一件一件地勾:他们之间,谁真的认识谁?
勾的时候,你其实在做一件事:把人变成点,把关系变成线。数学家管这个动作叫「建模」。
顺带算一下:4 个人之间最多能连 6 对关系,真正认识了几对?C = 认识的边数 ÷ 6。
「转了几手」只说明两个人之间。换成问整张网:随便挑两个人,平均要几步才能找到对方? 这个数叫 平均最短路径 Y。
现在问题变了:往这个圈里加几条跨圈的捷径,Y 会掉多快?先猜一个数,再拖滑块。
一张网能动的其实只有三样:多少人、每人认识几个、有多少跨圈捷径。拖它们,一边拖一边问自己:哪一样一动,整张网就变了样?
下面三张图,人数一样、每人认识的人数也一样,只有一样东西不同。三张都是用同一套规则真算出来的。先看,别急着读表 —— 你觉得它们像三种什么样的社会?
P = 0
规则网络
P ≈ 0.05
小世界网络
P = 1
随机网络
| 网络 | 集聚系数 C(抱团) | 平均最短路径 Y(通达) | 像什么 |
|---|---|---|---|
| 规则网络 P=0 | 0.50 | 12.88 | 一群人排排坐,只有身边人认识 |
| 小世界 P≈0.05 | 0.43 | 6.10 | 既抱团,又通达 —— 真实现象大多在这 |
| 随机网络 P=1 | 0.03 | 3.43 | 每人随便抓阄认人,圈子碎掉 |
你刚才做的事,其实就是做研究:先猜,再试,然后发现自己猜错在哪。 把下面三件事说给同桌听——说得出来,才说明真的懂了:
刚才五关,你都是靠一双手点出来的。现在换一件事:让别人替你把它算出来。 右下角有一个助手,它很会写程序,但它只会照着你说的话做 —— 你想让它算什么,就得先想清楚、说清楚。 拿到代码后粘进下面的框里,跑一跑,看看它算的和你心里想的一不一样。
留空的地方,助手会替你猜 —— 猜错了,改代码花的是你的时间。
运行结果会显示在这里…
刚才你是拖一下、看一眼。现在要的是数据:8 个不同的 P,各自的 C 和 Y。
先按最笨的办法做:自己改一次 P、跑一次,记下一行。跑上两三行,你大概就会碰到一个问题 —— 那个问题,正好是这一步要解决的。
运行结果会显示在这里…
把任务二那 8 行数据画成柱子图。先按最直接的想法画一次 —— C 和 Y 放在同一根轴上。
画完你多半会发现一个问题。那个问题不是画错了,是数据在提醒你:这两个数根本不能直接比。 接下来怎么处理,由你来想。
(画图也用 Python。最后一行写 fig.savefig('plot.png', dpi=150),图会显示在右边。)
运行结果会显示在这里…
前面算的都是「用规则造出来的网」。现在换一张真的:我们班的熟人网络。 把调查表发到班级群,每人写下自己最常来往的 3 位同学的学号。收齐之后,轮到你来算 —— 我们这个班,会不会也是一个「小世界」?
点下面的按钮,网站会把问卷收集到的数据放进一个叫 responses 的变量里:
[{"code":"03","friends":["05","11","22"]}, ...]
每个学生写自己最常来往的 3 个学号,就形成一张有向的熟人网络。 现在算:平均每个人认识几个?网络的集聚系数 C 是多少?平均最短路径 Y 是多少?
运行结果会显示在这里…