#----------------------------------------------------------------------- # performer.py #----------------------------------------------------------------------- import sys import stdio import smallworld from graph import Graph from instream import InStream # Accept the name of a movie-cast file and a delimiter as command-line # arguments and create the associated performer-performer graph. Write # to standard output the number of vertices, the average degree, # the average path length, and the clustering coefficient of the graph. # Assume that the performer-performer graph is connected so that the # average page length is defined. file = sys.argv[1] delimiter = sys.argv[2] graph = Graph() instream = InStream(file) while instream.hasNextLine(): line = instream.readLine() names = line.split(delimiter) for i in range(1, len(names)): for j in range(i+1, len(names)): graph.addEdge(names[i], names[j]) degree = smallworld.averageDegree(graph) length = smallworld.averagePathLength(graph) cluster = smallworld.clusteringCoefficient(graph) stdio.writef('number of vertices = %d\n', graph.countV()) stdio.writef('average degree = %7.3f\n', degree) stdio.writef('average path length = %7.3f\n', length) stdio.writef('clustering coefficient = %7.3f\n', cluster) #----------------------------------------------------------------------- # cat tinymovies.txt # Movie 1/Actor A/Actor B/Actor H # Movie 2/Actor B/Actor C # Movie 3/Actor A/Actor C/Actor G # python performer.py tinymovies.txt "/" # number of vertices = 5 # average degree = 2.800 # average path length = 1.300 # clustering coefficient = 0.767 # python performer.py moviesg.txt "/" # number of vertices = 19044 # average degree = 148.688 # average path length = 3.494 # clustering coefficient = 0.911