Probleme algorithmique
stroumpf
Messages postés
289
Date d'inscription
Statut
Membre
Dernière intervention
-
stroumpf Messages postés 289 Date d'inscription Statut Membre Dernière intervention -
stroumpf Messages postés 289 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai un probleme algorithmique, enfin je trouve pas une idéé pour faire ma fonction :
voilà l'idée:
je dispose d'une table de hachage contenant des mots et chaque mot possede sa liste de coordonnée(num-ligne, position), qui sont stockées dans une liste chainee.
donc cette fonction genere tableau de liste de 2 mots de la facon suivante:
elle concatene les mots qui ont le meme num-ligne et elle teste si ces 2 mots sont successif au moin 2 fois: si c'est le cas, elle les mets dans une seule cellule de la liste, sinon chaque mot dans une cellule à part.
voila un exemple pour mieux comprendre ;)
ca c'est notre table de hachage
bonjour(1,2)(2,3)(3,4)
les (1,3)(2,2)(3,5)
amis(1,4)(2,5)(3,2)
elle doit ressortir ces resultat
"bonjour les "(1,3)(3,5): ils sont successif 2fois ici (pos(mot2)=pos(mot)+1, il faut tenir compte que la position du mot2 doir toujours>mot1
"bonjour amis"((1,4)(2,5)
"les bonjour"(2,3)
"les amis"(1,4)(2,5)
"amis bonjour"(3,4)
"amis les "(3,5)
voilà
je sais que c'est compliqué mais ...
:(
j'attends vos reponses.
merci
j'ai un probleme algorithmique, enfin je trouve pas une idéé pour faire ma fonction :
voilà l'idée:
je dispose d'une table de hachage contenant des mots et chaque mot possede sa liste de coordonnée(num-ligne, position), qui sont stockées dans une liste chainee.
donc cette fonction genere tableau de liste de 2 mots de la facon suivante:
elle concatene les mots qui ont le meme num-ligne et elle teste si ces 2 mots sont successif au moin 2 fois: si c'est le cas, elle les mets dans une seule cellule de la liste, sinon chaque mot dans une cellule à part.
voila un exemple pour mieux comprendre ;)
ca c'est notre table de hachage
bonjour(1,2)(2,3)(3,4)
les (1,3)(2,2)(3,5)
amis(1,4)(2,5)(3,2)
elle doit ressortir ces resultat
"bonjour les "(1,3)(3,5): ils sont successif 2fois ici (pos(mot2)=pos(mot)+1, il faut tenir compte que la position du mot2 doir toujours>mot1
"bonjour amis"((1,4)(2,5)
"les bonjour"(2,3)
"les amis"(1,4)(2,5)
"amis bonjour"(3,4)
"amis les "(3,5)
voilà
je sais que c'est compliqué mais ...
:(
j'attends vos reponses.
merci
A voir également:
- Probleme algorithmique
- Videosurveillance algorithmique - Accueil - Protection
- Exercice simple d'algorithmique ✓ - Forum Algorithmes / Méthodes
- Exercice en Algorithmique (Boucles) ✓ - Forum Algorithmes / Méthodes
- Probleme d'implémentation d'un algorithme en c - Forum C++
- Problème codage python algorithme A* ✓ - Forum Python
1 réponse
Bonjour stroumpf
Je reformule ton problème comme je l'ai compris:
1) Dans un texte, il y a des lignes avec des mots
2) Chaque mot est caractérisé par autant de couples de coordonnées li,po qu'il y a de fois ce mot dans le texte
- li est le numéro de la ligne
- po est la position du mot sur la ligne
3) On cherche à dresser la liste de tous les couples de mots que l'on peut trouver sur une ligne en affectant à chacun de ces couples toutes les coordonnées li,po qui le concernent.
Si c'est bien ça ton problème, le "texte" de ton exemple serait:
--- bonjour les amis ---
--- les bonjour --- amis
--- amis --- bonjour les
Par ailleurs, toujours si j'ai bien compris
- les mots d'un couple doivent être dans l'ordre sur la ligne, mais éventuellement séparés par d'autres mots
- dans le résultat, la position d'un couple est la position de son second élément
Je n'y connais rien en algorithmes, mais voilà comment, sous ces hypothèses, je m'y prendrai:
- Double balayage des mots pour déterminer les couples possibles (sachant qu'il faut définir comment traiter les occurrences multiples du même mot sur une ligne, si c'est un cas possible).
- Puis pour chaque couple possible, rechercher les lignes où se trouve le premier
- Sur chacune de ces lignes, rechercher si le second se trouve plus loin (sur la ligne).
- En cas de succès de cette seconde recherche, ça fait un li,po de plus pour le couple.
C'est très bestial, et il y a sans doute des trucs bien plus subtils, mais je pense que ça doit fonctionner.
Bien sûr, si tu veux traiter les oeuvres complètes de Victor Hugo avec cette méthode, il est possible que tu puises partir en vacances un certain temps après avoir lancé le calcul ...
Mais s'il s'agit d'une simple page, je pense que ça sera plus rapide!
Bon week-end
Je reformule ton problème comme je l'ai compris:
1) Dans un texte, il y a des lignes avec des mots
2) Chaque mot est caractérisé par autant de couples de coordonnées li,po qu'il y a de fois ce mot dans le texte
- li est le numéro de la ligne
- po est la position du mot sur la ligne
3) On cherche à dresser la liste de tous les couples de mots que l'on peut trouver sur une ligne en affectant à chacun de ces couples toutes les coordonnées li,po qui le concernent.
Si c'est bien ça ton problème, le "texte" de ton exemple serait:
--- bonjour les amis ---
--- les bonjour --- amis
--- amis --- bonjour les
Par ailleurs, toujours si j'ai bien compris
- les mots d'un couple doivent être dans l'ordre sur la ligne, mais éventuellement séparés par d'autres mots
- dans le résultat, la position d'un couple est la position de son second élément
Je n'y connais rien en algorithmes, mais voilà comment, sous ces hypothèses, je m'y prendrai:
- Double balayage des mots pour déterminer les couples possibles (sachant qu'il faut définir comment traiter les occurrences multiples du même mot sur une ligne, si c'est un cas possible).
- Puis pour chaque couple possible, rechercher les lignes où se trouve le premier
- Sur chacune de ces lignes, rechercher si le second se trouve plus loin (sur la ligne).
- En cas de succès de cette seconde recherche, ça fait un li,po de plus pour le couple.
C'est très bestial, et il y a sans doute des trucs bien plus subtils, mais je pense que ça doit fonctionner.
Bien sûr, si tu veux traiter les oeuvres complètes de Victor Hugo avec cette méthode, il est possible que tu puises partir en vacances un certain temps après avoir lancé le calcul ...
Mais s'il s'agit d'une simple page, je pense que ça sera plus rapide!
Bon week-end
ta bien compri oui c'est bien ca,
mais il faut pas revenir au texte, il faut se restreindre au liste des coordonnées.
mais le probleme ici, c'est qu'on me demande de rasssembler les mots qui se suivent plusieurs fois( comme etat unis)
dans un journal on trouve souvent ces 2 mots ensemble donc je veux le considerer un Seul mot.