Download the three files: nodes4000r1.gdf, nodes4000r2.gdf, nodes4000r4.gdf. For each one, load them into Guess and run the script "searchtool.py". In the search tool, you can only do one thing, which is to click a button and see it select two nodes at random, and then try to find a path between them using the following search algorithm:
current node = start node
while (current node is not the target)
mark current node as visited
if one or more of the neighbors of the current node has not been visited pick the unvisited neighbor with the smallest distance to the target otherwise pick a visited neighbor at random set the current node to the neighbor selected
This very simple algorithm will perform differently on different networks. In each network there are 4,000 nodes placed randomly on a two dimensional square area. Each node is connected to its two closest neighbors (note that it may be the closest neighbor from another node's point of view, so it may gain more than two edges from this requirement). Each node additionally adds one edge to another random node with probability 1/dr, where d is the euclidean distance (sqrt(x2+y2)) between the two nodes, and r is the parameter that varies between the networks and takes on values 1,2, and 4.
1.. Qualitatively compare how the algorithm performs on each of the three networks. What advantages do the different link probabilities provide the algorithm (hint: consider not just the number of steps needed, but also what distance is covered, and whether the algorithm makes the most progress at the beginning or end of the chain).
2. Suggest a modification to the algorithm (you can be as creative or kurt as you like) that could improve its performance in one or more of these networks.
|