Danny King (kxrs26): Theory & Practice

Report 2 Downloads 16 Views
Danny King (kxrs26): Theory & Practice

Page 1 of 11

21/11/2011

Danny King (kxrs26): Theory & Practice Throughout this paper, the following notation will be used: ๐ถ๐ต (๐‘›) denotes the betweeness centrality of a node, ๐‘›. ๐ถ๐ถ (๐‘›) denotes the closeness centrality of a node, ๐‘›. AB

denotes โ€œthe path from node ๐ด to node ๐ต.โ€ ๐‘Š(๐‘›) denotes the weight of a node, ๐‘›.

1. What is the betweenness centrality of each vertex in ๐‘ฎ๐Ÿ , ๐‘ฎ๐Ÿ and ๐‘ฎ๐Ÿ‘ ?

๐‘ฎ๐Ÿ : AB

BC

AC

๐ถ๐ต (๐ด) = 1 + 1 + 1 = ๐Ÿ‘ AB

BC

AC

๐ถ๐ต (๐ต) = 1 + 1 + 0 = ๐Ÿ AB

BC

AC

๐ถ๐ต (๐ถ) = 0 + 1 + 1 = ๐Ÿ

๐‘ฎ๐Ÿ : AB

AD

AE

AC

AF

AG

DE

DF

DG

EC

EF

EG

BC

BF

BG

๐ถ๐ต ๐ด = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ๐Ÿ“ BD

BE

BA

BC

BF

BG

DA

DC

DF

DG

CA

EC

EF

EG

DE

๐ถ๐ต (๐ต) = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ๐Ÿ“ CF

CG

CA

CB

CD

CE

GA

GB

GD

GE

FA

FB

FD

FE

FG

๐ถ๐ต (๐ถ) = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ๐Ÿ“ DB

DE

DA

DC

DF

DG

๐ถ๐ต (๐ท) = 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ” EB

ED

EA

EC

EF

EG

๐ถ๐ต (๐ธ) = 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ” CF

CG

CA

CB

CD

CE

๐ถ๐ต (๐น) = 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ” GC

GF

GA

GB

GD

GE

๐ถ๐ต (๐บ) = 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ”

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

Danny King (kxrs26): Theory & Practice

Page 2 of 11

21/11/2011

๐‘ฎ๐Ÿ‘ : AB

AC

AD

AE

AF

AG

AH

๐ถ๐ต ๐ด = 1 + 1 + 1 + 1 + 1 + 1 + 1 = ๐Ÿ• BA

BC

BD

BE

BF

BG

BH

AF

CF

AE

CE

CF

1

1

1

1

1

1

2

3

3

5

5

๐ถ๐ต ๐ต = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + CA

CB

CD

CE

CF

CG

CH

2

+ + + + +

AG

BG

AH

1

1

1

๐Ÿ๐Ÿ—

2

4

5

๐Ÿ๐ŸŽ

AE

๐ถ๐ต ๐ถ = 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + = ๐Ÿ• DA

DB

DC

DE

DF

DG

DH

AH

AH

= ๐Ÿ๐ŸŽ

AG CE

BG

AH

AH

1

1

1

1

1

1

๐Ÿ“๐Ÿ—

2

2

3

4

5

5

๐Ÿ”๐ŸŽ

๐ถ๐ต ๐ท = 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + + + + = ๐Ÿ–

๐Ÿ ๐Ÿ๐Ÿ“

And by symmetry: ๐ถ๐ต ๐ธ = ๐ถ๐ต ๐ท = ๐Ÿ•

๐Ÿ๐Ÿ— ๐Ÿ๐ŸŽ

๐ถ๐ต ๐น = ๐ถ๐ต ๐ถ = ๐Ÿ๐ŸŽ ๐ถ๐ต ๐บ = ๐ถ๐ต ๐ต = ๐Ÿ๐ŸŽ

๐Ÿ ๐Ÿ๐Ÿ“

๐Ÿ ๐Ÿ๐Ÿ“

๐ถ๐ต ๐ป = ๐ถ๐ต ๐ด = ๐Ÿ•

