seegongsik
我的单词本
数据

用点和线相连的资料,图

假设你把朋友关系写进表里。一行行记下谁和谁是朋友,要找朋友的朋友,就得把表翻来翻去好几遍。可要是把每个人画成一个点、把朋友关系画成一条线呢? 从一个点顺着线走就到了朋友,再顺着那位朋友的线走,朋友的朋友马上就看见。像这样用点和线装着关系的资料,就是图。

01

用点和线装下关系

前面我们学过,把值
按格子号排着装下来。
可有些数据,
比起每个值,之间的关系更要紧。
比如谁和谁是朋友。
这种东西排成一行就别扭。
所以我们把人画成点,
把朋友关系画成线。
光靠点和线,关系就原样装下了。

ABCDE
点 = 人 线 = 朋友关系
依次点两个人,用线连起来

依次点两个人,用线把他们连起来。点是人,线是朋友关系。

把点连起来,关系就看得见了。
谁和谁连着,
光看线就立刻知道。
比起在表里一行行写,
这更像一幅画,一看就懂。
点是对象,线是关系。
用这两样装下的资料就叫图。
那么顺着这些线走,
能知道些什么呢?

02

顺着线到朋友的朋友

从一个人开始吧。
顺着连到那个点的线走,
那个人的朋友马上就出来。
别停在那儿,
再顺着连到朋友那个点的线走,
朋友的朋友就出来了。
像这样一段段往远走,
就能到熟人的熟人。
推荐就是这么来的。

P1P2P3P4P5P6
朋友 朋友的朋友
点起点(我),先亮起朋友

点一个人会亮起朋友,再点会亮起朋友的朋友,一步步来。

点一下亮起朋友,
再点一下亮起朋友的朋友。
一个人离起点有多远,
由你走了几条线来定。
隔一条线是朋友,
隔两条线是朋友的朋友。
要是用表,为弄清这个
得翻来翻去好几遍。
顺着线走,就这么简单。

03

顺着邻居把这群人逛一遍

用线直接连到一个点的那些点,
叫这个点的邻居。
从一个点到它的邻居,
再到那些邻居的邻居,
顺着线一直扩散开来吧。
慢慢就再没地方可去了。
到那时走到过的点,
就是彼此相连的一群。
没有线连进来的点,不算在里头。

N1N2N3N4N5X1
点亮起的点的邻居,一段段铺开

点亮起的那群人边缘相邻的点,一段段铺开。只有连着的点会亮。

顺着邻居铺开,
连着的点一个个亮了起来。
线能到的地方,都能逛到。
反过来,隔开的点,
再怎么走也不会亮。
有没有线连着,把这群人分了开来。
像这样顺着邻居走,
在图里只看线就行,很轻松。
可要是同样的事用表来做呢?

04

用表做,还是用图做

假设朋友关系写在了表里。
要找朋友的朋友,
先在表里查出朋友记下来,
再对每个朋友重新翻一遍表。
每往远走一步,
就把表从头再扫一遍。
用图的话,从点顺着线走,
再从那个点顺着线走,就完事。
关系是核心的时候,图方便得多。

把"我的朋友的朋友"全找出来
用表解
0 次点击
用图解
0 次点击

用表和图各自解同一个"朋友的朋友"的问题。比一比各花几次点击。

用表找同一个答案,
点击多得多。
因为得反复查。
用图顺着线走两次就完了。
当然,表也不是坏东西。
要一行行直接记,表很好。
只是碰上顺着关系走的活,
用点和线装下的图
要自然得多、快得多。

05

来理一理

归成一句话,是这样。
把对象当点,把关系当线来装。
那就是图。
从一个点顺着线走会出来邻居,
再顺着邻居走就出来朋友的朋友。
沿着线扩散,连成一片的群就看见了。
关系是核心的活儿里,
用表得翻来翻去的,顺着线走就到了。
点是对象,线是关系,顺着邻居走,那就是图。

依次点要点回顾一下

依次点要点回顾一下。(点是对象、线是关系 → 朋友的朋友 → 顺着邻居走 → 关系就用图)

现在你知道了把关系用点和线装下来,
顺着线四处走的办法。
用表别扭的朋友的朋友,
在图里两条线就到了。
把资料摆成什么形状,
同一件事就有的变易、有的变难。
挑那个形状的眼光,
就是处理数据的力量。
下回也一起接着看下去。

一句话总结图是把对象当作点、把对象之间的关系当作线来装的资料。把人当作点、把朋友关系当作线,连接就一目了然。从一个点顺着线走会出来邻居,再顺着邻居的线走就出来朋友的朋友。像这样沿着线扩散,就能把连成一片的整群都逛一遍。在推荐、找连接这类以关系为核心的事情上,用表得翻来翻去的,用图只要顺着线走就到了。一句话,点是对象,线是关系,再顺着邻居走,这就是图。
数据
如果有帮助,请支持我们