IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Multiplication de strassen


Sujet :

Caml

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Multiplication de strassen
    Bonjour à tous, je suis débutant en ocaml et je souhaite réaliser la multiplication de matrice en utilisant l’algorithme de Strassen en ocaml .

  2. #2
    Membre régulier
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 102
    Points : 110
    Points
    110
    Par défaut
    Bah ouais mais ça nous dit pas quel est ton problème. Faut que tu sois plus précis:

    - Qu'as-tu essayé ?
    - Quel est le problème rencontré ?

    Et bien entendu il ne faut pas poster ici à la première erreur de compilation, mais lorsqu'il y a quelque chose que tu as passé du temps à essayer de comprendre sans que cela ne marche...

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par drunkskater Voir le message
    Bah ouais mais ça nous dit pas quel est ton problème. Faut que tu sois plus précis:

    - Qu'as-tu essayé ?
    - Quel est le problème rencontré ?

    Et bien entendu il ne faut pas poster ici à la première erreur de compilation, mais lorsqu'il y a quelque chose que tu as passé du temps à essayer de comprendre sans que cela ne marche...
    Voici mon programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    n matA; // est une fonction qui me retourne la taille de la matrice
    // ces fonctions sont bien définies dans mon fichier projet.ml 
     produit  (* Fonction Mutiplication de deux  matrices *)
    addMat (* Fonction Addition de deux matrices*)						
    subtractMat  (* Fonction Addition de deux  matrices *)		
    
    
    		       								
    let  rec strassen matA matB  =
    	    if vect_length matA = 1 then  produit matA matB
    		else          
    		  let t = (n matA)/2 in
    
    		   (*  preparation du decoupage des deux matrices *)
    		         let a11 = make_matrix t t 0 in
    				 let a12 = make_matrix t t 0 in
    				 let a21 = make_matrix t t 0 in
    				 let a22 = make_matrix t t 0 in
    				 let b11 = make_matrix t t 0 in
    				 let b12 = make_matrix t t 0 in
    				 let b21 = make_matrix t t 0 in
    				 let b22 = make_matrix t t 0 in
    				
    				 (*decoupage des deux matrices *)
    			     for i = 0 to t - 1 do 
                         for j = 0 to t - 1 do 
    					    begin
                            a11.(i).(j) <- matA.(i).(j); 
                            a12.(i).(j) <- matA.(i).(j + t); 
                            a21.(i).(j) <- matA.(i + t).(j); 
                            a22.(i).(j) <- matA.(i + t).(j + t);
    						b11.(i).(j) <- matB.(i).(j); 
                            b12.(i).(j) <- matB.(i).(j + t); 
                            b21.(i).(j) <- matB.(i + t).(j); 
                            b22.(i).(j) <- matB.(i + t).(j + t)
    						
    						end
    					done 
    				done;
    				(* creation des 7 produits *)
    				 let e1  = make_matrix t t 0 in strassen (subtractMat a11 a22) (addMat b11 b22) ;
                     let e2  = make_matrix t t 0 in strassen (addMat a11 a22) (addMat b11 b22) 	 ;
    				 let e3  = make_matrix t t 0 in strassen (subtractMat a11 a21) (addMat b11 b12)  ;
    				 let e4  = make_matrix t t 0 in strassen (addMat a11 a12)  b22  ;
    			     let e5  = make_matrix t t 0 in strassen  a11 (subtractMat b12 b22) ;
    			     let e6  = make_matrix t t 0 in strassen  a22 (subtractMat b21 b11) ;
    				 let e7  = make_matrix t t 0 in strassen (addMat a21 a22)  b11  ;
    				 
    // jusqu'ici c'est bon mais qd je cherche à calculer les 4 additions et la reconstruction de c tjrs erreurs . 
    
    				 (* creation des 4 additions *)
    				 let c11 = make_matrix t t 0 in subtractMat((addMat(e1 e2)) (addMat (e4 e6))) ;
    				 let c11 = make_matrix t t 0 in subtractMat((addMat(e1 e2)) (addMat (e4 e6))) ;
    				 let c12 = make_matrix t t 0 in addMat e4 e5 ;
    			     let c21 = make_matrix t t 0 in addMat e6 e7 ;	 
                     let c22 = make_matrix t t 0 in addMat (subtractMat e2 e3) (subtractMat e5 e7) ;
    
    				 
    		  		 let c   = make_matrix (n matA) (n matA) 0 ;
    				 for i = 0 to t - 1 do 
                         for j = 0 to t - 1 do 
    				    begin
                            c.(i).(j) <- c11.(i).(j); 
                            c.(i).(j + t) <- c12.(i).(j); 
                            c.(i + t).(j) <- c21.(i).(j); 
                            c.(i + t).(j + t) <- c22.(i).(j)
    						end 
    						done
    					done;
    					c  ;;

  4. #4
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut Améliorer tes requêtes
    Je gage que tu n'obtiens pas de réponse parce que ta demande et ton problème sont mal formulés.
    On ne sait pas quel est LE message d'erreur. Or il n'y a pas de doute possible car (O)Caml ne donne jamais plus d'un seul message d'erreur.
    Tu dis débuter en ocaml, or vect_length et make_matrix suggèrent que tu programmerais plutôt en Caml-Light. Du coup on n'est pas certain de savoir comment tester ton CODE.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  5. #5
    Membre régulier
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    102
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 102
    Points : 110
    Points
    110
    Par défaut
    Tout à fait !

    Aussi, mais c'est moins grave, ton code n'est pas très bien indenté, et ça ne facilite pas la lecture.

    Sinon, pour ce qui est du fait que ton code ne marche pas, je penses que tu ne fais pas bien la différence entre variable globale et locale. Par exemple, je suis sûr qu'en maths, cela te semblerait bizarre d'écrire:

    Or c'est pourtant ce que tu fais (à plusieurs reprises) dans ton code.

Discussions similaires

  1. Réponses: 87
    Dernier message: 06/07/2011, 16h33
  2. Complexité de l'algorithme de multiplication matricielle de strassen
    Par judge06 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 09/07/2007, 08h27
  3. formulaire choix multiple
    Par pram dans le forum XMLRAD
    Réponses: 6
    Dernier message: 02/02/2003, 19h59
  4. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 11h17
  5. Réponses: 6
    Dernier message: 25/03/2002, 22h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo