Applications sur les algorithmes récurrents avec Les Matrices

Slides:



Advertisements
Présentations similaires
La Méthode de Simplexe Standardisation
Advertisements

Tris.
Cours de C – Séance dexercices 25 Septembre 2007.
Chapitre annexe. Récursivité
M. SAILLOUR Lycée Notre Dame du Kreisker St Pol de Léon
1/29 Le modèle de l ’atome Dernière mise à jour: Le 24 Septembre 2008.
Initiation à la programmation et algorithmique cours 4
Algorithmique (suite)
Portée des variables VBA & Excel
Fonctions & procédures
Calculs de complexité d'algorithmes
DECLARATION DE VARIABLES
But de l’exercice 3.1 PREPARER UN ALGORITHME QUI EFFECTUE DEUX TACHES IMPORTANTES : PREMIERE TACHE : Grâce à la fonction aléatoire, un nombre compris entre.
But de lexercice 3.1 PREPARER UN ALGORITHME QUI EFFECTUE DEUX TACHES IMPORTANTES : PREMIERE TACHE : Grâce à la fonction aléatoire, un nombre compris entre.
Les Algorithmes de tri.
3- Déclaration et accès aux objets
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.
Exercices Algorithmiques
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
4. Les structures de tests
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Algorithme et programmation
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Initiation à la programmation et algorithmique cours 3
Les structures de contrôles itératives complètes
Les bases de l’Algorithmique
Introduction à la programmation (420-PK2-SL) cours 17 Gestion des applications Technologie de linformation (LEA.BW)
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Structures de données linéaires
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
La structure conditionnelle simple
Récursivité.
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Algorithmique et Programmation
Dérécursivation Dérécursiver, c’est transformer un algorithme récursif en un algorithme équivalent ne contenant pas d’appels récursifs. Récursivité terminale.
Correction du reste des exercices
Les éléments de base de l’algorithmique
Les structures de contrôle conditionnelles
Les structures de données
Optimisation linéaire
TD2 2 IMACS Romaric GUILLERM Algo-Prog en Ada.
Chapitre 3bis Applications linéaires et Matrices
Clique sur la souris ou sur la flèche en bas
Une nouvelle structure de données : les tableaux
Projet de C – Matrices creuses
Les Algorithmes de Tri Introduction Tri par Sélection
Programmation dynamique
Plan cours La notion de pointeur et d’adresse mémoire.
Algo-Prog en Ada TD2 2 IMACS Romaric GUILLERM
Python Fonction et procédure
Exploration systématique de graphes
Question 1 Une série d'échantillons sont analysés dans un laboratoire. On constate que la teneur en carbone des différents échantillons varie d'un échantillon.
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
Déclaration des données constantes Déclaration des données variables
Les Structures De Contrôle Itératives Complètes
Chapitre 6 Les traitements avancés
Problème de 8 reines Sachant que dans un jeu d'échecs, une dame peut pendre toute pièce se trouvant sur la même colonne ou sur la même ligne ou sur une.
Algorithmes de tri et de recherche
Décomposition et paramétrage des algorithmes
8PRO100 Éléments de programmation Les tableaux multi-dimensionnels.
8PRO107 Éléments de programmation Les tableaux multidimensionnels.
Module algorithmique et programmation
Introduction à la programmation (420-PK2-SL) cours 18 Gestion des applications Technologie de l’information (LEA.BW)
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.
Algorithmique Tableaux de données
02/10/2015Les structures de contrôle1 COURS A2I12 Initiation à l'algorithmique illustrée par le langage C Guillaume BOURLET Département GEII IUT Sénart/Fontainebleau.
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
ALGORITHME ET PROGRAMMATION RÉVISION Informatique et Sciences du Numérique.
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Applications sur les algorithmes récurrents avec Les Matrices Mme Ben Attia Imen & Les élèves de la classe 4 Sc.Info 1 Vous souhaite la bien venue Activité Leçon Modèle Applications sur les algorithmes récurrents avec Les Matrices

Rappel Quand peut-on parler d’un algorithme récurrent Quelle est la différence entre un algorithme récurrent et un algorithme récursif Qu’est ce qu’une matrice

