Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

La recherche de chemin optimal
Tris.
Licence pro MPCQ : Cours
Algorithmes et structures de données avancées Cours 7
Additions soustractions
Distance inter-locuteur
Algorithmes et structures de données avancés
Fonctions & procédures

CHAPITRE 3 Addition, Soustraction et Multiplication
Les numéros 70 –
Les numéros
Les identités remarquables
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.
1 UMLV Optimalité des tris par comparaisons : O(n logn) Classements linéaires Tris lexicographiques Tri lexicographique.
1 UMLV 1. Introduction 2. Hachage ouvert 3. Hachage fermé 4. Implémentation des fonctions Méthodes de hachage.
UMLV 1 Problème G = (S, A) graphe (orienté) Calculer H = (S, B) où B est la clôture réflexive et transitive de A. Note : (s,t) B ssi il existe un chemin.
Modélisation par le concept de graphe
Introduction à la logique
Autour des nombres en première L(option) et en terminale L (spécialité) Marie-Françoise BOURDEAU Jeanne-Marie DUMAS.
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.
1 Modifications controlées des implications de la base de Guigues-Duquenne LIMOS – Clermont-Ferrand Alain Gély 6 Février 2006 Séminaire Maison des Sciences.
Journées Graphes & Algorithmes, Novembre 2006, Orléans
Chap. 1 INTRODUCTION Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent.
Automate asynchrone.
Expressions rationnelles
Chapitre 1 Automates finis
Automates et systèmes de transitions
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.

Les structures de données arborescentes
Algorithmes Branch & Bound
Analyse lexicale Généralités Expressions rationnelles Automates finis
Mai 2001FRANCOROIII - Challenge Recherche Locale Guidée Par Le Coût Des Contraintes Gavranovic Haris Univerzitet U Sarajevu IMAG, Grenoble.
Bases de données lexicales
LES NOMBRES PREMIERS ET COMPOSÉS
Logiciel gratuit à télécharger à cette adresse :
Les chiffres & les nombres
Algorithme de Bellman-Ford
Structures de données IFT-2000
Calculs et écritures fractionnaires
Introduction à l’algorithmique
IFT313 Introduction aux langages formels
RACINES CARREES Définition Développer avec la distributivité Produit 1
Expressions régulières et hash tables

STRUCTURES DE DONNÉES Maxime CROCHEMORE



Algorithmes d ’approximation
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
P C M P P C M lus etit ommun ultiple Remarque :
Programmation dynamique

Aire d’une figure par encadrement

Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.
201 UMLV  Type « dictionnaire » sous-ensembles finis de E (ordonné) avec les opérations : Ens_vide :  Ens Ajouter : Ens x Elément  Ens Enlever.

MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
SUJET D’ENTRAINEMENT n°1
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Suites numériques Définitions.
Chapitre 6 Les traitements avancés
Algorithmes de tri et de recherche
Multiprécision.
Algorithmes Branch & Bound

Transcription de la présentation:

