1 #!/usr/bin/env python |
|
2 |
|
3 # Copyright (c) 2007-2008 Pedro Matiello <pmatiello@gmail.com> |
|
4 # License: MIT (see COPYING file) |
|
5 |
|
6 import sys |
|
7 sys.path.append('..') |
|
8 import graph |
|
9 sys.path.append('/usr/lib/graphviz/python/') |
|
10 import gv |
|
11 |
|
12 # Graph creation |
|
13 gr = graph.graph() |
|
14 |
|
15 # Add nodes and edges |
|
16 gr.add_nodes(["Portugal","Spain","France","Germany","Belgium","Netherlands","Italy"]) |
|
17 gr.add_nodes(["Switzerland","Austria","Denmark","Poland","Czech Republic","Slovakia","Hungary"]) |
|
18 gr.add_nodes(["England","Ireland","Scotland","Wales"]) |
|
19 |
|
20 gr.add_edge("Portugal", "Spain") |
|
21 gr.add_edge("Spain","France") |
|
22 gr.add_edge("France","Belgium") |
|
23 gr.add_edge("France","Germany") |
|
24 gr.add_edge("France","Italy",) |
|
25 gr.add_edge("Belgium","Netherlands") |
|
26 gr.add_edge("Germany","Belgium") |
|
27 gr.add_edge("Germany","Netherlands") |
|
28 gr.add_edge("England","Wales") |
|
29 gr.add_edge("England","Scotland") |
|
30 gr.add_edge("Scotland","Wales") |
|
31 gr.add_edge("Switzerland","Austria") |
|
32 gr.add_edge("Switzerland","Germany") |
|
33 gr.add_edge("Switzerland","France") |
|
34 gr.add_edge("Switzerland","Italy") |
|
35 gr.add_edge("Austria","Germany") |
|
36 gr.add_edge("Austria","Italy") |
|
37 gr.add_edge("Austria","Czech Republic") |
|
38 gr.add_edge("Austria","Slovakia") |
|
39 gr.add_edge("Austria","Hungary") |
|
40 gr.add_edge("Denmark","Germany") |
|
41 gr.add_edge("Poland","Czech Republic") |
|
42 gr.add_edge("Poland","Slovakia") |
|
43 gr.add_edge("Poland","Germany") |
|
44 gr.add_edge("Czech Republic","Slovakia") |
|
45 gr.add_edge("Czech Republic","Germany") |
|
46 gr.add_edge("Slovakia","Hungary") |
|
47 |
|
48 # Draw as PNG |
|
49 dot = gr.write(fmt='dot') |
|
50 gvv = gv.readstring(dot) |
|
51 gv.layout(gvv,'dot') |
|
52 gv.render(gvv,'png','europe.png') |
|
53 |
|
54 # Then, draw the breadth first search spanning tree rooted in Switzerland |
|
55 st, order = gr.breadth_first_search(root="Switzerland") |
|
56 gst = graph.digraph() |
|
57 gst.add_spanning_tree(st) |
|
58 |
|
59 dot = gst.write(fmt='dot') |
|
60 gvv = gv.readstring(dot) |
|
61 |
|
62 gv.layout(gvv,'dot') |
|
63 gv.render(gvv,'png','europe-st.png') |
|
64 |
|
65 |
|