Quelques questions Python
Résolu/Fermérubbb Messages postés 4 Date d'inscription lundi 6 février 2023 Statut Membre Dernière intervention 18 avril 2023 - 18 avril 2023 à 09:26
- Quelques questions Python
- Citizen code python avis - Accueil - Outils
- Python generator - Télécharger - Sécurité
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Mot secret python pix ✓ - Forum Python
2 réponses
Modifié le 18 avril 2023 à 09:06
bonjour,
je pense que j'aurais répondu comme toi.
A part pour la question 2, j'aurais mis E.
A part pour la question 4, ce n'est surement pas linéaire. cela me semble plutôt exponentiel.
18 avril 2023 à 09:26
Oui la 4 j'ai hésité entre linéaire et exponentiel. J'ai tranché et du mauvais côté visiblement.
Par curiosité, j'ai demandé à ChatGPT son avis. Même si très souvent ses réponses sont complètement à côté de la plaque, sur des questions théoriques ça pouvait le faire. Voici ses réponses:
-Pour la question 1 il semble bien avoir la même interprétation de l'arbre que je fais. Cependant, pour lui, le petit-fils gauche de A est le nœud B. Soit c'est moi qui suis complètement à l'ouest sur cette question, soit la réponse de ChatGPT est incohérente (mais sur des questions d'ordre pratique, c'est souvent le cas je trouve)
-Pour la question 2, sa réponse:
La réponse est D) L'utilisation d'au moins deux tables liées par une clé étrangère et une clé primaire.
La contrainte de relation dans une base de données se réfère à la façon dont les tables dans une base de données sont liées les unes aux autres. Cela implique l'utilisation de clés étrangères et de clés primaires pour établir des relations entre les enregistrements dans différentes tables.
Les clés primaires sont utilisées pour identifier de manière unique chaque enregistrement dans une table spécifique, tandis que les clés étrangères sont utilisées pour lier les enregistrements d'une table à ceux d'une autre table. La contrainte de relation garantit que les données dans les tables liées sont cohérentes et exactes en empêchant les insertions ou les mises à jour de données qui violeraient l'intégrité de la relation entre les tables.
Là ça me semble plus cohérent. Si c'est bien ça, j'ai mal interprété le mot "relation" dans l'énoncé. Une table étant aussi appelé une relation dans mon bouquin, j'ai eu une compréhension un peu différente. Egalement, le terme de "contrainte de relation" n'est pas explicitement utilisé dans mon manuel, même si bien sûr, les notions de clés primaires, étrangères font bien l'objet de paragraphes dans les chapitres dédiés à SQL.
-Pour la question 3:
La réponse est B) La méthode "diviser pour régner".
La recherche dichotomique est un algorithme d'optimisation qui utilise la méthode "diviser pour régner" pour rechercher efficacement un élément dans une liste triée. Cette méthode consiste à diviser répétitivement la liste en deux parties égales et à déterminer dans quelle partie l'élément recherché peut se trouver. Le processus se poursuit jusqu'à ce que l'élément soit trouvé ou que la liste soit entièrement parcourue.
La méthode "diviser pour régner" est une technique d'optimisation algorithmique qui consiste à diviser un problème en sous-problèmes plus petits et plus simples, résoudre chaque sous-problème de manière récursive, puis combiner les résultats pour résoudre le problème d'origine. Cette technique est souvent utilisée dans la conception d'algorithmes efficaces pour de nombreux problèmes de calcul, tels que la recherche, le tri et la fusion de données.
On va croiser les doigts pour qu'il ne raconte pas de bêtise sur cette question.
Pour la question 4, il démontre que c'est effectivement exponentiel. Après coup je me sens bien bête d'avoir hésité, mais c'est toujours plus simple avec du recul, avec la solution,...
La réponse est D) Coût exponentiel.
L'algorithme de calcul du n-ième terme de la suite de Fibonacci implémenté ici en Python utilise la récursivité pour calculer le terme souhaité. La fonction appelle récursivement elle-même deux fois pour les valeurs n-2 et n-1 et les ajoute pour obtenir le n-ième terme de la suite.
Le coût de cet algorithme est exponentiel, car pour calculer le n-ième terme, il doit appeler la fonction pour les valeurs n-2 et n-1, chacune de ces fonctions à son tour appelant la fonction pour les valeurs n-4, n-3 et ainsi de suite jusqu'à atteindre la condition d'arrêt pour n=0 ou n=1.
Par conséquent, plus n est grand, plus le nombre d'appels de la fonction augmente de manière exponentielle, ce qui rend l'algorithme très inefficace pour de grandes valeurs de n.