2. Let the Simple Girvan-Newman partitioning method for finding community decompositions be the same as the Girvan-Newman method except that after edges are deleted betweenness values are not recalculated. Explain in not more than 200 words an advantage and disadvantage of this alternative approach. The main advantage is a quicker algorithm running time of ๐‘‚(๐‘› โˆ™ ๐‘š) rather than ๐‘‚(๐‘› โˆ™ ๐‘š2 ) where ๐‘› is the number of nodes and ๐‘š is the number of edges in the graph [Newman & Girvan, 2004]. The significant disadvantage is worsened results; the recalculation step is very important to the effectiveness of the algorithm. Removing an edge from a graph affects the betweenness values of at least some nodes and so the previously calculated betweenness values no longer apply to the modified graph. Depending on the topology this can have a significant negative impact on the algorithmโ€™s effectiveness; communities with lower modularity than otherwise may be formed. For situations in which communities are joined by several edges with widely varying betweenness values, the edges of high betweenness will be removed early but those with low betweenness may not be removed until much later, possibly after edges from within the communities themselves. The ideal situation however would have been to remove those edges first. The recalculation avoids this because when the edges with high-betweenness between the communities are removed the betweenness of the other edges connecting them will increase, therefore taking a higher priority for future removal.

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

Danny King (kxrs26): Theory & Practice

Page 3 of 11

21/11/2011

3a. Calculate the closeness centrality of each vertex in ๐‘ฎ๐Ÿ and ๐‘ฎ๐Ÿ .

๐ถ๐ถ ๐ด =

1 ๐Ÿ = 2 + 3 + 1 + 2 + 3 + 4 ๐Ÿ๐Ÿ“ AB AC

๐ถ๐ถ ๐ต =

BF

CD

CE

CF

DC

DE DF

EC

ED

EF

FC

FD

FE

GD

GE

๐ถ๐ถ ๐ถ =

๐ถ๐ถ ๐ธ =

๐ถ๐ถ ๐น =

GF

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

๐ถ๐ถ ๐บ =

BD

BE

BF

BG

CD

CE

CF

CG

DC

DE

DF

DG

EC

ED

EF

EG

1 ๐Ÿ = 2 + 3 + 2 + 2 + 1 + 1 ๐Ÿ๐Ÿ FA F B

FG

AG

1 ๐Ÿ = 2 + 2 + 3 + 1 + 1 + 2 ๐Ÿ๐Ÿ EA EB

EG

AF

1 ๐Ÿ = 1+1+2+1+2+2 ๐Ÿ— DA DB

DG

AE

1 ๐Ÿ = 2 + 1 + 2 + 3 + 2 + 1 ๐Ÿ๐Ÿ CA CB

๐ถ๐ถ ๐ท =

AD

1 ๐Ÿ = 2 + 1 + 1 + 2 + 3 + 2 ๐Ÿ๐Ÿ BA BC

CG

1 ๐Ÿ = 4 + 4 + 5 + 3 + 2 + 1 ๐Ÿ๐Ÿ— GA GB GC

๐ถ๐ถ ๐ต =

BG

1 ๐Ÿ = 3 + 3 + 4 + 2 + 1 + 1 ๐Ÿ๐Ÿ’ FA F B

๐ถ๐ถ ๐บ =

BE

1 ๐Ÿ = 2 + 2 + 3 + 1 + 1 + 2 ๐Ÿ๐Ÿ EA EB

๐ถ๐ถ ๐น =

BD

1 ๐Ÿ = 2 + 2 + 1 + 2 + 2 + 1 ๐Ÿ๐ŸŽ AB AC

AG

1 ๐Ÿ = 1 + 1 + 2 + 1 + 2 + 3 ๐Ÿ๐ŸŽ DA DB

๐ถ๐ถ ๐ธ =

AF

1 ๐Ÿ = 3 + 1 + 2 + 3 + 4 + 5 ๐Ÿ๐Ÿ– CA CB

๐ถ๐ถ ๐ท =

AE

1 ๐Ÿ = 2 + 1 + 1 + 2 + 3 + 4 ๐Ÿ๐Ÿ‘ BA BC

๐ถ๐ถ ๐ถ =

AD

๐ถ๐ถ ๐ด =

FC

FD

FE

FG

1 ๐Ÿ = 1+2+1+2+2+1 ๐Ÿ— GA GB GC

GD

GE

GF

Danny King (kxrs26): Theory & Practice

Page 4 of 11

21/11/2011

