Bonjour j'ai fait l'algo de karatsuba en python sauf que ca m'affiche des erreur que je ne sais pas comment regler.
def polyProdKara(P, Q) :
n=len(P)
if n==1:
return Q[0]*P[0] #l77
m=n//2
P0=P[:m]
P1=P[m:] #P=P0+X^m P1
Q0=Q[:m]
Q1=Q[m:] #Q=Q0+X^m Q1
T0=polyProdKara(P0,Q0)
T1=polyProdKara(P1,Q1) #l84
for i in range(m):
P1[i]+=P0[i]
Q1[i]+=Q0[i]
T2=polyProdKara(P1,Q1)
for i in range(2*m-1):
T2[i]=T2[i]-T1[i]-T0[i]
if n%2==1: #si n pair, les tableaux T0,T1,T2 sont de la meme taille 2*m-1, sinon T1 et T2 sont de taille 2*m+1
T2[-2]=T2[-2]-T1[-2]
T2[-1]=T2[-1]-T1[-1]
produit=[0]*(2*n-1)
for i in range(2*m-1):
produit[i]+=T0[i]
produit[i+m]+=T2[i]
produit[i+2*m]+=T1[i]
if n%2==1:
produit[3*m-1]+=T2[2*m-1]
produit[3*m]+=T2[2*m]
produit[4*m-1]+=T1[2*m-1]
produit[4*m]+=T1[2*m]
return(produit)
Les erreurs:
Traceback (most recent call last):
File "test.py", line 368, in <module>
test_polyProd(polyProdKara)
File "test.py", line 284, in test_polyProd
res = algo(P,Q)
File "test.py", line 84, in polyProdKara
T1=polyProdKara(P1,Q1)
File "test.py", line 84, in polyProdKara
T1=polyProdKara(P1,Q1)
File "test.py", line 77, in polyProdKara
return Q[0]*P[0]
IndexError: list index out of range
Je ne lis pas ce type de code, voir PEP8 pour les conventions !
Par contre pour l'erreur, ça indique que sur un objet list tu as dépassé l'index maximum possible. Par exemple si ta liste a 4 éléments et que tu demandes le 5ème, ça te répondra cette erreur.
Karatsuba algo
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.