toutes les combinaisons possibles de... en php - Algo - Programmation
Marsh Posté le 04-02-2003 à 16:25:04
speedyop a écrit : Salut |
c'est de l'agébre de boole avec les 0 et les 1, tu dois obtenir 8 combinaison différantes (3)²-1 = 8
-----
A B C
-----
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
------
Aprés c'est tous simple, les 1 corresondent aux lettres.
Marsh Posté le 04-02-2003 à 16:34:02
euh t'es allé un peu vite pour moi la... mais je sais pas si c'est vraiment ce que je cherche, le terme extact serait arrangement apparement puisque l'ordre importe et que que l'ont doit utiliser tout les chiffres.
je vous rassure c pas pour un devoir a rendre ou quoi que ce soit, je suis plus a l'ecole
me faut ca pour optimiser mon referencement
Marsh Posté le 04-02-2003 à 16:42:12
speedyop a écrit : euh t'es allé un peu vite pour moi la... mais je sais pas si c'est vraiment ce que je cherche, le terme extact serait arrangement apparement puisque l'ordre importe et que que l'ont doit utiliser tout les chiffres. |
j'ai du me tromper, j'ai travailler pour trouver les différentes combinaison quand on a les boutons radio, et le cas échéant de mettre des erreurs...enfin bref.... A priori tu serais bon ! tu aurais toutes les combinaison possible, mais comme je ne connais pas trop la nature de ces valeurs et leurs destinations, difficile...
Marsh Posté le 04-02-2003 à 16:46:49
merci kan meme, je m'explique car ca peut servir a d'autre, j'ai un catalogue en ligne, on va dire de cinema...
avec des fiches acteurs...
jamie lee curtis par exemple...
je suis bien referencer sur le nom en base cad "Jamie lee curtis"
mais si un internaute cherche sur google "curtis jamie lee" je degringole dans le referencement au profit de ceux qui ont vraiment le terme "curtis jamie lee"
La solution serait donc de creer des fiches pour toutes les variation du nom "jamie lee curtis"
C'EST UN EXEMPLE! ne me demander pas de faire une base bien propre avec un champ nom et prenom ca ne s'applique pas dans mon cas !
Marsh Posté le 04-02-2003 à 17:08:16
Bon une idée rien de plus (sans prétention)
et pas optimisé dans ton cas ...
ex : sur 3 positions je recherche les combinaisons
3 4 et 9
je fais un parcours de 100 à 999
et je découpe 1 0 0
si première position = 3 ou 4 ou 9
ok je passe à la deuxième
si 2ème position = 3 ou 4 ou 9 mais <> de la 1ère position
ok je passe à la 3ème
si 3ème position = 3 ou 4 ou 9
mais <> de la 1ère position et <> de la 2ème position
ok je prends
je passe à 101 et je boucle ...
Bon c sur que ça va te donner ce que tu veux
Mais c pas beau
Marsh Posté le 04-02-2003 à 17:24:02
cvb a écrit : |
En fait ce serai plutot l'ensemble des permutations qui est à étudier ici. C'est plutot l'algèbre des groupes finis d'ordre n et de l'ensemble des permutations de n éléments qu'il faut étudier. Le nombre de permutations possibles est égal à factoriel(n). A part ça, j'ai pas d'algo tout fait sous la main, mais ça devrai se trouver quelque part sur le net.
Mais si tu sais à l'avance que t'aura pas plus de 3 ou 4 éléments, je pense pas ça vaille le coup de se casser la tête.
Bon courage !
Marsh Posté le 04-02-2003 à 17:38:27
oui la formule avec les factorielle donnent le nombre de combianison possile mais ne'est pas utile pour affiocher ces dites combianisons...
en effet les element a permuter dans une phrase ne sont que de l'ordre de 3/4 mais le nombre de phrase est concequentes... (bdd)...
alors voici mon raisonnement que je n'arrive pas a mettre en pratique en php:
j'ai un tableau remplit,
je prends un element de ce tableau (il en result une variable et un tableur plus petit de 1 indice comportant le reste)
et je traite ca recurcivement...
function combi($array)
{
for($x=0;$x<count($array);$x++)
{
$s .= take($array,$x)
// a ce moment on sort un element du tableau
combi($array)
}
}
ceic en forme simplifier car je doit galerer kan il s'agit de definir le moment ou afficher et reinitialiser ma chaine concaténée.
Marsh Posté le 05-02-2003 à 09:07:42
j'ai trouvé si ca peut aider klk'1:
function combi2($niveau=0,$s="",&$myuse)
{
global $array,$myproductid;
if($niveau<count($array))
{
for($x=0;$x<count($array);$x++)
{
if(!(in_array($x,$myuse)))
{
$myuse[$niveau]=$x;
combi2($niveau+1,$s.$array[$x]." ",$myuse);
}
}
$myuse[$niveau]=-1;
}
else
{
echo $s."<BR>";
$s="";
unset($myuse);
}
}
par contre avec cinq termes, on arrive vite a 120 combinaisons possible, ce qui n'est pas super chouette a afficher...
Marsh Posté le 05-02-2003 à 10:58:23
speedyop a écrit : j'ai trouvé si ca peut aider klk'1: |
Je me demandai si y a pas moyen de faire mieux qu'un algorithme récursif qui est très lourd en mémoire ... Vu que le but est d'obtenir toutes les permutations possibles, et que l'ensemble des des permutations est engendré par les transposition ( permutation de deux éléments ), si tu connais les transpositions de base qui permettent à elles seules d'engendrer ton ensemble de permutation, tu devrai pouvoir faire un algo non récursif qui prend en entrée ton tableau et te parcours toutes les combinaisons de transposition dessus. Le hic, c'est que ça ne me semble pas évident de connaitre ces transpositions de bases et qu'en plus la décomposition d'une permutation en transposition n'est pas unique ... Puis ça devient trop complexe pour seulement 3 ou 4 éléments. Ca vaut sans doute pas le coup de se creuser la tête ...
Marsh Posté le 04-02-2003 à 16:01:51
Salut
.
j'ai un peit probleme pour afficher toutes les combinaisons possible des valeurs d'un tableaux, sans répétition possible et en utilisant toutes les valeurs:
par exemple mon tableau comprends 1,2,3
je veut recuperer un tableau comprenant toutes les suite possible
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
comment faire, je me doute que c une question defac en programmation mais j'ai séché
je sais qu'il faut utiliser une fonction recursive aussi...
je programme en php
Message édité par speedyop le 04-02-2003 à 18:07:50