Question 16, 17, 18 de l'examen de 2017

Question 16, 17, 18 de l'examen de 2017

by Juliette Alice Eve Bécart Bechmann -
Number of replies: 3


Bonjour,

Dans un tel algorithme, est-ce qu'on effectue la première récursion en entier, puis on effectue la seconde sans repasser une seule fois par la première ? (C'est ce que j'ai tenté et je n'ai pas réussi) En gros les deux se font indépendamment puis leur résultat s'additionne … Si jamais c'est le cas, comment se fait-il qu'à la fin L[v]= L[u] = x= 33 (selon le corrigé) ? 

Ou bien les deux récursions se font-elles en parallèle, une étape de l'une se faisant en même temps qu'une étape de l'autre ? Je ne comprend alors pas non plus comment obtenir L[v]= L[u] = x= 33 ...

Ou bien y-a-t-il une tout autre méthode ?

En bref je n'ai pas compris le fonctionnement de cet algorithme et j'aurais besoin d'explications….

Merci d'éclairer ma lanterne.


In reply to Juliette Alice Eve Bécart Bechmann

Re: Question 16, 17, 18 de l'examen de 2017

by Sébastien Dévaud -


voici le début de l'arbre, mais je trouve qu'il est plus facile de comprendre l'algo et de la faire sois-même, que de faire l'arbre en entier. Je pense que l'indice pour le comprendre est l'incrémentation L(v)=x, qui permet de savoir c'est un nombre (1,2,3...) qui sort de l'algo, et non la liste. Ce qui permet de déduire que c'est combien de fois x qui apparait dans l'intervalle u et v


J'éspère pas avoir dit de bétise et que ça a put aider

In reply to Juliette Alice Eve Bécart Bechmann

Re: Question 16, 17, 18 de l'examen de 2017

by Thomas Gabriel Marie De Boissonneaux De Chevigny -
Bonjour,

L'idée est d'abord d'effectuer la première récursion d'abord puis la deuxième. Mais bon ici cela a peu d'importance puisqu'à la fin on somme tous les résultats. 
Une manière de s'aider à représenter l'exécution est de décomposer les différentes "couches" de récursion sur une feuille de papier (il y en a 4 ici, il faut juste faire attention aux valeurs de u et v qui changent). 
Quand arriveront des itérations avec u et v identiques, l'algorithme renverra 1 si L[u] (donc L[v] aussi) = x et 0 sinon, de manière à compter le nombre d'occurrences de x dans la liste L.  On obtient u=v au bout de chaque branche de récursion (sinon la récursion continue) et cela se répercute sur le résultat final grâce à l'addition en sortie de l'algorithme.
u et v servent en fait à délimiter les indices de L sur lesquels on effectue la recherche, délimitation qui se réduit à chaque nouvelle "couche" de récursion.

J'espère que j'ai répondu à tes questions, sinon n'hésite pas à demander la clarification de certains points.
In reply to Thomas Gabriel Marie De Boissonneaux De Chevigny

Re: Question 16, 17, 18 de l'examen de 2017

by Juliette Alice Eve Bécart Bechmann -

Merci à vous deux pour les réponses !

J'ai réussi à exécuter l'arbre et je comprend mieux le résultat (et j'ai enfin compris quand est-ce que la complexité d'un algorithme pouvait être exponentielle YES !)

J'en déduis aussi que chaque branche de l'arbre ne s'arrête que quand elle produit un résultat qui est ici, soit 0 soit 1. 

Bonne soirée :-)