3b. Show that the closeness centrality (in ๐‘ป) of ๐’– is less than the closeness centrality of ๐’— if and only if ๐’๐’– < ๐’๐’— and that the centralities are equal when ๐’๐’– = ๐’๐’— . Let ๐‘‡๐‘ข and ๐‘‡๐‘ฃ be the subtrees of ๐‘‡ containing ๐‘ข and ๐‘ฃ respectively created by the edge deletion, so ๐‘‡๐‘ข = ๐‘›๐‘ข and ๐‘‡๐‘ฃ = ๐‘›๐‘ฃ . Also let ๐‘‘๐‘–๐‘— be the distance from nodes ๐‘– to ๐‘— and ๐ถ๐ถ ๐‘– be the closeness centrality of node ๐‘–. Any node ๐‘˜ in ๐‘‡๐‘ฃ will be a distance of 1 further from ๐‘ข than from ๐‘ฃ because ๐‘ข and ๐‘ฃ are adjacent and the path from ๐‘ข to ๐‘˜ must include the edge between ๐‘ข and ๐‘ฃ. Therefore if ๐‘›๐‘ข < ๐‘›๐‘ฃ the sum of the distances from ๐‘ข to all other nodes in ๐‘‡ will be greater than the sum of the distances from ๐‘ฃ to all other nodes in ๐‘‡ (i.e. ๐‘– ๐‘‘๐‘–๐‘ข > ๐‘– ๐‘‘๐‘–๐‘ฃ ) because there will be more nodes closer to ๐‘ฃ than to ๐‘ข. Since the closeness centralities of ๐‘ข and ๐‘ฃ are the reciprocals of these summations (i.e. ๐ถ๐ถ ๐‘ข = 1

๐ถ๐ถ ๐‘ฃ =

๐‘– ๐‘‘ ๐‘–๐‘ฃ

1

and

๐‘– ๐‘‘ ๐‘–๐‘ข

) it follows that ๐ถ๐ถ ๐‘ข < ๐ถ๐ถ ๐‘ฃ . Hence ๐‘›๐‘ข < ๐‘›๐‘ฃ โ†’ ๐ถ๐ถ ๐‘ข < ๐ถ๐ถ ๐‘ฃ . Similarly, ๐ถ๐ถ ๐‘ข < ๐ถ๐ถ ๐‘ฃ โ†’

๐‘›๐‘ข < ๐‘›๐‘ฃ because for ๐‘ข to have a lower closeness centrality than ๐‘ฃ there must be fewer nodes in ๐‘‡๐‘ข than in ๐‘‡๐‘ฃ in order for

๐‘–

๐‘‘๐‘–๐‘ข >

๐‘–

๐‘‘๐‘–๐‘ฃ to be true and hence for

1

๐‘– ๐‘‘ ๐‘–๐‘ข


โˆ†๐‘„2 : ๐ด๐ต, ๐ถ โ†’ ๐ด๐ต๐ถ

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

Danny King (kxrs26): Theory & Practice

Page 7 of 11

21/11/2011

๐’— = ๐‘ซ,

๐‘‹โˆช๐‘ฃ = ๐ท ,

๐‘‹ = {โˆ…}

๐‘Œ = {๐ด, ๐ต, ๐ถ} โˆ†๐‘„1 =

2 4 8 6 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 121

๐‘Œ = {๐ธ} โˆ†๐‘„2 =

1 4 2 7 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 121

๐‘Œ = {๐น} โˆ†๐‘„3 =

1 4 3 5 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 121 โˆ†๐‘„2 > โˆ†๐‘„1 > โˆ†๐‘„3 : ๐ท, ๐ธ โ†’ ๐ท๐ธ

๐’— = ๐‘ฌ,

๐‘‹ โˆช ๐‘ฃ = ๐ท, ๐ธ ,

๐‘‹ = {๐ท}

๐‘Œ = {๐น} โˆ†๐‘„ =

1 1 2 4 3 1 โˆ’ +2โˆ™ โˆ’ = 11 11 22 22 22 121 โˆ†๐‘„ > 0: ๐ท๐ธ, ๐น โ†’ ๐ท, ๐ธ๐น

๐’— = ๐‘ญ,

๐‘‹ โˆช ๐‘ฃ = ๐ถ๐ธ, ๐น ,

๐‘‹ = {๐ธ}

๐‘Œ = {๐ท} โˆ†๐‘„1 =

1 1 3 2 4 3 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 121

๐‘Œ = {๐บ} โˆ†๐‘„2 =

1 1 3 2 3 3 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 242 Both decrease modularity: no move

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

Danny King (kxrs26): Theory & Practice

Page 8 of 11

21/11/2011

๐’— = ๐‘ฎ,

๐‘‹โˆช๐‘ฃ = ๐บ ,

๐‘‹ = {โˆ…}

๐‘Œ = {๐ธ, ๐น} โˆ†๐‘„1 =

1 3 5 7 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 242

๐‘Œ = {๐ป} โˆ†๐‘„2 = (same graph)

1 3 1 19 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 242

๐‘Œ = {๐ผ} โˆ†๐‘„3 =

