public VertexSet getVertexSetNeighbourhood(VertexSet S){
		
		VertexSet vertexSetNeighbourhood = new VertexSet();
        VertexSet vertexSetTemp = null;
        Iterator<City> cityIterator = S.iterator();
        
        while (cityIterator.hasNext()){
            vertexSetTemp = getNeighbourhood(cityIterator.next());
            Iterator<City> vertexSetTempIterator = vertexSetTemp.iterator();    
                while (vertexSetTempIterator.hasNext()){
                	City nextCity = vertexSetTempIterator.next();
                    if (!vertexSetNeighbourhood.containsID(nextCity.getID()))
                        vertexSetNeighbourhood.addVertex(nextCity);
                }
        }
        
        // added by johannes (remove elements from S)
        for(City c : S){
        	if(vertexSetNeighbourhood.containsID(c.getID())){
        		vertexSetNeighbourhood.removeID(c.getID());
        	}
        }
        return vertexSetNeighbourhood;
	}