Algorithme de recherche

publicité
PROSIT retour
Prosit Retour : Quelle galère
Rôle :
1
Scribe : Mathieu S.
Intendant : amandine
Secrétaire : Joris
Animateur : Mathieu (gné gné)
Mots-clés :
-
Algorithme :
On désigne par algorithmique ou algorithmie l’ensemble des activités logiques qui relèvent des
algorithmes. Dans le cas général, l’algorithmique s’effectue au moyen de calculs.
-
Classeur : HS.
Algorithme de Tri :
En informatique ou en mathématiques, un algorithme de tri est un algorithme qui permet
d'organiser une collection d'objets selon un ordre déterminé.
-
Automate :
Un automate est un disposotif se comportant de manière automatique c’est a dire sans intervention
humaine.
Algorithmique
Page 1
PROSIT retour
-
Programme informatique :
Un programme informatique est une succession d'instructions exécutable par l'ordinateur.
-
Données :
Informations utilisées par un logiciel. Elles peuvent être créées par l'utilisateur ou par le programme
lui-même.
Axes de recherche :
Etudier les algorithmes de trie et leurs contextes
Algorithme de permutation
échanger(tableau T, entier i, entier j)
début
entier M
M<-T(i)
T(i)<-T(j)
T(j)<-M
fin
Deux catégories de trie :
-
Elémentaire
Avance
Algorithmique
Page 2
2
PROSIT retour
Algorithme de tri à bulle
tri_bulle(tableau T)
debut
entier longueur, i
booleen inversion
longueur<-taille(T)
3
faire
inversion=faux
pour i=0 à (longueur-1)
si T(i)>T(i+1)
echanger(T,i,i+1)
inversion<-vrai
fin si
fin pour
tantque inversion
fin
Algorithme récursif !
Algorithmique
Page 3
PROSIT retour
Algorithme de tri par séléction
4
tri_selection(tableau T)
debut
entier longueur, maxi, i
longueur<-taille(T)
tantque(longueur>0) faire
//recherche de la position du plus grand élément dans le tableau
non encore trié
maxi<-0;
pour i de 1 à (longueur-1) faire
si T(i)>T(maxi) alors
maxi<-i
fin si
fin pour
//echange du plus grand élément avec le dernier
echanger(T,maxi,longueur-1)
//traitement du reste du tableau
longueur<-longueur-1
fin tantque
fin
Algorithmique
Page 4
PROSIT retour
Algorithme de Tri par insertion
tri_insertion(tableau T)
debut
entier longueur, i, memoire, compteur;
booleen marqueur;
5
longueur<-taille(T)
pour i=1 à (longueur-1) faire
memoire<-T(i) //valeur à insérer au tour i
compteur<-(i-1)
faire
marqueur=faux //on n'a pas fait de décalage
si T(compteur)>memoire alors
T(compteur+1)<-T(compteur) //décalage des plus grandes
valeurs du tableau
compteur<-compteur-1
marqueur=vrai //on vient de faire un décalage
fin si
si (compteur<0) alors //on a atteint la premiére valeur du tableau
marqueur=faux //il n'y a plus de décalages possibles
fin si
tantque marqueur
T(compteur+1)<-memoire //affectation de la valeur à insérer dans la
bonne case
fin pour
fin
Algorithmique
Page 5
PROSIT retour
Algorithme de tri Shell
tri_shell(tableau T)
début
entier longueur, n, i, j, valeur;
6
longueur<-taille(T)
n<-0;
tantque n<longueur faire
n<-(3*n+1) //calcul du plus grand décalage possible
fin tantque
tantque n != 0 faire //tant que le décalage possible est non nul
n<-(n/3)
pour i=n à longueur-1 faire
valeur<-T(i) //valeur à décaler (éventuellement)
j<-i
tantque (j>n-1) et (T(j-n)>valeur)
T(j)<-T(j-n) //décalage des valeurs avec un pas de n
j<-j-n
fin tantque
T(j)<-valeur
fin pour
fin tantque
fin
Algorithmique
Page 6
PROSIT retour
Algorithme de tri fusion
Le tri fusion est construit suivant la stratégie "diviser pour régner", en anglais "divide and conquer".
Le principe de base de la stratégie "diviser pour régner" est que pour résoudre un gros problème, il
est souvent plus facile de le diviser en petits problèmes élémentaires. Une fois chaque petit
problème résolu, il n'y a plus qu'à combiner les différentes solutions pour résoudre le problème
global. La méthode "diviser pour régner" est tout à fait applicable au problème de tri : plutôt que de
trier le tableau complet, il est préférable de trier deux sous tableaux de taille égale, puis de fusionner
les résultats.
7
Algorithme de tri DICHOTOMIQUE
Trouve une valeur pivot, ensuite il tri les valeurs de part et d’autres du pivot !
Algorithme de tri Arbre binaire
Pas utilisée  OSEF !
Algorithme de tri indirect
Pas utilisée  OSEF !
Algorithme de tri casier
Que pour les entiers
Algorithme de tri Batcher
Trop chaud on zappe !
Algorithme de recherche
Recherche linéaire ou séquentiel
//plus simple, mais très long !
Fonction : Recherche_Linéaire( tableau T[], entier v) : entier
debut
//Sortie : 1ère position de v dans T ou (-1) si v n’est pas dans T
Entier Pos <-- 0
Tant que pos < taille T et T(pos) != v faire
Pos <-- pos + 1
fin tant que
si pos >= taille T
alors retourner -1
Algorithmique
Page 7
PROSIT retour
sinon retourner pos
fin si
fin
Recherche dichotomique
Le tableau doit avoir été trié !!! Divise le tableau en sous tableau !
Principe : on regarde l'élément au milieu de la liste.
- si sa clé est égale à la valeur cherchée, c'est gagné
- si sa clé est inférieure à la clé cherchée, il ne reste à traiter que la moitié droite de la liste
- si sa clé est supérieure à la clé cherchée, il ne reste à traiter que la moitié gauche de la liste
On continue ainsi la recherche en diminuant à chaque fois de moitié le nombre d'éléments de la liste
restant à traiter.
Remarque : cette méthode n'est pas du tout adaptée à une implémentation chaînée puisqu'il n'y a
pas d'accès direct au k-ème élément.
Version récursive :
Fonction : Recherche (element X,liste L) : booléen
début
retourner Recherche-aux(X, L, 1, longueur(L))
fin
Fonction : Recherche-aux(élément X, liste L, entier début, entier fin)
:booléen
Entier rang milieu, élément e
début
si début =< fin
alors
milieu <-(fin+début)/ 2
e <- ieme(milieu, L)
si éléments_égaux(X, e)
alors
// on a trouve l'élément
retourner VRAI
sinon
si element_inferieur(X, e)
alors
// il est peut être dans la moitie gauche
retourner Recherche-aux(X,L, début ,milieu-1)
sinon
// il est peut être dans la moitie droite
retourner Recherche-aux(X, L, milieu+1, fin)
finsi
finsi
sinon
// la liste a traiter est vide
retourner FAUX
finsi
fin
Algorithmique
Page 8
8
PROSIT retour
Recherche auto-adaptive //tableau trié
Spécifique à un domaine
On zappe !
Recherche par interpolation //tableau trié
Spécifique à un domaine
On zappe !
Méthode de Hachage // tableau trié
Spécifique à un domaine
9
On zappe !
La théorie des automates
Machine prenant en entrée des propositions quelconques et ressortant une valeur en sortie (Vrai ou
Faux) en fonction de ce qu’attend la machine en sortie (évaluation).
1+1= 3 FAUX calcul (sémantique) mais VRAI syntaxiquement
1+1=2 VRAI calcul et VRAI syntaxiquement
++1+3=4 Faux syntaxiquement, VRAI calcul
/ ! \ A revoir les automates déterministe et non-déterministe ! / ! \
Hypothèses : Hey baby !
-
Vrai. Il existe différent algorithme de tri/recherche
Vrai. Il faut un tableau pour effectuer un tri/recherche (pas obligatoire !)
Faux. L’algorithme de tri dépend de l’algorithme de recherche
Faux. Un algo. Fonctionne comme un automate
Vrai. L’algo de tri/recherche varie selon les données.
La petite brise la glace. Gné ?
Google ils aiment bien traduire ! oO
Algorithmique
Page 9
Téléchargement