Algorithmes récurrents Un algorithme ou un traitement est dit récurrent s’il utilise un procédé itératif ou récursif pour engendrer un résultat qui peut dépendre de p résultats précédents, nous parlons alors d’un algorithme ou d’un traitement récurrent d’ordre p. Ordre 1: Un algorithme récurrent est dit d’ordre 1 si son résultat dépend du résultat précédent. Ordre 2: Un algorithme récurrent est dit d’ordre 2 si son résultat dépend des deux résultats précédents. ….. Ordre p: Un algorithme récurrent est dit d’ordre p si son résultat dépend des P résultats précédents.

Différence entre un algorithme récursif et un algorithme récurrent Dans un Module récurrent on obtient un résultat en fonction d’un ou de plusieurs résultats précédents Dépendance entre les résultats Dans un module récursif on obtient un résultat en faisant un ou de plusieurs appel au module lui-même avec changement de paramètres d’appel Auto-dépendance du module

Soit A une matrice de N lignes et de M colonnes d’entiers : Une matrice est un tableau à deux dimension de N lignes et de M colonnes de type éléments Si M=N on dit qu’on a une matrice carrée. Chaque ligne de la matrice L peut être assimilée à un tableau unidimensionnel de M cases. Chaque colonne de la matrice C peut être assimilée à un tableau unidimensionnel de N cases. L 10 15 7 2 15 18 14 21 8 14 N Lignes=5 21 32 4 5 5 11 9 8 3 23 7 8 2 1 5 M colonnes=5

spécification du module itératif permettant de chercher le maximum d’une ligne de matrice Résultat = maxligneMax Traitement : Initialiser la variable Max à A[L, 1] Utiliser 1 structure itérative complète Pour C De 1 A M Faire Pour chaque itération : tester Si Max < A[L, C] Alors Max A[L, C] Donné = Matrice ( A ) / L,M30

0) fonction maxligne(L,M:entier;A:tab):entier 1) MaxA[L,1] Algorithme itératif 0) fonction maxligne(L,M:entier;A:tab):entier 1) MaxA[L,1] Pour C de 2 à M faire Si A[L,C]>Max alors MaxA[L,C] Finsi 2) Finpour 3) Maxlignemax 4) Fin maxligne T.D.Objets Locaux C Entier Compteur sur les colonnes Max entier Variable temporaire pour garder le maximum Algorithme récursif 0)procedure maxligne(L,C :entier;A:tab;var max:entier) Si C>1 alors maxligne(L,C-1,A,max) Finsi Si max<A[L,C] alors MaxA[L,C] 2) Fin maxligne

Algorithme récursif pour la recherche du minimum d’une colonne de matrice  0) procedure mincolonne(L,C:entier;A:tab; var min:entier) Si L>1 alors mincolonne(L-1,C,A,min) Finsi 2) Si min>A[L,C] alors Min A[L,C] 3) Fin mincolonne

Algorithme récursif pour chercher le maximum 0)procedure maximum(L,C:entier;A:tab; var max:entier) Si L>1 alors maximum(L-1,C,A,max) Finsi maxligne(L,C,A,max) 2) Fin maximum Tableau de codification des objets Locaux Objet Type/Nature Rôle Maxligne procédure Cherche le maximum d’une ligne

Algorithme récursif pour chercher le minimum Debut procedure minimum(L,C:entier;A:tab; var min:entier) Si C>1 alors minimum(L,C-1,A,min) Finsi mincolonne(L,C,A,min) Fin maximum Tableau de codification des objets Locaux Objet Type/Nature Rôle Mincolonne procédure Cherche le minimum d’une colonne

Réutilisation des modules réalisés Proposer une analyse du programme qui permet de remplir une matrice A de N lignes et de M colonnes puis chercher et afficher son maximum et son minimum en déduire les algorithmes de chaque module.

Décomposition Modulaire Prog_Matrice Saisir (Var Valeur) Remplir (Var A ;L,C) Maximum (l,c ;A ;var max) Minimum (l,c ; A ;var min) Remplir_ligne (var A ;L,C) Maxligne (L,C ;A ;var max) Mincolonne (L,C ;A ;var min)

