public void run(G graph){
  List<TaggedVertex> recruits=init(graph);
  while (!recruits.isEmpty()) {
    logger.info(String.format("Sampling iteration %1$s.",iteration));
    List<TaggedVertex> newRecruits=new LinkedList<TaggedVertex>();
    Collections.shuffle(recruits,random);
    for (    TaggedVertex vertex : recruits) {
      if (!listener.beforeSampling(this,vertex.getProjection()))       return;
      if (vertex.isResponsive()) {
        expand(vertex,newRecruits);
      }
      if (!listener.afterSampling(this,vertex.getProjection()))       return;
    }
    recruits=newRecruits;
    iteration++;
  }
  listener.endSampling(this);
  logger.info("Done.");
}

public void run ( G graph ) { List < TaggedVertex > recruits = init ( graph ) ; while ( ! recruits . isEmpty ( ) ) { logger . info ( String . format ( "Sampling iteration %1$s." , iteration ) ) ; List < TaggedVertex > newRecruits = new LinkedList < TaggedVertex > ( ) ; Collections . shuffle ( recruits , random ) ; for ( TaggedVertex vertex : recruits ) { if ( ! listener . beforeSampling ( this , vertex . getProjection ( ) ) ) return ; if ( vertex . isResponsive ( ) ) { expand ( vertex , newRecruits ) ; } if ( ! listener . afterSampling ( this , vertex . getProjection ( ) ) ) return ; } recruits = newRecruits ; iteration ++ ; } listener . endSampling ( this ) ; logger . info ( "Done." ) ; }
starts the snowball sampling . the sampler will draw the seed vertices from the seed generator and expand to all vertices indicated as responding by the response generator until all reachable vertices have been sampled or the sampler listener terminates the sampling process .
