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

Algorithmes et structures de données Discussion :

Comparateur de chaine en pl/sql


Sujet :

Algorithmes et structures de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 56
    Points : 49
    Points
    49
    Par défaut Comparateur de chaine en pl/sql
    Bonjour,

    je cherche une solution algorithmique ou un début de source afin de comparer deux chaine pour trouver le nombre caractère qui diffère.
    exemples :
    ch1=>AAA ch2=>BAAA soit 1 caractère diffèrent
    ch1=>AAA ch2=>ABA soit 1 caractère diffèrent
    ch1=>AAA ch2=>ABAB soit 2 caractères diffèrents

    Avez-vous une idée ou un début de raisonnement pour m'aider dans cette galère, merci d'avance.

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Il faudrait que tu précises les règles autorisées lorsque les chaînes sont de longueurs différentes.

    Par exemple
    ABCD et AEBCD ne diffèrent que d'une lettre si j'ai le droit de supprimer le E dans la deuxième chaîne avant de comparer, mais elles diffèrent de 4 si je ne peux supprimer que la dernière, et de 2 si je peux supprimer la première (je compte la suppression comme une différence).
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 56
    Points : 49
    Points
    49
    Par défaut Comparateur de chaine en pl/sql
    pour vous quelle serez la méthode la plus correcte pour comptabiliser
    le nombre de caractères différents d'une chaine à l'autre.

    Car ma problématique est la suivante :
    un utilisateur ne peux modifier que 15 caractères dans un texte par rapport au texte principale.

  4. #4
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut Re: Comparateur de chaine en pl/sql
    Citation Envoyé par squalito
    Car ma problématique est la suivante :
    un utilisateur ne peux modifier que 15 caractères dans un texte par rapport au texte principale.
    S'agit-il de modifications en place (remplacement d'un caractère par un autre) ? Ou le texte peut-il avoir un "volume" variable (insertion ou suppression possible de caractères par rapport au texte initial) ?
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut
    D'après ce que tu dis j'ai l'impression qu'il faut parcourir les deux chaînes, dès qu'un caractères différe dans la seconde, chaîne, on compte le nombre de caractères de la seconde chaîne à parcourir pour retrouver le caractère initial de la première et on recommence .
    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
    str1 // première chaine
    str2 //deuxième chaine
    len1 // longueur de str1
    len2 // longueur de str2
    i <- 1 // compteur pour parcourir la première chaine
    j <- 1 // compteur pour parcourir la deuxième chaine
    nb <- 0 // nombre de caractères différents
    tant que i <= len1 et que j <= len2 faire
    début
        si str1[i] = str2[j] alors   
           i <- i + 1
           j <- j + 1
        sinon
            nb <- nb + 1
            j <- j+1
        finsi
    fin
    // ici une des deux chaines est terminée les caractères restant dans la première ou la deuxième comptent donc comme différents
    // on peut bien sur faire un calcul 
    tant que i <= len1 ou que j <= len2 faire
    debut
        nb <- nb + 1
        i <- i + 1
        j <- j + 1
    fin
    ecrire "il y a " nb " caractère(s) différents"
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    le problème de comptage est faussé quand on remplace un caractère

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Suite à un test , démarche fausse
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    En gros l'utilisateur peux tout faire enlever, ajouter.

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Changer de place aussi ?
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  10. #10
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Points : 439
    Points
    439
    Par défaut
    Bonsoir,

    Ce problème est connu comme la distance sur données séquentielles.

    L'espace de représentation n'est pas fixe.
    3 opérations :
    - création
    - destruction
    - substitution
    Distance entre deux mots : coût minimal en terme de nombre d'opérations
    pour passer de a à b.

    Indice de similarité entre deux mots :
    S(M1, M2) = 1 - d_E(M1, M2)/ max (l(M1), l(M2))

    La distance d'édition peut être calculée par l'algorithme de Wagner et Fisher. (Je n'ai pas envie de le retranscrire ici, une recherche sur le web devrait permettre de trouver l'algo)

    http://c2.com/cgi/wiki?WagnerFisherAlgorithm

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    la place puet être changer

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    c'est un peu compliqué à mon niveau.
    pourriez-vous m'aider car sa dépasse mes compétences.

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    346
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 346
    Points : 439
    Points
    439
    Par défaut
    Citation Envoyé par squalito
    c'est un peu compliqué à mon niveau.
    pourriez-vous m'aider car ça dépasse mes compétences.
    Ton problème n'est pas simple à résoudre quoique pas (NP)-difficile , donc
    si tu veux comprendre cet algorithme tu as intérêt à connaître la
    programmation dynamique comme joyeuseté.

    http://www.merriampark.com/ld.htm pour de plus amples informations en anglais mais avec un exemple très documenté.

    Sur le sql à proprement parlé :
    http://sqlpro.developpez.com/cours/soundex/#L8
    Il serait bien d'expliquer un peu plus ton problème car sinon celà risque d'être difficile de t'aider que veux tu faire, quels sont les problèmes autres que
    Citation Envoyé par squalito
    c'est un peu compliqué à mon niveau.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 56
    Points : 49
    Points
    49
    Par défaut
    ok c'est cette algo que je dois appliquer, merci pour l'info

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème chaine de connexion sql server 2005 express / c#
    Par tofke dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 17/01/2009, 17h37
  2. Chaine de connexion à SQL 2005
    Par zooffy dans le forum ASP
    Réponses: 2
    Dernier message: 20/09/2007, 09h25
  3. opération right(chaine,7) en SQL ?
    Par LeXo dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/10/2006, 13h00
  4. Chaine de connexion SQL via un ws
    Par Catz dans le forum IIS
    Réponses: 4
    Dernier message: 19/10/2006, 23h37
  5. Comparateur de chaine en pl/sql
    Par squalito dans le forum PL/SQL
    Réponses: 12
    Dernier message: 17/12/2004, 09h49

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