Analyzing Massive Graphs in the Semi-streaming Model