Programme principal Saisir(N) Saisir(M) Remplir(A,N,M) Spécification Algorithme Résultat=Ecrire ("le maximum est :", max, "le minimum est :",min) Traitement : La valeur de Max est déterminée suite à l’appel de la procédure maximum(N,M,A,max), La valeur de Min est déterminée suite à l’appel de la procédure minimum(N,M,A,max) Appel de la procédure remplir pour saisir les éléments de A Appel de la procédure saisie une fois pour saisir N et une autre fois pour saisie M Donnée : A,N,M 0) Début Prog_Matrice Saisir(N) Saisir(M) Remplir(A,N,M) maximum(N,M,A,max) minimum(N,M,A,min) Ecrire("le maximum est :", max, "le minimum est :", min) 7) Fin Prog_Matrice

Tableau de déclaration de nouveaux types Tab= tableau de 15 lignes et de 15 colonnes d’entiers Tableau de codification des objets globaux Objet Type/Nature Rôle L, C entier Compteurs de lignes et de colonnes A Tab Matrice de N lignes et de M colonnes d’entiers Max Entier Variable temporaire pour garder le maximum Saisie Procédure Saisir un entier Remplir procédure Remplir une matrice de N lignes et de M colonnes d’entiers Maximum procédure Chercher le maximum d’une matrice Minimum procédure Chercher le minimum d’une matrice

La procédure Remplir récursif Spécification Algorithme Résultat = A Traitement : Si L>1 (point d’appui) alors faire un appel récursif à la procédure en diminuant le nombre de ligne Désempiler les appels récursif tout en appelant la procédure remplir_ligne(A,L,C) 0) procedure remplir(varA:tab; L,C:entier) Si L>1 alors remplir(A,L-1,C) Finsi 2) remplir_ligne(A,L,C); 3) Fin remplir Tableau de codification des objets Locaux Objet Type/Nature Rôle Remplir_ligne procédure Permet de remplir une ligne de la matrice

Résultat = remplir la ligne L Traitement : Spécification de la procédure remplir_ligne Algorithme de la procédure remplir_ligne Résultat = remplir la ligne L Traitement : Si C>1 (point d’appui) alors faire un appel récursif à la procédure en diminuant le nombre de colonne Désempiler les appels récursif tout en faisant la saisie d’une case 0) procedure remplir_ligne(var A:tab; L,C:Entier) Si C>1 alors Remplir_ligne(A,L,C-1) Finsi 2) Ecrire("A[",L, ",",C, "]="),Lire(A[l,c]); 3) Fin remplir_ligne

Spécification de la procédure Saisie Algorithme de la procédure Saisie Résultat = Valeur Traitement : Saisir une valeur Si cette valeur ne répond pas à la condition faire un appel récursif de la même procédure Donnée : valeur 0) procedure saisie(var valeur :entier) 1) Ecrire("donner un entier : ") 2) Lire(valeur) 3) Si non(valeur dans [1..15]) alors saisie (valeur) Finsi Fin Saisie

Problème On désire rechercher dans une matrice donnée A de N lignes et de M colonnes les éléments qui sont à la fois un maximum sur leur ligne et un minimum sur leur colonne. Ces éléments sont appelés des points cols. Afficher les positions et les valeurs de tous les points cols trouvés. Proposer une analyse à ce problème en déduire les algorithmes correspondants. Exemples: Les éléments soulignés sont des points cols: 1 8 3 4 0 4 5 8 6 3 5 6 7 7 1 2 7 6 7 2 7 0 3 8 9 3 4 2 2 8 9 4 5 6 3 4 9 3 6 3 2 9 7 7 8 9 Méthode: Établir deux matrices d'aide MMAX et MMIN de même dimensions que A, telles que: 1 si A[L,C] est un maximum sur la ligne i MMAX[i,j] = 0 sinon 1 si A[L,C] est un minimum sur la colonne j MMIN[i,j] = Les points cols sont ceux qui vérifient l’égalité suivante : MMAX[L,C] = MMIN[L,C]=1

Simulation Analyse

Matrice qui repère les maximums des lignes Matrice qui repère les Mmax 1 1 1 Max=8 Max=15 Max=21 Max=32 Max=23 1 1 10 15 7 2 15 1 18 14 21 8 14 Matrice qui repère les minimums des colonnes 21 32 4 5 5 Min=8 Min=2 Min=5 Min=1 Min=7 Mmin 11 9 8 3 23 7 8 2 1 5 1 1 1 1 1 1

