예제 #1
0
  private GrafoPredicados generateStar(int cantidad, int longEstrella, int colores) {
    GrafoPredicados grafo = new GrafoPredicados();
    grafo.addMateria(new NodoMateria(colores, true));
    for (int j = 0; j < cantidad; j++) {
      for (int i = 0; i < longEstrella; i++) {
        grafo.addMateria(new NodoMateria(colores, true));
      }
      //			  grafo.connectMateria(0, j * longEstrella + 1);
      for (int i = 0; i < longEstrella - 1; i++) {
        //				  grafo.connectMateria((j* longEstrella) +i, (j* longEstrella)+i+1);
      }
    }

    return grafo;
  }
예제 #2
0
  @Test
  public void testGrafo() {
    for (int i = 0; i < 100000000; i++) {
      Math.random();
    }

    GrafoPredicados grafo = generateStar(10, 10, 8);
    ArrayList<Tuple<Integer, Integer>> aristas = generateAristas(10, 10);
    int cantAristas = aristas.size();

    for (int i = 0; i < cantAristas; i++) {
      for (int j = 0; j < 100; j++) {
        Tuple<Integer, Integer> tuple = aristas.get(0);
        aristas.remove(0);
        grafo.connectMateria(tuple.getX(), tuple.getY());
      }

      double tiempoFinal = 0;
      Ejercicio3 ej;
      int conflictos1 = Integer.MAX_VALUE;
      for (int j = 0; j < 3; j++) {
        ej = new Ejercicio3(grafo);
        double tiempo = System.nanoTime();
        conflictos1 = Math.min(conflictos1, ej.checkColoreoFinal());
        tiempoFinal += (System.nanoTime() - tiempo) / 1000;
      }
      System.out.print(tiempoFinal + ";" + conflictos1 + ";");

      conflictos1 = 0;
      for (int j = 0; j < 3; j++) {
        Ejercicio2 ej2 = new Ejercicio2(grafo);
        double tiempo = System.nanoTime();
        if (ej2.solverWithBacktrack()) {
          conflictos1 = 0;
        } else {
          conflictos1 = 1;
        }
        tiempoFinal += (System.nanoTime() - tiempo) / 1000;
      }
      System.out.print(tiempoFinal + ";" + conflictos1 + ";");

      System.out.println();
    }
  }
예제 #3
0
  private GrafoPredicados generateBiPartitoCompleto(int v1, int v2, int colores) {
    GrafoPredicados grafo = new GrafoPredicados();
    grafo.addMateria(new NodoMateria(colores, true));
    for (int j = 0; j < v1 + v2; j++) {
      grafo.addMateria(new NodoMateria(colores, true));
    }
    for (int j = 0; j < v1; j += 2) {
      for (int i = 1; i < v2; i += 2) {
        grafo.connectMateria(j, i);
      }
    }

    for (int j = 1; j < v2; j += 2) {
      for (int i = 0; i < v1; i += 2) {
        grafo.connectMateria(j, i);
      }
    }

    return grafo;
  }