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 :

le plus court prefixe


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut le plus court prefixe
    salut a tous:

    je veux creer un algo qui calcule le plus court prefixe dans un mot c'est a dire si j'ai le mot ( abababab ) son plus court prefixe est ( ab ).

    moi j'ai reussi a parcourir la chaine (le mot) par 2 pointeur mais le probleme c'est comment les stoker.

    Voila mon algo:
    Code C : 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
    int i,j=0;
    char v[N],w[N],*p,*q;
    gets(v);  
    p=v;
    q=v+1;
    for(i=0;i<strlen(v);i++)
    {
        if (*p==*q)
        {
            w[j]=*p;
            p++;
            q++;
            j++;
        } 
        else
            q++; 
    }
    printf("w=%s\n",w);

  2. #2
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    le plus court prefixe dans un mot c'est a dire si j'ai le mot ( abababab ) son plus court prefixe est ( ab )
    ?

    Par exemple, c'est quoi le "plus court prefixe" dans (abcdbcabbdca) ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    voila la definition:
    le plus court prefixe d'un mot w est : u tels que w=(u puissance k)

  4. #4
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par roccocham Voir le message
    voila la definition:
    le plus court prefixe d'un mot w est : u tels que w=(u puissance k)
    w = u puissance k = uuu...uuuu (k fois)

    Si on fait un petit décalage circulaire, lettre par lettre, de (w) jusqu'a retrouver le mot de départ, alors on trouvera la valeur de u

    (w) = abcabcabcabc

    (w)<<1 = bcabcabcabca
    (w)<<2 = cabcabcabcab
    (w)<<3 = abcabcabcabc = (w)

    donc (u) = 3 premieres lettres de (w) = (abc)
    et k = longueur(w)/longueur(u) = 12/3 = 4

    c'est à dire (w) = (abc) puissance 4
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    w = u puissance k = uuu...uuuu (k fois)

    Si on fait un petit décalage circulaire, lettre par lettre, de (w) jusqu'a retrouver le mot de départ, alors on trouvera la valeur de u

    (w) = abcabcabcabc

    (w)<<1 = bcabcabcabca
    (w)<<2 = cabcabcabcab
    (w)<<3 = abcabcabcabc = (w)

    donc (u) = 3 premieres lettres de (w) = (abc)
    et k = longueur(w)/longueur(u) = 12/3 = 4

    c'est à dire (w) = (abc) puissance 4
    good alor u = abc

  6. #6
    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 : 52
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Le plus proche du C que je peux faire en Java, c'est un truc comme ca:

    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
    char[] w = "abcabcabcabc".toCharArray();
    int wlen = w.length;
     
    // pour chaque décalage possible
    for(int shift=1;shift<=wlen;shift++) {
     
    	// regarde si (w) = (w)<<shift 
    	int i;
    	for(i=0;i<wlen;i++)
    		if (w[i]!=w[(i+shift)%wlen]) break;
     
    	// si c'est le cas, affiche 'u' et sort de la boucle
    	if (i==wlen) {
    		String u = new String(w,0,shift);
    		int k = wlen/shift;
    		System.out.printf("w = (%s)^%d", u, k);
    		break;
    	}
    }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    ?

    Par exemple, c'est quoi le "plus court prefixe" dans (abcdbcabbdca) ?
    dons ton exemple il reste le meme abcdbcabbdca
    .

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 122
    Par défaut
    Un préfixe c'est pas censé être genre : para, anti ??

    Et juste pour voir si j'ai compris l'explication dans "coucou" le préfixe serait "cou" car "coucou" = "cou"². C'est ça ?

    Et par curiosité, ça serait possible de connaitre le but de récupérer le préfixe d'un mot ??

  9. #9
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Par défaut
    Citation Envoyé par Shr3ck Voir le message
    Un préfixe c'est pas censé être genre : para, anti ??

    Et juste pour voir si j'ai compris l'explication dans "coucou" le préfixe serait "cou" car "coucou" = "cou"². C'est ça ?

    Et par curiosité, ça serait possible de connaitre le but de récupérer le préfixe d'un mot ??
    oui, c'est ça le sous mot qui se repete "cou"

Discussions similaires

  1. Calcul de plus court chemin dans un graphe
    Par Elmilouse dans le forum Prolog
    Réponses: 6
    Dernier message: 21/03/2010, 20h26
  2. [algo] plus courts chemins (au pluriel !!)
    Par ADSL[fx] dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 18/01/2006, 14h40
  3. néophyte, faire une requête plus courte
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 8
    Dernier message: 10/10/2005, 09h44
  4. algorithme de Ford (recherche chemin le plus court)
    Par abstraite dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 19/05/2005, 10h39
  5. Réponses: 2
    Dernier message: 21/03/2004, 18h57

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