PedroC Postado Março 11, 2010 Denunciar Share Postado Março 11, 2010 Boa noite pessoal, estou com problemas para implementar o pseudocódigo abaixo em Python:FloidWarshall(Madj) para cada linha i em Madj para cada coluna j em Madj se (Madf[j] == 0 && i != j) Madj[j] == Infinito; fim fim fim t = numero de linhas de Madj; Cmin = Madj; para k igual a 1 até t, para i igual a 1 até t, para j igual a 1 até t, Cmin[j] = min(Cmin[j],Cmin[k]+Cmin[k][j]); fim fim fim retorna Cmin;fimAté agora, implementeu desse jeito, mas o primeiro erro que o drpython acuso é no primeiro if/else:matriz=[[0,9,0,0,14,15,0],[0,0,23,0,0,0,0,0],[0,0,0,0,2,0,0,19],[0,0,6,0,0,0,0,6],[0,0,0,11,0,0,0,16],[0,0,18,0,30,0,5,0],[0,0,0,0,20,0,0,44],[0,0,0,0,0,0,0,0]]for i in matriz[j]: for j in matriz[j]: if (matriz[j] = 0 and i!=j): matriz[j] == 2**1000000000000000000000 tamanhoMatriz=len(matriz)caminhoMinimo = matrizfor k in range(1,(tamanhoMatriz)): for i in range(1,(tamanhoMatriz)): for j in range(1,(tamanhoMatriz)): caminhoMinimo[j] = min(caminhoMinimo[j], caminhoMinimo[k]+caminhoMinimo[k][j])print caminhoMinimoAlguém tem idéia de onde está o bug?Agradeço pela ajuda desde já. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Nightwing Postado Março 16, 2010 Denunciar Share Postado Março 16, 2010 Eis a solução da primeira parte do seu problema:(O jeito que você estava escrevendo o código não funciona na linha de raciocínio do Python)matriz = [[0,9,0,0,14,15,0],[0,0,23,0,0,0,0,0],[0,0,0,0,2,0,0,19],[0,0,6,0,0,0,0,6],[0,0,0,11,0,0,0,16],[0,0,18,0,30,0,5,0],[0,0,0,0,20,0,0,44],[0,0,0,0,0,0,0,0]] i=0 for vetor in matriz: j=0 for elemento in vetor: if elemento == 0 and i != j: matriz[i][j] = 'I' #O "I" simboliza o seu infinito, só pra efeito teórico mesmo j = j + 1 i = i + 1 #Esse comando abaixo é só pra você conferir que a substituição foi feita corretamente for vetor in matriz: print vetorSe não entender alguma coisa é só perguntar que eu explico.Quanto à segunda parte, que você insere 3 "for" com i, j e k, eu não entendi o que você quer. Se você explicar talvez eu consiga achar uma solução. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wendell S S Postado Julho 20, 2010 Denunciar Share Postado Julho 20, 2010 O velho problema de pensar em C++ programando em Python...Já sofri um bocado com isso... Se o programador não pensar em Python, vai 'programar C++ com código Python'... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
PedroC
Boa noite pessoal, estou com problemas para implementar o pseudocódigo abaixo em Python:
FloidWarshall(Madj)
para cada linha i em Madj
para cada coluna j em Madj
se (Madf[j] == 0 && i != j)
Madj[j] == Infinito;
fim
fim
fim
t = numero de linhas de Madj;
Cmin = Madj;
para k igual a 1 até t,
para i igual a 1 até t,
para j igual a 1 até t,
Cmin[j] = min(Cmin[j],Cmin[k]+Cmin[k][j]);
fim
fim
fim
retorna Cmin;
fim
Até agora, implementeu desse jeito, mas o primeiro erro que o drpython acuso é no primeiro if/else:
matriz=[[0,9,0,0,14,15,0],[0,0,23,0,0,0,0,0],[0,0,0,0,2,0,0,19],[0,0,6,0,0,0,0,6],[0,0,0,11,0,0,0,16],[0,0,18,0,30,0,5,0],[0,0,0,0,20,0,0,44],[0,0,0,0,0,0,0,0]]
for i in matriz[j]:
for j in matriz[j]:
if (matriz[j] = 0 and i!=j):
matriz[j] == 2**1000000000000000000000
tamanhoMatriz=len(matriz)
caminhoMinimo = matriz
for k in range(1,(tamanhoMatriz)):
for i in range(1,(tamanhoMatriz)):
for j in range(1,(tamanhoMatriz)):
caminhoMinimo[j] = min(caminhoMinimo[j], caminhoMinimo[k]+caminhoMinimo[k][j])
print caminhoMinimo
Alguém tem idéia de onde está o bug?
Agradeço pela ajuda desde já.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.