Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parLooys Dupuy Modifié depuis plus de 10 années
1
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)
2
2 Resume du Cours dAujourdhui Developpement dun Model General pour lImplementation du Traitement Co-Sequentiel Appariment et Fusion Illustration de lUtilisation 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
3
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 lunion) des elements des deux listes et pour lassortiment (matching) de deux listes (ou leur intersection) Ces types de traitement de listes sont extremement utiles pour le traitement des fichiers.
4
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
5
5 Assortiment (Matching) des noms dans deux listes II Synchronization Soit Element(1), lelement courant de la liste # 1 et Element(2), lelement courant de la liste # 2. Regles: Si Element(1) < Element(2), se deplacer jusqua lelement suivant de la liste # 1 Si Element(1) > Element(2), se deplacer jusqua lelement suivant de la liste # 2 Si Element(1)=Element(2), sauvegarder lelement et se deplacer jusqua lelemnet suvant dans les deux listes.
6
6 Fusion de deux listes Le processus dassortiment peut etre facilement modifie de facon a traiter la fusion de deux listes. Une difference importante entre lassortiment et la fusion est quavec la fusion, on doit lire les deux listes jusquau bout. Nous devons savoir reconnaitre, cependant, le fait que lune des deux listes ait ete completement lue et eviter de lire cette liste de nouveau.
7
7 Application de ce Model a un probleme de comptabilite I Le probleme: La creation dun programme de comptabilite contennant les composantes suivantes: Un fichier de transactions journalieres: ce fichier contient les transactions dun 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 lassociation de chaque transaction a son compte dans le livre de compte.
8
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.
9
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.
10
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 lelement courant dans chacune des k listes, respectivement. Boucle principale de lalgorithme: Trouver lindice de lelement courant minimum minElem Traiter minElem (mettre minElem dans la liste de sortie) For i=0 until i=k-1 (en increment de 1) Si lelement courant de la liste i est egal a minElem alors avancer la liste i Retourner a la premiere etape
11
11 Un Arbre de Selection pour Fusion dun large nombre de listes Lalgorithme 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 log 2 k (la profondeur de larbre) plutot que k. Cependant, la mise a jour dun arbre de selection nest pas facile Il est plus facile de mettre a jour un arbre de perdants.
12
12 Arbre de Perdants Plutot qu Arbre de Gagnants Avantage de larbre de perdants: Lorsque lon utilise un arbre de gagnants, les enregistrements avec lesquels le gagnant doit etre comparede facon a trouver le prochain gagnant sont distribues dans des sous-arbres differents. Mettre a jour un tel arbre nest pas tres facile. Lorsque lon utilise un arbre de perdants, La valeur de chaque feuille (a part la plut petite, le gagnant) napparait quune 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 larbre a un pointeur a son parent, il est tres facile de trouver le gagnant suivant.
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.