• Aucun résultat trouvé

Correction du sujet 0 de NSI

N/A
N/A
Protected

Academic year: 2022

Partager "Correction du sujet 0 de NSI"

Copied!
6
0
0

Texte intégral

(1)

Correction du sujet 0 de NSI

Exercice 1

Question 1

La pile Q va contenir :

Question 2

1. def hauteur_pile(P):

Q = creer_pile_vide() n = 0

while not(est_vide(P)):

n = n + 1 x = depiler(P) empiler(Q, x)

while not(est_vide(Q)):

x = depiler(Q) empiler(P, x) return n

2. Puisqu’on a empilé au moins i entiers, on peut dépiler i fois sans crainte.

def max_pile(P, i):

Q = creer_pile_vide() x = depiler(P)

empiler(Q, x) j = 1

maxi = x

for k in range(i-1):

x = depiler(P) empiler(Q, x) if x > maxi:

j = k + 2 # en effet k = 0 correspond au deuxième élément maxi = x

while not est_vide(Q):

x = depiler(Q) empiler(P, x) return j

Remarque : ma fonction ne fonctionne pas avec i = 0, mais l’énoncé ne précise pas ce qui est attendu dans ce cas. On peut rajouter if i ==0 : return en début de fonction pour éviter les plantages.

8 5 2 4

(2)

Question 3

def retourner(P, j):

Q = creer_pile_vide() R = creer_pile_vide() for i in range(j):

empiler(Q, depiler(P)) for i in range(j):

empiler(R, depiler(Q)) for i in range(j):

empiler(P, depiler(R)) Question 4

def tri_crepes(P):

n = hauteur_pile(P) for i in range(n, 1, -1):

j = max_pile(P, i) retourner(P, j) retourner(P, i)

Exercice 2

Question 1

1. Un tel chemin comprend 2 déplacements vers le bas.

2. Tous les chemins allant de (0, 0) à (2, 3) comprennent 5 déplacements (3 vers la droite, 2 vers le bas), donc 6 cases (la case initiale et une nouvelle case après chaque déplacement). Ils sont donc de longueur 6.

Question 2

Chemins possibles : 4 1 1 3 1 1 → 11 4 1 1 2 1 1 → 10 4 1 1 2 5 1 → 14 4 1 0 2 1 1 → 9 4 1 0 2 5 1 → 13 4 1 0 1 5 1 → 12 4 2 0 2 1 1 → 10 4 2 0 2 5 1 → 14 4 2 0 1 5 1 → 13 4 2 3 1 5 1 → 16

Le chemin qui permet d’obtenir la somme maximale est 4 2 3 1 5 1. Cette somme est égale à 16.

Question 3 1.

2. Pour atteindre la case (0, j) du tableau T, on vient forcément de la case (0, j-1).

Donc T’[0][j] = T[0][j] + T’[0][j-1].

Question 4

Pour atteindre la case (i, j) du tableau T, on vient soit de la case (i-1, j), soit de la case (i, j-1).

4 5 6 9 6 6 8 10 9 10 15 16

(3)

Ainsi, la somme maximale allant de (0, 0) à (i, j) s’obtient soit en passant par (i-1, j), auquel cas elle est égale à T[i][j] + T’[i-1][j], soit en passant par (i, j-1), auquel cas elle est égale à T[i][j] + T’[i][j-1].

D’où, T’[i][j] = max(T[i][j] + T’[i-1][j], T[i][j] + T’[i][j-1]) = T[i][j] + max(T’[i-1][j], T’[i][j-1]).

Question 5

1. Le cas de base est le cas : i==0 et j==0. Il renvoie T[0][0].

2. def somme_max(T, i, j):

if i==0 and j==0:

return T[0][0]

elif i==0:

return T[0][j] + somme_max(T, 0, j-1) elif j==0:

return T[i][0] + somme_max(T, i-1, 0) else:

return T[i][j] + max(somme_max(T, i-1, j), somme_max(T, i, j-1)) 3. Pour résoudre le problème initial, on appelle somme_max(T, 2, 3).

Exercice 3

Question 1

La taille de l’arbre est 9 (nombre de nœuds), sa hauteur est 4.

Puisque le sujet définit la hauteur d’un arbre avec un seul nœud comme égale à 1, on prend comme définition de la hauteur le nombre de niveaux. Ce n’est pas la définition la plus courante.

Question 2

1. D est associé à 101 et G à 1010.

2. 13 = 8 + 4 + 1 = (1101)2 C’est le numéro du nœud I.

3. Avec un niveau, les nœuds les plus bas sont numérotés sur 1 bit (un seul nœud).

Avec deux niveaux, sur deux bits, trois niveaux sur trois bits…

Avec h niveaux, ce qui correspond à un arbre de hauteur h en utilisant la convention du sujet, les nœuds les plus bas sont numérotés sur h bits.

4. Au minimum, l’arbre a un nœud par niveau (arbre filiforme), h ≤ n.

Les nœuds sont numérotés en binaire. Le nombre maximal de nœuds n correspond au plus grand numéro possible sur h bits. Il est égal à (11…1)2 = 2h – 1.

D’où h ≤ n ≤ 2h – 1.

Question 3

1. 15 A B C D E F G H I J K L M N O

2. Un nœud d’indice i a pour père le nœud d’indice j tel que i = 2 × j ou i = 2 × j + 1.

Si i est pair, on a j = i/2 et si i est impair, j = (i – 1)/2.

