Beispiel #1
0
  public String execAnalise(Grafo grafo) {
    vColoridos = new ArrayList(); // vertices coloridos
    aColoridas = new ArrayList(); // arestas coloridas
    for (int i = 0; i < grafo.getQtdVertices(); i++)
      if ((grafo.getAcendedor()).estaAceso(grafo.getVertice(i)))
        vColoridos.add(new Integer((grafo.getVertice(i)).getNome()));

    if (vColoridos.size() != 0) {
      for (int i = 0; i < vColoridos.size(); i++) {
        Vertice colorido = grafo.getVerticeByNome(((Integer) vColoridos.get(i)).intValue());
        ArrayList adjacencias = grafo.getAdjacencias(colorido);
        ArrayList a = new ArrayList();
        for (int j = 0; j < adjacencias.size(); j++) {
          Vertice V = (Vertice) adjacencias.get(j);
          if (pertenceColoridos(V.getNome()))
            if ((grafo.getAcendedor()).estaAceso(grafo.getArestaEntreVertices(colorido, V)))
              a.add(new Integer(V.getNome()));
        }
        aColoridas.add(a);
      }
      return subgrafo(grafo);
    } else return "Escolha um subgrafo!";
  }
  public static List<Vertice> lerGrafo(String nomeArquivo) {

    Grafo g = new Grafo();
    Vertice v;
    File f = new File(nomeArquivo);
    String vertices[];
    String linha;
    ArrayList<String[]> s1 = new ArrayList<String[]>();

    try {
      BufferedReader br = new BufferedReader(new FileReader(f));

      Map<String, Vertice> mapa = new HashMap<String, Vertice>();

      while ((linha = br.readLine()) != null) {

        if (linha.contains(",")) {
          s1.add(linha.split("/"));
          vertices = s1.get(0)[0].split(",");

          v = (Vertice) mapa.get(vertices[0]);
          if (v == null) v = new Vertice();

          List<Vertice> vizinhosAtual = new ArrayList<Vertice>();
          List<Aresta> arestasAtual = new ArrayList<Aresta>();
          v.setDescricao(vertices[0]);
          mapa.put(vertices[0], v);

          if (linha.contains("/")) {

            String pesoArestas[] = s1.get(0)[1].split(",");

            for (int i = 1; i < vertices.length; i++) {
              Vertice vit;
              // vit = g.encontrarVertice(vertices[i]);
              vit = mapa.get(vertices[i]);
              if (vit == null) vit = new Vertice();
              vit.setDescricao(vertices[i]);
              vizinhosAtual.add(vit);
              mapa.put(vertices[i], vit);

              Aresta ait = new Aresta(v, vit);
              ait.setPeso(Integer.parseInt(pesoArestas[i - 1]));
              arestasAtual.add(ait);
            }
            v.setVizinhos(vizinhosAtual);
            v.setArestas(arestasAtual);
          }

        }

        // Vertices finais
        else {

          // v = g.encontrarVertice(linha);
          v = (Vertice) mapa.get(linha);
          if (v == null) v = new Vertice();
          v.setDescricao(linha);
          mapa.put(linha, v);
        }

        g.adicionarVertice(v);
        s1.clear();
      }

      // catch do BufferedReader
    } catch (FileNotFoundException e) {
      System.out.println("Nao encontrou o arquivo");
      e.printStackTrace();
    }
    // catch do readLine
    catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    // Retornando os vertices
    return g.getVertices();
  }