CCINP Informatique Commune TSI 2021Sujet, corrigé et rapport du jury
- Manipulation de listes et de chaînes de caractères
- Complexité et terminaison d'un algorithme
- Tris
- Récursivité
- Bases de données et SQL
- Représentation binaire des nombres
Téléchargements
Présentation du sujet
Optimisation du chargement de camions de livraison et gestion d'une base de données de livraisonsAfficher ou masquer la section
Présentation du sujet
Le sujet est composé de deux parties indépendantes. La première étudie un problème d'optimisation du chargement de camions (variante du sac à dos) avec une méthode intuitive de tri par ratio puis une méthode récursive avec mémoïsation. La seconde porte sur une base de données de livraisons interrogée en SQL et sur un codage binaire d'identifiants clients.
- 1Partie I : optimisation du chargementpremière année et deuxième annéeRecherche d'une cargaison de poids maximal et de valeur maximale, d'abord par une méthode de tri intuitive puis par une méthode récursive avec mémoïsation.
- 2Partie II : données liées aux livraisonsRequêtes SQL sur une base de données à trois tables et codage binaire des identifiants clients.
L'épreuve en chiffres
Moyenne 10,51 / 20 · écart-type 4,09 · 1 276 présents · où vous situez-vous ?Afficher ou masquer la section
L'épreuve en chiffres
- Moyenne
- 10,51/ 20
- Écart-type
- 4,09
- Présents
- 1 276
- Coefficient
- 4
- Durée
- 3 h
Votre note sur 20 à ce sujet, en conditions de concours.
Source : document officiel du concours, épreuve du 5 mai 2021. Notes publiées par le concours (après harmonisation le cas échéant). Courbe : estimation par une loi normale.
Ce qu'a observé le jury
5 erreurs relevéesManipulation des listes · Caractère non mutable des chaînes · Clé primaire de la table livraisonAfficher ou masquer la section
Ce qu'a observé le jury
5 erreurs relevéesLe rapport relève des lacunes récurrentes sur les listes et les chaînes de caractères, ainsi que des questions de bases de données souvent traitées mais avec un manque de rigueur dans la syntaxe. Les correcteurs signalent aussi des copies peu lisibles et non soignées, ce qui a été pris en compte dans l'évaluation.
Les erreurs les plus sanctionnées
- 1Manipulation des listesQ4, Q5
Le jury relève des erreurs récurrentes comme l'utilisation de L[i]=x pour une liste vide, L=L+x au lieu de L=L+[x], ou des problèmes d'indices lors du parcours de listes.
« utilisation de « L[i]=x » pour une liste vide »
- 2Caractère non mutable des chaînesQ7, Q26
Le caractère non mutable d'une chaîne de caractères est peu connu des candidats, ce qui pose problème dans plusieurs questions.
- 3Clé primaire de la table livraisonQ21
La notion de clé primaire n'est pas du tout acquise par une large majorité de candidats sur cette question.
« La notion de clé primaire n’est pas du tout acquise par une large majorité de »
- 4Syntaxe SQLQ22, Q23, Q24
Des requêtes SQL pourtant simples sont mal maîtrisées, certains candidats tentant par exemple d'utiliser « SELECT date AND heure ».
« SELECT date AND heure »
- 5Terminaison de la récursivitéQ14
La question sur le stop d'un appel récursif est jugée laborieuse alors que c'est une compétence attendue.
« Travailler le stop d’un appel récursif, en quelques mots, est une compétence attendue »
Ce qui a été bien réussi
- Les questions Q2 et Q3 sont généralement bien traitées.
- La question Q17, non triviale, est globalement réussie.
- La question Q25, simple, est très bien réussie.
Conseils du jury
- Soigner la présentation des copies et barrer proprement en cas d'erreur.
- Se relire pour éviter les fautes d'orthographe.
- Justifier soigneusement les complexités données plutôt que d'avancer des arguments approximatifs.
Synthèse rédigée par WikiPrépa à partir du rapport officiel du jury (à télécharger en PDF). Les citations sont extraites du rapport.
Ces sujets peuvent vous intéresser
Lecture du sujet en ligne
L'énoncé complet, avec les formules et les figures, sans ouvrir le PDF.Afficher ou masquer la section
Lecture du sujet en ligne
ÉPREUVE SPÉCIFIQUE - FILIÈRE TSI
INFORMATIQUE
Durée : 3 heures
RAPPEL DES CONSIGNES
- Utiliser uniquement un stylo noir ou bleu foncé non effaçable pour la rédaction de votre composition ; d'autres couleurs, excepté le vert, peuvent être utilisées, mais exclusivement pour les schémas et la mise en évidence des résultats.
- Ne pas utiliser de correcteur.
- Écrire le mot FIN à la fin de votre composition.
Les calculatrices sont interdites.
Le sujet est composé de deux parties indépendantes.
- le texte du sujet : page 1 à page 6;
- le Document Réponse : page 1 à page 11.
Le Document Réponse doit être rendu dans son intégralité.
Optimisation de rendement d'une entreprise de livraison
Partie I - Optimisation du chargement
- le poids de chaque produit
p_i (chaque client propose un seul produit); - la valeur
v_i associée au transport de chaque produit : c'est-à-dire l'argent gagné par l'entreprise si elle réalise le transport de ce produit.
I. 1 - Un exemple
- Pr est la liste des produits proposés par les clients numérotés de 1 à
4 : Pr = [1, 2, 3, 4] ; -
P est la liste des poids associés :P = [3, 2, 1, 4] ; - V est la liste des valeurs associées :
V = [4, 3, 1, 9] .
Q2. Donner toutes les cargaisons de trois produits respectant le poids maximal. On donnera à chaque fois le profit fait par l'entreprise.
Q3. Quelle est la cargaison maximisant le profit de l'entreprise ? Que vaut le profit dans ce cas ?
I. 2 - Une méthode intuitive pour la résolution du problème
- Pr est la liste des produits (numérotés de 1 à
n inclus); -
P = [p_1, …, p_n] est la liste des poids associés aux produits; -
V = [v_1, …, v_n] est la liste des valeurs associées aux produits.
def Tri(L):
,'' L est une liste de nombres réels ','
for i in range(1,len(L)):
x=L[i]
j=i
while j>0 and x<L[j-1]:
L[j]=L[j-1]
j=j-1
L[j]=x
return L
Q9. Définir une fonction Inverse ayant pour argument une liste de nombres réels L et renvoyant l'inverse de celle-ci. Par exemple, l'inverse de
Q10. On souhaite trier une liste de poids
Q13. On souhaite appliquer cette méthode en utilisant les listes de poids et de valeurs de la souspartie I.1. Donner la liste des ratios, les listes de poids et de valeurs obtenues à l'aide de la fonction Tri2 ainsi que le profit obtenu. Commenter le résultat.
I. 3 - Une méthode récursive
- pour chacun des produits, deux choix sont possibles : il fait partie de la cargaison ou non;
- la récursivité s'effectuera sur la liste des indices de
Pr : le premier appel de la fonction se fera en utilisant l'indicen , puis l'indicen − 1 et ainsi de suite jusqu'à l'indice 0 (correspondant au cas où il n'y a plus de produits); - pour
i ∈ {0, 1, …, n} etω ∈ {0, 1, …, P_(max)} , on noteS(i, ω) la valeur maximale cumulée des produits que l'on peut placer dans un camion d'une capacité maximale (en poids) deω avec la liste constituée desi premiers produits dePr .
Q15. Justifier la terminaison de l'algorithme associé à la relation de récursivité précédente, sachant que la première valeur donnée pour
Q16. Définir une fonction Max ayant pour arguments deux réels et renvoyant le maximum parmi ces deux valeurs. Il est interdit d'utiliser la fonction max prédéfinie dans Python.
Q17. En vous basant sur la relation (3), compléter la définition de la fonction récursive recur ayant pour arguments les listes de poids et de valeurs P et V , un indice
Q18. Donner une série d'instructions utilisant la fonction recur et permettant de déterminer le profit de la sous-partie I.1.
I. 4 - Amélioration de la méthode récursive
Q19. Donner l'instruction permettant de créer le tableau Memoire initialisé avec des coefficients égaux à -1 , en supposant Pmax et
-
P_(max) = 8 ; - Memoire un tableau de taille
5 × 9 ;
et en exécutant recur2 (P, V , len(P) , Pmax, Memoire), on obtient alors la valeur 7.
Partie II - Données liées aux livraisons conservées par l'entreprise
La table livraison constituée des champs suivants :
- date : date de la livraison au format "jj-mm-aaaa" (chaine de caractères);
- heure : heure de la livraison au format : "hh-mm-ss" (chaine de caractères);
- id_client : identifiant du client recevant la livraison (entier);
- id_local: identifiant du local de l'entreprise (entier compris entre 1 et 20).
- id : identifiant du client (entier);
- zone : entier compris entre 1 et 30.
- id : identifiant du local (entier compris entre 1 et 20);
- zonel : entier;
- zone2 : entier;
- zone3 : entier.
Q22. Écrire une requête SQL permettant d'obtenir les identifiants des clients livrés le 10 janvier 2021.
Q24. Écrire une requête SQL permettant de compter le nombre de livraisons effectuées le 3 février 2021 par des camions dont les locaux ne livrent que dans des zones possibles inférieures ou égales à dix.
Afin de retrouver l'identifiant de chaque client à l'aide de son code binaire, la fonction suivante est proposée :
def Identifiant(Bin):
,''Bin est est une chaine de caractères
constituée de 0 et 1,''
S=0
for i in range(len(Bin)):
S=S+Bin[i]*2**(len(Bin)-i)
return S
On suppose maintenant la fonction précédente corrigée. La ligne 6 pose un problème de complexité : à chaque itération de boucle, la puissance de 2 est recalculée entièrement.
FIN

Document Réponse
Optimisation de rendement d'une entreprise de livraison
Cargaison maximisant le profit:
Profit maximal :
def ListeProduits(n) :
def Ratio(P,V) :
Q6
Valeur de L après chaque itération :
Q7
Complexité dans le pire des cas :
Complexité dans le meilleur des cas :
Justifications :
def Inverse(L) :

Q11
def Tri2(P,V) :
Q12
def Vmax(P,V,Pmax) :
P2,V2=Tri2(P,V)
SP=0
SV=0
i=0
while
SP=SP+P2[i]
SV=SV+V2[i]
i=i+1
return
Q13
Commentaire :
Q14
Justification pour
Justification pour
Q15
def
def
if
return
if
return
else :
.jpg)
Q20
Q20
def recur2(P,V,i,w,Memoire) :
if i==0:
return 0
if Memoire[i][w]>-1:
return
if P[i-1]>w:
Memoire[i][w]=recur2(P,V,i-1,w,Memoire)
return Memoire[i][w]
else:
if Memoire[i-1][w]==-1:
Memoire[i-1][w]=
if
Memoire[i-1][w-P[i-1]]=recur2(P,V,i-1,w-P[i-1],Memoire)
a=max(Memoire[i-1][w],V[i-1]+Memoire[i-1][w-P[i-1]])
Memoire[i][w]=a
return
Q21

........................................................................................
def Identifiant2(Bin) :
Questions fréquentes
3 questionsSur quels chapitres porte le sujet d'informatique commune TSI 2021 du concours CCINP ?Afficher ou masquer la section
Questions fréquentes
3 questionsSur quels chapitres porte le sujet d'informatique commune TSI 2021 du concours CCINP ?
Le sujet couvre la manipulation de listes et de chaînes de caractères, la complexité et la terminaison d'algorithmes, les tris, la récursivité, ainsi que les bases de données et le SQL.
Quelles erreurs le jury a-t-il le plus relevées sur ce sujet d'informatique TSI 2021 ?
Le jury relève surtout des erreurs de manipulation des listes (création, append, indices), une mauvaise connaissance du caractère non mutable des chaînes de caractères, et une syntaxe SQL souvent fautive.
Le sujet d'informatique commune CCINP TSI 2021 est-il accessible dès la première année ?
La partie I mobilise des notions de première année comme deuxième année (récursivité, tri), tandis que la partie II porte sur les bases de données, un thème également au programme de première année.
Pas de description pour le moment
