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

Contribuez Discussion :

[Java] Distance de Levenshtein


Sujet :

Contribuez

  1. #1
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut [Java] Distance de Levenshtein
    Implémentation en Java du calcul de la distance de Levenshtein entre 2 chaines de caractères:

    Code java : 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
    /**
     * compute the Levenshtein distance between two strings
     * @author Xavier Philippeau
     * 
     * @param s0 String 0
     * @param s1 String 1
     * @return the Levenshtein distance
     */
    public int levenshtein(String s0, String s1) {
    	int len0 = s0.length()+1;
    	int len1 = s1.length()+1;
     
    	// the array of distances
    	int[] cost = new int[len0];
    	int[] newcost = new int[len0];
     
    	// initial cost of skipping prefix in String s0
    	for(int i=0;i<len0;i++) cost[i]=i;
     
    	// dynamicaly computing the array of distances
     
    	// transformation cost for each letter in s1
    	for(int j=1;j<len1;j++) {
     
    		// initial cost of skipping prefix in String s1
    		newcost[0]=j-1;
     
    		// transformation cost for each letter in s0
    		for(int i=1;i<len0;i++) {
     
    			// matching current letters in both strings
    			int match = (s0.charAt(i-1)==s1.charAt(j-1))?0:1;
     
    			// computing cost for each transformation
    			int cost_replace = cost[i-1]+match;
    			int cost_insert  = cost[i]+1;
    			int cost_delete  = newcost[i-1]+1;
     
    			// keep minimum cost
    			newcost[i] = min(cost_insert, cost_delete, cost_replace);
    		}
     
    		// swap cost/newcost arrays
    		int[] swap=cost; cost=newcost; newcost=swap;
    	}
     
    	// the distance is the cost for transforming all letters in both strings
    	return cost[len0-1];
    }

    Je vous laisse implémenter le code de la methode min().
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arabie Saoudite

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 51
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Et si on veut afficher à chaque étape le mot s1 après lui avoir effectué une opération jusqu'à ce qu'il vaille le mot s2 ?

    Bien cordialement.

  3. #3
    Modérateur
    Avatar de ToTo13
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2006
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 793
    Points : 9 860
    Points
    9 860
    Par défaut
    Que veux tu faire exactement ?
    Tester si s1 et s2 sont égaux, si ce n'est pas le cas alors le modifier puis l'afficher.
    Puis itérer jusqu'à ce que s1 = s2 ?
    Consignes aux jeunes padawans : une image vaut 1000 mots !
    - Dans ton message respecter tu dois : les règles de rédaction et du forum, prévisualiser, relire et corriger TOUTES les FAUTES (frappes, sms, d'aurteaugrafe, mettre les ACCENTS et les BALISES) => ECRIRE clairement et en Français tu DOIS.
    - Le côté obscur je sens dans le MP => Tous tes MPs je détruirai et la réponse tu n'auras si en privé tu veux que je t'enseigne.(Lis donc ceci)
    - ton poste tu dois marquer quand la bonne réponse tu as obtenu.

Discussions similaires

  1. Distance de Levenshtein sur un tableau de chaines
    Par kawther dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 22/04/2015, 15h35
  2. [XL-2010] Fonction Distance de levenshtein sous Excel
    Par Patrick717 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/06/2013, 17h01
  3. [À télécharger] Distance de Levenshtein
    Par 3DArchi dans le forum Téléchargez
    Réponses: 0
    Dernier message: 06/11/2010, 13h03
  4. [Stratégie] Contrôle d'une application Java à distance
    Par muad'dib dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 05/08/2008, 11h44
  5. distance de levenshtein
    Par freemasons dans le forum C++
    Réponses: 11
    Dernier message: 10/04/2008, 11h31

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