1 3 1 19 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 242 โˆ†๐‘„2 = โˆ†๐‘„3 > โˆ†๐‘„1 : ๐บ, ๐ป โ†’ ๐บ๐ป

๐’— = ๐‘ฏ,

๐‘‹ โˆช ๐‘ฃ = ๐บ, ๐ป ,

๐‘‹ = {๐บ}

There is no neighbour of ๐ป that does not belong to the same community: no move

๐’— = ๐‘ฐ,

๐‘‹โˆช๐‘ฃ = ๐ผ ,

๐‘‹ = {โˆ…}

๐‘Œ = {๐บ, ๐ป} โˆ†๐‘„ =

1 1 0 4 9 โˆ’0+2โˆ™ โˆ’ = 11 22 22 22 121 โˆ†๐‘„ > 0: ๐บ๐ป, ๐ผ โ†’ ๐บ๐ป๐ผ

(same graph)

๐’— = ๐‘จ,

๐‘‹ โˆช ๐‘ฃ = ๐ด, ๐ต, ๐ถ ,

๐‘‹ = {๐ต, ๐ถ}

There is no neighbour of ๐ด that does not belong to the same community: no move

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

Danny King (kxrs26): Theory & Practice

Page 9 of 11

21/11/2011

๐’— = ๐‘ฉ,

๐‘‹ โˆช ๐‘ฃ = ๐ด, ๐ต, ๐ถ ,

๐‘‹ = {๐ด, ๐ถ}

๐‘Œ = {๐ท} โˆ†๐‘„ =

1 2 3 5 4 19 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 242

(same graph)

Decreased modularity: no move

๐’— = ๐‘ช,

๐‘‹ โˆช ๐‘ฃ = ๐ด, ๐ต, ๐ถ ,

๐‘‹ = {๐ด, ๐ต}

๐‘Œ = {๐ท} โˆ†๐‘„ =

1 2 3 5 4 19 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 242

(same graph)

Decreased modularity: no move

๐’— = ๐‘ซ,

๐‘‹โˆช๐‘ฃ = ๐ท ,

๐‘‹ = {โˆ…}

๐‘Œ = {๐ด, ๐ต, ๐ถ} โˆ†๐‘„1 =

2 4 8 6 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 121

2 equal results (B & C)

๐‘Œ = {๐ธ, ๐น} (same graph)

โˆ†๐‘„2 =

2 4 5 12 โˆ’0+2โˆ™ 0โˆ’ = 11 22 22 121

2 equal results (E & F)

โˆ†๐‘„2 > โˆ†๐‘„1 : ๐ท, ๐ธ๐น โ†’ ๐ท๐ธ๐น

๐’— = ๐‘ฌ,

๐‘‹ โˆช ๐‘ฃ = ๐ท, ๐ธ, ๐น ,

๐‘‹ = {๐ท, ๐น}

There is no neighbour of ๐ธ that does not belong to the same community: no move

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

Danny King (kxrs26): Theory & Practice

Page 10 of 11

21/11/2011

From here on the graph does not change so it will not be redrawn at each step

๐’— = ๐‘ญ,

๐‘‹ โˆช ๐‘ฃ = ๐ท, ๐ธ, ๐น ,

๐‘‹ = {๐ท, ๐ธ}

๐’— = ๐‘ซ,

๐‘Œ = {๐บ, ๐ป, ๐ผ} โˆ†๐‘„ =

โˆ†๐‘„ =

Decreased modularity: no move ๐‘‹ โˆช ๐‘ฃ = ๐บ, ๐ป, ๐ผ ,

๐’— = ๐‘ฌ,

๐‘‹ = {๐ป, ๐ผ}

๐’— = ๐‘ญ,

Decreased modularity: no move ๐‘‹ โˆช ๐‘ฃ = ๐บ, ๐ป, ๐ผ ,

โˆ†๐‘„ =

๐‘‹ = {๐บ, ๐ผ}

๐‘‹ โˆช ๐‘ฃ = ๐บ, ๐ป, ๐ผ ,

๐‘‹ = {๐ป, ๐ผ}

๐‘‹ โˆช ๐‘ฃ = ๐ด, ๐ต, ๐ถ ,

โˆ†๐‘„ =

1 2 3 2 9 43 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 242

๐’— = ๐‘ฏ,

๐‘‹ = {๐ป, ๐ผ}

๐‘‹ = {๐ด, ๐ถ} ๐’— = ๐‘ฐ,

Decreased modularity: no move ๐‘‹ โˆช ๐‘ฃ = ๐ด, ๐ต, ๐ถ ,

