You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
from builtins import str, bytes, dict, int
|
|
|
|
import os
|
|
import sys
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", ".."))
|
|
|
|
from pattern.graph import Graph, CENTRALITY
|
|
|
|
# A graph is a network of nodes (or concepts)
|
|
# connected to each other with edges (or links).
|
|
|
|
g = Graph()
|
|
for n in ("tree", "nest", "bird", "fly", "insect", "ant"):
|
|
g.add_node(n)
|
|
|
|
g.add_edge("tree", "nest") # Trees have bird nests.
|
|
g.add_edge("nest", "bird") # Birds live in nests.
|
|
g.add_edge("bird", "fly") # Birds eat flies.
|
|
g.add_edge("ant", "bird") # Birds eat ants.
|
|
g.add_edge("fly", "insect") # Flies are insects.
|
|
g.add_edge("insect", "ant") # Ants are insects.
|
|
g.add_edge("ant", "tree") # Ants crawl on trees.
|
|
|
|
# From tree => fly: tree => ant => bird => fly
|
|
print(g.shortest_path(g.node("tree"), g.node("fly")))
|
|
print(g.shortest_path(g.node("nest"), g.node("ant")))
|
|
print()
|
|
|
|
# Which nodes get the most traffic?
|
|
for n in sorted(g.nodes, key=lambda n: n.centrality, reverse=True):
|
|
print('%.2f' % n.centrality, n)
|