用点和线相连的资料,图
假设你把朋友关系写进表里。一行行记下谁和谁是朋友,要找朋友的朋友,就得把表翻来翻去好几遍。可要是把每个人画成一个点、把朋友关系画成一条线呢? 从一个点顺着线走就到了朋友,再顺着那位朋友的线走,朋友的朋友马上就看见。像这样用点和线装着关系的资料,就是图。
用点和线装下关系
前面我们学过,把值
按格子号排着装下来。
可有些数据,
比起每个值,之间的关系更要紧。
比如谁和谁是朋友。
这种东西排成一行就别扭。
所以我们把人画成点,
把朋友关系画成线。
光靠点和线,关系就原样装下了。
依次点两个人,用线把他们连起来。点是人,线是朋友关系。
把点连起来,关系就看得见了。
谁和谁连着,
光看线就立刻知道。
比起在表里一行行写,
这更像一幅画,一看就懂。
点是对象,线是关系。
用这两样装下的资料就叫图。
那么顺着这些线走,
能知道些什么呢?
顺着线到朋友的朋友
从一个人开始吧。
顺着连到那个点的线走,
那个人的朋友马上就出来。
别停在那儿,
再顺着连到朋友那个点的线走,
朋友的朋友就出来了。
像这样一段段往远走,
就能到熟人的熟人。
推荐就是这么来的。
点一个人会亮起朋友,再点会亮起朋友的朋友,一步步来。
点一下亮起朋友,
再点一下亮起朋友的朋友。
一个人离起点有多远,
由你走了几条线来定。
隔一条线是朋友,
隔两条线是朋友的朋友。
要是用表,为弄清这个
得翻来翻去好几遍。
顺着线走,就这么简单。
顺着邻居把这群人逛一遍
用线直接连到一个点的那些点,
叫这个点的邻居。
从一个点到它的邻居,
再到那些邻居的邻居,
顺着线一直扩散开来吧。
慢慢就再没地方可去了。
到那时走到过的点,
就是彼此相连的一群。
没有线连进来的点,不算在里头。
点亮起的那群人边缘相邻的点,一段段铺开。只有连着的点会亮。
顺着邻居铺开,
连着的点一个个亮了起来。
线能到的地方,都能逛到。
反过来,隔开的点,
再怎么走也不会亮。
有没有线连着,把这群人分了开来。
像这样顺着邻居走,
在图里只看线就行,很轻松。
可要是同样的事用表来做呢?
用表做,还是用图做
假设朋友关系写在了表里。
要找朋友的朋友,
先在表里查出朋友记下来,
再对每个朋友重新翻一遍表。
每往远走一步,
就把表从头再扫一遍。
用图的话,从点顺着线走,
再从那个点顺着线走,就完事。
关系是核心的时候,图方便得多。
用表和图各自解同一个"朋友的朋友"的问题。比一比各花几次点击。
用表找同一个答案,
点击多得多。
因为得反复查。
用图顺着线走两次就完了。
当然,表也不是坏东西。
要一行行直接记,表很好。
只是碰上顺着关系走的活,
用点和线装下的图
要自然得多、快得多。
来理一理
归成一句话,是这样。
把对象当点,把关系当线来装。
那就是图。
从一个点顺着线走会出来邻居,
再顺着邻居走就出来朋友的朋友。
沿着线扩散,连成一片的群就看见了。
关系是核心的活儿里,
用表得翻来翻去的,顺着线走就到了。
点是对象,线是关系,顺着邻居走,那就是图。
依次点要点回顾一下。(点是对象、线是关系 → 朋友的朋友 → 顺着邻居走 → 关系就用图)
现在你知道了把关系用点和线装下来,
顺着线四处走的办法。
用表别扭的朋友的朋友,
在图里两条线就到了。
把资料摆成什么形状,
同一件事就有的变易、有的变难。
挑那个形状的眼光,
就是处理数据的力量。
下回也一起接着看下去。