๐‘‹ โˆช ๐‘ฃ = ๐บ, ๐ป, ๐ผ ,

There is no neighbour of ๐ป that does not belong to the same community: no move ๐‘‹ โˆช ๐‘ฃ = ๐บ, ๐ป, ๐ผ ,

๐‘‹ = {๐บ, ๐ป}

There is no neighbour of ๐ผ that does not belong to the same community: no move

1 2 3 5 9 17 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 121

๐’— = ๐‘ช,

๐‘‹ = {๐ป. ๐ผ}

Decreased modularity: no move

๐‘‹ = {๐ต, ๐ถ}

๐‘Œ = {๐ท, ๐ธ, ๐น} โˆ†๐‘„ =

๐‘‹ โˆช ๐‘ฃ = ๐บ, ๐ป, ๐ผ ,

๐‘Œ = {๐ท, ๐ธ, ๐น}

There is no neighbour of ๐ด that does not belong to the same community: no move ๐’— = ๐‘ฉ,

๐‘‹ = {๐ท, ๐ธ}

Decreased modularity: no move

There is no neighbour of ๐ผ that does not belong to the same community: no move ๐‘‹ โˆช ๐‘ฃ = ๐ด, ๐ต, ๐ถ ,

๐‘‹ โˆช ๐‘ฃ = ๐ท, ๐ธ, ๐น ,

1 2 3 6 5 19 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 242

๐’— = ๐‘ฎ,

๐’— = ๐‘จ,

๐‘‹ = {๐ท, ๐น}

๐‘Œ = {๐บ, ๐ป, ๐ผ}

There is no neighbour of ๐ป that does not belong to the same community: no move ๐’— = ๐‘ฐ,

๐‘‹ โˆช ๐‘ฃ = ๐ท, ๐ธ, ๐น ,

There is no neighbour of ๐ธ that does not belong to the same community: no move

1 2 3 2 9 43 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 242

๐’— = ๐‘ฏ,

2 2 4 5 8 6 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 121 Decreased modularity: no move

๐‘Œ = {๐ท, ๐ธ, ๐น} โˆ†๐‘„ =

๐‘‹ = {๐ธ, ๐น}

๐‘Œ = {๐ด, ๐ต, ๐ถ}

1 2 3 6 5 19 โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 242

๐’— = ๐‘ฎ,

๐‘‹ โˆช ๐‘ฃ = ๐ท, ๐ธ, ๐น ,

Summary of community movements

๐‘‹ = {๐ด, ๐ต}

๐‘Œ = {๐ท, ๐ธ, ๐น} 1 2 3 5 9 17 โˆ†๐‘„ = โˆ’ +2โˆ™ โˆ’ =โˆ’ 11 11 22 22 22 121 Decreased modularity: no move

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

๐‘จ, ๐‘ฉ ๐‘จ๐‘ฉ, ๐‘ช ๐‘ซ, ๐‘ฌ ๐‘ซ๐‘ฌ, ๐‘ญ ๐‘ฎ, ๐‘ฏ ๐‘ฎ๐‘ฏ, ๐‘ฐ ๐‘ซ, ๐‘ฌ๐‘ญ

โ†’ ๐‘จ๐‘ฉ โ†’ ๐‘จ๐‘ฉ๐‘ช โ†’ ๐‘ซ๐‘ฌ โ†’ ๐‘ซ, ๐‘ฌ๐‘ญ โ†’ ๐‘ฎ๐‘ฏ โ†’ ๐‘ฎ๐‘ฏ๐‘ฐ โ†’ ๐‘ซ๐‘ฌ๐‘ญ

Final community decomposition ๐‘ฝ๐Ÿ = ๐‘จ, ๐‘ฉ, ๐‘ช ๐‘ฝ๐Ÿ = ๐‘ซ, ๐‘ฌ, ๐‘ญ ๐‘ฝ๐Ÿ‘ = ๐‘ฎ, ๐‘ฏ, ๐‘ฐ

Danny King (kxrs26): Theory & Practice 21/11/2011

5. How long did you spend working on this assignment? Roughly 80 hours including research and typesetting.

References Newman, M. E. J. & Girvan, M. (2004). Finding and evaluating community structure in networks. Physical Review E, Vol. 69, No. 2. 026113. Easley, D. & Kleinberg, J. (2010). Networks, Crowds, and Markets: Reasoning About a Highly Connected World. Cambridge University Press: New York. (As well as the course lecture slides)

Danny King (undergraduate of Computer Science at Durham University) [email protected] www.dannyking.eu

Page 11 of 11