• Aucun résultat trouvé

14févie2008 É ieS Bi Uiveiédei eShia Ai

N/A
N/A
Protected

Academic year: 2022

Partager "14févie2008 É ieS Bi Uiveiédei eShia Ai"

Copied!
37
0
0

Texte intégral

(1)

Liene 2MASS - Algorithmique etInformatiqueThéorique

Sébastien Verel

vereli3s.unie.fr

www.i3s.unie.fr/

verel

ÉquipeSoBi-UniversitédeNieSophia-Antipolis

14 février2008

(2)

TDAliste

TDApileetle

Objetifs de la séane 4

onnaitre letype de donnéesabstrait liste

onnaitre letype de donnéesabstrait pileet le

ériredes algorithmesréursifs baséssur leTDA liste,en

partiulierlealul de lalongueur, l'extrationde sous-liste,la

onaténation de listes,l'ajoutet lasupressiond'éléments,

l'utilisationd'aumulateur

Question prinipaledujour :

Comment traiterlesinformationsles unes après lesautres?

(3)

TDAliste

TDApileetle

Exemples de données

Liste de tahesàeetuer:

suitenie de tahesàeetuer dansl'ordre

basede données lients:

ensemble de n-uplet (nom, ville,ahat, date,valeur)

ungenome :suessionde basesATCG

...

(4)

TDAliste

TDApileetle

Dénitions

Une Donnée

informationélémentaire de départ

Des Données

ensemble d'informationsélémentairesde départ

Traiterl'informationonsiste à:

passer d'informations,appeléesdonnées,

àd'autres informations,appeléesrésultats.

Comment aéder(lire, et)à esdonnées?

Typesde Données Abstraits(TDA)

