permutation

permutation - C - Programmation

Marsh Posté le 09-03-2009 à 21:35:38    

Je vous expose mon problème : - j'ai un fichier .txt dans lequel il y a un certains nombres de mots
 - ensuite j'ai un 2e fichier .txt dans lequel il y a un texte.
 
Je voudrais de l'aide pour pouvoir faire ceci :  * Je voudrais que pour chacun des mots qui se trouve dans mon 2e fichier on regarde pour chacun des mots toutes les permutations possibles.  
 
Merci pour votre aide.
 

Reply

Marsh Posté le 09-03-2009 à 21:35:38   

Reply

Marsh Posté le 09-03-2009 à 22:45:38    

1. Pas compris. À quoi sert le premier fichier ?
 
2. Quel genre d'aide veux-tu au juste ?

Reply

Marsh Posté le 10-03-2009 à 07:10:06    

Mon premier fichier est un dictionnaire.
Et je voudrais en fait que dès qu'un mot ne se trouve pas dans mon dico qu'il permute ces lettres afin qu'il fasse un mot qui se trouve dans le dico.

Reply

Marsh Posté le 10-03-2009 à 09:02:31    

Et quel est ton probleme?
 
Si c'est generer les permutations: http://www-cs-faculty.stanford.edu/~knuth/fasc2b.ps.gz

Reply

Marsh Posté le 10-03-2009 à 10:38:47    

ashlee14 a écrit :

Mon premier fichier est un dictionnaire.
Et je voudrais en fait que dès qu'un mot ne se trouve pas dans mon dico qu'il permute ces lettres afin qu'il fasse un mot qui se trouve dans le dico.


Un permutation sur un mot de 4 ou 5 lettres, ça fait un nombre raisonnable d'essais. Au-dessus, (on multiplie par 26 à chaque fois), ça devient énorme, donc lent.
 
Je ne suis pas certain que ce système soit très efficace. Il existe certainement des algos plus performants tels que ceux des correcteurs orthographiques en temps réel (je pense à un arbre lexical, par exemple...)
 
Il y a un forum ALGO sur ce site.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-03-2009 à 10:38:59    

En fait je voudrais savoir comment je peux faire en même temps une comparaison avec un autre fichier et ensuite faire une permutation.
Un Programmeur ton fichier ne s'ouvre pas

Reply

Marsh Posté le 10-03-2009 à 10:45:12    

ashlee14 a écrit :

En fait je voudrais savoir comment je peux faire en même temps une comparaison avec un autre fichier et ensuite faire une permutation.
Un Programmeur ton fichier ne s'ouvre pas


Le principe est simple.

 


INPUT word
PERMUTE perm := permute_init(word)
INDEX ndx := file_index("DICO" )
DO
   found := file_in (ndx, permute_curr(perm));
   IF NOT found
      last := permute_next(perm);
   ENDIF
WHILE NOT found AND NOT last
index_end(ndx)
perm_end(perm)


Evidemment, il y a quelques fonctions à écrire et il va falloir pas mal de mémoire...


Message édité par Emmanuel Delahaye le 10-03-2009 à 10:55:12

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-03-2009 à 10:53:06    

Pour emmanuel dalahaye : cela va pouvoir me faire à la fois la comparaison avec un autre fichier et faire la permutation  jusqu'a ce qu'il trouve un mot correspondant  ?

Reply

Marsh Posté le 10-03-2009 à 10:54:48    

ashlee14 a écrit :

Pour emmanuel dalahaye : cela va pouvoir me faire à la fois la comparaison avec un autre fichier et faire la permutation  jusqu'a ce qu'il trouve un mot correspondant  ?


Oui, j'ai amélioré le pseudo-code...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 10-03-2009 à 11:06:35    

* Aucun probleme a ouvrir le fichier ici (est-ce que  
http://www-cs-faculty.stanford.edu [...] .html#gzip t'aide?)
 
* Je partirais plutot sur une autre voie (mettre les mots du dictionnaire sous une forme normalisee, puis le mot cherche aussi et ainsi il faut pas passer par les permutations; a noter que le nombre d'anagramme est quand meme assez eleve, si le but est un correcteur orthographique, voir http://fr.wikipedia.org/wiki/Distance_de_Levenshtein et les variantes).

Message cité 1 fois
Message édité par Un Programmeur le 10-03-2009 à 11:23:33
Reply

Marsh Posté le 10-03-2009 à 11:06:35   

Reply

Marsh Posté le 10-03-2009 à 11:12:55    

Un Programmeur a écrit :

* Je partirai plutot sur une autre voie (mettre les mots du dictionnaire sous une forme normalisee, puis le mot cherche aussi et ainsi il faut pas passer par les permutations; a noter que le nombre d'anagramme est quand meme assez eleve, si le but est un correcteur orthographique, voir http://fr.wikipedia.org/wiki/Distance_de_Levenshtein et les variantes).


Oui, tout à fait, j'ai bien précisé qe la méthode du P.O. (que j'ai traduite en algorithme) n'était pas efficace.


Message édité par Emmanuel Delahaye le 10-03-2009 à 11:13:24

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 15-03-2009 à 09:11:16    

Oui, je pensais à la même chose. On calcule et on enregistre un hash calculé avec un algo rapide de tous les mots du dictionnaire, on fait la même chose pour les mots du texte, et on cherche le hash dans le dico, et non les permutations du mot.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed