Edgecom is a program whose purpose is to compute a partition of the edges of an arbitrary graph given as input into dense communities. It outputs the list of the obtained edge communities. Edgecom is composed of one file, edgecom.c, and uses two external files that are provided with it, prelim.c and rand.c The program is written in C language and can be compiled using: gcc edgecom.c -Wextra -Wall -O3 -lm -o edgecom ## options: -i [*inputfile*], --input [*inputfile*] -m [*modularity measure*], --measure [*modularity measure*] * 1: use m/couples - m/expectation * 2: use E(couples) - couples * 3: use E(couples) / couples -o [*outputfile*], --output [*outputfile*] Name for the output file, default: *output*. -h [*historyfile*], --history [*historyfile*] Name for file with the history of the program. This file will only be created if this option is used. -r, --random Process the communities in random order. -n, --neighbours Force the algorithm to only consider merging two communities if there exists a node with an edge from both communities incident to it. Input graph format: ------------------- It is a text file formed as follows. The first line contains the number n of vertices in the graph. The n following lines contain two integers separated by a space: the first one is an integer v between 0 and n-1 that is the identifyer of vertex v; the second one is the number of neighbours of vertex v. Each of the remaining lines is for one edge of the graph. It contains two integers between 0 and n-1, separated by a space, that are the identifyers of the two end vertices of the edge. Each edge must appear exactly once and there must not be any blank line in the middle or at the end of the file. example of an input graph: --- 4 0 3 1 2 2 3 3 2 1 0 2 0 2 1 3 0 3 2 --- Output format : --------------- One line for each edge community, which contains a list of edges in the form (u1,v1) (u2,v2) ... (uk,vk), where ui,vi are the identifyers of the two end vertices of each edge in the community. example of a possible output on the input graph above: --- (0,1) (2,1) (0,2) (0,3) (3,2) ---