permutation - Algo - Programmation
Marsh Posté le 02-12-2011 à 14:40:36
Où est la difficulté ?
Si on fait les devoirs à la place des étudiants, ils n'apprennent pas, et ce n'est pas bon pour eux.
Ce ne serait pas non plus équitable pour ses camarades.
Et enfin, ça inciterait le prof à faire des exercices de plus en plus compliqués.
Franchement, un algorithme récursif de permutation, c'est assez facile à écrire.
Marsh Posté le 02-12-2011 à 14:42:18
je sais pas quel age tu as mais mois je suis plus a l'école
Marsh Posté le 02-12-2011 à 14:45:27
Alors, c'est encore pire que ce que je croyais.
Il faudrait retourner à l'école (en commençant par le CE1 où l'on apprend à mettre une majuscule au début de chaque phrase).
Marsh Posté le 02-12-2011 à 14:58:05
A l'école, il sont tout de même doué pour demander des idée aux autres...
Marsh Posté le 02-12-2011 à 15:18:16
Tu peux pas prendre l'algo que gilou a donné comme solution pour les chaîne de caractères ?
Au lieu de mettre des caractère tu mets les élément de ton tableau.
C'est pas la même chose ?
Si t'as deux éléments identique t'aura des doublon par contre.
Marsh Posté le 02-12-2011 à 18:46:09
Si tu t'autorises le récursivité, alors en 2 coup de cuillère à pot, je te ponds celui la, que tu peux adapter à tes besoins:
Code :
|
Après, tu n'as plus qu'a adapter à tes besoins:
Code :
|
C:\clang>vapeur.exe |
A+,
Marsh Posté le 02-12-2011 à 20:56:17
merci gilou !
je vais le simplifier pour du pseudo code
pdt que tu es la avec jovalise
mon pb est le suivant
faire un itinéraire optimisé avec n étape
mon idée c'"était
1 - generer tout les trajets (je sais calculer les temps entre 2 villes)
2 calculer le temps d'un trajet
3 sortir le min du tableau de trajet
y'a plus simple ?
c'est juste un exo /amusement en formation mais je trouve ça marant
en pseudo code on a le droit aux * méthodes magique* comme celle qui génere le tableau de trajet
Marsh Posté le 02-12-2011 à 21:07:30
Ce dont tu parles équivaut au problème classique du voyageur de commerce, non?
On peut toujours faire une approche combinatoire, mais des qu'on a beaucoup de ville, ça explose en temps de calcul.
Le problème du voyageur de commerce se solutionne avec des temps de calcul raisonnables en se contentant d'une bonne solution (même si c'est pas nécessairement la meilleure). Cf le lien Wikipedia donné.
A+,
Marsh Posté le 02-12-2011 à 21:10:41
Citation : je vais le simplifier pour du pseudo code |
L'algo est très simple:
J'échange pas swap le premier élément avec un quelconque des autres (dont lui même pour avoirs les cas ou il est stable), puis je réapplique récursivement au reste moins ce premier élément (la boucle initiale sert a faire l'échange du premier élément avec chacun des éléments possibles).
A+,
Marsh Posté le 02-12-2011 à 21:20:03
gilou a écrit : Ce dont tu parles équivaut au problème classique du voyageur de commerce, non? |
Marsh Posté le 02-12-2011 à 21:20:53
gilou a écrit :
|
Marsh Posté le 02-12-2011 à 21:24:54
c'est marrant je croyais que les possibilité de voyage c'était en n^n mais c'est plutot en n! non ?
Marsh Posté le 02-12-2011 à 21:32:17
vapeur_cochonne a écrit : c'est marrant je croyais que les possibilité de voyage c'était en n^n mais c'est plutot en n! non ? |
Si tu as n villes, c'est n! le nombre de permutations des villes.
Notes que dans ce cas, il y a des trajets équivalents (a vue de nez, le trajet dans un sens ou l'autre déjà, donc ça réduit déjà à n!/2)
A+,
Marsh Posté le 02-12-2011 à 21:35:52
gilou a écrit : Si tu as n villes, c'est n! le nombre de permutations des villes. |
amiens -> paris <> paris amiens ²
Marsh Posté le 02-12-2011 à 21:39:42
vapeur_cochonne a écrit : |
C'est la même distance Il suffit donc de faire le trajet en marche arrière
A+,
Marsh Posté le 02-12-2011 à 21:41:58
gilou a écrit : C'est la même distance |
pas le meme temps voyons bouchons toussa ²
Citation : Donald Knuth fut un des premiers à l'appliquer systématiquement dès les premiers volumes de sa série The Art of Computer Programming. Il complétait cette analyse de considérations propres à la théorie de l'information : celle-ci par exemple, combinée à la formule de Stirling, montre que, dans le pire cas, il n'est pas possible d'effectuer, sur un ordinateur classique, un tri général (c'est-à-dire uniquement par comparaisons) de N éléments en un temps croissant avec N moins rapidement que N ln N. |
a ouais
Marsh Posté le 05-12-2011 à 14:49:14
:???:
j'essaie de l'implementer en java
et c'est bizard, mon swat mache ^pas sans le tableau en parametre
si je met 2 string
public void swat(String x, String y){
alors que public void swap(String tab[], int x, int y){
fonctionne
Marsh Posté le 05-12-2011 à 15:01:35
Citation : public void swat(String x, String y){ |
Comme méthode d'une classe tableau?
Ah non, j'ai pas trop compris ce que les String viennent faire la dedans.
A+,
Marsh Posté le 05-12-2011 à 15:04:30
Ben alors c'est quoi String x et String y (parce que en java, les strings étant pas modifiables une fois construites...)
A+,
Marsh Posté le 05-12-2011 à 15:05:44
bah c'est t[i]; t[j]
Marsh Posté le 05-12-2011 à 17:14:45
Chez moi, ça marche...
Code :
|
C:\Java>javac Cochonne.java |
A+,
Marsh Posté le 05-12-2011 à 17:15:50
gilou a écrit : Chez moi, ça marche... [code=javapeur, cochonne, a dit][/fixed] |
non mais j'avais pas de return ...
sinon comment on peux ranger les resultats dans un tableau ?
Marsh Posté le 05-12-2011 à 17:29:30
Dans ce cas la, plusieurs possibilités:
Soit tu utilises un tableau que tu fais croître au fur et a mesure, un ArrayList.
Soit tu alloues un tableau de table.length! au début de permute
Il faut changer la signature de permute (pour qu'elle renvoie ton tableau des permutations) et celle de permute(int i) pour qu'elle prenne le tableau des permutations en paramètre.
Et tu ajoute chaque nouvelle permutation au niveau de la ligne
System.out.println(Arrays.toString(table));
en copiant (une vraie copie avec clone, bien sur) table à ce moment la.
A+,
Marsh Posté le 05-12-2011 à 17:51:49
Bon, la, un exemple vite fait, en foutant tout en statique dans la classe, pour aller plus vite:
Code :
|
Notes que bien sur, dès que l'on a un tableau initial un peu grand, factorielle va nous exploser dans la tronche
Faudrait donc en tenir compte, par exemple, en allant lire ceci: http://chaosinmotion.com/blog/?p=622
A+,
Marsh Posté le 05-12-2011 à 18:10:29
ReplyMarsh Posté le 05-12-2011 à 18:14:44
Le forum n'est pas là pour faire vos exercices à votre place
Marsh Posté le 05-12-2011 à 18:16:38
tait toi vilain
Marsh Posté le 05-12-2011 à 18:53:23
Je vais faire une alerte modo, tiens, si ça se trouve, gilou va passer par là et locker ce topic
Marsh Posté le 05-12-2011 à 18:54:36
3 Mois que je suis a paris et tu m'as jamais payé une biere gilou non plus d'ailleurs !
Marsh Posté le 05-12-2011 à 19:04:49
Ça ne sera envisageable que quand ma situation financière évoluera positivement. La je dois faire vraiment gaffe à mon budget.
Ça semble se débloquer pour début janvier heureusement.
A+,
Marsh Posté le 05-12-2011 à 19:09:31
vapeur_cochonne a écrit : tout en anglais, galere |
De toute façon, si tu es coincé par le fait que ta factorielle dépasse maxint, vu que tu auras besoin de cela fois la taille de ton array initial a allouer en mémoire pour le String[][], c'est la mémoire qui manquera, même si on utilise une classe adaptée pour que factorielle soit sans problème.
C'est pour ça que le pb de la qualité de l'implem de factorielle m'a pas trop inquiété
A+,
Marsh Posté le 05-12-2011 à 19:09:33
gilou a écrit : Ça ne sera envisageable que quand ma situation financière évoluera positivement. La je dois faire vraiment gaffe à mon budget. |
comme si je pouvais pas te payer une biere ou pire, mutch ²
sinon revend une ou deux caisse de dvd
Marsh Posté le 05-12-2011 à 19:10:56
gilou a écrit : De toute façon, si tu es coincé par le fait que ta factorielle dépasse maxint, vu que tu auras besoin de cela fois la taille de ton array initial a allouer en mémoire pour le String[][], c'est la mémoire qui manquera, même si on utilise une classe adaptée pour que factorielle soit sans problème. |
bah meme pour travailler sur les grands nombres premiers il faudra que je regarde les tres grand entier dans des classes adapté
Marsh Posté le 05-12-2011 à 20:40:07
> sinon revend une ou deux caisse de dvd
Pas évident de revendre des DVD anglais en France.
> bah meme pour travailler sur les grands nombres premiers il faudra que je regarde les tres grand entier dans des classes adapté
Je suis pas certain que java soit particulièrement efficace pour faire du number crunching.
Et je vois pas trop le lien avec cette histoire de permutation.
A+,
Marsh Posté le 05-12-2011 à 20:41:13
gilou a écrit : > sinon revend une ou deux caisse de dvd |
faire des ptits programme rigolo
Marsh Posté le 05-12-2011 à 20:50:30
>> faire des ptits programme rigolo
A+,
Marsh Posté le 02-12-2011 à 14:33:55
salut les filles
je cherche un algo (recursif ?) qui prend un tableau ("A" "B" "C" etc) en parametre et qui renvoie tout les tableau possible avec les permutations des elements du tableau
merci
---------------
marilou repose sous la neige