// support multi-core (internal vertex ID generation of Jung is not synchronized).
labelmap = new HashMap<VertexID,CmpVertex>();
for(int i=0;i<size-1;i++)
{
CmpVertex v=new StringVertex(new VertexID(VertexID.VertKind.NEUTRAL,i+1));
annotateVertex(v);
machine.getTransitionMatrix().put(v, machine.createNewRow());
vertices.add(v);// permits v to be chosen as a target, creating self-loops
this.labelmap.put(v.getID(), v);
CmpVertex random = selectRandomVertex();
machine.addTransition(machine.getTransitionMatrix().get(random), AbstractLearnerGraph.generateNewLabel(randomInt(alphabet-1),machine.config), v);
//Visualiser.updateFrame(machine, null);
if (Distributions.nextGeometric(1-selfLoop,generator)>0)