begin process at 2010 02 09 21:42:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Math & Algorithmes

 > PYTINERIS!

PYTINERIS!


 Information sur la source

Note :
9,4 / 10 - par 5 personnes
9,40 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Math & Algorithmes Classé sous :algorithme, dijkstra, voyageur, commerce, itinéraire Niveau :Initié Date de création :11/04/2007 Date de mise à jour :09/04/2008 17:20:54 Vu / téléchargé :4 331 / 377

Auteur : colpompidou

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Trouver son plus court chemin avec une interface graphique implémentant l'algorithme de Dijkstra.
Utilisation :
Pour chercher le plus court chemin entre deux villes, les sélectionner en cliquant.
Pour ajouter une ville, double-cliquer (clic gauche) dans un espace vide.
Pour supprimer une ville, double-cliquer (clic droit) sur celle-ci.


 Conclusion

Le code n'est que très peu commenté. Mais les notations sont, à mon avis, suffisantes pour la compréhension.
Tout est entièrement personnalisable grâce au fichier .map. Vous pouvez ainsi créer vos propres cartes.
Le projet est loin d'être achevé. Je prévois d'ajouter la possibilité de changer de carte et je vais peut-être me pencher sur une autre interface graphique... J'attends vos suggestions.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

11 avril 2007 16:05:05 :
Ajout d'informations complémentaires.
11 avril 2007 16:07:01 :
Ajout de la capture d'écran.
11 avril 2007 16:35:45 :
Explication de l'utilisation.
01 juillet 2007 11:52:04 :
Ajout d'un point virgule à la fin de chaque ligne du fichier france.map pour simplifier sa lecture et la rendre plus rapide.
01 juillet 2007 11:57:00 :
Correction d'un léger bogue.
06 avril 2008 19:23:57 :
Correction d'un bogue dans l'ajout d'une ville.
06 avril 2008 21:53:08 :
Possibilité d'ouvrir plusieurs cartes en même temps. Améliorations dans l'ajout d'une route.
08 avril 2008 20:43:52 :
Possibilité de créer une carte.
09 avril 2008 17:20:54 :
Améliorations dans la création d'une nouvelle carte.

 Sources de la même categorie

Source avec Zip Source avec une capture DIVISIONS AVEC PRÉCISION RÉGLABLE par Clempython
Source avec Zip Source avec une capture LE CALCULATOR DE RAYGOLD par raygold
Source avec Zip ALGORITHMIME GENETIQUE : PROBLEME DU VOYAGEUR DE COMMERCE par mehdicherti
Source avec Zip PROBLEME DES HUIT DAMES par mehdicherti
Source avec Zip CALCULATRICE SIMPLICISTE SOUS TKINTER par elnabo

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture DIVISIONS AVEC PRÉCISION RÉGLABLE par Clempython
Source avec Zip Source avec une capture BENCHMARK PAR LE CALCUL DE PI MULTITHREAD par amaury74
Source avec Zip Source avec une capture BENCHMARK PAR LE CALCUL DE PI par amaury74
Source avec une capture CONVERTISSEUR EN LOT D'ITINÉRAIRES GPS par killer_sam
GRAPHES NON-ORIENTÉS par KimbleMandel

Commentaires et avis

Commentaire de VladislavIV le 16/04/2007 11:32:03

Je n'ai pas pu tester le code (pas installé PIL), mais je te propose ceci pour la méthode pluscourtchemin, de la classe Itineraire (modifications signalées par #<----):

def pluscourtchemin(self, G, start, end):
    def flatten(L):       # Flatten linked list of form [0,[1,[2,[]]]]
        while len(L) > 0:
        yield L[0]
        L = L[1]
    q = [(0, start, ())]  # Heap of (cost, path_head, path_rest).
    visited = set()       # Visited vertices.
    res = False   #<----
    fin = False   #<----
    while not fin:   #<----
        (cost, v1, path) = heappop(q)
        if v1 not in visited:
            visited.add(v1)
            if v1 == end:
                res = list(flatten(path))[::-1] + [v1]   #<----
                fin = True    #<----
            path = (v1, path)
            for (v2, cost2) in G[v1].iteritems():
                if v2 not in visited:
                    heappush(q, (cost + cost2, v2, path))
    return res   #<----


Pour être "propre", une fonction ne doit avoir qu'un seul point de sortie (return), et cela doit être sa dernière instruction. Visualise l'exécution comme un fluide qui sécoule du début à la fin de ta fonction : il n'y a qu'une entrée, il n'y a qu'une sortie. Entre les deux, le traitement. Il faut éviter de mettre des sorties n'importe où au milieu, ou on prend le risque de ne pas contrôler le flux.

De plus, si on fait abstraction de ton "return" au milieu du code, ta boucle "while True:" est une boucle infinie. Il faut absolument éviter ça, ça ne t'apportera que des ennuis !

En espérant être utile ;)
A++

Commentaire de aera group le 02/05/2007 12:09:43

Pas mal, je note 10. Bon courrage pour la suite

Commentaire de DoudouBidou le 02/05/2007 18:49:39

pas mal c'est un bon début,
reste plus qu'à implanter les vrais routes et à ajouter une fonction de zoom ;)

Commentaire de VladislavIV le 02/05/2007 22:26:42

Ouiii... enfin, ne poussons pas le vice trop loin ! :D Mais c'est vrai qu'en donnant comme valeur à chaque arc, les Km de routes qui séparent les deux villes, on peut trouver le parcours minimal en Km pour aller d'une ville donnée à une autre.
Ca ne devrait pas être trop dur à faire, vu ce qu'il y a déjà !

Commentaire de colpompidou le 23/06/2007 17:07:53

VladislavIV : l'avantage du return, c'est qu'il coupe la boucle while. Ainsi, la boucle for suivant la condition et qui ajoute au tas les villes voisines (liées par une route) n'aura pas à être exécutée inutilement. La fonction est donc plus rapide.
Je vais réfléchir à l'implémentation du zoom. Mais je ne sais pas comment l'intégrer à l'interface graphique ... je suis impatient de voir vos conseils.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Pour ne pas planter [ par franckysnow91 ] Bonjour à tous,Je programme un algorithme sous python et malheureusement, je fais souvent des boucles perverses et je ne réussi pas à m'en sortir. Je


Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales