void Graph :: preprocess(){ //we want all the edges to have pointer to the nodes its connecting //we also want all nodes to know about its adjacency nodes //we will do so by traversing all the edges for (int e=0; e< edgelist.size(); e++) { GraphEdge * thedg = edgelist.at(e); int frid = thedg->from; int toid = thedg->to; bool foundfrom = false; bool foundto = false; GraphNode * fromend; GraphNode * toend; //find these nodes in the adjlist for (int a=0; a<adjlist.size(); a++) { GraphNode * nd = adjlist.at(a); if (!foundfrom && nd->getnodeid() == frid) { fromend = nd; thedg->setFrom(fromend); fromend->addAdjacentEdge(thedg); foundfrom = true; } if (!foundto && nd->getnodeid() == toid) { toend = nd; thedg->setTo(toend); toend->addAdjacentEdge(thedg); foundto = true; } if(foundto && foundfrom){ fromend -> addAdjacentNode(toend); toend->addAdjacentNode(fromend); break; } } } }
void Graph :: preprocessauthorgraph(){ //we want all the edges to have pointer to the nodes its connecting //we also want all nodes to know about its adjacency nodes //we will do so by traversing all the edges //for this particular data we have to work with string id's for (int e=0; e< edgelist.size(); e++) { GraphEdge * thedg = edgelist.at(e); string frst = thedg->strfrom; string tostr = thedg->strto; bool foundfrom = false; bool foundto = false; GraphNode * fromend; GraphNode * toend; //find these nodes in the adjlist for (int a=0; a<adjlist.size(); a++) { GraphNode * nd = adjlist.at(a); if (!foundfrom && nd->getstrid() == frst) { fromend = nd; fromend->addAdjacentEdge(thedg); thedg->from = fromend -> getnodeid(); thedg->setFrom(fromend); foundfrom = true; } if (!foundto && nd->getstrid() == tostr) { toend = nd; thedg->setTo(toend); toend->addAdjacentEdge(thedg); thedg->to = toend -> getnodeid(); foundto = true; } if(foundto && foundfrom){ fromend -> addAdjacentNode(toend); toend->addAdjacentNode(fromend); break; } } } //change labels to be the first letters for (int a=0; a<adjlist.size(); a++) { string lab = adjlist.at(a)->getLabel(); istringstream iss(lab); vector<string> names; do { string sub; iss >> sub; names.push_back(sub); //cout << "Substring: " << sub << endl; } while (iss); //form the new string string newlabel; newlabel += names[0].substr(0,1); newlabel += names[1].substr(0,1); /* for(int i=0; i<names.size(); i++){ newlabel += names[i].substr(0, 1); } */ adjlist.at(a)->setShortLabel(newlabel); //printf("old label: %s, new label: %s \n", lab.c_str(), newlabel.c_str()); } ramdomizePositions(false); //since author graph has no initial positions // we have to assign positions }