DECOMPOSITION MODULAIRE Points_cols P P P P Afficher Afficher (A, N,M) Point point (N,M;A,mmin, mmax) Remplir Remplir (VAR A ;L,C) Saisie Saisie (VAR valeur) Remplir_MMax Remplir_MMax (N,M;A;VAR mmax) Remplir_MMin Remplir_MMin (N,M;A;VAR mmin) P Maxligne Max (L,C;A;VAR max) Mincolonne Min (L,C;A;VAR min) P

Programme principal Spécification Algorithme Résultat : Affichage des points cols Traitement : appel de la procédure point qui cherche et affiche les points cols en parcourant les 2 matrices Mmax et Mmin appel des procédures remplir_mmax et remplir_mmin pour remplir et afficher Mmax et Mmin qui indiquent respectivement les positions des maximum de chaque ligne et les positions des minimum de chaque colonne. Afficher la matrice A grâce à la procédure affiche La matrice A est remplie grâce al a procédure remplir N et M sont saisies par la procédure saisie 0) Debut points_cols saisie(N) saisie(M) remplir(N,M,A) Ecrire("voila la matrice initiale") affiche(N,M,A) Ecrire("voila la matrice qui indique les positions des maximum de chaque ligne") remplir_mmax(N,M,Mmax) Ecrire ("voila la matrice qui indique les positions des minimum de chaque colonne") remplir_mmin(N,M,Mmin) Ecrire ("voila les positions des points cols") point(n,m,A,mmin,mmax) Fin points_cols

Tableau de déclaration de nouveaux types  Tab= tableau de 15 lignes et de 15 colonnes d’entiers Tableau de déclaration des objets globaux Objet Type/Nature Rôle N Entier Nombre de lignes de la matrice M Entier Nombre de colonnes de la matrice A Tab Matrice de N lignes et de M colonnes Mmax Tab Matrice de N lignes et de M colonnes contenant 1 à la place des maximum dans les ligne et 0 dans le reste Mmin Tab Matrice de N lignes et de M colonnes contenant 1 à la place des minimum dans les colonnes et 0 dans le reste

Procédure point Spécification Algorithme Résultat= Affichage des points cols Traitement= On parcours les 2 matrices tout en comparant les éléments des matrices pour afficher sauf les éléments répondant à la condition (Mmin[L,C]=1)et(Mmax[L,C]=1) On utilise 2 structures itératives complètes Pour L de 1 à n faire pour C de 1 à m faire 0) Procedure point(N,M:entier;A,Mmin,Mmax:tab) 1) Pour L de 1 à N faire pour C de 1 à M faire si (Mmin[L,C]=1)et(Mmax[L,C]=1) alors Ecrire("A[",L, ",",C, "]= ",A[L,C], " est un point cols") Finsi Finpour 2) Fin point

Tableau de déclaration des objets Locaux Type/Nature Rôle L Entier Compteur sur les lignes de la matrice C Compteur sur les colonnes de la matrice

procedure remplir_mmax Spécification Algorithme Résultat= Remplir et afficher la matrice MMax Traitement= Appel de la procédure affiche pour afficher MMax Parcourir toutes les lignes Pour i de 1 à N faire Pour chaque ligne chercher son maximum MaxA[i,1] maxligne(i,2,a,max) Parcourir les éléments de la matrice A pour cette ligne pour j de1 à M faire Pour chaque élément tester Si A[i,j]=max alors MMax[i,j]1 sinon MMax[i,j]0 0) procedure remplir_mmax(N,M:entier;var MMax:tab) 1) Pour i de 1 à N faire Maxa[i,1] maxligne(i,2,a,max) pour j de1 à M faire Si A[i,j]=max alors MMax[i,j]1 sinon MMax[i,j]0 Finsi Finpour 2) affiche(N,M,MMax) 3) Fin remplir_mmax

Tableau de déclaration des objets Locaux Type/Nature Rôle i Entier Compteur sur les lignes de la matrice j Entier Compteur sur les colonnes de la matrice Max Entier Variable de sauvegarde du maximum Maxligne procédure Cherche le maximum d’une ligne

Merci pour votre attention