Lycée Victor Hugo IPT 2eannée 2016-17
Lesalgorithmesàconnaitre
Informatiquepourtous
Deuxièmeannée
2016-2017
Utilisation du polycopié : l’objectif de ce polycopié est de vérifier que vous
maitrisez les algorithmes au programme. Attention : ce n’est pas tout le cours
d’informatique. Munissez-vous d’une feuille et d’un sytlo puis commencez par lire
la table des matières. Pour chaque algorithme :
Donnez-en une description succinte en français. Forcez-vous à l’écrire en toute
lettre.
Traduisez ce qui vous avez écrit en langage Python.
Donnez une estimation de la complexité de l’algorithme.
Si vous butez sur une de ces étapes, alors seulement, vous irez lire la partie cor-
respondante.
Table des matières
I Recherches et calculs dans une liste 2
1 Recherched’unélémentdansuneliste. . . . . . . . . . . . . . . . . . 2
2 Rechercheduminimumdansuneliste . . . . . . . . . . . . . . . . . . 2
3 Calculdelavaleurmoyenneetdelavarianced’uneliste . . . . . . 2
4 Recherchedichotomiquedansunelistetriée . . . . . . . . . . . . . . 3
5 Recherchedemotifsdansunechaînedecaractères . . . . . . . . . . 4
II Pivot de Gauss 4
1 Échelonnementdusystème. . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Réductiondusystème............................ 5
3 Implémentation................................ 6
III Recherche des zéros d’une application 8
1 Dichotomie.................................. 8
2 MéthodedeNewton............................. 9
IV Intégration numérique 10
1 Méthodedesrectangles.......................... 10
2 Méthodedestrapèzes............................ 10
V Résolution d’équation différentielle 10
1 Équationdifférentielled’ordre1. . . . . . . . . . . . . . . . . . . . . . 10
2 Équationsdifférentiellesd’ordre2. . . . . . . . . . . . . . . . . . . . . 11
VI Algorithmes de tris 12
1 Letriparinsertion.............................. 12
2 Letrifusion.................................. 12
3 Letriquicksort(outrirapide) . . . . . . . . . . . . . . . . . . . . . . . 13
1
Lycée Victor Hugo IPT 2eannée 2016-17
I Recherches et calculs dans une liste
1 Recherche d’un élément dans une liste
SoitLunelisted’éléments:chaqueélémentdeLpeutêtreaccédéparsonindice
iJ0,n1K.Ainsi:L[i] représentel’élémentd’indicei.Onveutsavoirsiunobjet
xestélémentdeL.Pourcela,onpeutparcourirtoutelalisteettestersil’élément
d’indiceiestégalàx.Cettealgorithmepossèdeunecomplexitétemporellelinéaire.
VoiciunexempledefonctionquirenvoieTrue ouFalse selonquexappartientou
nonàL.OnsupposequeLcontientaumoins1élément.
def ap par ti ent _i nit (a , liste ):
" fonctio n bool é enne testant si un élé ment x est dans
une liste L donn é e"
res = False
for jj in ra nge (len ( liste )):
if list e [ jj ] == a :
res = True
return res
Uneversionrécursive(decomplexitélinéaire)seraitlasuivante:
def appartient_rec(x,L):
" fonctio n bool é enne r é cursive testant si un élé
ment x est dans une liste L donn ée "
n = len(l)
if n == 0:
return False # x n est pas dans la liste
Vide
else:
return x == L [0] or a pp ar ti en t_i ni t ( x ,L [1 :] )
Remarque : Lafonctionin dePythonpermetégalementdesavoirsiélément
appartientàuneliste:
def appartient_bis(x,L):
return(x in L)
Néanmoins,sidansunsujetdeconcoursdeonvousdemanderdecoderlare-
cherched’unélémentdansunelistecen’estsansdoutepascetteméthodequiest
attendue.
Script 1 H
Programmer deux fonctions (itératives et récursives) recherche_occurence
(x,L) et recherche_occurence_rec(x,L) qui renvoient le nombre d’occu-
rences de la valeur xdans une liste L.
2 Recherche du minimum dans une liste
OnsupposequelesélémentsdelalisteLobéissentàunerelationd’ordretotal.
Pourtrouverlepluspetitélément,l’idéeestdecréerunevariablemin_potentiel
correspondantpotentiellementauminimumetvalantinitalementL[0].Puis,on
parcourtlalisteetonmodifiemin_potentiel àchaquefoisqu’ontrouveunélément
quiluiestpluspetit.Voiciunexempledefonctionquirenvoielepluspetitélément
d’unelisteainsiquesonindice.OnsupposequeLcontientaumoins1élément.
def minimum (L) :
min_pot = L [0]
ind_pot = 0
for iin r ange (len(L)) :
if L [i] < min_pot : # on trouv é un élé ment
plus petit que le minimum potent iel
min_pot = L [i]
ind_pot = i
return( min_pot , in d_pot )
Script 2 H
Programmer une fonction récursive max_rec(L) qui renvoie le maximum
d’une liste et son indice.
3 Calcul de la valeur moyenne et de la variance d’une liste
Rappels : OnconsidèreunelistedeNréelsx1, x2,..., xNlavaleurmoyennem
etlavariancesontdéfiniespar:
2
Lycée Victor Hugo IPT 2eannée 2016-17
m=1
N
N
X
i=1xiet V=1
N
N
X
i=1(xim)2
Endéveloppantleterme(xim)2,onmontrequeV=1
NPN
i=1xi2m.
Voiciunefaçondecalculerlamoyenne(fonctionmoyenne(L))etlavariance(
fonctionvariance(L))d’unelisteLdonnéeenargument.
def moyenne (x) :
somme =0
for iin x :
somme += i
return somme / len(x)
def variance (x ):
xmoy = moyenn e (x )
ecartcarr e =[]
for iin x :
ecartcarr e . append ((i- xmoy ) **2)
return moyenne ( ecartcarr e )
Remarque :le modulenumpy possèdedesfonctionsmean et var calculantla
moyenneetlavariance.
Script 3 H
Programmer une fonction kurtosis(L) qui renvoie le kurtosis de L, défini
par K=1
N
N
X
i=1xim
V4
4 Recherche dichotomique dans une liste triée
SoitLunelistedenombrestriésparordrecroissant.Onveutsavoirsiunnombre
xappartientàcettelisteenutilisantleprincippededichotomiesuivant,ennotant
L[debut,fin] lasous-listedeLcommençantàl’indicedebut etfin :
– Oncalculem=E(debut +fin
2),lemilieudelasous-liste.
– Six=L[m]onatrouvéx
– Sinon,six < L[m]alorsilfautchercherxentredebut etm.
– Sinon,six > L[m]alorsilfautchercherxentremetfin.
– Onitèreceprocessusjusqu’àcequedebut =fin
Lacomplexitéd’untelalgorithmeestlogarithmique.Unepossibilitédecodeitératif
estlesuivant:
def re cherche_d icho_it (L ,p, q x) :
’ ’ R ech er ch e par di ch ot om ie d ans la li st e tr i ée L , l
é lé ment x entre les indices p et q. ’
min = p
max = q
whi le min <= max :
m=(min +max) //2
if x == L [m] :
return True
elif x < L [ m] :
max = m -1
else :
min = m +1
return False
Unepossibilitédecoderécursifestlesuivant:
def ap pa rti en t (x , L ):
" fonctio n bool é enne ef ficace testant si un élé
ment est dans une liste tri é e par ordre
croissa nt donn é e"
n = len (L)
if n == 0:
return False # a n est pas dans la liste
Vide
elif n == 1:
return x == l [0] # si la liste n a qu un élé
ment , on teste si a est cet élé ment
else:
m=n //2
3
Lycée Victor Hugo IPT 2eannée 2016-17
if x == l[ m ]:
return True
elif a < l [m ]:
return ap pa rti en t (a , l [: m ])
else:
return ap pa rti en t (a , l [m +1 :] )
5 Recherche de motifs dans une chaîne de caractères
Soitdeuxchaînesdecaractères:texte detaillenetmotif detaillep<n.On
veutsavoirsimotif apparaîtdanstexte.Lefaçon«naïve»delefaireconsisteà
faireglisserlemotif lelongdetexte etdevérifiers’ilyacoïncidencecaractère
par caractère. Par exemple, on cherche si aime est dans la phrase LVH aime
Python.
Première itération :
indices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
texte L V H a i m e P y t h o n
motif a i m e
Leadeaime n’estpaségalauLdeLVH.Ondécalelemotifd’uncranàdroite.
Cinquième itération :
indices 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
texte L V H a i m e P y t h o n
motif a i m e
Toutesleslettresa, i, m etecoïncident,onatrouvélemotif dansletexte.Cette
algorithmepossèdeunecompléxitélinéaireenn+p.
VoiciunefaçondetraduirecetalgorithmeenlangagePython.
def re che rc he ( texte , motif ) :
n = len( texte )
p = len( motif )
res = False
for iin r ange ( n -p +1) :
j=0
whi le ( j < p ) and ( texte [i+j ] == motif [j]
) :
j += 1
if j == p :
res = True
return Res
Script 4 H
Modifier cette algorithme pour compter le nombre d’occurence d’un mot dans
un texte.
II Pivot de Gauss
Laméthode dupivotde Gausspermet derésoudreunsystème linéaireden
équationsetninconnues.
Unsystème linéaire denéquationsàninconnuess’écritsouslaformesuivante:
(S):
a1,1x1+··· +a1,n xn=b1
···
an,1x1+··· +an,n xn=bn
Avec,(i,j)J1,nK:
ai,j :lescoefficientsdusystème(S),
xi:lesinconnuesdusystème(S),
bj:lessecondsmembresdusystème(S).
Lesystèmed’équationslinéaires(S)peutsemettresousécriture matricielle :
(S)AX =B
avec A=
a1,1a1,2··· a1,n
a2,1a2,2··· a2,n
··· ··· ··· ···
an,1an,2··· an,n
,X=
x1
x2
···
xn
et B=
b1
b2
···
bn
Larésolutiondusystèmed’équations(S)parlaméthodedupivot de Gauss se
décomposeendeuxgrandesétapes:
4
Lycée Victor Hugo IPT 2eannée 2016-17
1. échelonnement du système (descente),
2. réduction du système (remontée).
Cesdeuxétapesd’échelonnementetderéductiondusystèmesontréaliséesen
effectuantdesopérations élémentaires sur les lignes, ce qui correspond à des
opérationssurleséquations:
– multiplicationd’uneligneparunscalairenonnul(LiλLi)avecλ6=0,
– ajoutdeλLiàLjLjLj+λLiaveci6=j,
– échangedelignesLiLj.
Chaqueopérationélémentaireétantinversibleparuneopérationélémentaire(de
mêmetype),lesystème(S)et toutsystème(S’)obtenuàpartirde (S)àl’aide
d’opérations élémentaires sur les lignes, sont équivalents et admettent donc les
mêmessolutions.
Effectuerdesopérationssurleslignesdusystème(S)revient àeffectuerces
mêmesopérationssurleslignesdelamatriceAetduvecteurB.Plutôtqued’effec-
tuerchaqueopérationélémentairesurApuissurB,lesopérationsseronteffectuées
uneseulefoissurunematricequel’onnommematriceaugmentéedusystème(S).
Lamatriceaugmentéedusystème(S)estlamatricenotée(A|B):
(A|B)=
a1,1a1,2··· a1,n b1
a2,1a2,2··· a2,n b2
··· ··· ··· ··· ···
an,1an,2··· an,n bn
SilamatriceAdusystèmeestinversible(systèmedeCramer)alorslesystème
(S)AX =BadmetdoncuneuniquesolutionX=A1B.Danslecascontraire,
nouspréciseronscequipermetderepérerquelamatriceAn’estpasinversibleau
coursdudéroulementduprogramme.
1 Échelonnement du système
1. Premièreétape:
(a) Onsupposequelepremiercoefficientdelapremièreligneestnonnul
(a1,16=0,quitteàéchangerdeuxlignes).Cepremiercoefficientnonnul
s’appellelepremierpivot.
(b) OneffectuedesopérationsLiLi+λL1pouriallantde2àndemanière
àfairedisparaîtrex1deséquations2àn.
2. Deuxièmeétape:Onrecommencelesétapes(a)et(b)avecleslignes2ànet
l’inconnuex2(oncherchedoncunpivotsurla2ième colonnedansleslignesL2
àLn).
3. Étapessuivantes,jusqu’àla(n1)ième étape:Onrecommenceleprocessus
afind’obtenirunematriceéchelonnée(laième étapeconsistantàchercherun
pivotsurlaième colonnedansleslignesLiàLn).
Àl’issuedecesopérations,onaboutitàunematriceaugmentéeéchelonnéedu
type:
(A|B)0=
a0
1,1a0
1,2··· a0
1,n1a0
1,n b0
1
0a0
2,2··· a0
2,n1a0
2,n b0
2
0 0 ··· a0
3,n1a0
3,n b0
3
··· ··· ··· ··· ··· ···
0 0 ··· 0a0
n,n b0
n
Cas d’une matrice Anon inversible : s’il n’est pas possible de trouver un
pivot(nonnul)surlaième colonnedansleslignesLiàLn,lamatriceAn’estpas
inversible,oninterromptl’algorithmeetonretourneunmessaged’erreur.
2 Réduction du système
1. ParmultiplicationdechaqueligneLipar 1
a0
i,i ,onchangelavaleurdespivots
en1.
2. Ladernièrelignedonnealorslavaleurdexn.Onutiliselepivotvalant1sur
ladernièreligneetladernièrecolonnepouréliminerxndeséquationsL1à
Ln1pardesopérationsdelaformeLiLi+λLj.
3. LaligneLn1donnealorslavaleurdexn1.Onutiliselepivotvalant1en
position(n1,n 1)pouréliminerxn1deséquationsL2àLn2.
4. Onfaitdemêmejusqu’àlaligneL2.
5
1 / 13 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !