Problem java
Fermé
starweb2585
Messages postés
17
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
22 mai 2013
-
4 mars 2009 à 17:54
starweb2585 Messages postés 17 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 22 mai 2013 - 13 mars 2009 à 15:12
starweb2585 Messages postés 17 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 22 mai 2013 - 13 mars 2009 à 15:12
A voir également:
- Problem java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Java décompiler - Télécharger - Langages
- Waptrick jeux pes 2016 java - Forum logiciel systeme
4 réponses
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
4 mars 2009 à 21:24
4 mars 2009 à 21:24
Bonsoir,
Exception in thread "main" java.lang.StackOverflowError
Ne cherches pas plus loin, tu as un Stack overflow (débordement de pile). Ca peut signifier deux choses :
- que ton algorithme est gourmand en ressources et donc qu'il faut que tu augmentes l'espace réservé à ta pile (en java elle est surtout utilisée pour stocker les adresses de retour des méthodes vu qu'on utilise beaucoup d'objets et peu de types primitifs). Le fait que tu aies un problème pour n=5 et pas n=4 est sans doute logique : tu dois avoir un algorithme assez glouton (si par exemple il construit tous les chemins possibles, alors il est de complexité exponentielle et donc il est normal qu'il explose au bout d'un moment).
- que ton algorithme est gourmand, mais qu'il est TROP gourmand justement : tu devrais pouvoir trouver une solution pour l'optimiser en évitant de faire autant d'appels récursifs par exemple, quitte à stocker des résultats pour les réutiliser plus tard dans l'algorithme (voir l'exemple classique de la suite de Fibonacci en C qui est toute bête mais fait vite tout exploser), ou à utiliser d'autres astuces.
En général c'est la seconde option qu'il faut considérer (les ordinateurs d'aujourd'hui ont assez de mémoire pour ne pas planter sur n=5), donc regarde bien ton code et vois où tu peux l'optimiser.
Cordialement,
Exception in thread "main" java.lang.StackOverflowError
Ne cherches pas plus loin, tu as un Stack overflow (débordement de pile). Ca peut signifier deux choses :
- que ton algorithme est gourmand en ressources et donc qu'il faut que tu augmentes l'espace réservé à ta pile (en java elle est surtout utilisée pour stocker les adresses de retour des méthodes vu qu'on utilise beaucoup d'objets et peu de types primitifs). Le fait que tu aies un problème pour n=5 et pas n=4 est sans doute logique : tu dois avoir un algorithme assez glouton (si par exemple il construit tous les chemins possibles, alors il est de complexité exponentielle et donc il est normal qu'il explose au bout d'un moment).
- que ton algorithme est gourmand, mais qu'il est TROP gourmand justement : tu devrais pouvoir trouver une solution pour l'optimiser en évitant de faire autant d'appels récursifs par exemple, quitte à stocker des résultats pour les réutiliser plus tard dans l'algorithme (voir l'exemple classique de la suite de Fibonacci en C qui est toute bête mais fait vite tout exploser), ou à utiliser d'autres astuces.
En général c'est la seconde option qu'il faut considérer (les ordinateurs d'aujourd'hui ont assez de mémoire pour ne pas planter sur n=5), donc regarde bien ton code et vois où tu peux l'optimiser.
Cordialement,
starweb2585
Messages postés
17
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
22 mai 2013
4 mars 2009 à 23:19
4 mars 2009 à 23:19
merci beaucoup Marco
sauf que j'ai le problème quand il y a le nombre de ville plus de 10 pas n=5,
oui c'est vrais j'utilise beaucoup la récursivité mais j'ai fait d'optimisation en évitant par exemple de calculé une distance 2 fois(aller et retour) et d'arrêté le calcul quand on arrive a une distance plus grande que celle qu'a été enregistré dans le chemin optimal donc serai inutile de continu le calcul dans ce chemin,
pour ça j'ai mémorisé les résultats dans une liste pour remplir les chemins déja utilisé ou ceux qu'ils sont grandes de chemin optimal déja trouvé.
mais bon plus y a des villes plus y a de récursives
si je peux argumenté la taille de la pille ça marche?
si oui commet on fait?
merci encore :)
sauf que j'ai le problème quand il y a le nombre de ville plus de 10 pas n=5,
oui c'est vrais j'utilise beaucoup la récursivité mais j'ai fait d'optimisation en évitant par exemple de calculé une distance 2 fois(aller et retour) et d'arrêté le calcul quand on arrive a une distance plus grande que celle qu'a été enregistré dans le chemin optimal donc serai inutile de continu le calcul dans ce chemin,
pour ça j'ai mémorisé les résultats dans une liste pour remplir les chemins déja utilisé ou ceux qu'ils sont grandes de chemin optimal déja trouvé.
mais bon plus y a des villes plus y a de récursives
si je peux argumenté la taille de la pille ça marche?
si oui commet on fait?
merci encore :)
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
5 mars 2009 à 00:19
5 mars 2009 à 00:19
Bonsoir,
Pour les algorithmes, ce que tu as fait semble pas mal déjà. Peut-être peux-tu encore optimiser tout ça en t'inspirant des algorithmes "classiques" de recherche du chemin le plus court (Dijkstra, Prim, Bellman-Ford...).
Pour la taille de la pile, apparemment c'est configurable lorsque tu exécutes ton programme. Jette un oeil ici
Cordialement,
Pour les algorithmes, ce que tu as fait semble pas mal déjà. Peut-être peux-tu encore optimiser tout ça en t'inspirant des algorithmes "classiques" de recherche du chemin le plus court (Dijkstra, Prim, Bellman-Ford...).
Pour la taille de la pile, apparemment c'est configurable lorsque tu exécutes ton programme. Jette un oeil ici
Cordialement,
starweb2585
Messages postés
17
Date d'inscription
jeudi 14 février 2008
Statut
Membre
Dernière intervention
22 mai 2013
13 mars 2009 à 15:12
13 mars 2009 à 15:12
bonjours
en faite j'ai changé la récursivité par une boucle et elle marche maintenant parfaitement j'ai meme testé avec 15 villes :d
au tout cas merci pour votre aide
en faite j'ai changé la récursivité par une boucle et elle marche maintenant parfaitement j'ai meme testé avec 15 villes :d
au tout cas merci pour votre aide