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 :

Comparaison d'algorithmes : A* et Bellman-Ford


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut Comparaison d'algorithmes : A* et Bellman-Ford
    Bonjour a tous,
    Je cherche des éléments qui permette de privilégié l'algorithme de Bellman-Ford sur celui de A* ?

    Merci

  2. #2
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 619
    Points : 188 605
    Points
    188 605
    Par défaut


    De manière générale, pour comparer deux algorithmes, tu peux regarder la complexité en temps et en mémoire (ou bien des implémentations en faisant tourner le code et en récupérant des statistiques). A* utilisant une heuristique, il se peut qu'il donne une solution de moins bonne qualité qu'un autre (particulièrement si elle ne respecte pas les hypothèses de l'algorithme). Plus particulièrement, dans les algorithmes de recherche dans un graphe, certains partent d'un point et calculent le meilleur chemin jusqu'à un seul autre point, d'autres vers tous les autres points. Voici pour quelques pistes de recherche .
    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 !

  3. #3
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Ok merci dourouc05

    J'ai une relative bonne idée des deux algorithmes.
    1- A* est une extension de Dijkstra (que j'ai déjà utilisé) mais je ne connais pas bien l’amélioration apportée.
    2- Bellman-Ford aussi je l'utilise.

    - je ne connais pas bien leur complexité au pire cas ? (peu tu m'aider a déterminé quel est le meilleur des deux pour ce critère)

    Je vu que Bellman-Ford est un algo : qui calcule le chemin vers tous les autres points.
    et que A* calcule le meilleur chemin jusqu'à un seul noeud a la fois.

  4. #4
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Selon me petite lecture sur wikipedia (je n'ai pas tout compris a 100%)
    je déduit que :
    Complexité de A* = O(log n)
    Complexité de Bellman-Ford = O(n3)

    Si je me base sur le schéma suivant :
    Nom : commplexitéAlgo.jpg
Affichages : 2215
Taille : 27,5 Ko

    La complexité de en temps de A* est bien plus stable donc plus performante. dit moi si je me trompe quand je dis A* > Bellman-Ford ??

    Merci

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    L'algorithme de Bellman-Ford est systématique : il évalue l'intégralité des branches dans l'arbre des possibilités de parcours du graphe.
    L'algorithme A* élimine au plus tôt les branches les moins probables dans l'arbre des possibilités.
    Ces deux algorithmes n'appartiennent pas à la même famille.
    Personne ne peut te dire lequel des deux est le meilleur : tout dépend du problème à traiter. Il y a des cas ou Bellman-Ford est plus rapide et des cas ou il est moins rapide.
    De plus, la charge de calcul et l'usage de la mémoire n'ont rien à voir entre ces deux algorithmes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Personne ne peut te dire lequel des deux est le meilleur : tout dépend du problème à traiter. Il y a des cas ou Bellman-Ford est plus rapide et des cas ou il est moins rapide.
    C'est possible de me répondre avec plus de précision dans le cas : trouves le plus cours chemin dans un Graphe (Automate fini)?

    Quelle sont c'est deux famille d'algorithme ?

    Merci

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par geforce Voir le message
    C'est possible de me répondre avec plus de précision dans le cas : trouves le plus cours chemin dans un Graphe (Automate fini)?
    Je l'ai déjà dit : impossible de donner une réponse, tout dépend de la forme du graphe à analyser. Mais je vais être plus précis : si le graphe est quasiment complet, alors A*. Si le graphe contient énormément de cul-de-sac ou si les quelques cul-de-sac existants sont très profond, alors Bellman-Ford. Mais là encore c'est une généralité qui peut être remise en cause par les cas particuliers à analyser.
    Quelle sont c'est deux famille d'algorithme ?
    Déjà dit aussi : Bellman-Ford est systématique et A* est heuristique.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    OK, je commence tout juste à comprendre,

    Mais dit moi y a une autre caractéristique qui les différencié (me semble très importante) c'est la détection des 'circuits absorbants' Bellman-Ford peu le faire, mais A* ne peu le faire.

    Mais c'est quoi la conséquence d'entrer dans un circuit absorbant dans le cas de A* ?
    Pour Bellman-Ford je crois que s'il détecte un seul circuit absorbant dans un graphe, alors le graphe en totalité n'est pas explorable donc il est dans l'impossibilité de trouver les chemins optimaux?

    Merci de donner plus de détail dans ce cas-là.

  9. #9
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    A* ne peut pas passer deux fois par un même noeud puisqu'il marque tous les noeuds traités.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  10. #10
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    A* ne peut pas passer deux fois par un même noeud puisqu'il marque tous les noeuds traités.
    ci-joint mon document merci de me dire si votre avis?

    Particularité de algo.2.docx

  11. #11
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    des critiques constructive si possible Merci.

Discussions similaires

  1. Trouver l'arborescence des plus courts chemins (algorithme de Bellman-Ford)
    Par geforce dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 11/03/2015, 05h39
  2. Trouver les chemins les plus courts avec l'algorithme de Bellman-Ford
    Par geforce dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 06/02/2015, 16h28
  3. Bellman-Ford algorithm problème
    Par ImmoTPA dans le forum C++
    Réponses: 29
    Dernier message: 03/08/2014, 18h18

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