Partage
  • Partager sur Facebook
  • Partager sur Twitter

Améliorer les algos

    16 novembre 2018 à 11:37:42

    Bonjour à tous. Je cherche des idées pour amélirorer mes algos. Auriez-vous des conseils pour moi?

    -
    Edité par HoredSossou 10 février 2021 à 15:05:30

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      16 novembre 2018 à 12:00:26

      Pour acquérir la logique rien de mieux que des exercices d'algorithmie. Il existe des sites proposant beaucoup d'exercices de ce genre, avec une difficulté progressive tels que France-IOI, CodinGame, ProjectEuler...

      Pour les optimisations liées aux langages, la pratique, bien qu'indispenssable ne peut être suffisante sans les connaissances du langage qu'on trouve généralement dans la documentation, les cours, les tutoriels, les blogs, les forums, etc.

      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2018 à 12:46:45

        Merci beaucoup

        IdiotBête_ a écrit:

        Pour acquérir la logique rien de mieux que des exercices d'algorithmie. Il existe des sites proposant beaucoup d'exercices de ce genre, avec une difficulté progressive tels que France-IOI, CodinGame, ProjectEuler...

        Pour les optimisations liées aux langages, la pratique, bien qu'indispenssable ne peut être suffisante sans les connaissances du langage qu'on trouve généralement dans la documentation, les cours, les tutoriels, les blogs, les forums, etc.



        • Partager sur Facebook
        • Partager sur Twitter
          16 novembre 2018 à 12:52:08

          Lis et pratique "Introduction to Algorithms" de Cormen et al.

          • Partager sur Facebook
          • Partager sur Twitter

          Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            16 novembre 2018 à 13:44:20

            Ksass`Peuk a écrit:

            Lis et pratique "Introduction to Algorithms" de Cormen et al.


            D'accord je le ferai. Merci

            • Partager sur Facebook
            • Partager sur Twitter
              16 novembre 2018 à 16:51:57

              L’algorithmie est tout simplement un formalisme pour résoudre un problème, si tu as des soucis pour concevoir des algorithmes, c'est que tu n'est pas clair dans la façon de résoudre une problématique.

              Une chose qui marche bien pour le début, c'est de diviser ton problème en problèmes plus petits, autant que possible.

              Si on te demande de construire une voiture, tu ne construis pas tout d'un coup.

              Tu commence par la liste des "gros" composant d'une voiture. Moteur, carrosserie, etc...

              Puis pour chaque composant, tu essaie de les réduire à nouveau.  

              Moteur -> Piston, engrenage, etc... 

                      Piston -> vis, cylindre, etc...

              Carrosserie -> Porte, capot, etc...

              Ainsi de suite jusqu'à arriver à l'unité la plus petite possible.

              ---------------------------------------------

              Pour en revenir à l'informatique; Si on te demande un algorithme comme "Faire avancer un personnage" dans un jeu vidéo.

              Tu découpe le problème en sous problème:

              -- 1 --

              Faire avancer -> Récupérer la position actuelle + Calculer la nouvelle position + Modifier la position

              1.1) Récupérer la position, souvent un simple attribut d'un objet. Exemple Perso.position;

              1.2) Ajouter l'input à la position actuelle. Perso.position + (int)UtilisateurInput;

              Etc...

              -- 2 --

              Bouger graphiquement le personnage -> Choisir un sprite + Calculer le nouveau sprite + Etc...

              Etc...

              2.2) Calculer le nouveau sprite, vas surement être une suite de condition, si ton perso est dans les air + qu'il a tel costume + etc...

              ---------------------------------------------

              In fine, chaque fonction minimale est "facile" à construire, et le tout s'assemble facilement: Personnage.Avancer(nouvellePosition).

              De plus, cela te force à séparer chaque fonction, ce qui est une bonne pratique pour la "scalabilité". Si on te demande de modifier un comportement, t'as juste à changer une petite fonction, et pas TOUTES les fonctions impactées (je vois ça beaucoup trop souvent en entreprise). D'autant plus que tu t’apercevra qu'à la fin, tu ne fera plus que du Légo avec tes fonctions car tu aura déjà tout pré-conçu. 

              -
              Edité par WorstDevEver 16 novembre 2018 à 17:00:12

              • Partager sur Facebook
              • Partager sur Twitter

              Try->Fail->Learn->Converge to success :{\displaystyle Q[s,a]:=(1-\alpha )Q[s,a]+\alpha (r+\gamma ~max_{a'}Q[s',a'])}

              Améliorer les algos

              × 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