@Override
	public GlobalPhysicalGraph initialSchedule(final QueueLinkerJob job) {
		final LogicalGraph lg = job.getVertexGraph();
		final GlobalPhysicalGraph graph = new GlobalPhysicalGraph();

		Iterator<Vertex> vertexIter = lg.iteratorOfVertex();
		while (vertexIter.hasNext()) {
			final Vertex v = vertexIter.next();
			if (v instanceof LogicalVertex) {
				handleLogicalVertex((LogicalVertex)v, graph);
			}
		}

		vertexIter = lg.iteratorOfVertex();
		while (vertexIter.hasNext()) {
			final Vertex v = vertexIter.next();
			if (v instanceof VirtualVertex) {
				handleVirtualVertex((VirtualVertex)v, graph);
			}
		}

		vertexIter = lg.iteratorOfVertex();
		while (vertexIter.hasNext()) {
			final Vertex v = vertexIter.next();
			if (v instanceof SwitcherVertex) {
				handleSwitcherVertex((SwitcherVertex)v, graph);
			}
		}

		Iterator<Edge> iterEdge = lg.iteratorOfEdge();
		while (iterEdge.hasNext()) {
			final Edge edge = iterEdge.next();
			handleEdge(edge, graph);
		}

		return graph;
	}