Automates déterministes a = (Q, A, i, T, d) Q états ensemble fini A alphabet ensemble fini i état initial i Î Q T états terminaux T Í Q d fonction de transition d : Q x A ® Q L (a) = { x Î A*/ x étiquette d'un chemin de i à t Î T} L = { écritures en base 2 des multiples de 5 } 1 2 4 3 Þ

Algorithmes sur automates émondage calcul de L(a) expression rationnelle ® automate déterminisation minimisation tests « L(a) = Æ ? » ou « L(a) = A* ? » Construction d ’un automate a tel que L(a) = A* - L(B) L(a) = L(B) È L(C) L(a) = L(B) Ç L(C) L(a) = L(B) * ... tester a = B test s ’équivalence : L(a) = L(B) ? ...

Représentation des automates Représentation de la fonction de transition  par listes des flèches matrice d ’adjacence listes des successeurs table de transition  0 1 0 0 1 1 2 3 2 4 0 3 1 2 4 3 1 1 2 4 3 

Utilisation d ’un automate Test d ’appartenance de x à L(a), a = (Q, A, i, T,  ) fonction reconnaît (mot x, automate (Q, A, i, T,  ) ) : booléen; début p  i ; tant que non fin de x faire { a  lettre suivant de x ; p   ( p, a ) ; } si p  T retour vrai sinon faux ; fin reconnaissance de 0 0 0 1 0 1 0 0 (101002 = 2010 ) a 0 0 0 1 0 1 0 0 p 0 0 0 0 1 2 0 0 0  0 1 0 0 1 1 2 3 2 4 0 3 1 2 4 3 1

a = (Q, A, i, T, d) automate déterministe Automate minimal a = (Q, A, i, T, d) automate déterministe p Î Q L(p) = L( (Q, A, p, T, d ) ) Congruence syntaxique Soit E équivalence sur Q définie par (p,q) Î E « L(p) = L(q) a / E automate minimal de L(a) . L(3) = L(4) = (A2) * L(1) = L(2) = A (A2) * 1 2 3 4 a b Þ a,b 1 2 a b a b · · · · · · · · · · · · · · · · · · · ·

Test de minimalité ? S ’il existe p,q tels que : " a Î A d (p,a) = d (q,a) alors a non minimal 2 et 3 équivalents Réciproque fausse ! Est-il plus facile de - tester si a est minimal que de - minimiser a ? b a a,b Þ Þ 1 2 4 3

Minimisation par partitionnement Lemme E est l'équivalence la plus grossière telle que : (p,q) Î E et p Î T Þ q Î T compatibilité avec T (p,q) Î E Þ (d(p,a), d(q,a)) Î E compatibilité avec d F équivalence initiale = (T x T) U ((Q -T) x (Q -T)) Ej équivalence : (p,q) Î Ej  pour tout uÎA£j (d(p,u), d(q,u)) Î F Lemme il existe k ³ 0 E0 = F > E1 > … > Ek = Ek+1 = E 1 2 3 4 a b Þ a,b

p Ej équivalent à q p q a b b b a a b a a a b b b a a a a a b a b b a

Lemme de récurrence (p,q) Î Ej+1 ssi " a Î A ( d(p,a), d(q,a)) Î Ej et (p,q) Î Ej p Ej -équiv. q a b a b j+1 Ej -équiv. Ej -équiv.

Algorithme de Moore Calcul de la congruence syntaxique : raffiner F en utilisant la récurrence jusqu'à stabilisation F = E0 : 1 2 3 4 5 | 6 7 E1 : 1 2 3 | 4 5 | 6 7 E2 : 1 | 2 | 3 | 4 5 | 6 7 Automate minimal 2 4 3 5 1 Þ a b 6 7 a,b 1 Þ a b a,b 2 3 4,5 6,7

Ej Ej (d (.,a)) ... Ej (d (.,z)) Ej+1 Calcul des lignes égales Mise en œuvre Automate donné par a ... z F Calcul de Ej+1 à partir de Ej Ej Ej (d (.,a)) ... Ej (d (.,z)) Ej+1 Calcul des lignes égales par tri lexicographique Temps de calcul pour chaque Ej +1 O(n.card A) moins de n étapes d 1 2 . n 1 2 . n Þ O(n2.card A)

2 4 3 5 1 Þ a b 6 7 a,b d(.,a) d(.,b) F=E0 1 2 3 0 2 4 5 0 3 5 3 0 4 6 6 0 5 7 7 0 6 6 6 1 7 6 6 1 Calcul de E1 E0 E0(d(.,a)) E0(d(.,b)) E1 1 0 0 0 1 0 2 0 0 0 2 0 3 0 0 0 3 0 4 0 1 1 4 1 5 0 1 1 5 1 6 1 1 1 6 2 7 1 1 1 7 2

2 4 3 5 1 Þ a b 6 7 a,b E0 E1 1 0 0 2 0 0 3 0 0 4 0 1 5 0 1 6 1 2 7 1 2 Calcul de E2 E1 E1(d(.,a)) E1(d(.,b)) E2 1 0 0 0 1 0 2 0 1 1 2 1 3 0 1 0 3 2 4 1 2 2 4 3 5 1 2 2 5 3 6 2 2 2 6 4 7 2 2 2 7 4

Þ E2 = E3 = E congruence syntaxique 2 4 3 5 1 Þ a b 6 7 a,b E0 E1 E2 1 0 0 0 2 0 0 1 3 0 0 2 4 0 1 3 5 0 1 3 6 1 2 4 7 1 2 4 Calcul de E3 E2 E2(d(.,a)) E2(d(.,b)) 1 0 1 2 2 1 3 3 3 2 3 2 4 3 4 4 5 3 4 4 6 4 4 4 7 4 4 4 autant de classes qu'avec E2 Þ E2 = E3 = E congruence syntaxique

automate minimal : état = classe d'équivalence 2 4 3 5 1 Þ a b 6 7 a,b E 1 0 2 1 3 2 4 3 5 3 6 4 7 4 automate minimal : état = classe d'équivalence 1 Þ a b a,b 2 3 4,5 6,7

6 5 8 7 Égalité d ’automates Þ a b a,b a,b a 2 4 Þ 3 Tester l'égalité des structures en construisant la bijection 1 5 2 7 3 6 4 8 Þ 6 7 a b a,b 5 8 2 4 3 1 Þ a b a,b

bij(p, q) met en bijection p et q bij(i1, i2 ) ; Calcul de la bijection a1 = (Q1, A, i1,T1, d1) a2 = (Q2, A, i2, T2, d2) Calcul de la bijection f entre Q1 et Q2 par la procédure bij bij(p, q) met en bijection p et q début bij(i1, i2 ) ; si les états sont en bijection par f et pour tout q1, q1 Î T1 ssi f(q1) Î T2 alors « a1 et a2 sont égaux » ; fin

Calcul de la bijection a1 = (Q1, A, i1,T1, d1) a2 = (Q2, A, i2, T2, d2) Test de bijection par calcul simultané de la fonction inverse : g = f -1 procédure bij (q1, q2) ; début si ( un seul de f(q1) et g(q2) défini ) ou ( f(q1) et g(q2) définis et f(q1)  q2 ) alors « a1 et a2 non égaux » ; sinon si f(q1) et g(q2) non définis alors { f(q1) ¬ q2 ; g(q2) ¬ q1 ; pour chaque a Î A faire bij(d1(q1, a), d2(q2, a)) ; } fin

Temps d ’exécution : O(cardA . min{cardQ 1, cardQ 2}) s'étend à des automates non complets l ’algorithme précédent ne peut se passer de g ! 2 4 3 1 Þ a b Þ 5 6 7 a,b a f 1  5 2  6 3  6 4  7

Équivalence d ’automates Tester L (a1) = L(a 2) n = card Q1 + card Q2 si a 1 et a 2 minimaux L (a1) = L(a 2) ssi a1 = a2 par minimisation -- minimiser a1 et a2 -- puis tester a1 = a2 Temps (avec algorithme de Hopcroft) : O(card A . n . logn) test direct utilise la représentation d'ensembles avec opérations UNION / CLASSE Temps : O(card A . n . (n)) [  = ‘‘logstar’’ ]

a1 et a2 équivalents « i1 et i 2 équivalents Exemple 2 4 3 1 Þ a b a,b Þ 5 6 7 a,b a b a1 et a2 équivalents « i1 et i 2 équivalents (dans union disjointe) Construction de l'équivalence : 1 | 2 | 3 | 4 | 5 | 6 | 7 1 5 | 2 | 3 | 4 | 6 | 7 1 5 | 2 6 | 3 | 4 | 7 1 5 | 2 3 6 | 4 | 7 1 5 | 2 3 6 | 4 7 a1 et a2 équivalents

si un seul de q1 et q2 terminal alors « a1 et a2 non équivalents » Algorithme procédure Equiv( q1, q2 ) ; début si un seul de q1 et q2 terminal alors «  a1 et a2 non équivalents » sinon { C1 ¬ classe(q1) ; C2 ¬ classe(q2) ; si C1 ¹ C2 alors { remplacer C1 et C2 par C1 È C2 ; /* union disjointe */ pour chaque a Î A faire Equiv( d1( q1, a), d2( q2, a)) ; } Fin Temps O(card A . n . (n)) ( n = card Q1 + card Q2 ) avec représentation des classes par type « UNION / CLASSE »

Minimisation par équivalence Note Si l'un des automates est minimal, Equiv calcule la congrence syntaxique de l'autre. 2 4 3 1 Þ a b a,b Þ 5 6 7 a,b a b a2 est minimal Équivalence finale : 1 5 | 2 3 6 | 4 7 Congruence de a1 : 1 | 2 3 | 4

UMLV ã CLASSE / UNION Gestion d’une partition de {1, 2, …, n} avec les opérations principales CLASSE : numéro de classe d’un élément UNION : union de classes disjointes Implémentations possibles 1. table simple 2. arbres 3. idem + compression de chemins Exemple n = 7 soit 1 º 2 ; {1, 2} {3} {4} {5} {6} {7} soit 5 º 6 ; {1, 2} {3} {4} {5, 6} {7} soit 3 º 4 ; {1, 2} {3, 4} {5, 6} {7} soit 1 º 4 ; {1, 2, 3, 4} {5, 6} {7} est-ce que 2 º 3 ? oui car 2 et 3 dans la même classe

UMLV ã Par table simple CLASSE 1 2 3 4 5 6 7 1 1 3 3 5 5 7 représente {1,2} {3,4} {5,6} {7} UNION des classes (disjointes) de p et q { x ¬ CLASSE [p] ; y ¬ CLASSE [q] ; pour k ¬ 1 à n faire si CLASSE [k] = y alors CLASSE [k] ¬ x ; } Temps CLASSE : constant UNION : O(n) CLASSE 1 2 3 4 5 6 7 1 1 1 1 5 5 7 représente {1,2,3,4} {5,6} {7}

Par arbres UMLV ã 1 2 3 4 5 6 7 - 1 - 3 - 5 - CLASSE(i ){ k ¬ i ; partition {1,2} {3,4} {5,6} {7} CLASSE,TAILLE 1,2 3,2 5,2 7,1 arbres 1 2 3 4 5 6 7 P 1 2 3 4 5 6 7 - 1 - 3 - 5 - CLASSE(i ){ k ¬ i ; tant que P[k] défini faire k ¬ P[k] ; retour ( CLASSE[k] ) ; } Temps CLASSE : O(n) UNION : constant partition {1,2,3,4} {5,6} {7} CLASSE,TAILLE 1,4 5,2 7,1 arbres 1 2 5 6 7 P 1 2 3 4 5 6 7 - 1 1 3 - 5 - 3 4

Éviter des arbres filiformes pour réduire UMLV ã Union des arbres 1 2 n Éviter des arbres filiformes pour réduire le temps de calcul de CLASSE(i ) Stratégie pour UNION : toujours mettre le petit arbre enfant de la racine du gros Temps CLASSE : O(logn) UNION : constant Preuve niveau( i ) augmente de 1 quand union de P et Q, card P £ card Q et i Î P i.e., quand la taille de la classe de i double au moins Ceci ne peut arriver que log2n fois au plus petite classe grosse classe

après calcul de CLASSE(7) UMLV ã Compression de chemins Idée : réduire le temps de calcul de CLASSE(i ) en « aplatissant » l'arbre à chaque calcul 1 2 3 4 5 6 7 8 9 1 2 3 5 7 4 6 8 9 après calcul de CLASSE(7) Temps de n calculs de CLASSE : O(n a (n)) où a(n) est le plus petit entier k tel que n £ 2 Preuve [Aho, Hopcroft, Ullman, 1974] 2 k fois

UMLV ã Ackermann fonction A : N x N  N définie par A(0, y) = 1 y ³ 0 A(1, 0) = 2 A(x, 0) = x + 2 x ³ 2 A(x, y) = A(A(x-1, y), y-1) x, y ³ 1 Propriétés y = 0 A(x, 0) = x+2 x ³ 2 y = 1 A(x, 1) = 2.x x ³ 1 car A(1,1) = A(A(0,1),0) = A(1,0) = 2 A(x,1) = A(A(x-1,1),0) = A(x-1,1)+2, . . . y = 2 A(x, 2) = 2x x ³ 1 car A(1,2) = A(A(0,2),1) = A(1,1) = 2 A(x,2) = A(A(x-1,2),1) = 2.A(x-1,2) , . . .

UMLV ã y = 3 A(x,3) = 2 « tour de 2 en x exemplaires » a (n) = plus petit k tel que n £ A(k, 3) A(4,4) = « tour de 2 en 65536 exemplaires » si n raisonnable, a(n) £ 4 2