gt文件格式
gt文件格式是一种简单的二进制格式,用来存储graph-tool的图实例,以一个紧凑和快速的方式,包括了库支持所有类型的属性映射。
它是graphml格式(基于文本)的另一种选择,graphml用来处理非常大的图时,其 I / O 可能变得非常耗费时间和空间。
这里我们详细描述了gt的编码方式,使用graph_tool.collection模块中的lesmis网络作为例子。
header
其以utf-8编码的字符串⛾gt开头,共计6个字节;紧随其后的是版本号(目前是0x01),占一个字节;和一个布尔值(一个字节)来确定字节顺序(0x00:低位,0 x01:高位):
00000000 e2 9b be 20 67 74 01 00 |... gt..|
00000008
注释字符串
紧随其后的是一个注释字符串。
字符串以(8字节,uint64_t)的长度存储,对应的字节序列,不以null结尾。
注释可能是空的,但graph-tool输出一个人可读的文件,可以被类似于hexdump的工具检测:
00000000 e2 9b be 20 67 74 01 00 dd 00 00 00 00 00 00 00 |... gt..........|
.
00000010 67 72 61 70 68 2d 74 6f 6f 6c 20 62 69 6e 61 72 |graph-tool binar|
00000020 79 20 66 69 6c 65 20 28 68 74 74 70 3a 3a 2f 2f |y file (http:://|
00000030 67 72 61 70 68 2d 74 6f 6f 6c 2e 73 6b 65 77 65 |graph-tool.skewe|
00000040 64 2e 64 65 29 20 67 65 6e 65 72 61 74 65 64 20 |d.de) generated |
00000050 62 79 20 76 65 72 73 69 6f 6e 20 32 2e 32 2e 33 |by version 2.2.3|
00000060 32 64 65 76 20 28 63 6f 6d 6d 69 74 20 64 34 66 |2dev (commit d4f|
00000070 31 66 31 62 66 2c 20 4d 6f 6e 20 41 75 67 20 31 |1f1bf, Mon Aug 1|
00000080 31 20 31 36 3a 32 36 3a 35 34 20 32 30 31 34 20 |1 16:26:54 2014 |
00000090 2b 30 32 30 30 29 20 73 74 61 74 73 3a 20 37 37 |+0200) stats: 77|
000000a0 20 76 65 72 74 69 63 65 73 2c 20 32 35 34 20 65 | vertices, 254 e|
000000b0 64 67 65 73 2c 20 75 6e 64 69 72 65 63 74 65 64 |dges, undirected|
000000c0 2c 20 32 20 67 72 61 70 68 20 70 72 6f 70 73 2c |, 2 graph props,|
000000d0 20 32 20 76 65 72 74 65 78 20 70 72 6f 70 73 2c | 2 vertex props,|
000000e0 20 31 20 65 64 67 65 20 70 72 6f 70 73 | 1 edge props|
000000ed
邻接表
邻接表如下,以一个布尔字节指定图是否有向(0x00:无向,0x01:有向);和8个字节(uint64_t)包含的节点数量,N。紧随其后的是N个节点序列的out-neighbours的列表。
序列本身决定了隐式的索引节点,范围从0到n - 1。
给定节点out-neighbours列表是由长度(8字节,uint64_t)和一系列长度节点索引组成。
列表中字节数d的数值被用于编码节点索引,其是由N的值决定的,是集合{1,2,4,8}({uint8_t、uint16_t uint32_t,uint64_t }的最小值),其足以容纳所有N个节点。
对于无向图,这是很重要的,每条边只出现一次,也就是说,如果节点u在列表中是v的邻接点,然后v不应该再出现在列表u中,否则会被认为是一个不同的边(平行)。
In this way, the total number of bytes used for the adjacency is 1 + 8 + N * 8 + E * d with E being the number of edges:
通过这种方式,用于邻接的字节总数是1 + 8 + N * 8 + E * d,E是边的数量:
00000000 e2 9b be 20 67 74 01 00 dd 00 00 00 00 00 00 00 |... gt..........|
.
00000010 67 72 61 70 68 2d 74 6f 6f 6c 20 62 69 6e 61 72 |graph-tool binar|
00000020 79 20 66 69 6c 65 20 28 68 74 74 70 3a 3a 2f 2f |y file (http:://|
00000030 67 72 61 70 68 2d 74 6f 6f 6c 2e 73 6b 65 77 65 |graph-tool.skewe|
00000040 64 2e 64 65 29 20 67 65 6e 65 72 61 74 65 64 20 |d.de) generated |
00000050 62 79 20 76 65 72 73 69 6f 6e 20 32 2e 32 2e 33 |by version 2.2.3|
00000060 32 64 65 76 20 28 63 6f 6d 6d 69 74 20 64 34 66 |2dev (commit d4f|
00000070 31 66 31 62 66 2c 20 4d 6f 6e 20 41 75 67 20 31 |1f1bf, Mon Aug 1|
00000080 31 20 31 36 3a 32 36 3a 35 34 20 32 30 31 34 20 |1 16:26:54 2014 |
00000090 2b 30 32 30 30 29 20 73 74 61 74 73 3a 20 37 37 |+0200) stats: 77|
000000a0 20 76 65 72 74 69 63 65 73 2c 20 32 35 34 20 65 | vertices, 254 e|
000000b0 64 67 65 73 2c 20 75 6e 64 69 72 65 63 74 65 64 |dges, undirected|
000000c0 2c 20 32 20 67 72 61 70 68 20 70 72 6f 70 73 2c |, 2 graph props,|
000000d0 20 32 20 76 65 72 74 65 78 20 70 72 6f 70 73 2c | 2 vertex props,|
000000e0 20 31 20 65 64 67 65 20 70 72 6f 70 73 00 4d 00 | 1 edge props.M.|
.
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 |................|
00000100 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................|
00000110 02 00 00 00 00 00 00 00 00 02 01 00 00 00 00 00 |................|
00000120 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 |................|
00000130 00 00 00 00 00 01 00 00 00 00 00 00 00 00 01 00 |................|
00000140 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................|
00000150 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................|
00000160 0a 03 02 00 01 00 00 00 00 00 00 00 0b 01 00 00 |................|
00000170 00 00 00 00 00 0b 01 00 00 00 00 00 00 00 0b 01 |................|
00000180 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 00 |................|
00000190 01 00 00 00 00 00 00 00 10 02 00 00 00 00 00 00 |................|
000001a0 00 10 11 03 00 00 00 00 00 00 00 10 11 12 04 00 |................|
000001b0 00 00 00 00 00 00 10 11 12 13 05 00 00 00 00 00 |................|
000001c0 00 00 10 11 12 13 14 06 00 00 00 00 00 00 00 10 |................|
000001d0 11 12 13 14 15 09 00 00 00 00 00 00 00 10 11 12 |................|
000001e0 13 14 15 16 0c 0b 02 00 00 00 00 00 00 00 17 0b |................|
000001f0 03 00 00 00 00 00 00 00 18 17 0b 04 00 00 00 00 |................|
00000200 00 00 00 18 0b 10 19 05 00 00 00 00 00 00 00 0b |................|
00000210 17 19 18 1a 02 00 00 00 00 00 00 00 0b 1b 03 00 |................|
00000220 00 00 00 00 00 00 17 1b 0b 01 00 00 00 00 00 00 |................|
00000230 00 17 04 00 00 00 00 00 00 00 1e 0b 17 1b 01 00 |................|
00000240 00 00 00 00 00 00 0b 02 00 00 00 00 00 00 00 0b |................|
00000250 1b 02 00 00 00 00 00 00 00 0b 1d 03 00 00 00 00 |................|
00000260 00 00 00 0b 22 1d 04 00 00 00 00 00 00 00 22 23 |...."........."#|
00000270 0b 1d 05 00 00 00 00 00 00 00 22 23 24 0b 1d 06 |.........."#$...|
00000280 00 00 00 00 00 00 00 22 23 24 25 0b 1d 01 00 00 |......."#$%.....|
00000290 00 00 00 00 00 19 01 00 00 00 00 00 00 00 19 02 |................|
000002a0 00 00 00 00 00 00 00 18 19 03 00 00 00 00 00 00 |................|
000002b0 00 29 19 18 03 00 00 00 00 00 00 00 0b 1a 1b 02 |.)..............|
000002c0 00 00 00 00 00 00 00 1c 0b 01 00 00 00 00 00 00 |................|
000002d0 00 1c 00 00 00 00 00 00 00 00 01 00 00 00 00 00 |................|
000002e0 00 00 2e 04 00 00 00 00 00 00 00 2f 19 1b 0b 02 |.........../....|
000002f0 00 00 00 00 00 00 00 1a 0b 02 00 00 00 00 00 00 |................|
00000300 00 31 18 03 00 00 00 00 00 00 00 31 1a 0b 02 00 |.1.........1....|
00000310 00 00 00 00 00 00 33 27 01 00 00 00 00 00 00 00 |......3'........|
00000320 33 03 00 00 00 00 00 00 00 33 31 1a 0a 00 00 00 |3........31.....|
00000330 00 00 00 00 33 31 27 36 1a 0b 10 19 29 30 02 00 |....31'6....)0..|
00000340 00 00 00 00 00 00 31 37 03 00 00 00 00 00 00 00 |......17........|
00000350 37 29 30 05 00 00 00 00 00 00 00 37 30 1b 39 0b |7)0........70.9.|
00000360 04 00 00 00 00 00 00 00 3a 37 30 39 03 00 00 00 |........:709....|
00000370 00 00 00 00 30 3a 3b 06 00 00 00 00 00 00 00 30 |....0:;........0|
00000380 3a 3c 3b 39 37 08 00 00 00 00 00 00 00 37 3a 3b |:<;97........7:;|
00000390 30 39 29 3d 3c 08 00 00 00 00 00 00 00 3b 30 3e |09)=<........;0>|
000003a0 39 3a 3d 3c 37 0a 00 00 00 00 00 00 00 37 3e 30 |9:=<7........7>0|
000003b0 3f 3a 3d 3c 3b 39 0b 0a 00 00 00 00 00 00 00 3f |?:=<;9.........?|
000003c0 40 30 3e 3a 3d 3c 3b 39 37 09 00 00 00 00 00 00 |@0>:=<;97.......|
000003d0 00 40 3a 3b 3e 41 30 3f 3d 3c 01 00 00 00 00 00 |.@:;>A0?=<......|
000003e0 00 00 39 06 00 00 00 00 00 00 00 19 0b 18 1b 30 |..9............0|
000003f0 29 07 00 00 00 00 00 00 00 19 44 0b 18 1b 30 29 |).........D...0)|
00000400 08 00 00 00 00 00 00 00 19 45 44 0b 18 1b 29 3a |.........ED...):|
00000410 08 00 00 00 00 00 00 00 1b 45 44 46 0b 30 29 19 |.........EDF.0).|
00000420 03 00 00 00 00 00 00 00 1a 1b 0b 01 00 00 00 00 |................|
00000430 00 00 00 30 02 00 00 00 00 00 00 00 30 49 07 00 |...0........0I..|
00000440 00 00 00 00 00 00 45 44 19 30 29 46 47 07 00 00 |......ED.0)FG...|
00000450 00 00 00 00 00 40 41 42 3f 3e 30 3a |.....@AB?>0:|
0000045c
属性映射表
邻接,紧随其后的是一个属性映射的列表。
列表以一个总数的属性映射(8字节,uint64_t)开始,然后是独立的记录。
每个属性映射始于一个关键类型(1字节,uint8_t)来指定它是否是一个图(0x00),一个顶点(0x01)或一条边(0x02)的属性映射,紧随其后的是一个字符串(8字节长度+长度字节)包含属性映射的名称。
接着是一个字节(uint8_t)来指定值类型的索引,如下表:
Type name | Bytes | Index |
---|---|---|
bool | 1 | 0x00 |
int16_t | 2 | 0x01 |
int32_t | 4 | 0x02 |
int64_t | 8 | 0x03 |
double | 8 | 0x04 |
long double | 16 | 0x05 |
string | 8 + length | 0x06 |
vector bool> | 8 + length | 0x07 |
vector int16_t> | 8 + 2 * length | 0x08 |
vector int32_t> | 8 + 4 * length | 0x09 |
vector int64_t> | 8 + 8 * length | 0x0a |
vector double> | 8 + 8 * length | 0x0b |
vector long double> | 8 + 16 * length | 0x0c |
vector string> | 8 + |
0x0d |
python::object | 8 + length | 0x0e |
属性映射值的次序与顶点索引(顶点属性)的次序排列一致;或者与前面的邻接表(边属性)中边出现的顺序一致。
属性映射中,只有一个值,其如下:
字符串和向量以8个字节(uint64_t)的长度的前缀来编码,其次是一个序列,其大小与元素大小相匹配。
vector
python::object类型的值以字符串进行编码,通过pickle来编码或解码字符串的内容。
00000000 e2 9b be 20 67 74 01 00 dd 00 00 00 00 00 00 00 |... gt..........|
00000010 67 72 61 70 68 2d 74 6f 6f 6c 20 62 69 6e 61 72 |graph-tool binar|
00000020 79 20 66 69 6c 65 20 28 68 74 74 70 3a 3a 2f 2f |y file (http:://|
00000030 67 72 61 70 68 2d 74 6f 6f 6c 2e 73 6b 65 77 65 |graph-tool.skewe|
00000040 64 2e 64 65 29 20 67 65 6e 65 72 61 74 65 64 20 |d.de) generated |
00000050 62 79 20 76 65 72 73 69 6f 6e 20 32 2e 32 2e 33 |by version 2.2.3|
00000060 32 64 65 76 20 28 63 6f 6d 6d 69 74 20 64 34 66 |2dev (commit d4f|
00000070 31 66 31 62 66 2c 20 4d 6f 6e 20 41 75 67 20 31 |1f1bf, Mon Aug 1|
00000080 31 20 31 36 3a 32 36 3a 35 34 20 32 30 31 34 20 |1 16:26:54 2014 |
00000090 2b 30 32 30 30 29 20 73 74 61 74 73 3a 20 37 37 |+0200) stats: 77|
000000a0 20 76 65 72 74 69 63 65 73 2c 20 32 35 34 20 65 | vertices, 254 e|
000000b0 64 67 65 73 2c 20 75 6e 64 69 72 65 63 74 65 64 |dges, undirected|
000000c0 2c 20 32 20 67 72 61 70 68 20 70 72 6f 70 73 2c |, 2 graph props,|
000000d0 20 32 20 76 65 72 74 65 78 20 70 72 6f 70 73 2c | 2 vertex props,|
000000e0 20 31 20 65 64 67 65 20 70 72 6f 70 73 00 4d 00 | 1 edge props.M.|
000000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 |................|
00000100 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................|
00000110 02 00 00 00 00 00 00 00 00 02 01 00 00 00 00 00 |................|
00000120 00 00 00 01 00 00 00 00 00 00 00 00 01 00 00 00 |................|
00000130 00 00 00 00 00 01 00 00 00 00 00 00 00 00 01 00 |................|
00000140 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 |................|
00000150 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 |................|
00000160 0a 03 02 00 01 00 00 00 00 00 00 00 0b 01 00 00 |................|
00000170 00 00 00 00 00 0b 01 00 00 00 00 00 00 00 0b 01 |................|
00000180 00 00 00 00 00 00 00 0b 00 00 00 00 00 00 00 00 |................|
00000190 01 00 00 00 00 00 00 00 10 02 00 00 00 00 00 00 |................|
000001a0 00 10 11 03 00 00 00 00 00 00 00 10 11 12 04 00 |................|
000001b0 00 00 00 00 00 00 10 11 12 13 05 00 00 00 00 00 |................|
000001c0 00 00 10 11 12 13 14 06 00 00 00 00 00 00 00 10 |................|
000001d0 11 12 13 14 15 09 00 00 00 00 00 00 00 10 11 12 |................|
000001e0 13 14 15 16 0c 0b 02 00 00 00 00 00 00 00 17 0b |................|
000001f0 03 00 00 00 00 00 00 00 18 17 0b 04 00 00 00 00 |................|
00000200 00 00 00 18 0b 10 19 05 00 00 00 00 00 00 00 0b |................|
00000210 17 19 18 1a 02 00 00 00 00 00 00 00 0b 1b 03 00 |................|
00000220 00 00 00 00 00 00 17 1b 0b 01 00 00 00 00 00 00 |................|
00000230 00 17 04 00 00 00 00 00 00 00 1e 0b 17 1b 01 00 |................|
00000240 00 00 00 00 00 00 0b 02 00 00 00 00 00 00 00 0b |................|
00000250 1b 02 00 00 00 00 00 00 00 0b 1d 03 00 00 00 00 |................|
00000260 00 00 00 0b 22 1d 04 00 00 00 00 00 00 00 22 23 |...."........."#|
00000270 0b 1d 05 00 00 00 00 00 00 00 22 23 24 0b 1d 06 |.........."#$...|
00000280 00 00 00 00 00 00 00 22 23 24 25 0b 1d 01 00 00 |......."#$%.....|
00000290 00 00 00 00 00 19 01 00 00 00 00 00 00 00 19 02 |................|
000002a0 00 00 00 00 00 00 00 18 19 03 00 00 00 00 00 00 |................|
000002b0 00 29 19 18 03 00 00 00 00 00 00 00 0b 1a 1b 02 |.)..............|
000002c0 00 00 00 00 00 00 00 1c 0b 01 00 00 00 00 00 00 |................|
000002d0 00 1c 00 00 00 00 00 00 00 00 01 00 00 00 00 00 |................|
000002e0 00 00 2e 04 00 00 00 00 00 00 00 2f 19 1b 0b 02 |.........../....|
000002f0 00 00 00 00 00 00 00 1a 0b 02 00 00 00 00 00 00 |................|
00000300 00 31 18 03 00 00 00 00 00 00 00 31 1a 0b 02 00 |.1.........1....|
00000310 00 00 00 00 00 00 33 27 01 00 00 00 00 00 00 00 |......3'........|
00000320 33 03 00 00 00 00 00 00 00 33 31 1a 0a 00 00 00 |3........31.....|
00000330 00 00 00 00 33 31 27 36 1a 0b 10 19 29 30 02 00 |....31'6....)0..|
00000340 00 00 00 00 00 00 31 37 03 00 00 00 00 00 00 00 |......17........|
00000350 37 29 30 05 00 00 00 00 00 00 00 37 30 1b 39 0b |7)0........70.9.|
00000360 04 00 00 00 00 00 00 00 3a 37 30 39 03 00 00 00 |........:709....|
00000370 00 00 00 00 30 3a 3b 06 00 00 00 00 00 00 00 30 |....0:;........0|
00000380 3a 3c 3b 39 37 08 00 00 00 00 00 00 00 37 3a 3b |:<;97........7:;|
00000390 30 39 29 3d 3c 08 00 00 00 00 00 00 00 3b 30 3e |09)=<........;0>|
000003a0 39 3a 3d 3c 37 0a 00 00 00 00 00 00 00 37 3e 30 |9:=<7........7>0|
000003b0 3f 3a 3d 3c 3b 39 0b 0a 00 00 00 00 00 00 00 3f |?:=<;9.........?|
000003c0 40 30 3e 3a 3d 3c 3b 39 37 09 00 00 00 00 00 00 |@0>:=<;97.......|
000003d0 00 40 3a 3b 3e 41 30 3f 3d 3c 01 00 00 00 00 00 |.@:;>A0?=<......|
000003e0 00 00 39 06 00 00 00 00 00 00 00 19 0b 18 1b 30 |..9............0|
000003f0 29 07 00 00 00 00 00 00 00 19 44 0b 18 1b 30 29 |).........D...0)|
00000400 08 00 00 00 00 00 00 00 19 45 44 0b 18 1b 29 3a |.........ED...):|
00000410 08 00 00 00 00 00 00 00 1b 45 44 46 0b 30 29 19 |.........EDF.0).|
00000420 03 00 00 00 00 00 00 00 1a 1b 0b 01 00 00 00 00 |................|
00000430 00 00 00 30 02 00 00 00 00 00 00 00 30 49 07 00 |...0........0I..|
00000440 00 00 00 00 00 00 45 44 19 30 29 46 47 07 00 00 |......ED.0)FG...|
00000450 00 00 00 00 00 40 41 42 3f 3e 30 3a 05 00 00 00 |.....@AB?>0:....|
00000460 00 00 00 00 00 0b 00 00 00 00 00 00 00 64 65 73 |.............des|
00000470 63 72 69 70 74 69 6f 6e 06 24 01 00 00 00 00 00 |cription.$......|
00000480 00 4c 65 73 20 4d 69 73 65 72 61 62 6c 65 73 3a |.Les Miserables:|
00000490 20 63 6f 61 70 70 65 61 72 61 6e 63 65 20 6e 65 | coappearance ne|
000004a0 74 77 6f 72 6b 20 6f 66 20 63 68 61 72 61 63 74 |twork of charact|
000004b0 65 72 73 20 69 6e 20 74 68 65 20 6e 6f 76 65 6c |ers in the novel|
000004c0 20 4c 65 73 20 4d 69 73 65 72 61 62 6c 65 73 2e | Les Miserables.|
000004d0 20 50 6c 65 61 73 65 20 63 69 74 65 20 44 2e 20 | Please cite D. |
000004e0 45 2e 20 4b 6e 75 74 68 2c 20 54 68 65 20 53 74 |E. Knuth, The St|
000004f0 61 6e 66 6f 72 64 20 47 72 61 70 68 42 61 73 65 |anford GraphBase|
00000500 3a 20 41 20 50 6c 61 74 66 6f 72 6d 20 66 6f 72 |: A Platform for|
00000510 20 43 6f 6d 62 69 6e 61 74 6f 72 69 61 6c 20 43 | Combinatorial C|
00000520 6f 6d 70 75 74 69 6e 67 2c 20 41 64 64 69 73 6f |omputing, Addiso|
00000530 6e 2d 57 65 73 6c 65 79 2c 20 52 65 61 64 69 6e |n-Wesley, Readin|
00000540 67 2c 20 4d 41 20 28 31 39 39 33 29 2e 20 52 65 |g, MA (1993). Re|
00000550 74 72 69 65 76 65 64 20 66 72 6f 6d 20 60 4d 61 |trieved from `Ma|
00000560 72 6b 20 4e 65 77 6d 61 6e 27 73 20 77 65 62 73 |rk Newman's webs|
00000570 69 74 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2d |ite <http://www-|
00000580 70 65 72 73 6f 6e 61 6c 2e 75 6d 69 63 68 2e 65 |personal.umich.e|
00000590 64 75 2f 7e 6d 65 6a 6e 2f 6e 65 74 64 61 74 61 |du/~mejn/netdata|
000005a0 2f 3e 60 5f 2e 00 06 00 00 00 00 00 00 00 72 65 |/>`_..........re|
000005b0 61 64 6d 65 06 e2 01 00 00 00 00 00 00 54 68 65 |adme.........The|
000005c0 20 66 69 6c 65 20 6c 65 73 6d 69 73 2e 67 6d 6c | file lesmis.gml|
000005d0 20 63 6f 6e 74 61 69 6e 73 20 74 68 65 20 77 65 | contains the we|
000005e0 69 67 68 74 65 64 20 6e 65 74 77 6f 72 6b 20 6f |ighted network o|
000005f0 66 20 63 6f 61 70 70 65 61 72 61 6e 63 65 73 20 |f coappearances |
00000600 6f 66 0a 63 68 61 72 61 63 74 65 72 73 20 69 6e |of.characters in|
00000610 20 56 69 63 74 6f 72 20 48 75 67 6f 27 73 20 6e | Victor Hugo's n|
00000620 6f 76 65 6c 20 22 4c 65 73 20 4d 69 73 65 72 61 |ovel "Les Misera|
00000630 62 6c 65 73 22 2e 20 20 4e 6f 64 65 73 20 72 65 |bles". Nodes re|
00000640 70 72 65 73 65 6e 74 0a 63 68 61 72 61 63 74 65 |present.characte|
00000650 72 73 20 61 73 20 69 6e 64 69 63 61 74 65 64 20 |rs as indicated |
00000660 62 79 20 74 68 65 20 6c 61 62 65 6c 73 20 61 6e |by the labels an|
00000670 64 20 65 64 67 65 73 20 63 6f 6e 6e 65 63 74 20 |d edges connect |
00000680 61 6e 79 20 70 61 69 72 20 6f 66 0a 63 68 61 72 |any pair of.char|
00000690 61 63 74 65 72 73 20 74 68 61 74 20 61 70 70 65 |acters that appe|
000006a0 61 72 20 69 6e 20 74 68 65 20 73 61 6d 65 20 63 |ar in the same c|
000006b0 68 61 70 74 65 72 20 6f 66 20 74 68 65 20 62 6f |hapter of the bo|
000006c0 6f 6b 2e 20 20 54 68 65 20 76 61 6c 75 65 73 20 |ok. The values |
000006d0 6f 6e 20 74 68 65 0a 65 64 67 65 73 20 61 72 65 |on the.edges are|
000006e0 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 73 | the number of s|
000006f0 75 63 68 20 63 6f 61 70 70 65 61 72 61 6e 63 65 |uch coappearance|
00000700 73 2e 20 20 54 68 65 20 64 61 74 61 20 6f 6e 20 |s. The data on |
00000710 63 6f 61 70 70 65 61 72 61 6e 63 65 73 20 77 65 |coappearances we|
00000720 72 65 0a 74 61 6b 65 6e 20 66 72 6f 6d 20 44 2e |re.taken from D.|
00000730 20 45 2e 20 4b 6e 75 74 68 2c 20 54 68 65 20 53 | E. Knuth, The S|
00000740 74 61 6e 66 6f 72 64 20 47 72 61 70 68 42 61 73 |tanford GraphBas|
00000750 65 3a 20 41 20 50 6c 61 74 66 6f 72 6d 20 66 6f |e: A Platform fo|
00000760 72 0a 43 6f 6d 62 69 6e 61 74 6f 72 69 61 6c 20 |r.Combinatorial |
00000770 43 6f 6d 70 75 74 69 6e 67 2c 20 41 64 64 69 73 |Computing, Addis|
00000780 6f 6e 2d 57 65 73 6c 65 79 2c 20 52 65 61 64 69 |on-Wesley, Readi|
00000790 6e 67 2c 20 4d 41 20 28 31 39 39 33 29 2e 0a 01 |ng, MA (1993)...|
000007a0 05 00 00 00 00 00 00 00 6c 61 62 65 6c 06 06 00 |........label...|
000007b0 00 00 00 00 00 00 4d 79 72 69 65 6c 08 00 00 00 |......Myriel....|
000007c0 00 00 00 00 4e 61 70 6f 6c 65 6f 6e 0e 00 00 00 |....Napoleon....|
000007d0 00 00 00 00 4d 6c 6c 65 42 61 70 74 69 73 74 69 |....MlleBaptisti|
000007e0 6e 65 0b 00 00 00 00 00 00 00 4d 6d 65 4d 61 67 |ne........MmeMag|
000007f0 6c 6f 69 72 65 0c 00 00 00 00 00 00 00 43 6f 75 |loire........Cou|
00000800 6e 74 65 73 73 44 65 4c 6f 08 00 00 00 00 00 00 |ntessDeLo.......|
00000810 00 47 65 62 6f 72 61 6e 64 0c 00 00 00 00 00 00 |.Geborand.......|
00000820 00 43 68 61 6d 70 74 65 72 63 69 65 72 08 00 00 |.Champtercier...|
00000830 00 00 00 00 00 43 72 61 76 61 74 74 65 05 00 00 |.....Cravatte...|
00000840 00 00 00 00 00 43 6f 75 6e 74 06 00 00 00 00 00 |.....Count......|
00000850 00 00 4f 6c 64 4d 61 6e 07 00 00 00 00 00 00 00 |..OldMan........|
00000860 4c 61 62 61 72 72 65 07 00 00 00 00 00 00 00 56 |Labarre........V|
00000870 61 6c 6a 65 61 6e 0a 00 00 00 00 00 00 00 4d 61 |aljean........Ma|
00000880 72 67 75 65 72 69 74 65 06 00 00 00 00 00 00 00 |rguerite........|
00000890 4d 6d 65 44 65 52 07 00 00 00 00 00 00 00 49 73 |MmeDeR........Is|
000008a0 61 62 65 61 75 07 00 00 00 00 00 00 00 47 65 72 |abeau........Ger|
000008b0 76 61 69 73 09 00 00 00 00 00 00 00 54 68 6f 6c |vais........Thol|
000008c0 6f 6d 79 65 73 09 00 00 00 00 00 00 00 4c 69 73 |omyes........Lis|
000008d0 74 6f 6c 69 65 72 07 00 00 00 00 00 00 00 46 61 |tolier........Fa|
000008e0 6d 65 75 69 6c 0b 00 00 00 00 00 00 00 42 6c 61 |meuil........Bla|
000008f0 63 68 65 76 69 6c 6c 65 09 00 00 00 00 00 00 00 |cheville........|
00000900 46 61 76 6f 75 72 69 74 65 06 00 00 00 00 00 00 |Favourite.......|
00000910 00 44 61 68 6c 69 61 07 00 00 00 00 00 00 00 5a |.Dahlia........Z|
00000920 65 70 68 69 6e 65 07 00 00 00 00 00 00 00 46 61 |ephine........Fa|
00000930 6e 74 69 6e 65 0d 00 00 00 00 00 00 00 4d 6d 65 |ntine........Mme|
00000940 54 68 65 6e 61 72 64 69 65 72 0a 00 00 00 00 00 |Thenardier......|
00000950 00 00 54 68 65 6e 61 72 64 69 65 72 07 00 00 00 |..Thenardier....|
00000960 00 00 00 00 43 6f 73 65 74 74 65 06 00 00 00 00 |....Cosette.....|
00000970 00 00 00 4a 61 76 65 72 74 0c 00 00 00 00 00 00 |...Javert.......|
00000980 00 46 61 75 63 68 65 6c 65 76 65 6e 74 0a 00 00 |.Fauchelevent...|
00000990 00 00 00 00 00 42 61 6d 61 74 61 62 6f 69 73 08 |.....Bamatabois.|
000009a0 00 00 00 00 00 00 00 50 65 72 70 65 74 75 65 08 |.......Perpetue.|
000009b0 00 00 00 00 00 00 00 53 69 6d 70 6c 69 63 65 0b |.......Simplice.|
000009c0 00 00 00 00 00 00 00 53 63 61 75 66 66 6c 61 69 |.......Scaufflai|
000009d0 72 65 06 00 00 00 00 00 00 00 57 6f 6d 61 6e 31 |re........Woman1|
000009e0 05 00 00 00 00 00 00 00 4a 75 64 67 65 0c 00 00 |........Judge...|
000009f0 00 00 00 00 00 43 68 61 6d 70 6d 61 74 68 69 65 |.....Champmathie|
00000a00 75 06 00 00 00 00 00 00 00 42 72 65 76 65 74 0a |u........Brevet.|
00000a10 00 00 00 00 00 00 00 43 68 65 6e 69 6c 64 69 65 |.......Chenildie|
00000a20 75 0b 00 00 00 00 00 00 00 43 6f 63 68 65 70 61 |u........Cochepa|
00000a30 69 6c 6c 65 09 00 00 00 00 00 00 00 50 6f 6e 74 |ille........Pont|
00000a40 6d 65 72 63 79 0c 00 00 00 00 00 00 00 42 6f 75 |mercy........Bou|
00000a50 6c 61 74 72 75 65 6c 6c 65 07 00 00 00 00 00 00 |latruelle.......|
00000a60 00 45 70 6f 6e 69 6e 65 07 00 00 00 00 00 00 00 |.Eponine........|
00000a70 41 6e 7a 65 6c 6d 61 06 00 00 00 00 00 00 00 57 |Anzelma........W|
00000a80 6f 6d 61 6e 32 0e 00 00 00 00 00 00 00 4d 6f 74 |oman2........Mot|
00000a90 68 65 72 49 6e 6e 6f 63 65 6e 74 07 00 00 00 00 |herInnocent.....|
00000aa0 00 00 00 47 72 69 62 69 65 72 09 00 00 00 00 00 |...Gribier......|
00000ab0 00 00 4a 6f 6e 64 72 65 74 74 65 09 00 00 00 00 |..Jondrette.....|
00000ac0 00 00 00 4d 6d 65 42 75 72 67 6f 6e 08 00 00 00 |...MmeBurgon....|
00000ad0 00 00 00 00 47 61 76 72 6f 63 68 65 0c 00 00 00 |....Gavroche....|
00000ae0 00 00 00 00 47 69 6c 6c 65 6e 6f 72 6d 61 6e 64 |....Gillenormand|
00000af0 06 00 00 00 00 00 00 00 4d 61 67 6e 6f 6e 10 00 |........Magnon..|
00000b00 00 00 00 00 00 00 4d 6c 6c 65 47 69 6c 6c 65 6e |......MlleGillen|
00000b10 6f 72 6d 61 6e 64 0c 00 00 00 00 00 00 00 4d 6d |ormand........Mm|
00000b20 65 50 6f 6e 74 6d 65 72 63 79 0b 00 00 00 00 00 |ePontmercy......|
00000b30 00 00 4d 6c 6c 65 56 61 75 62 6f 69 73 0e 00 00 |..MlleVaubois...|
00000b40 00 00 00 00 00 4c 74 47 69 6c 6c 65 6e 6f 72 6d |.....LtGillenorm|
00000b50 61 6e 64 06 00 00 00 00 00 00 00 4d 61 72 69 75 |and........Mariu|
00000b60 73 09 00 00 00 00 00 00 00 42 61 72 6f 6e 65 73 |s........Barones|
00000b70 73 54 06 00 00 00 00 00 00 00 4d 61 62 65 75 66 |sT........Mabeuf|
00000b80 08 00 00 00 00 00 00 00 45 6e 6a 6f 6c 72 61 73 |........Enjolras|
00000b90 0a 00 00 00 00 00 00 00 43 6f 6d 62 65 66 65 72 |........Combefer|
00000ba0 72 65 09 00 00 00 00 00 00 00 50 72 6f 75 76 61 |re........Prouva|
00000bb0 69 72 65 07 00 00 00 00 00 00 00 46 65 75 69 6c |ire........Feuil|
00000bc0 6c 79 0a 00 00 00 00 00 00 00 43 6f 75 72 66 65 |ly........Courfe|
00000bd0 79 72 61 63 07 00 00 00 00 00 00 00 42 61 68 6f |yrac........Baho|
00000be0 72 65 6c 07 00 00 00 00 00 00 00 42 6f 73 73 75 |rel........Bossu|
00000bf0 65 74 04 00 00 00 00 00 00 00 4a 6f 6c 79 09 00 |et........Joly..|
00000c00 00 00 00 00 00 00 47 72 61 6e 74 61 69 72 65 0e |......Grantaire.|
00000c10 00 00 00 00 00 00 00 4d 6f 74 68 65 72 50 6c 75 |.......MotherPlu|
00000c20 74 61 72 63 68 09 00 00 00 00 00 00 00 47 75 65 |tarch........Gue|
00000c30 75 6c 65 6d 65 72 05 00 00 00 00 00 00 00 42 61 |ulemer........Ba|
00000c40 62 65 74 0a 00 00 00 00 00 00 00 43 6c 61 71 75 |bet........Claqu|
00000c50 65 73 6f 75 73 0c 00 00 00 00 00 00 00 4d 6f 6e |esous........Mon|
00000c60 74 70 61 72 6e 61 73 73 65 09 00 00 00 00 00 00 |tparnasse.......|
00000c70 00 54 6f 75 73 73 61 69 6e 74 06 00 00 00 00 00 |.Toussaint......|
00000c80 00 00 43 68 69 6c 64 31 06 00 00 00 00 00 00 00 |..Child1........|
00000c90 43 68 69 6c 64 32 06 00 00 00 00 00 00 00 42 72 |Child2........Br|
00000ca0 75 6a 6f 6e 0c 00 00 00 00 00 00 00 4d 6d 65 48 |ujon........MmeH|
00000cb0 75 63 68 65 6c 6f 75 70 01 03 00 00 00 00 00 00 |ucheloup........|
00000cc0 00 70 6f 73 0b 02 00 00 00 00 00 00 00 6e c8 82 |.pos.........n..|
00000cd0 10 aa 06 a1 c0 92 2c ff 95 d9 9d 6c c0 02 00 00 |......,....l....|
00000ce0 00 00 00 00 00 63 e4 06 e4 7b fc a0 c0 1b 96 8c |.....c...{......|
00000cf0 84 16 45 6c c0 02 00 00 00 00 00 00 00 01 9e b0 |..El............|
00000d00 80 fe 0e a1 c0 53 f1 82 9b 28 a0 6c c0 02 00 00 |.....S...(.l....|
00000d10 00 00 00 00 00 2a 22 05 0b db 0d a1 c0 42 fb 82 |.....*"......B..|
00000d20 44 e2 58 6c c0 02 00 00 00 00 00 00 00 85 c9 58 |D.Xl...........X|
00000d30 e8 95 fb a0 c0 be eb ce 9b 1c fa 6c c0 02 00 00 |...........l....|
00000d40 00 00 00 00 00 73 4d d1 51 dc ff a0 c0 bb 17 30 |.....sM.Q......0|
00000d50 1e 9e 37 6d c0 02 00 00 00 00 00 00 00 19 a9 01 |..7m............|
00000d60 fb 3e fa a0 c0 1e 6f 5c 53 7e 99 6c c0 02 00 00 |.>....oS~.l....|
00000d70 00 00 00 00 00 85 76 a4 9b 68 05 a1 c0 4e f1 63 |......v..h...N.c|
00000d80 ed 00 39 6d c0 02 00 00 00 00 00 00 00 0e 3b 97 |..9m..........;.|
00000d90 bb 07 00 a1 c0 1c 4e 73 a5 01 b9 6c c0 02 00 00 |......Ns...l....|
00000da0 00 00 00 00 00 e2 76 a4 90 6c 01 a1 c0 02 f4 76 |......v..l.....v|
00000db0 f6 8c 1b 6c c0 02 00 00 00 00 00 00 00 18 d7 fe |...l............|
00000dc0 98 da 0f a1 c0 74 e0 45 c8 15 df 6b c0 02 00 00 |.....t.E...k....|
00000dd0 00 00 00 00 00 4b d8 fb ec a9 1d a1 c0 b2 1c b8 |.....K..........|
00000de0 1a 4d 47 6c c0 02 00 00 00 00 00 00 00 05 b6 eb |.MGl............|
00000df0 85 23 25 a1 c0 35 18 91 b5 40 11 6d c0 02 00 00 |.#%..5...@.m....|
00000e00 00 00 00 00 00 6f 83 35 3d 7e 15 a1 c0 07 56 03 |.....o.5=~....V.|
00000e10 7c 6e e6 6b c0 02 00 00 00 00 00 00 00 45 d8 ae ||n.k.........E..|
00000e20 23 55 12 a1 c0 34 6e b5 11 41 2a 6c c0 02 00 00 |#U...4n..A*l....|
00000e30 00 00 00 00 00 6a 3b 47 7b 1c 14 a1 c0 26 23 12 |.....j;G{....&#.|
00000e40 7b e3 99 6b c0 02 00 00 00 00 00 00 00 83 62 cf |{..k..........b.|
00000e50 40 3c 31 a1 c0 2f 1b 86 7f 10 a3 6c c0 02 00 00 |@<1../.....l....|
00000e60 00 00 00 00 00 cd f8 37 78 66 35 a1 c0 ed 4e 5b |.......7xf5...N[|
00000e70 77 b8 3a 6d c0 02 00 00 00 00 00 00 00 c2 d4 1d |w.:m............|
00000e80 7b 23 36 a1 c0 90 0a be da 30 d4 6c c0 02 00 00 |{#6......0.l....|
00000e90 00 00 00 00 00 e5 19 cc 64 8f 37 a1 c0 24 ad 21 |........d.7..$.!|
00000ea0 9e bf 0b 6d c0 02 00 00 00 00 00 00 00 db b2 d0 |...m............|
00000eb0 f8 2e 30 a1 c0 ad ae f8 8e 3e 13 6d c0 02 00 00 |..0......>.m....|
00000ec0 00 00 00 00 00 73 a6 1c b1 e3 31 a1 c0 92 5b 84 |.....s....1...[.|
00000ed0 d8 81 47 6d c0 02 00 00 00 00 00 00 00 09 78 b8 |..Gm..........x.|
00000ee0 9f 5a 33 a1 c0 de e8 fd a1 46 fa 6c c0 02 00 00 |.Z3......F.l....|
00000ef0 00 00 00 00 00 01 60 9f ee 86 2b a1 c0 63 bc d3 |......`...+..c..|
00000f00 3a eb be 6c c0 02 00 00 00 00 00 00 00 76 28 90 |:..l.........v(.|
00000f10 6c 93 27 a1 c0 42 b4 67 40 57 16 6c c0 02 00 00 |l.'..B.g@W.l....|
00000f20 00 00 00 00 00 e7 c4 c6 49 45 27 a1 c0 41 ec 50 |........IE'..A.P|
00000f30 f7 9f d3 6b c0 02 00 00 00 00 00 00 00 c4 10 23 |...k...........#|
00000f40 90 3e 2a a1 c0 c4 1e 7b f8 30 3d 6c c0 02 00 00 |.>*....{.0=l....|
00000f50 00 00 00 00 00 01 0b d5 bc 11 22 a1 c0 4d e3 54 |.........."..M.T|
00000f60 77 94 2d 6c c0 02 00 00 00 00 00 00 00 7c 0c 07 |w.-l.........|..|
00000f70 af 9d 17 a1 c0 54 a1 6d 7c f7 ad 6c c0 02 00 00 |.....T.m|..l....|
00000f80 00 00 00 00 00 87 31 73 12 93 20 a1 c0 df 42 7d |......1s.. ...B}|
00000f90 0f a4 cf 6c c0 02 00 00 00 00 00 00 00 9b c4 dd |...l............|
00000fa0 85 da 29 a1 c0 9d eb b9 8e 8d 60 6d c0 02 00 00 |..).......`m....|
00000fb0 00 00 00 00 00 c6 b3 95 bb 0c 26 a1 c0 cb 9f ed |..........&.....|
00000fc0 1a cf cb 6c c0 02 00 00 00 00 00 00 00 4e d1 b2 |...l.........N..|
00000fd0 93 28 13 a1 c0 48 e1 09 d7 59 e7 6c c0 02 00 00 |.(...H...Y.l....|
00000fe0 00 00 00 00 00 5a a6 11 73 ed 18 a1 c0 a7 42 2a |.....Z..s.....B*|
00000ff0 af a7 37 6c c0 02 00 00 00 00 00 00 00 2e 16 53 |..7l...........S|
00001000 fc ef 18 a1 c0 66 ab 8e 60 82 02 6d c0 02 00 00 |.....f..`..m....|
00001010 00 00 00 00 00 1a 08 f5 3c 52 1f a1 c0 0f f0 df |........<R......|
00001020 33 ae 2f 6d c0 02 00 00 00 00 00 00 00 07 c5 c2 |3./m............|
00001030 6b 79 1d a1 c0 ba 6f f6 a3 75 ff 6c c0 02 00 00 |ky....o..u.l....|
00001040 00 00 00 00 00 a6 e4 8e 87 16 1b a1 c0 13 e2 61 |...............a|
00001050 c4 60 35 6d c0 02 00 00 00 00 00 00 00 ba ab 48 |.`5m...........H|
00001060 24 a7 1b a1 c0 2c a0 10 86 5e cd 6c c0 02 00 00 |$....,...^.l....|
00001070 00 00 00 00 00 05 d7 d0 79 43 33 a1 c0 11 58 ab |........yC3...X.|
00001080 67 b6 9f 6b c0 02 00 00 00 00 00 00 00 ae 66 73 |g..k..........fs|
00001090 4c ad 31 a1 c0 4e b6 ee 92 9f 2e 6b c0 02 00 00 |L.1..N.....k....|
000010a0 00 00 00 00 00 79 7b 28 6f 8c 25 a1 c0 9b c9 11 |.....y{(o.%.....|
000010b0 17 d3 92 6b c0 02 00 00 00 00 00 00 00 70 77 9e |...k.........pw.|
000010c0 f0 e7 2d a1 c0 88 aa 1f d8 8d a1 6b c0 02 00 00 |..-........k....|
000010d0 00 00 00 00 00 9e c2 b2 ad 2e 22 a1 c0 2d 1c c1 |.........."..-..|
000010e0 b5 d8 7e 6c c0 02 00 00 00 00 00 00 00 06 1c 6a |..~l...........j|
000010f0 5b 31 14 a1 c0 81 03 92 e2 5e 7c 6c c0 02 00 00 |[1.......^|l....|
00001100 00 00 00 00 00 ac b2 ee 6d 98 11 a1 c0 3b 0d 0b |........m....;..|
00001110 f6 5f 65 6d c0 02 00 00 00 00 00 00 00 45 34 48 |._em.........E4H|
00001120 30 0d 19 a1 c0 ee 62 f0 aa 97 af 69 c0 02 00 00 |0.....b....i....|
00001130 00 00 00 00 00 98 c1 e0 81 d1 1b a1 c0 8e 13 ce |................|
00001140 53 e0 47 6a c0 02 00 00 00 00 00 00 00 40 30 1d |S.Gj.........@0.|
00001150 3f 25 20 a1 c0 cd 0b 6b 51 23 40 6b c0 02 00 00 |?% ....kQ#@k....|
00001160 00 00 00 00 00 17 8d 0a 6b 35 2d a1 c0 71 f8 96 |........k5-..q..|
00001170 09 82 f2 6b c0 02 00 00 00 00 00 00 00 9d 4e 8c |...k..........N.|
00001180 97 3e 34 a1 c0 fd 0a 77 1e 0d 3e 6c c0 02 00 00 |.>4....w..>l....|
00001190 00 00 00 00 00 d7 2d 7a 62 e8 2f a1 c0 25 5c d9 |......-zb./..%.|
000011a0 23 32 23 6c c0 02 00 00 00 00 00 00 00 79 cb c2 |#2#l.........y..|
000011b0 11 c4 3a a1 c0 60 76 f7 8f cc d1 6b c0 02 00 00 |..:..`v....k....|
000011c0 00 00 00 00 00 f0 3d 0b cd e3 3c a1 c0 8c 0c c7 |......=...<.....|
000011d0 ff a7 44 6c c0 02 00 00 00 00 00 00 00 a2 db 70 |..Dl...........p|
000011e0 bd c4 32 a1 c0 a7 de 35 e7 76 e9 6b c0 02 00 00 |..2....5.v.k....|
000011f0 00 00 00 00 00 a8 b7 ef ec 15 2a a1 c0 97 b5 1c |..........*.....|
00001200 a3 c1 91 6b c0 02 00 00 00 00 00 00 00 76 87 8e |...k.........v..|
00001210 c7 ae 35 a1 c0 de 42 53 fd c5 68 6b c0 02 00 00 |..5...BS..hk....|
00001220 00 00 00 00 00 d7 bc 63 27 2a 2b a1 c0 4e 92 d3 |.......c'*+..N..|
00001230 12 bd 09 6b c0 02 00 00 00 00 00 00 00 ef fb 08 |...k............|
00001240 9b 12 23 a1 c0 3f c3 a8 ce 25 5a 6b c0 02 00 00 |..#..?...%Zk....|
00001250 00 00 00 00 00 db 4d 43 56 dd 28 a1 c0 72 0a 2e |......MCV.(..r..|
00001260 07 c9 d5 6a c0 02 00 00 00 00 00 00 00 a1 15 b9 |...j............|
00001270 73 54 25 a1 c0 53 61 b7 d6 fe aa 6a c0 02 00 00 |sT%..Sa....j....|
00001280 00 00 00 00 00 ad 26 a7 bd 2e 28 a1 c0 29 8b f0 |......&...(..)..|
00001290 8e eb 1b 6b c0 02 00 00 00 00 00 00 00 94 fc 04 |...k............|
000012a0 61 42 23 a1 c0 d3 4b 1e 23 74 11 6b c0 02 00 00 |aB#...K.#t.k....|
000012b0 00 00 00 00 00 ab cc 32 05 ca 23 a1 c0 0d ce 64 |.......2..#....d|
000012c0 0a 44 e2 6a c0 02 00 00 00 00 00 00 00 cd ad 5d |.D.j...........]|
000012d0 b3 3b 25 a1 c0 bf 02 c5 ba c4 3d 6b c0 02 00 00 |.;%.......=k....|
000012e0 00 00 00 00 00 27 e5 2c 80 67 26 a1 c0 b0 0f af |.....'.,.g&.....|
000012f0 ad bb f2 6a c0 02 00 00 00 00 00 00 00 e8 eb d5 |...j............|
00001300 a0 59 21 a1 c0 64 50 e1 cc 96 be 6a c0 02 00 00 |.Y!..dP....j....|
00001310 00 00 00 00 00 ee 97 70 82 82 32 a1 c0 53 ac 89 |.......p..2..S..|
00001320 ab 23 6e 6a c0 02 00 00 00 00 00 00 00 9a a1 f9 |.#nj............|
00001330 0c e5 22 a1 c0 78 16 51 4b 83 e1 6b c0 02 00 00 |.."..x.QK..k....|
00001340 00 00 00 00 00 c6 26 6b 94 83 1f a1 c0 87 54 87 |......&k......T.|
00001350 53 7e e9 6b c0 02 00 00 00 00 00 00 00 c2 7b 25 |S~.k..........{%|
00001360 71 52 21 a1 c0 a5 8e 3c 2f 21 b7 6b c0 02 00 00 |qR!....</!.k....|
00001370 00 00 00 00 00 d0 35 be fb 29 1d a1 c0 e6 10 a2 |......5..)......|
00001380 20 44 c2 6b c0 02 00 00 00 00 00 00 00 c5 c7 b3 | D.k............|
00001390 0c 78 26 a1 c0 91 34 b2 fd a2 79 6c c0 02 00 00 |.x&...4...yl....|
000013a0 00 00 00 00 00 38 05 6a 12 be 14 a1 c0 52 0b b2 |.....8.j.....R..|
000013b0 3e 37 e9 6a c0 02 00 00 00 00 00 00 00 87 5e 2b |>7.j..........^+|
000013c0 e4 59 17 a1 c0 c0 8e 49 75 56 a5 6a c0 02 00 00 |.Y.....IuV.j....|
000013d0 00 00 00 00 00 a7 c0 28 f7 e4 1d a1 c0 d1 04 99 |.......(........|
000013e0 65 31 85 6b c0 02 00 00 00 00 00 00 00 e7 5b 2e |e1.k..........[.|
000013f0 a9 24 1e a1 c0 98 70 5a c4 12 ec 6a c0 02 05 00 |.$....pZ...j....|
00001400 00 00 00 00 00 00 76 61 6c 75 65 04 00 00 00 00 |......value.....|
00001410 00 00 f0 3f 00 00 00 00 00 00 20 40 00 00 00 00 |...?...... @....|
00001420 00 00 24 40 00 00 00 00 00 00 18 40 00 00 00 00 |..$@.......@....|
00001430 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001440 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001450 00 00 00 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001460 00 00 f0 3f 00 00 00 00 00 00 08 40 00 00 00 00 |...?.......@....|
00001470 00 00 08 40 00 00 00 00 00 00 14 40 00 00 00 00 |...@.......@....|
00001480 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001490 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
000014a0 00 00 10 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
000014b0 00 00 10 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
000014c0 00 00 10 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
000014d0 00 00 08 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
000014e0 00 00 08 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
000014f0 00 00 08 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001500 00 00 08 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001510 00 00 14 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001520 00 00 08 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001530 00 00 08 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
00001540 00 00 10 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001550 00 00 08 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001560 00 00 08 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
00001570 00 00 10 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
00001580 00 00 00 40 00 00 00 00 00 00 22 40 00 00 00 00 |...@......"@....|
00001590 00 00 00 40 00 00 00 00 00 00 1c 40 00 00 00 00 |...@.......@....|
000015a0 00 00 2a 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |..*@.......?....|
000015b0 00 00 28 40 00 00 00 00 00 00 10 40 00 00 00 00 |..(@.......@....|
000015c0 00 00 3f 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |..?@.......?....|
000015d0 00 00 f0 3f 00 00 00 00 00 00 31 40 00 00 00 00 |...?......1@....|
000015e0 00 00 14 40 00 00 00 00 00 00 14 40 00 00 00 00 |...@.......@....|
000015f0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001600 00 00 20 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |.. @.......?....|
00001610 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001620 00 00 00 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001630 00 00 00 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001640 00 00 00 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001650 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001660 00 00 f0 3f 00 00 00 00 00 00 08 40 00 00 00 00 |...?.......@....|
00001670 00 00 00 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001680 00 00 08 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001690 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000016a0 00 00 00 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
000016b0 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000016c0 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000016d0 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
000016e0 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000016f0 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001700 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001710 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001720 00 00 08 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001730 00 00 00 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001740 00 00 08 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001750 00 00 f0 3f 00 00 00 00 00 00 08 40 00 00 00 00 |...?.......@....|
00001760 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001770 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001780 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001790 00 00 f0 3f 00 00 00 00 00 00 08 40 00 00 00 00 |...?.......@....|
000017a0 00 00 00 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
000017b0 00 00 f0 3f 00 00 00 00 00 00 22 40 00 00 00 00 |...?......"@....|
000017c0 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000017d0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
000017e0 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
000017f0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001800 00 00 18 40 00 00 00 00 00 00 28 40 00 00 00 00 |...@......(@....|
00001810 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001820 00 00 35 40 00 00 00 00 00 00 33 40 00 00 00 00 |..5@......3@....|
00001830 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001840 00 00 14 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
00001850 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001860 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001870 00 00 f0 3f 00 00 00 00 00 00 1c 40 00 00 00 00 |...?.......@....|
00001880 00 00 1c 40 00 00 00 00 00 00 18 40 00 00 00 00 |...@.......@....|
00001890 00 00 f0 3f 00 00 00 00 00 00 10 40 00 00 00 00 |...?.......@....|
000018a0 00 00 2e 40 00 00 00 00 00 00 14 40 00 00 00 00 |...@.......@....|
000018b0 00 00 18 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000018c0 00 00 f0 3f 00 00 00 00 00 00 10 40 00 00 00 00 |...?.......@....|
000018d0 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000018e0 00 00 18 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000018f0 00 00 14 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001900 00 00 f0 3f 00 00 00 00 00 00 22 40 00 00 00 00 |...?......"@....|
00001910 00 00 31 40 00 00 00 00 00 00 2a 40 00 00 00 00 |..1@......*@....|
00001920 00 00 1c 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001930 00 00 f0 3f 00 00 00 00 00 00 18 40 00 00 00 00 |...?.......@....|
00001940 00 00 08 40 00 00 00 00 00 00 14 40 00 00 00 00 |...@.......@....|
00001950 00 00 14 40 00 00 00 00 00 00 18 40 00 00 00 00 |...@.......@....|
00001960 00 00 00 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
00001970 00 00 08 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001980 00 00 f0 3f 00 00 00 00 00 00 14 40 00 00 00 00 |...?.......@....|
00001990 00 00 28 40 00 00 00 00 00 00 14 40 00 00 00 00 |..(@.......@....|
000019a0 00 00 10 40 00 00 00 00 00 00 24 40 00 00 00 00 |...@......$@....|
000019b0 00 00 18 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
000019c0 00 00 22 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |.."@.......?....|
000019d0 00 00 f0 3f 00 00 00 00 00 00 14 40 00 00 00 00 |...?.......@....|
000019e0 00 00 1c 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
000019f0 00 00 14 40 00 00 00 00 00 00 14 40 00 00 00 00 |...@.......@....|
00001a00 00 00 14 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001a10 00 00 14 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001a20 00 00 00 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001a30 00 00 08 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001a40 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001a50 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001a60 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001a70 00 00 08 40 00 00 00 00 00 00 14 40 00 00 00 00 |...@.......@....|
00001a80 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001a90 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001aa0 00 00 f0 3f 00 00 00 00 00 00 18 40 00 00 00 00 |...?.......@....|
00001ab0 00 00 18 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001ac0 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001ad0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001ae0 00 00 10 40 00 00 00 00 00 00 10 40 00 00 00 00 |...@.......@....|
00001af0 00 00 10 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001b00 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001b10 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001b20 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001b30 00 00 00 40 00 00 00 00 00 00 00 40 00 00 00 00 |...@.......@....|
00001b40 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001b50 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001b60 00 00 00 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001b70 00 00 f0 3f 00 00 00 00 00 00 00 40 00 00 00 00 |...?.......@....|
00001b80 00 00 00 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001b90 00 00 08 40 00 00 00 00 00 00 08 40 00 00 00 00 |...@.......@....|
00001ba0 00 00 08 40 00 00 00 00 00 00 f0 3f 00 00 00 00 |...@.......?....|
00001bb0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001bc0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001bd0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001be0 00 00 f0 3f 00 00 00 00 00 00 f0 3f 00 00 00 00 |...?.......?....|
00001bf0 00 00 f0 3f 00 00 00 00 00 00 f0 3f |...?.......?|
00001bfc
这个文件的总长度为0x00001bfc == 7164字节。
相比之下,graphml编码结果为37506字节。
LZMA压缩后两个文件分别为2800字节和4192字节。
然而,这种差异(即使压缩)往往会增加,往往很大,对于较大的图表。
此外gt格式的读和写往往比graphml大约快一个数量级,和很大程度上受I/O限制,而后者,通常是受CPU受限。
这里有一个大图的例子:
>>> import timeit
>>> g = gt.collection.data["pgp-strong-2009"]
>>> g.properties.clear() # Use only topology for benchmark
>>> timeit.Timer(lambda: g.save("/tmp/pgp_graph.xml")).timeit(number=1)
0.08416466903872788
>>> timeit.Timer(lambda: g.save("/tmp/pgp_graph.xml.xz")).timeit(number=1)
14.706654848065227
>>> timeit.Timer(lambda: g.save("/tmp/pgp_graph.gt")).timeit(number=1)
0.005980597110465169
>>> timeit.Timer(lambda: g.save("/tmp/pgp_graph.gt.xz")).timeit(number=1)
0.43757575505878776
>>> timeit.Timer(lambda: gt.load_graph("/tmp/pgp_graph.xml")).timeit(number=1)
0.9056955680716783
>>> timeit.Timer(lambda: gt.load_graph("/tmp/pgp_graph.xml.xz")).timeit(number=1)
1.0840389159275219
>>> timeit.Timer(lambda: gt.load_graph("/tmp/pgp_graph.gt")).timeit(number=1)
0.0512137800687924
>>> timeit.Timer(lambda: gt.load_graph("/tmp/pgp_graph.gt.xz")).timeit(number=1)
0.07995201298035681
>>> import subprocess
>>> print(subprocess.check_output("du -b /tmp/pgp_graph* | sort -n", shell=True).decode("utf-8"))
395148 /tmp/pgp_graph.gt.xz
921619 /tmp/pgp_graph.gt
1010208 /tmp/pgp_graph.xml.xz
21324583 /tmp/pgp_graph.xml
原文链接:The gt file format