IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Problème du voyageur de commerce unidimensionnel


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Par défaut Problème du voyageur de commerce unidimensionnel
    Bonjour,

    Je cherche comment adresser une version simplifiée du problème du commis voyageur (Travelling salesman problem en anglais), qui, plutôt que de chercher les chemin le plus court entre des points sur un plan, cherche le chemin le plus rapide passant par tous les points sur un axe. Il y a 1000 points, et suivent une distribution normale centrée en 0. Chacun est représenté par un float, positif ou négatif.

    L'objectif est d'avoir un algorithme optimisé, mais je ne connais rien en optimisation. Auriez-vous des pistes ?

  2. #2
    Membre émérite
    Avatar de emixam16
    Homme Profil pro
    Chercheur en sécurité
    Inscrit en
    Juin 2013
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur en sécurité

    Informations forums :
    Inscription : Juin 2013
    Messages : 335
    Par défaut
    Bonjour,

    Quelles sont les contraintes de ton problèmes?

    Car si il n'y en à pas, partir de la ville la plus à gauche aller linéairement jusqu'à la ville la plus droite à droite est une solution trivialement optimale (Preuve: il est difficile d'aller plus rapidement d'un point A à un point B qu'avec une ligne droite... Et A et B doivent être visitées... Donc optimal ).

    Mais peut-être y-a-t-il des subtilités supplémentaires ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Par défaut
    J'ai effectivement omis de préciser les contraintes :
    - on part du 0 et on revient au 0.
    - on définit, plutôt qu'une distance, que l'écart entre deux points correspond à un temps.
    - on veut que la moyenne du temps d'attente de chaque point avant le passage du voyageur soit le plus court possible.
    - solution algorithme polynomial (ce dont je ne saisis pas trop le sens).
    - doit être 85% plus rapide qu'un algorithme glouton (soit aller au point le plus proche à chaque étape), en moyenne sur plusieurs tests.

  4. #4
    Membre émérite
    Avatar de emixam16
    Homme Profil pro
    Chercheur en sécurité
    Inscrit en
    Juin 2013
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur en sécurité

    Informations forums :
    Inscription : Juin 2013
    Messages : 335
    Par défaut
    Pour ta question sur la complexité : si ton algorithme explore toutes les possibilités ici, s'il y n points, tu as Formule mathématique cas. (Par exemple avec 5 : 5*4*3*2*1). On dit de complexité exponentielle. Au contraire si tu prend un autre algorithme qui fait au maximum Formule mathématique opérations avec les k des constantes alors l'algorithme sera quadratique (la plus grande puissance de n est 2) donc polynomial. Wikipédia explique ça très bien.

    Si la vitesse du voyageur est constante (ce qui est probablement le cas), Alors minimiser la distance est équivalent à minimiser le temps (puisque Formule mathématique). Dans la suite je parle en terme de distance mais peu importe.

    Citation Envoyé par Saryk Voir le message
    J'ai effectivement omis de préciser les contraintes :
    - on part du 0 et on revient au 0.
    - on veut que la moyenne du temps d'attente de chaque point avant le passage du voyageur soit le plus court possible.
    Cette partie du message est la partie importante, et que je ne pouvais pas deviner .
    Je note Formule mathématiquela distance pour aller du point n-1 à n avec un chemin particulier

    Si je prends un point m, la distance totale Formule mathématique parcourue pour aller à ce point depuis le départ du voyageur est Formule mathématique

    Tu veux minimiser le temps moyen donc la distance moyenne donc Formule mathématique soit Formule mathématique soit Formule mathématique...

    J'ai formalisé ton problème, je te laisse le résoudre pour que tu apprennes aussi (je suis là si tu as des questions)

    (Dans ce genre de cas la première question à te poser est ais-je besoin d'un algorithme optimal ou une bonne approximation est elle suffisante. Si oui, quand puis-je considérer mon approximation comme suffisante?)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 5
    Par défaut
    Merci, ça aide beaucoup

    Si je prends un point m, la distance totale Formule mathématique parcourue pour aller à ce point depuis le départ du voyageur est Formule mathématique
    Si je comprends bien, on cherche donc à ordonner les points Formule mathématique de façon à ce que Formule mathématique (ou donc Formule mathématique) soit minimal.

    EDIT : les "1000" s'affichent mal :/

    Un algorithme exhaustif ferait toutes les permutations, soit Formule mathématique opérations, et ce n'est clairement pas envisageable.
    Je suppose aussi qu'il n'y a pas d'algorithme optimal en toutes circonstances ; dans le sens de ça doit dépendre de la configuration de départ.
    Je ne sais cependant pas répondre aux questions sur les approximations

  6. #6
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Citation Envoyé par Saryk Voir le message
    EDIT : les "1000" s'affichent mal :/
    Juste une histoire de syntaxe LaTeX : quand tu mets plus d'un caractère en indice ou exposant, il faut marquer le début et la fin, donc d_{1000} au lieu de d_1000.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  7. #7
    Membre émérite
    Avatar de emixam16
    Homme Profil pro
    Chercheur en sécurité
    Inscrit en
    Juin 2013
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Chercheur en sécurité

    Informations forums :
    Inscription : Juin 2013
    Messages : 335
    Par défaut
    En Latex Si tu veux afficher des blocs tu les met en crochet: par exemple x_{1000} donne Formule mathématique. Sinon seul le 1er nombre est pris. (Edit: grillé )

    Citation Envoyé par Saryk Voir le message
    Merci, ça aide beaucoup

    Si je comprends bien, on cherche donc à ordonner les points Formule mathématique de façon à ce que Formule mathématique (ou donc Formule mathématique) soit minimal.
    C'est exactement ça!

    Citation Envoyé par Saryk Voir le message
    Un algorithme exhaustif ferait toutes les permutations, soit Formule mathématique opérations, et ce n'est clairement pas envisageable.
    Oui, je ne l'ai pas précisé mais pour des raisons évidentes tu ne t'en sortira pas en testant toutes les combinaisons (les joies de l'exponentiel).

    Citation Envoyé par Saryk Voir le message
    Je suppose aussi qu'il n'y a pas d'algorithme optimal en toutes circonstances ; dans le sens de ça doit dépendre de la configuration de départ.
    Si, il y a bien évidemment des algorithmes te donnant le résultat optimal. Exemple: Générer et tester toutes les combinaisons. Il faut juste un temps quasi-infini pour le faire tourner (environ Formule mathématique combinaisons), mais c'est optimal. Ton travail c'est de trouver un algorithme plus intelligent qui te fasse arriver au même résultat (ou à une bonne approximation si on te l'autorise) en un temps plus ... humain!

Discussions similaires

  1. Problème du voyageur de commerce
    Par bleach1234 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 04/05/2009, 14h57
  2. Problème du voyageur de commerce parallélisé
    Par Cyberstein dans le forum Mathématiques
    Réponses: 2
    Dernier message: 06/04/2009, 17h49
  3. Réponses: 2
    Dernier message: 03/02/2009, 20h21
  4. Problème du voyageur du commerce avec plusieurs voyageurs
    Par Treuze dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/12/2007, 11h46
  5. Réponses: 3
    Dernier message: 12/04/2007, 09h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo