2.5 Chapter 2 Homework
You can find the homework here.
The following task prompts are based on the above homework. You can use them to keep practicing coding in Python.
2.5.1 Task 2-1: Networkx
Basics
2-1-1. Import
networkx
asnx
.2-1-2. Set both random seed and numpy random seed to be
42
.2-1-3. Create a networkx graph named
my_first_graph
which contains three nodes and 2 edges, i.e., (1,2) and (2,3).2-1-4. In the codes you used for Task
2-3
: Which element is aclass
? Which is anobject
? Which is amethod
?2-1-5. Print the number of nodes in
my_first_graph
. Hint :len()
2-1-6. Print the degree of Node 2, in the format of “Node 2’s degree: m.”
2-1-7. Print Node 2’s neighbors, in the format of “Node 2’s neighbors: [m, n, p, q].” Hint :
neighbor()
orneighbors()
?- Note: When you directly return Node 2’s neighbors, the result will be
dict_keyiterator at 0x10ec84860
, which is an iterator object. Try to solve this problem either by a for loop or through a list comprehension
- Note: When you directly return Node 2’s neighbors, the result will be
2-1-8. Print all the node’s neighbors in
my_first_graph
in the form of “Node 1’s neighbors: [m, n, p, q]” using a python for loop.- Hint : The for loop will iterate over the list returned by the
nodes()
function.
- Hint : The for loop will iterate over the list returned by the
2-1-9. Print all the edges in
my_first_graph
.2-1-10. Plot
my_first_graph
. Hint :.draw()
2.5.2 Task 2-2: Friendship paradox example
2-2-1. Create a star graph with 20 nodes, and plot it.
2-2-2. Calculate the average degree of the star graph you just created. Use a for loop to calculate the total degrees.
- Hint : You might find the operator of
+=
useful for2-2-2
.a += b
is short fora = a + b
.
- Hint : You might find the operator of
2-2-3. Do the same thing using numpy’s mean function which takes in a list and returns the mean of this list.
- 2-2-4. Get
star_graph
’s average degree using networkx’sinfo()
function.
2.5.3 Task 2-3: Generating random and scale-free networks
2-3-1. Generate a random network with 20 nodes and a connection probability of 0.3. Hint :
erdos_renyi_graph
.2-3-2. Generate a scale-free network with 20 nodes with each new node having three edges to attach to existing nodes. Hint :
barabasi_albert_graph()
2.5.4 Task 2-4: Homework by Professor YY
Answer Q1 - Q4 as explained by Professor YY.