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

Slides:



Advertisements
Présentations similaires
Structures de données avancées : Principales structures de fichiers
Advertisements

Explorer un espace d’états
Tris.
Chap. 4 Recherche en Table
Chapitre annexe. Récursivité
Classification et prédiction
Classification et prédiction
Fonctions & procédures
Arbre-B+ Hypothèse initiale : clé simple et unique Nœud = bloc.
Introduction à l’Algorithmique
Sensibilisation à l’Algorithmique et structure de données
GEF 435 Principes des systèmes d’exploitation
Les Algorithmes de tri.
Problème de 8 dames: Sachant que dans un jeu des échecs, une dame peut pendre toute pièce se trouvant sur la colonne ou sur la ligne ou sur les diagonales.
Chap. 1 Structures séquentielles : listes linéaires
Initiation à la programmation et algorithmique cours 3
Utilisation des tableaux
Structures de données linéaires
Algorithmique et Programmation
Methode de Tri efficace
Optimisation linéaire
Auto Exterior Scoop SQP PROCESSUS 24 juillet 2006 Version validée V01.
Publispostage Menu Outils / Lettres et publipostage
Gestion de Fichiers Arbres B.
Indexation 1. Concepts de base 2. Arbre B 3. Indexes secondaires.
Sections sélectionnées du Chapitre 11
Les fichiers indexés (Les B-arbres)
LA STRUCTURE D'ARBRE-B Institut National des Sciences Appliquées – Rouen Département Architecture des Systèmes d’Information.
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
Structures de données IFT-2000
Les listes chaînées par Frédérick Henri.
IFT Complexité et NP-complétude
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Indexes basés sur les structures d’arbres binaires et indexes à niveaux multiples.
Indexes à Arbres et Indexes à Hachage
1 Tri Externe Chapitre 13: Pourquoi Trier? Problème classique en informatique (Voir Knuth, v.3)! Données requises en ordre trié P.ex.: Trouver.
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Gestion de Fichiers Hachage Extensible.
1 CSI 4506: Introduction à lintelligence artificielle La recherche adversairiale.
Indexes à Arbres et Indexes à Hachage
Parallel Programming in C with MPI and OpenMP
Efficacité des algorithmes
Gestion de Fichiers Hachage (suite). 2 Plan du cours daujourdhui Prédiction de la distribution des enregistrements Réduction des collisions en augmentant.
Gestion de Fichiers GF-12: Comment Gerer les Indexes qui ne tiennent pas en Memoire de Maniere Efficace?: I. Indexes Bases sur les Structures dArbres Binaires.
Gestion de Fichiers GF-10: Traitement Co-Sequentiel: Appariment et Fusion de Plusieures Listes (Base sur les sections de Folk, Zoellick & Riccardi,
Les Algorithmes de Tri Introduction Tri par Sélection
Paradigmes des Langages de Programmation
Chapitre 6 Les traitements avancés
Gestion de Fichiers GF-8: Organisation des Fichiers pour l’Amelioration de la Performance (Base sur la section de Folk, Zoellick & Riccardi, File.
Cours 4 - Trois algorithmes de recherche dans un tableau
GF-11: Tri Interne Efficace et Tri Externe
Exploration systématique de graphes
Structures de données avancées : MBT ( Multidimensional B-trees )
LE COMPTE Un compte est un registre comptable individuel faisant état des augmentations et des diminutions d’un élément particulier de l’actif, du passif.
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Cours LCS N°4 Présenté par Mr: LALLALI
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
Structures de données avancées : Principales structures de fichiers
Structures de données avancées : Arbres B+ avec expansion partielle D. E ZEGOUR Institut National d ’Informatique.
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Matière Sélectionnée: Triage Externe, Join à Hachage, … Chapitres 13—15: 13.1—13.5, 14.4,
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
1 CSI 4506: Introduction à l’Intelligence Artificielle La Recherche Adversariale.
Scénario Quatre hipsters entrent en collision un dans l'autre dans un ascenseur plein de personnes. En conséquence ils laissent tomber leurs téléphones.
Transcription de la présentation:

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

Resumé du cours d’aujourd’hui Modèle général pour l’implementation 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 8.1-8.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 l’appariment (“matching”) de deux listes (intersection). Ces types de traitement de listes sont extrêmement utiles pour le traitement des fichiers.

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

Appariment des noms (suite) Algorithme (voir code aux Figures 8.2-8.4): 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 l’autre liste en stoppant à la fin de celle-ci; -- Répeter la 2ème étape jusqu’à la fin de l’une des 2 listes. Principaux points dans l’algorithme: Initialisation, accès au prochain élément des listes, synchronisation, condition de fin de liste (ou fichier) et reconnaissance et correction d’erreur.

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

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

Le modèle pour traitement co-séquentiel Assomptions: Deux ou plusieurs fichiers d’entrée; un ou plusieurs fichiers de sortie Les fichiers d’entrée sont triés selon une ou plusieurs clés et ordonnés suivant les mêmes clés Existance d’une méthode de traitement des fins de fichiers Le traitement des enregistrements se fait selon leur ordre logique Il n’y a qu’un enregistrement courant par fichier Les enregistrements ne peuvent être modifiés qu’en 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 d’erreur.

Application du modèle Le problème: La création d’un programme de comptabilité contennant les composantes suivantes: Un fichier de transactions journalières: ce fichier contient les transactions d’un 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 à l’association de chaque transaction à son compte dans le livre de compte (Figure 8.8).

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.

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.

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

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.

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.