Traducao pseudo-codigo para java

1 resposta
iasmim

Olá,
alguem poderia me ajudar a traduzir esse pseudo-codigo (para resolver o clique de um grafo) para java e me ajudar a implementar essas funções ?

a saida no codigo é o conjunto de vertices que gera o maior clique do grafo,ai testa o todos os pares possiveis e verifica se ha uma arestas entre eles enfim só pra voces entenderem do que se trata, mas eu queria mesmo ajuda na traducao e como eu faco um metodo que recebe uma matriz e um numero como paramentros e transforma numa matriz de adjacencia e depois inverte ao sejo o que era 0 fica 1 e vice - versa.

se alguem que estiver por dentro desse assunto puder me ajudar agradeceria muito mesmo…

void forca_bruta()
    begin
     tamanho_solucao_final=-1;
     le_arquivo(matriz,Nvertices);
     inverte_matriz(matriz,nvertices);
     gera-todas_combinacoes(combinacoes,Nvertices);
     retorno = obtem_combinacao(combinacao,solucao_possivel);
     while(retorno>=0)
     begin
     valida = testePossibilidade(solucao_possivel,tamanho_solucao);
     if(valida){
        if(tamanho_solucao>=tamanho_solucao_final){
                solucao_final =  solucao_possivel;
                tamanho_solucao_final=tamanho_solucao;                                 
                                                 
                                                   }        
                
                
                }      
           retorno =obtem_combinacao(combinacao,solucao_possivel);
           end
          imprime(solucao_final,tamanho_solucao_final); 
           end
           
           }

1 Resposta

JoaoBluSCBR

Iasmim,

Você entende algo do que está pedindo?

Acho que se você entendesse também entenderia a complexidade do que você está pedindo.

Veja alguns detalhes do teu pseudo-código, se você me explicar estes detalhes eu te ajudo a
transformar isso em java:

void forca_bruta()   
        begin   
        tamanho_solucao_final=-1;   
        //Aqui você lê um arquivo que vai te fornecer as informaçoes
        //Para preencher uma matriz com um certo número de vértices
        //Qual a estrutura desse suposto arquivo (como ele seria formado)?
        le_arquivo(matriz,Nvertices);   
        
        //Por que é necessário inverter a matriz;
        inverte_matriz(matriz,nvertices);   
        
        //Em que consiste uma combinação? Qual a estrutura de uma combinação?
        gera-todas_combinacoes(combinacoes,Nvertices);   
        
        //O que determina qual combinação leva a solucao_possivel?
        //Como é feita essa determinacao, qual a fórmula para encontrar
        //a solução possível e qual o valor de solucao possivel antes de começar?
        retorno = obtem_combinacao(combinacao,solucao_possivel);  
        
        //Esta linha diz que podem haver mais de 1 solucao
        //Entao retorno é uma lista, um conjunto de solucoes
        while(retorno>=0)   
        begin
            //Em que consiste o teste de validacao da possibilidade de uma solucao
            valida = testePossibilidade(solucao_possivel,tamanho_solucao);   
            if(valida){   
                //Como se mede o tamanho de uma solucao
                if(tamanho_solucao>=tamanho_solucao_final){   
                    solucao_final =  solucao_possivel;   
                    tamanho_solucao_final=tamanho_solucao;                                   
                }                                         
            }  
            retorno =obtem_combinacao(combinacao,solucao_possivel);   
       end   
       imprime(solucao_final,tamanho_solucao_final);   
       end   
    }

Então, transformar isso em código java envolve saber muitos detalhes de estrutura, ou
simplesmente fazer um código incompleto do tipo:

public class Iasmim {
    
    public void forca_bruta() {
        int tamanho_solucao_final = -1;
        le_arquivo(matriz, nVertices);
        inverte_matriz(matriz, nVertices);
        gera_todas_combinacoes(combinacoes, nVertices);
        retorno = obtem_combinacao(combinacao,solucao_possivel);   
        while(retorno >=0){
            valida = testePossibilidade(solucao_possivel, tamanho_solucao);
            if(valida){
                if(tamanho_solucao>=tamanho_solucao_final){
                    solucao_final = solucao_possivel;
                    tamanho_solucao_final = tamanho_solucao;
                }
            }
        }
    }
    
    public void le_arquivo(Matrix m, int nV){}
    
    public void inverte_matriz(Matrix m, int nV){}
    
    public gera_todas_combinacoes(List comb, int nV){}

    public Combinacao obtem_Combinacao(Combinacao c, Solucao s){}

    public boolean testePossibilidade(Solucao s, int t){}


    
}

Que não funcionará até que todas as lacunas sejam preenchidas.

Criado 21 de julho de 2011
Ultima resposta 22 de jul. de 2011
Respostas 1
Participantes 2