La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Gestion de Fichiers Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes.

Présentations similaires


Présentation au sujet: "Gestion de Fichiers Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes."— Transcription de la présentation:

1 Gestion de Fichiers Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes

2 2 Resumé du cours daujourdhui Modèle général pour limplementation du traitement co-séquentiel: appariment et fusion de listes Illustration sur un problème de comptabilité Algorithmes de fusion de listes multiples Arbres de selections: arbres de gagnants et arbres de perdants FZR

3 3 Définition Les opérations co-séquentielles correspondent au traitement coordonné de deux (ou plus de deux) listes séquentielles afin de produire une liste unique. Ceci est utile pour la fusion des éléments des deux listes (union) et pour lappariment (matching) de deux listes (intersection). Ces types de traitement de listes sont extrêmement utiles pour le traitement des fichiers.

4 4 Appariment des noms dans deux listes 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 Appariment des noms (suite) Algorithme (voir code aux Figures ): Entrée: 2 listes triées et sans duplicatas Sortie: intersection des 2 listes Methode: -- lire lélément initial de chacune des listes -- si un appariment est trouvé, le sortir, sinon chercher et garder le plus grands des éléments des 2 listes et continuer à chercher un appariment dans lautre liste en stoppant à la fin de celle-ci; -- Répeter la 2ème étape jusquà la fin de lune des 2 listes. Principaux points dans lalgorithme: Initialisation, accès au prochain élément des listes, synchronisation, condition de fin de liste (ou fichier) et reconnaissance et correction derreur.

6 6 Appariment des noms: synchronisation Elément(1): élément courant de la liste # 1 Elément(2): élément courant de la liste # 2 Règles: Si Elément(1) < Elément(2), se déplacer jusquà lélément suivant de la liste # 1 Si Elément(1) > Elément(2), se déplacer jusquà lélément suivant de la liste # 2 Si Elément(1)=Elément(2), sortir lélément et se déplacer jusquà lélément suivant des deux listes

7 7 Fusion de deux listes Le processus dappariment peut être facilement modifié de façon à traiter la fusion de deux listes. Une différence importante entre lappariment 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 été complètement lue et éviter de lire cette liste de nouveau. Lire le code à la Figure 8.5.

8 8 Le modèle pour traitement co-séquentiel Assomptions: Deux ou plusieurs fichiers dentrée; un ou plusieurs fichiers de sortie Les fichiers dentrée sont triés selon une ou plusieurs clés et ordonnés suivant les mêmes clés Existance dune méthode de traitement des fins de fichiers Le traitement des enregistrements se fait selon leur ordre logique Il ny a quun enregistrement courant par fichier Les enregistrements ne peuvent être modifiés quen mémoire principale Composantes essentielles: initialisation, boucle de synchronisation, accès par clé au prochain enreg. des fichiers, condition de fin de fichie et reconnaissance et correction derreur.

9 9 Application du modèle Le problème: La création dun programme de comptabilité contennant les composantes suivantes: Un fichier de transactions journalières: ce fichier contient les transactions dun mois entier. Ces transactions sont ultimement reportées dans le fichier livre de comptes (Figure 8.7). Un fichier de livre de compte: ce fichier contient le resumé des transactions mensuelles associées avec chacun des comptes considerés (Figure 8.6). Un rapport correspond à lassociation de chaque transaction à son compte dans le livre de compte (Figure 8.8).

10 10 Application du modèle (suite) Comment implémenter le procesus de rapport? Solution 1: Construire un indexe pour le livre de comptes organisé par numéro de compte 2 problemes: 1) beaucoup de recherche en avant et en arrière est nécessaire; 2) les inscriptions du journal ayant un compte en commun ne sont pas receuillies au même endroit. Solution 2: Receuillir toutes les transactions du journal ayant un compte en commun en triant les transactions du journal par numéro de compte, et traiter le livre de compte et le journal trié de façon co-séquentielle.

11 11 Application du modèle (suite) But du programme: produire une version imprimée du livre de compte qui montre la balance de départ et la balance courante pour chaque mois, ainsi que une liste de toutes les transactions du journal. Du point de vue du livre de compte, le processus de rapport est une opération de fusion (même les comptes non rencontrés dans le journal sont listés). Du point de vue des comptes du journal, le processus de rapport est un appariment. Notre programme doit donc implémenter une opération de fusion/appariment combinée tout en imprimant le nom de chaque compte, les transactions individuelles, et les balances.

12 12 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

13 13 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.

14 14 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.


Télécharger ppt "Gestion de Fichiers Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes."

Présentations similaires


Annonces Google