Identifying the Central Individual in a Social Network
You have just been hired by a social networking company! The division you are working in is particularly interested in identifying "central" individuals in the network. Unfortunately, they do not have a formal definition of what makes an individual central. The only resource they currently have is a set of sample networks which have the central individual(s) identified.
Your task is to do the following:
1.) Create a mathematical definition to define who is(are) the central individual(s) in a network. This definition should:
a. Successfully identify the central individuals in the sample networks provided. (See Sample network files, Central individual is identified in the Appendix of this file)
b. Be applicable to an arbitrary network of arbitrary size.
2.) Implement a program that successfully finds central individuals in arbitrary networks.
a. Input - A file name submitted via the command-line.
The file will have a number of lines of input. Each line will have information about a single connection between friends in a social network, in the following format:
X friends with Y
Where X and Y are integer values (note X will never equal Y). Each integer represents the id of an individual in the network. Each line represents a connection between the two individuals.
b. Output - The ids corresponding to the central individuals (there may be more than one).
c. You can use the programming language of your choice, but your program must be able to compile and run on one of the department linux computers (i.e. linux-1.ece.iastate.edu, linux-2.ece.iastate.edu, etc.)
4. Handing In and Grading
The assignment should be submitted via BlackBoard in a zip file with your NetID as the name of the file.
Your submission should include a short project report which:
1.) Gives your formal definition of a central individual.
Note - even if you are unable to come up with a definition that satisfies all the test networks, be sure to include definitions you tried and explored. We will give partial credit.
2.) Gives a high level overview of the algorithm your program uses to locate the central individual.
3.) Gives clear instructions on how to compile and run your program.