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

Prolog Discussion :

Optimisation de recherche dans un graph et de sa génération


Sujet :

Prolog

  1. #1
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut Optimisation de recherche dans un graph et de sa génération
    J' ai implanté un générateur de graphss en prolog ( biensûr ) .

    A partir d'une taille de 14 400 Noeuds, j'ai un : ERROR: Out of global stack.
    Est-ce un plantage correct a votre avis, ou n'ai-je pas bien implanter ?

    Puis je voulais également vous demander votre avis à propos de la recherche dans le labyrinthe.
    Ma recherche fonctionne, mais est assez lente. J'utilise Dijsktra, mais il existe des cycles dans mon graph, donc c'est loin d' être l'idéal pour Dijsktra.
    C'est pourquoi j'ai ajouté un prédicat dynamic auquel j'ajoute chaque position qui a été parcourue,
    et je vérifie à chaque rappelle avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    buts,
    arc(X,Y),\+predicatdynamic(Y),
    autre buts
    Est-ce un bon choix ou existe-t-il une meilleure façon de procéder ?

    Merci
    Wer nicht probiert, verliert !!

  2. #2
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par je®ome
    C'est pourquoi j'ai ajouté un prédicat dynamic auquel j'ajoute chaque position qui a été parcourue,

    (...)

    Est-ce un bon choix ou existe-t-il une meilleure façon de procéder ?
    C'est une excellente manière de procéder.

    En manipulant dynamiquent la base de connaissances, on évite d'avoir à utiliser des listes et donc on consomme beaucoup moins de mémoire. C'est donc une bonne solution.

    Si la solution est bonne, pourquoi ne l'ai-je pas exposée dans mon tuto sur les graphes ? Est-ce un oubli de ma part ? Pas du tout. Au paragraphe 1.3.3, j'écris :
    Les prédicats définis dans ce cours ne modifieront pas la base de connaissance (pas de création de nouveaux graphes). A la place, ils retourneront leur résultat sous forme de liste (pour Dijkstra: chemin le plus court entre 2 points; pour Prim et Kruskal: liste des arcs appartenant à l'arbre de recouvrement minimal).
    Pourquoi ce choix ? Parce que les gens ont habituellement du mal avec Prolog et sont encore plus perturbés si on modifie la base de connaissance dynamiquement. Voici les 3 difficultés auxquelles les lecteurs auraient été confrontés :
    1. comprendre les algorithmes sur les graphes
    2. comprendre Prolog
    3. comprendre les prédicats dynamiques
    La modification dynamique de la base de connaissances mériterait à elle seule un article pour montrer à la fois le principe mais aussi les limites de cette techniques (exemple: retract en cas de backtrack).

    Pour ne pas rendre l'article trop difficile à comprendre, j'ai préféré ne pas du tout aborder le sujet.

    Ce faisant, j'ai laissé aux lecteurs la possibilité d'aller plus loin et de découvrir par eux-mêmes certains aspects de Prolog (modification dynamique de la base de connaissances) plutôt que de leur fournir une version prémâchée. Le fait que vous ayez exploré cette solution par vous-même montre que j'ai bien rempli mon rôle.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  3. #3
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut
    Merci pour cette réponse pcaboche.

    Je partage complètement cette avis.
    Souvent, quand on "découvre" quelque chose par soit même,
    on sait bien mieux s'en servir par la suite que si on avait eu la réponse d'un coup.

    Rien à dire sur les tutos, je trouve super qu'il existe des gens (comme toi) qui se prennent le temps de mettre de tels tutos sur pieds.

    Encore merci.

    ps: pour apporter ma petite contribution, j'ai ajouté mon premier code source prolog
    dans les sources prolog de DVP
    Wer nicht probiert, verliert !!

  4. #4
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Citation Envoyé par je®ome
    Rien à dire sur les tutos, je trouve super qu'il existe des gens (comme toi) qui se prennent le temps de mettre de tels tutos sur pieds.
    Merci. Il n'y a pas très longtemps, j'avais vraiment beaucoup de temps pour écrire de tels tutos (cause chômage). Aujourd'hui, mon temps est beaucoup plus réduit et je n'ai pas encore de connection internet à mon domicile.

    Citation Envoyé par je®ome
    ps: pour apporter ma petite contribution, j'ai ajouté mon premier code source prolog
    dans les sources prolog de DVP
    Ok, super !

    Comme je l'ai dit plus haut, je n'ai ni le temps ni la possibilité de regarder cela, donc si quelqu'un pouvait y jeter un oeil, ça serait cool (Trap D ou Eusebius, par exemple).
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Pas de problème pour la relecture, mais encore faudrait-il pouvoir y accéder, il est où exactement ? hier je n'ai pas réussi à le trouver
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    Par défaut
    Peut-être je me suis mal expliqué.
    Voici le lien

    vers les sources.
    Pour l'instant mon post est le dernier dans ce thread.


    Merci pour l' intérêt que vous y portez.
    Wer nicht probiert, verliert !!

Discussions similaires

  1. Optimiser la recherche dans un dico de 25k/mots
    Par Maf77 dans le forum Windows Phone
    Réponses: 38
    Dernier message: 04/08/2011, 18h38
  2. Optimiser les recherches dans les forums ?
    Par Vespasien dans le forum Evolutions du club
    Réponses: 4
    Dernier message: 12/05/2010, 16h44
  3. Réponses: 6
    Dernier message: 23/04/2009, 10h07
  4. Algo optimisation de parcours dans un graphe
    Par egu07 dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 11/09/2008, 10h20
  5. Optimiser la recherche dans des fichiers
    Par Napalm51 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/01/2008, 14h28

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