public MyGraph computeCover4() {
		MyGraph cover = new MyGraph(this);
		ArrayList<MyNode> hightDegreeNodes = new ArrayList<MyNode>();
		for (MyNode n : cover.getNodes()) {
			if (n.getDegree() > 2) {
				hightDegreeNodes.add(n);
			}
		}
		for (MyNode node : hightDegreeNodes) {
			for (MyEdge edge : cover.outEdges(node)) {
				if (cover.isNotVine(node, edge)) {
					double oldW = edge.getWeight();
					edge.setWeight(oldW / 2);
				}
			}

		}
		while (!cover.isPaths()) {
			ArrayList<MyEdge> cuts = null;
			while (cuts == null && !hightDegreeNodes.isEmpty()) {
				MyNode node = hightDegreeNodes.get(0);
				cuts = cover.computeWorstEdges(node);
				hightDegreeNodes.remove(0);
			}

			for (MyEdge e : cuts) {
				cover.removeEdge(e);
			}

		}
		return cover;
	}