Dans les deux cas, l’indice du père du nœud d’indice i est i//2.

Question 4

Il me semble évident qu’on attende une recherche utilisant les spécificités de l’ABR plutôt qu’un simple parcours du tableau du type :

(4)

def recherche(arbre, element):

return element in arbre[1:]

Solution attendue :

def recherche(arbre, element):

n = arbre[0]

i = 1

while i <= n:

if arbre[i] == element:

return True

elif element < arbre[i]:

i = 2*i else:

i = 2*i + 1 return False

Exercice 4

Erreur dans l’énoncé : il est écrit que num_eleve est un entier alors que num_eleve comporte des lettres dans le tableau.

Question 1

1. num_eleve est une clé primaire et permet d’identifier chaque enregistrement de la table de manière unique.

2. INSERT INTO seconde

VALUES('133310FE', 'anglais', 'espagnol', NULL, '2A') 3. UPDATE seconde SET langue1 = 'allemand'

WHERE num_eleve = '156929JJ' Question 2

1. Cette requête renvoie la première colonne de la figure 1.

2. Le résultat renvoyé est 30 (nombre de lignes).

3. SELECT COUNT(*) FROM seconde

WHERE langue1 = 'allemand' OR langue2 = 'allemand' Question 3

1. num_eleve, clé primaire de la table eleve, est une clé étrangère de la table seconde. Cela signifie que :

• on ne pourra pas entrer dans la table seconde un identifiant num_eleve qui n’est pas dans la table eleve

• on ne pourra pas effacer un élève de la table eleve s’il apparait dans la table seconde 2. SELECT nom, prenom, datenaissance FROM eleve

JOIN seconde USING (num_eleve) WHERE classe = '2A'

Question 4

Les attributs sont des chaines de caractères (CHAR), y compris le code postal car un type entier ne mémoriserait pas le 0 dans 02800 par exemple.

La jointure s’effectue avec les autres tables en utilisant la clé primaire num_eleve.

(5)

coordonnees

num_eleve (clé primaire) adresse

code_postal ville

adresse_mail

Exercice 5

Question 1

1. D’après la table de routage du routeur A, le paquet doit être d’abord envoyé au routeur C. La table de routage du routeur C indique qu’il faut l’envoyer au routeur F. Le routeur F envoie directement le paquet au routeur G. D’où le trajet : A – C – F – G.

2. On commence par compléter les destinations accessibles en un saut (deux dernières lignes), puis en deux sauts, … Pour les destinations A et C, on peut passer indifféremment par E ou F.

Table de routage du routeur G Destination Routeur suivant Distance

A F 3

B E 3

C F 2

D E 2

E E 1

F F 1

Question 2

Même démarche qu’à la question précédente.

Table de routage du routeur A Destination Routeur suivant Distance

B B 1

D D 1

E D 2

F D 4

G D 3

Question 3 1. 10×10108 9= 0,01

Le coût de la liaison entre les routeurs A et B est bien égal à 0,01.

2. 5 =10𝑑𝑑8 donne 𝑑𝑑 =1058 = 20 × 106

Le débit de la liaison entre B et D est de 20 Mb/s.

Question 4

On calcule les coûts de toutes les liaisons et on les reporte sur le graphe du réseau.

Ensuite, on peut voir rapidement que le chemin le moins couteux est : A – D – E – G avec un coût de 1,011.

A B

C D

F E

G

0,01 0,01 5

0,001 10

1

1 1

2

(6)

En effet, si on passe par C au départ de A, le coût est déjà de 10.

On passe donc par D. La liaison directe est moins couteuse que la liaison via B.

Depuis D, on rejoint inévitablement E.

Ensuite, on vérifie que la liaison E – G est moins couteuse que E – C – F – G.

Autre méthode : algorithme de Dijkstra.

Étape

précédente A B C D E F G

0 ∞ ∞ ∞ ∞ ∞ ∞

A(0) 0,01 10 0,01 ∞ ∞ ∞

B(0,01) 10 0,01 ∞ ∞ ∞

D(0,01) 10 0,011 ∞ ∞

E(0,011) 2,011 ∞ 1,011

G(1,011)

(inutile de continuer)

Références

Documents relatifs

Établissement : Lycée Paul Guérin, Niort (79). Encadrés par : Fabien AOUSTIN, Thomas FORGET. Chercheur : Abdallah EL HAMIDI, Laboratoire des Sciences de l’Ingénieur

Stop Internal Processor Clock, Clear I-Bit in CCR Stop External Oscillator, Stop Internal Timer Clock, and Reset Start-Up Delay. IRQ or

Cette édition numérique a été réalisée à partir d’un support physique parfois ancien conservé au sein des collections de la Bibliothèque nationale de France, notamment au titre

On tire maintenant 2 jetons sans les remettre dans le sac2. Calculer la probabilité des

 Verse dans la burette la solution de thiocyanate de potassium : Cette solution a pour but, en milieu acide, de former un complexe coloré rouge orangé avec les ions fer III. Fe 3+

La critique visée n’est pas celle qui, sans raison, décide de rejeter, mais celle qui considère chaque connaissance apparente comme telle, et conserve ce qui semble encore

Dans ce cas on calcule la somme en additionnant la valeur de la case en question avec le résultat de somme_max avec comme argument T et la case précédente (sur la ligne si i=0 ou

L’esprit scientifique ne se produit, ni ne produit son objet, dans l’éclair d’une intuition immédiate; pas plus qu’il nel’instaure sous le coup d’une