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 :

comparaison de deux matrices en ocaml


Sujet :

Caml

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut comparaison de deux matrices en ocaml
    Bonjour tout le monde , je suis débutant en ocaml;
    En effet ayant créé deux matrices à l'aide de la directive Array.create_matrix , j'aimerais les comparer, ainsi si elles sont identiques je renvoie true et false dans le cas contraire.

    Merci de m'aider

  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
    Salut,

    De manière générale, quand on pose une question de ce type c'est mieux de dire ce qu'on a essayé, ou ce qu'on a envisagé de faire. Comme ça, ça permet aux gens qui répondent de voir où est le problème et de répondre de façon adaptée.

    Par contre dans ce cas précis, j'ai bien peur que tu n'aie pas lu le manuel (du coup tu risques de te sentir bête en voyant la réponse)...

    La première question que tu dois te poser, c'est "qu'est-ce que je veux dire par identique". Ca peut paraître bête mais c'est important. En effet, est-ce que :

    - Cela veut dire que je parle du même objet physique

    - Ou bien est-ce que je peux considérer des objets distincts mais ayant toutes les mêmes propriétés.

    Les deux notions sont utiles, tout dépend de ce pour quoi tu les utilises. Par exemple, quand tu dis "On a le même tee-shirt", tu ne parles pas de copropriété. A l'inverse, quand tu dis, "c'était le même mec !", tu ne parles sans doute pas d'un clone.

    Je suis pas sûr des termes français mais en anglais quand tu parles du même objet, il s'agit d'égalité physique (ou superficielle). A l'inverse, quand ce sont deux objets "qui ont les mêmes propriétés", on parle d'égalité structurelle (ou profonde).

    Je te parle de toute ça alors quand dans ton cas tu penses sans doute à de l'égalité structurelle. Mais on verra que dans le cas des tableaux (et comme pour toute structure mutable), la distinction a une importance et quand on est débutant ça peut être une source de bug.

    Du coup, pour l'égalité structurelle, ce que tu aurais pu (dû ?) faire, si tu n'avais pas lu le manuel (que tu aurais dû lire), c'est quelque chose comme [si tes matrices ont la même dimension bien entendu] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    let ans = ref true in
    let n = Array.length m1 in
    for i = 0 to n - 1 do
      for j = 0 n - 1 do
       if m1.(i).(j) <> m2.(i).(j) then ans := false
      done
    done;
    t
    Ce code est moche est pas optimal mais bon... C'est juste pour l'idée.

    PAR CONTRE, ici pas besoin de se casse la tête car des fonctions de comparaison physique / structurelles sont déjà définies en OCaml...

    Il s'agit tout simplement de
    et
    Je te laisse faire tourner et analyser le bout de code suivant pour voir qui fait quoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    let x = Array.create_matrix 2 2 0 ;;
    let y = Array.create_matrix 2 2 0 ;;
    let z = y;;
    x = y ;;
    y = z ;;
    x == y ;;
    y == z ;;
    La raison pour laquelle cette distinction est importante avec les tableaux c'est que si deux tableaux sont physiquement identiques, alors quand tu modifies l'un, tu modifie "l'autre" ! Faut y faire attention.

    Bonne chance.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut salut
    Merci pour votre réponse, je parlais au fait d'une comparaison structurelle(contenu) de deux matrices de même longueur. Je savais pas qu'on pouvait utiliser l'opérateur == (merci pour l'info).

  4. #4
    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
    Juste pour s'assurer qu'on est d'accord :

    = c'est pour structurelle
    == c'est pour physique

    En général tu auras toujours besoin de ( = ), mais il faut avoir à l'esprit que pour les tableaux ou les listes c'est assez long (O(n)), alors que ( == ) est en O(1). Donc des fois il faut y penser .

    Si tu n'as pas d'autre question, tu peux mettre le message en résolu (il faut cliquer sur le bouton en bas de page)

    PS : Au fait, il y avait une petite coquille dans mon "code", à la ligne 5, je l'ai corrigée. J'espère que ça t'avait buggué.

Discussions similaires

  1. Erreur de comparaison de deux matrices
    Par proc02 dans le forum Débuter avec Java
    Réponses: 13
    Dernier message: 11/05/2013, 16h30
  2. Comparaison de deux matrices de char
    Par proc02 dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 10/05/2013, 15h14
  3. Comparaison de deux matrices logiques
    Par sjunod dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/04/2009, 13h12
  4. [Débutant] Comparaison de deux matrices
    Par niepoc dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/06/2008, 16h12
  5. Comparaison de deux matrices sans boucle for
    Par zicos dans le forum MATLAB
    Réponses: 8
    Dernier message: 04/05/2007, 18h16

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