public Solucao eliminarRedundancia(Solucao solucao){
        Multimap<Float, Integer> colunas = TreeMultimap.create();
        for(Coluna coluna : solucao.getColunas()){
            Float custo = coluna.getCusto();          
            colunas.put((custo*(-1)), coluna.getNome());
        }
        Solucao testarsolucao = new Solucao(solucao);
        for(Float chave : colunas.keySet()){
            Iterator iterador = colunas.get(chave).iterator();
            while(iterador.hasNext()){
                Solucao testar = new Solucao(testarsolucao);
                Coluna maiorcoluna = testarsolucao.getLinhasX().get(iterador.next());
                //System.out.println(maiorcoluna.getNome());
                testar.getLinhasCobertas().clear();
                cobrirLinhas(maiorcoluna, testar);
                if(testar.getLinhasCobertas().size()==testar.getQtdeLinhas()){
                    String newstring = MOAVNS.transformaSolucao(testar);
                    if(!MOAVNS.solucoes.contains(newstring)){
                        testar.getColunas().remove(maiorcoluna);
                        testar.setCustototal(testar.getCustototal()-maiorcoluna.getCusto());
                        testarsolucao = testar;
                    }
                }
            }
        }

        return testarsolucao;
    }