gestion de fichiers

12
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections 8.1-3 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with C++; Et Notes sur le

Upload: josiah

Post on 15-Jan-2016

21 views

Category:

Documents


0 download

DESCRIPTION

Gestion de Fichiers. GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections 8.1-3 de Folk, Zoellick & Riccardi, File Structures, An Object-Oriented Approach with C++; Et Notes sur le Web ). Resume du Cours d’Aujourd’hui. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Gestion de Fichiers

Gestion de Fichiers

GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures

Listes

(Base sur les sections 8.1-3 de Folk, Zoellick & Riccardi, File Structures, An Object-

Oriented Approach with C++; Et Notes sur le Web)

Page 2: Gestion de Fichiers

2

Resume du Cours d’Aujourd’hui

Developpement d’un Model General pour l’Implementation du Traitement Co-Sequentiel Appariment et Fusion

Illustration de l’Utilisation de ce Model sur un probleme de comptabilite

Algorithme de Fusion de listes multiples (peu de listes) Algorithme de Fusion de listes multiples (beaucoup de

listes) Arbres de selections Arbres de Gagnants Arbres de Perdants

Page 3: Gestion de Fichiers

3

Definition Les operations co-sequentielles

correspondent au traitement coordine de deux (ou plus de deux) listes sequentielles afin de produire une liste unique.

Ceci est utile pour la fusion (ou l’union) des elements des deux listes et pour l’assortiment (matching) de deux listes (ou leur intersection)

Ces types de traitement de listes sont extremement utiles pour le traitement des fichiers.

Page 4: Gestion de Fichiers

4

Assortiment (Matching) des noms dans deux listes I Adams Carter Chin Davis Foster Garwick James Johnson Karns Lambert Miller

Adams Anderson Andrews Bech Burns Carter Davis Dempsey Gray James Johnson Katz Peters

Page 5: Gestion de Fichiers

5

Assortiment (Matching) des noms dans deux listes II

Synchronization Soit Element(1), l’element courant de la liste # 1

et Element(2), l’element courant de la liste # 2.Regles: Si Element(1) < Element(2), se deplacer jusqu’a

l’element suivant de la liste # 1 Si Element(1) > Element(2), se deplacer jusqu’a

l’element suivant de la liste # 2 Si Element(1)=Element(2), sauvegarder

l’element et se deplacer jusqu’a lelemnet suvant dans les deux listes.

Page 6: Gestion de Fichiers

6

Fusion de deux listes Le processus d’assortiment peut etre

facilement modifie de facon a traiter la fusion de deux listes.

Une difference importante entre l’assortiment et la fusion est qu’avec la fusion, on doit lire les deux listes jusqu’au bout.

Nous devons savoir reconnaitre, cependant, le fait que l’une des deux listes ait ete completement lue et eviter de lire cette liste de nouveau.

Page 7: Gestion de Fichiers

7

Application de ce Model a un probleme de comptabilite I

Le probleme: La creation d’un programme de comptabilite contennant les composantes suivantes:

Un fichier de transactions journalieres: ce fichier contient les transactions d’un mois entier. Ces transactions sont ultimement reportees dans le fichier “livre de comptes”.

Un fichier de livre de compte: ce fichier contient le resume des transactions mensuelles associees avec chacun des comptes consideres.

Un rapport correspond a l’association de chaque transaction a son compte dans le livre de compte.

Page 8: Gestion de Fichiers

8

Application de ce Model a un probleme de comptabilite II

Comment implementer le procesus de rapport? Solution 1: Construire un indexe pour le livre de

comptes organise par numero de compte 2 problemes: 1) beaucoup de recherche en avant et en arriere est necessaire; 2) les inscriptions du journal ayant un compte en commun ne sont pas recueuillies au meme endroit.

Solution 2: Recueuillir toutes les transactions du journal ayant un compte en commun en triant les transactions du journal par numero de compte, et traiter le livre de compte et le journal trie de facon co-sequentielle.

Page 9: Gestion de Fichiers

9

Application de ce Model a un probleme de comptabilite III

But du programme: De produire une version imprimee du livre de compte qui montre, non- seulement, la balance de depart et la balance courante pour chaque mois, mais aussi, qui liste toutes les transactions du journal.

Du point de vue du livre de compte, le processus de rapport est une operation de fusion (meme les comptes non rencontres dans le journal sont listes). Du point de vue des comptes du journal, le processus de rapport est un assortiment.

Notre programme doit donc implementer une operation de fusion/assortiment combinee tout en imprimant le nom de chaque compte, les transactions individuelles, et les balances.

Page 10: Gestion de Fichiers

10

Algorithme de Fusion de K listes

Soit deux tableaux: Un tableau de k listes Un tableau de k indices correspondant a la valeur

de l’element courant dans chacune des k listes, respectivement.

Boucle principale de l’algorithme: Trouver l’indice de l’element courant minimum

minElem Traiter minElem (mettre minElem dans la liste de

sortie) For i=0 until i=k-1 (en increment de 1)

Si l’element courant de la liste i est egal a minElem alors avancer la liste i

Retourner a la premiere etape

Page 11: Gestion de Fichiers

11

Un Arbre de Selection pour Fusion d’un large nombre de listes

L’algorithme de fusion pour k listes marche bien si k < 8. Si k est plus grand, le nonbre de comparaisons necessaires pour trouver la valeur minimal a chaque etape est tres grand.

Dans ce cas il vaut mieux utiliser un arbre de selection qui nous permet de determiner une valeur de cle minimum plus rapidement.

Fusionner k listes en utilisant cette methode prend log2 k (la profondeur de l’arbre) plutot que k.

Cependant, la mise a jour d’un arbre de selection n’est pas facile Il est plus facile de mettre a jour un arbre de perdants.

Page 12: Gestion de Fichiers

12

Arbre de Perdants Plutot qu’ Arbre de Gagnants

Avantage de l’arbre de perdants: Lorsque l’on utilise un arbre de gagnants, les

enregistrements avec lesquels le gagnant doit etre compare—de facon a trouver le prochain gagnant—sont distribues dans des sous-arbres differents. Mettre a jour un tel arbre n’est pas tres facile.

Lorsque l’on utilise un arbre de perdants, La valeur de chaque feuille (a part la plut petite, le

gagnant) n’apparait qu’une seule fois dans un noeud interne.

Tous les enregistrements avec lesquels le gagnant doit etre compare sont dans un cheminement de la feuille gagnante a la racine.

Si chacun des noeuds de l’arbre a un pointeur a son parent, il est tres facile de trouver le gagnant suivant.