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

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

par 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

par 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

par 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

par 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 :-)