Desriptiondes opérations surles données(et non diretementdes

(5)

TDAliste

TDApileetle

Dénitions

Struture de données

struture logiquedestinée àontenirdes données

Typesde Données Abstraits(TDA)

Desriptiondes opérations surles données(et non diretementdes

struturesde données elle-même)

Une struturede donnéesimplémente unTDA.

(6)

TDAliste

TDApileetle

Opérations sur TDA

Opérations élémentairesd'un TDA:

réation de donnéesde base

ériturede données

leture de données

Il peut y avoird'autresopérations élémentairesbiensùr

(7)

TDAliste

TDApileetle

Classiation

Il existe desTDAdontles donnéeslogiquement sontstruturéesde

manière :

linéaire/ nonlinéaire

indexée/ nonindexée

ordonnées /non ordonées

(8)

TDAliste

TDApileetle

Exemple

Listedetâhes

Aheter deseurs

Réserverunrestaurant

Erire unelettre

Aheter unebague

Dormir

Répondre àsa mère

Regarder lemagasine de voyage

Donner àmangeraux hats

Prendrel'appareilphoto

Finirle livre

Ranger lahambre

Passer hezleoieur

(9)

TDAliste

TDApileetle

Comment traiter es données?

Faire les tâheslesunes après les autres:

pas toutesen même temps...

Traitementséquentiel

Laquelle?

pas de préfèrene (ouprioritéf TP)

Lirelapremièretâhe

Construirelaliste de tâhes:

pouvoir ajouter unenouvelle tâhe àuneliste de tâhes,où?

pas de préférene :en têtede laliste

Retirerune tâhe déjàeetuée:

pourdiminuerle nombrede tâhesà faire,laquelle?

ellequivientd'êtrelue

Savoirs'ilreste unetâhe àeetuer

(10)

TDAliste

TDApileetle

Algorithme informel de traitement de tâhes

Algorithme traitement(l :listede tahes) :rien

début

sil est videalors

ne rienfaire

sinon

exéuter lapremièretâhe de l

traitementdureste dela listel

nsi

n

Remarques:

algorithmeréursif?

terminaison silaliste estde taillenie

(11)

TDAliste

TDApileetle

Plan

1

Introdution

2

TDAliste

Dénition

Algorithmes surlistes

3

TDApile etle

(12)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Dénition

Liste

Suite nie de données(appeléeaussiéléments) où ilest seulement

possible d'ajouteret de lireune donnée en têtede lasuite.

Tete Queue

...

(13)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Représentation et notation

Exemple de lalistede tâhes:notation vertiale

notation ourante deslistes(informatique) de gauheà droite.

Une listede nombres entiers:

(

12

,

34

,

3

,

45

,

7

,

90

)

Une listede mots :

(

or

,

eur

,

temps

,

patiente

,

bleus

,

diamant

)

12 et

or

sonten tête de liste

(

34

,

3

,

45

,

7

,

90

)

et

(

eur

,

temps

,

patiente

,

bleus

,

diamant

)

sontles queues

deslistes

(14)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Primitives

5 fontions primitives sontnéessairespourdénir leTDAliste:

listeVide: rien

liste

retourne lalistevide

listeCons :typeElement

×

liste

liste

ajouteun élémentde type typeElement en tête de laliste

listeTete :liste

typeElement retourne l'élémenten tête de laliste

listeQueue :liste

liste

retourne laqueue de laliste

listeEstVide?:liste

boolen

retourne lavaleur Vrai ssilaliste est vide

(15)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Exemple de listes

listeVide()retourne lalistevide :

On note

()

laliste vide

listeEstVide?(

()

):

Vrai

listeEstVide?(

(

34

,

3

,

45

,

7

,

90

)

):

Faux

listeEstVide?(listeVide()) :

Vrai

listeCons(12,

(

34

,

3

,

45

,

7

,

90

)

):

(

12

,

34

,

3

,

45

,

7

,

90

)

listeCons(

or

,

(

eur

,

temps

,

patiente

,

bleus

,

diamant

)

) :

( )

(16)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Exemples

listeTete(

(

12

,

34

,

3

,

45

,

7

,

90

)

)

12

listeTete(

(

or

,

eur

,

temps

,

patiente

,

bleus

,

diamant

)

)

or

listeQueue(

(

12

,

34

,

3

,

45

,

7

,

90

)

)

(

34

,

3

,

45

,

7

,

90

)

listeQueue(

(

or

,

eur

,

temps

,

patiente

,

bleus

,

diamant

)

)

(

eur

,

temps

,

patiente

,

bleus

,

diamant

)

(17)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Exemples de onstrution de listes

listeCons(7,listeVide()) :

(

7

)

listeCons(34,listeCons(3 ,listeCons(45,listeCons(7,

listeCons(90, listeVide()))))) :

(

34

,

3

,

45

,

7

,

90

)

(

temps

,

patiente

,

bleus

,

diamant

)

:

listeCons(

temps

,listeCons(

patiente

, listeCons(

bleus

,

listeCons(

diamant

,listeVide()))))

(18)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Quand utiliser un TDA liste?

A-t-on besoin d'un traitementséquentieldesdonnées?

Le nombrede donnéesest-ildéterminéàl'avane?

Le nombremaximalde donnéesest-ildéterminéàl'avane?

Les donnéesont-elles besoind'êtreindexées(numérotées)?

A-t-on besoin d'aéder àunedonnée dontl'indexedoit être

déterminé?

A-t-on besoin d'aéder àlapremièredonnée?

(19)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Algorithme réursif sur liste

Traitementdetâhes

Algorithme traitement(l :listede tahes) :rien

début

sil est videalors

ne rienfaire

sinon

exéuter lapremièretâhe de l

traitementdureste dela listel

nsi

n

(20)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Traitement de tâhes

Mahineabstraite

Notre mahineabstraiteest trèsintelligente, puisqu'elleest apable

de :

exéuter( mot ):exéute l'ordrequiest exprimé parmot

exéuter(

ndetahe

) :lamahinestoppe

Nous espérons que touslesordressontomprisparette mahine

abstraite...

(21)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Algorithme réursif sur liste

Traitementdetâhes

Algorithme traitement(l :liste):rien

début

silisteEstVide?(l)alors

exéuter(

ndetahe

)

sinon

exéuter( listeTete(l ))

traitement(listeQueue(l ) )

nsi

n

(22)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Algorithme réursif sur liste

Algorithme traitement(l :liste): type

début

silisteEstVide?(l)alors

....

sinon

....

traitement(...listeQueue(l ) ...)

nsi

n

(23)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Calul de la longueur d'une liste

longueur(

(

34

,

7

,

42

,

121

)

)

4

Algorithme longueur(l :liste): :entier

début

silisteEstVide?(l)alors

retourner 0

sinon

retourner 1+longueur( listeQueue(l ))

nsi

n

(24)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Somme des éléments

somme(

(

34

,

7

,

42

,

121

)

)

204

Algorithme somme(l :liste d'entier) :entier

début

silisteEstVide?(l)alors

retourner 0

sinon

retourner listeTete(l)+somme(listeQueue(l ) )

nsi

n

(25)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Conaténation des mots d'une liste

onatMots(

(

or

,

eur

,

temps

,

patiente

,

bleus

,

diamant

)

)

oreurtempspatientebleusdiamant

Algorithme onatMots(l :liste de mot):mot

début

silisteEstVide?(l)alors

retourner

′′

sinon

retourner listeTete(l).onatMots(listeQueue(l ) )

nsi

n

(26)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Extration de sous-liste

Extrairelasous-listedesmotsommençantpare,d ouf

extratMot(

(

or

,

eur

,

temps

,

patiente

,

bleus

,

diamant

)

)

(

eur

,

diamant

)

lettre( m,i ) :retournelalettrenuméro i dumotm

Algorithme extratMot(l :listedemot):listedemot

début

silisteEstVide?(l)alors

retourner listeVide()

sinon

silettre(listeTete(l),0)=

e

OUlettre(listeTete(l),0)=

d

OU

lettre(listeTete(l),0)=

f

alors

retournerlisteCons(listeTete(l),extratMot(listeQueue(l )))

sinon

retournerextratMot(listeQueue(l ))

nsi

nsi

(27)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Conaténation de listes

onat(

(

23

,

89

)

,

(

34

,

7

,

42

,

121

)

)

(

23

,

89

,

34

,

7

,

42

,

121

)

Algorithme onat(l

1 ,l

2

:liste):liste

début

silisteEstVide?(l

1 ) alors

retourner l

2

sinon

retourner listeCons(listeTete(l

1

),onat(listeQueue(l

1 ),l

2

))

nsi

n

(28)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Ajout d'un élément

ajout( 2,23,

(

34

,

7

,

42

,

121

)

)

(

34

,

7

,

23

,

42

,

121

)

ajout( 0,23,

(

34

,

7

,

42

,

121

)

)

(

23

,

34

,

7

,

42

,

121

)

Algorithme ajout(p: entier,elem:entier,l :liste):liste

début

si listeEstVide?(l)alors

retourner listeCons(elem ,l)

sinon

sip

=

0alors

retourner listeCons(elem ,l)

sinon

retourner listeCons(listeTete(l),ajout(p

1,elem ,listeQueue(l )))

nsi

(29)

TDAliste

TDApileetle

Dénition

Algorithmessurlistes

Supression d'un élément

suppression( 2,

(

34

,

7

,

23

,

42

,

121

)

)

(

34

,

7

,

42

,

121

)

suppression( 0,

(

23

,

34

,

7

,

42

,

121

)

)

(

34

,

7

,

42

,

121

)

Algorithme suppression(p :entier,l :liste):liste

début

silisteEstVide?(l)alors

retournerl

sinon

sip

=

0alors

retournerlisteQueue(l)

sinon

retournerlisteCons(listeTete(l),suppression(p

1,listeQueue(l ))) nsi

nsi

(30)

TDAliste

TDApileetle

Exemples de piles

Pile:ensemble d'objetsen pile...

Pilede feuilles

Piled'assiettes

Pilede vétements

pile d'instrutions

Avantage :

Les objets lesplus fréquemmentdemandés sontsituésprohedu

sommet

(31)

TDAliste

TDApileetle

Exemples de le

File :ensemble d'objetsen le...

File d'attenteà laboulangerie

File d'attentetéléphonique

File d'attentede toute sorte

Avantage :

Le premier entréest lepremier sorti...

(32)

TDAliste

TDApileetle

Représentations

Pile:

23

47

24

41

File :

(

a

,

f

,

h

,

g

)

23 est lesommet de lapile

′ ′

(33)

TDAliste

TDApileetle

Primitives du TDA pile

pileVide :rien

pile

retourne lapile vide

empiler :typeElement

×

pile

pile

ajouteun élémentde type typeElement au sommet de lapile

sommet :pile

typeElement

retourne l'élémentau sommet de lapile

dépiler :pile

pile

retourne lapile sanslesommet

pileEstVide?:pile

booleen

retourne lavaleur Vrai ssilapile est vide

(34)

TDAliste

TDApileetle

Primitives du TDA le

leVide:rien

le

retourne lalevide

enler :typeElement

×

le

le

ajouteun élémentde type typeElement en queue de lale

leTete :le

typeElement retourne l'élémenten tête de lale

déler :le

le

retourne lalesanslatête

leEstVide?:le

booleen

retourne lavaleur Vrai ssilaleest vide

(35)

TDAliste

TDApileetle

Généralisation

Laledérite ii estappeléeleFIFO:FirstIn FirstOut

Lapile peut êtreappeléepar"le" FILO:FirstInLastOut

leLIFO :LastInFirstOut

leLILO :LastInLastOut

Remarque :

Le TDA pileest équivalent auTDAliste

(36)

TDAliste

TDApileetle

Reherhe d'un élément dans une pile

orir(

eur

,

(

or

,

eur

,

temps

,

patiente

,

bleus

,

diamant

)

)

Vrai

Algorithme orir(x :mot,p :pile de mot) : :booléen

début

sipileEstVide?(p)alors

retourner Faux

sinon

si sommet(p) =x alors

retourner Vrai

sinon

retourner orir(x,dépiler(p))

nsi

nsi

(37)

TDAliste

TDApileetle

Objetifs de la séane 4

onnaitre letype de donnéesabstrait liste

onnaitre letype de donnéesabstrait pileet le

ériredes algorithmesréursifs baséssur leTDA liste,en

partiulierlealul de lalongueur, l'extrationde sous-liste,la

onaténation de listes,l'ajoutet lasupressiond'éléments,

l'utilisationd'aumulateur

Questions prinipales dujour :

Comment traiterlesinformationsles unes après lesautres?

Comment réussirun14 février?

Références

Documents relatifs

−→ utiliser un shéma itératif à nombre d'itérations déterminé. −→ appeler aussi souvent

ne retourner auune valeur : on notera le type de retour rien. Algorithme deviner(n : entier)

Utilisation d'un aumulateur pour réaliser un alul dans

A l'aide d'un système physique dont l'état est aléatoire :.. Valeur préise d'une résistane, appartition des

les nombres plus petit que le nombre pivot sont à gauhe de

A-t-on besoin d'un traitement séquentiel des données. Le nombre de données est-il déterminé

Le nombre de noeuds d'un arbre binaire omplet équilibré en. fontion de la hauteur h est 2 h

Dénombrer le nombre d'opérations exéuter d'un algorithme.. Donner l'ordre de grandeur du nombre