Tutorat en bio-informatique

publicité
Tutorat en bio-informatique
Vos tuteurs : Cedric Roux et Daniel Jimenez
Aujourd’hui
• Questions pour vous
• Algorithmes de recherche dans un tableau
• Algorithmes de tri dans un tableau
Vos intras!?
Algorithmes
• Algorithme: Processus logique permettant la résolution d’un problème.
Algorithmes
• On évalue la performance d’un algorithme en évaluant son temps
d’exécution dans le pire cas
• Le meilleur cas ne se produit pratiquement jamais…
• Le moyen cas est souvent difficile à calculer
• L’analyse du temps d’exécution dans le pire cas nous donne la garantie que
l’algorithme ne pourra être plus lent peu importe ce qu’on lui donne en
entrée
Algorithmes
• Soit T(n) la fonction qui définie les opérations effectuées par l’algorithme sur
n, le nombre d’entrées. On dira que:
T(n) = O( f(n) )
• Si pour des constantes positives c et n0 , on a T(n) <= cf(n) quand n>=n0
Algorithmes
f(n)
Temps
c
constant
log n
logarithmique
n
linéaire
n log n
nlogn
n2
quadratique
n3
cubique
2n
exponentiel
n!
factoriel
Recherche dans un tableau non trié
•
On doit parcourir toutes les position du tableau jusqu’à ce qu’on trouve l’élément
recherché (recherche directe)
Function rechercheDirection(tab, element) {
for(var i = 0; i < tab.length; i++){
if(tab[i] == element) return i;
Pire cas: O(n)
}
return -1
}
Recherche dans un tableau trié
•
On peut parcourir toutes les positions du tableau jusqu’à ce qu’on trouve l’élément recherché ou qu’on
dépasse la valeur de l’élément recherché s’il n’est pas présent dans le tableau (recherche linéaire)
function rechercheLineaire(tab, element){
for (var i = 0; i element < tab.length; i++)
if(tab[i] == element) return i;
else if(tab[i] >element) return -1;
}
return -1
}
Pire cas: O(n)
Indentation
• C’est le fait de mettre des tabulations pour différencier les niveaux dans le
code.
• On change de niveau lorsqu’une partie du code est à l’intérieur de quelque
chose d’autre (comme ce qu’on écrit à l’intérieur d’un if)
• A chaque fois qu’on utilise des accolades, on indente le code qui se trouve
entre les deux.
Indentation
• Les accolades sont des séparateurs qui indiquent que les lignes de code
situées à l’intérieur appartiennent à l’élément qui précédait l’accolade
ouvrante.
• Les accolades ne sont pas seulement employées avec les if et les else! On les
retrouve aussi dans les boucles, les fonctions et les objets.
Les boucles
• On se sert des boucles lorsqu’on veut que le programme fasse plusieurs fois
la même action (la même partie de code)
• Elles nous permettent donc de réduire grandement le nombre de lignes de
notre programme
Les boucles
• Exemple en bio-informatique - On souhaite calculer le pourcentage de A
dans cette sequence: AGCTAAGTACAAAGTAACAG
var sequence = ‘AGCTAAGTACAAAGTAACAG’;
var seqLength = sequence.length;
var nbA = 0;
var nucleo;
Les boucles
AGCTAAGTACAAAGTAACAG
var idx = 0 ; // initialisation d’un compteur
if (idx < seqLength) {
nucleo = sequence.charAt(idx);
if (nucleo == ‘A’)
nbA++;
}
idx++; // nbA = 1
…
Algorithmes de tri
• La meilleure façon de trier un tableau est de séparer notre tableau en 2
parties: une parties triée et une parties non triée
• Il n’y aurait aucun avantage à créer un deuxième tableau: cela nécessiterait
plus d’espace et plus d’opération
Les boucles for
• Le type de boucle que vous allez vous servir le plus souvent!
• Dans la déclaration d’une boucle for, on initialise un compteur dont la valeur
change à la fin de chaque itération tant qu’une certaine condition sera vraie.
Les boucles for
for (var i = 0; i < 5 ; i ++)
• Initialisation d’un compteur (une variable)
• La condition
• Permet au compteur de changer à la fin de l’itération
Les boucles for
•
Retour sur notre exemple. Ce code contient une erreur de logique et une ligne
inutile. Trouvez les!
AGCTAAGTACAAAGTAACAG
for (var i =0 ; i <= seqLength; i ++) {
nucleo = sequence.charAt(i);
if (nucleo == ‘A’)
nbA++;
}
Petite videos pour vous aider
• Tri par sélection: https://www.youtube.com/watch?v=Ns4TPTC8whw
• Tri par insertion: https://www.youtube.com/watch?v=ROalU379l3U
• Tri bulle: https://www.youtube.com/watch?v=lyZQPjUT5B4
Téléchargement