void GraphRandomGenerator::initExactGraph(int iEdges)
{
	for(int i=0; i<iEdges; ++i)
	{
		int a,b;
		do {	
			getRandomEdge(a,b);
		}while(!_graph.addEdge(a,b));
	}
}
void GreedyHeuristic::getGreedyTree(UndirectedGraph* greedyTree,int cardinality) {

  Edge* startE = getRandomEdge();
  greedyTree->addVertex(startE->fromVertex());
  greedyTree->addVertex(startE->toVertex());
  greedyTree->addEdge(startE);
  generateNeighborhoodFor(startE);
  for (int k = 1; k < cardinality; k++) {
    Edge* kctn = getMinNeighbor();
    Vertex* nn = determineNeighborNode(kctn,greedyTree);
    greedyTree->addVertex(nn);
    greedyTree->addEdge(kctn);
    adaptNeighborhoodFor(kctn,nn,greedyTree);
  }
  greedyTree->setWeight(weightOfSolution(greedyTree));  
}
void GraphRandomGenerator::initProbGraph(int iEdges)
{
	double p = 2.0*(double)iEdges/(double)((_graph.getVertexSize()-1)*_graph.getVertexSize());

	for (int i=0; i<_graph.getVertexSize(); ++i)
	{
		for (int j=0; j<_graph.getVertexSize(); ++j)
		{
			if (rand()<p*RAND_MAX)
			{
				int a,b;
				do {	
					getRandomEdge(a,b);
				}while(!_graph.addEdge(a,b));
			}
		}
	}

}