Partage
  • Partager sur Facebook
  • Partager sur Twitter

Algorithme de routage pour une matrice de case

Sujet résolu
    3 février 2021 à 22:27:54

    Bonjour,

    Je vous sollicite aujourd'hui pour un problème dont je ne vois pas comment m'y prendre.
    Je développe en C.

    Mon objectif est de créer une fonction me permettant de déterminer le chemin le plus court à travers une matrice (2D) de cases. Je souhaite également que ma fonction retourne la liste de mes cases.

    Le problème est que la création des cases de cette matrice ne me permet pas de connaître leurs coordonnées au sein de cette matrice. De plus la taille de la matrice est variable et certaines cases peuvent ne pas être accessible.

    Les données dont je dispose sont :
    • la position de la case de départ,
    • la position de la case de fin,
    • la liste des cases dont le déplacement est autorisé
    • pour chaque case, la liste des cases voisines
    J'ai pensé réaliser une fonction avec des boucles for imbriquées les unes entre elles et que le nombre de boucle soit variable. Seulement je sèche. J'ai également pensé à utiliser des boucles while, même combat.
    Je ne sais pas quoi non plus chercher sur internet pour m'aiguiller dans mes recherches.
    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      6 février 2021 à 10:58:56

      Ta case est construite à partir d'une structure je suppose ?

      Le plus difficile est pas de savoir si on utilise une boucle for ou while, mais de savoir déjà résoudre sur le papier votre problème.

      Si case est une structure, on pourrait imaginer y ajouter le numéro de ligne et son numéro de colonne, si c'est bien de cela que vous parlez en terme de coordonnées.

      En tout cas, pour avoir de plus amples informations, vous pourriez nous montrer comment résoudre sur papier, ce qui aiguillerait sur des manières de l'écrire informatiquement, car nous ne sommes pas dans votre tête, et les solutions possibles peuvent diverger.

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        6 février 2021 à 15:21:34

        Bonjour Fred,

        J'ai trouver la solution :
        Pour commencer je crée une liste de int de la taille de la longueur maximale de mon déplacement et j'initialise dynamiquement tous les int de la taille de ma liste de cases accessibles (-1 pour ne pas faire de débordement mémoire par la suite). Par exemple si je peux me déplacer de 4 cases, et que la taille de ma liste de cases est 20, j'obtiens : liste[4] = {19,19,19,19}. De la manière d'un minuteur je décrémente ma liste jusqu'à : liste[4] = {0,0,0,0}
        Ensuite, comme ma matrice est variable, j'utilise une boucle while pour le squelette (j'en sort quand liste[4] = {0,0,0,0}).
        Enfin, dans ma boucle principale, je teste tous les chemins possibles en me servant de liste[4] pour récupérer l'index de la liste de cases accessibles.


        Merci pour votre implication.
        Bonne journée.

        • Partager sur Facebook
        • Partager sur Twitter

        Algorithme de routage pour une matrice de case

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown