Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 133 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
133
Dung lượng
1,05 MB
Nội dung
Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires Institut de la Francophonie pour l'Informatique MÉMOIRE DE STAGE DE FIN D’ÉTUDES Master de Recherche Mention Informatique Spécialité Intelligence Artificielle et Multimédia Génération aléatoire de classes des partitions d'entier et de certains objets combinatoires Stagiaire CAO Phuong Thao Établissement d'accueil : L'Institut de Mathématiques (IM) L'Académies des Sciences et des Technologies du Vietnam Équipe d'acceuil :Département « Fondations mathématiques pour l'Informatique» Directeur de recherche : Madame PHAN Thi Ha Duong, Mtre de conférences de l'Université Paris et chercheur de l'IM Hanoi, 15 Janvier, 2009 Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires Table des matières Remerciements2 Résumé3 Abstract5 Liste des figures7 Liste des tableaux8 Introduction9 1.1 Définitions9 1.2 Générer tous les objets 10 1.3 Génération aléatoire d'un objet assurant la distribution uniforme10 1.4 Méthode de fonctions génératrices10 Codage et Génération aléatoire13 2.1 Génération aléatoire d'un arbre par le codage de Prüfer13 2.2 Génération aléatoire d'une permutation par la table d'inversion17 2.3 Génération aléatoire d'une triangulation19 Partitions d'entier positif24 3.1 Définitions24 3.2 Représentation de partitions et l'ordre de la classification25 3.3 Calcul le nombre des partitions25 3.4 Génération des partitions par ZS1 et ZS228 3.5 Génération aléatoire d'une partition33 3.6 Génération aléatoire d'une partition impaire40 3.7 Génération aléatoire d'une partition paire44 3.8 Génération aléatoire d'une partition stricte49 Expérimentation et Analyse des résultats52 4.1 Programme de génération aléatoire d'un arbre par le codage de Prüfer52 4.2 4.3 4.4 4.5 4.6 4.7 4.8 Programme de génération aléatoire d'une permutation par la table d'inversion 55 Programme de génération aléatoire d'une triangulation56 Programme de génération des partitions d'entier par ZS1 et ZS258 Programme de génération aléatoire d'une partition d'entier59 Programme de génération aléatoire d'une impaire d'entier63 Programme de génération aléatoire d'une paire d'entier66 Programme de génération aléatoire d'une partition stricte d'entier66 Conclusion et perspective69 Références71 Annexe72 Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires REMERCIEMENTS Je tiens particulièrement remercier Madame PHAN Thi Ha Duong, ma professeur l’Institut de Mathématiques du VietNam, qui m‘a aidé beaucoup avec ses conseils utiles sur la direction de mon sujet et la méthode de recherche pendant toute la durée du stage Je tiens également remercier tous les professeurs l’Institut de la Francophonie pour l’Informatique pour l’enseignement, l’aide, les conseils utiles et l’environnement de travail très chaleureuse J’exprime mes reconnaissances tous les professeurs l’Institut de Mathématiques et mes amis dans l’équipe de recherche dont Mme Phan est responsable pour leur accueil chaleureux et qui m’ont aidé avec des documents, des livres utiles pour ma recherche Enfin, j’adresse mes sincères remerciements ma famille, mes parents et mes amis qui sont toujours près de moi et m’ont apporté le courage dans les moments difficiles Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires Résumé Le sujet de ce stage se situe dans le cadre du projet de recherche «Combinatoire énumérative et génération aléatoire» de l'Académies des Sciences et des Technologies du VietNam dont Mme Phan est responsable En informatique, la génération aléatoire est un thème beaucoup étudié et elle donne lieu des applications dans des différents domaines tels que des algorithmes cryptographiques, des tests de programmes, des algorithmes probabilistes, des modélisations nucléaires, etc Dans le cadre de ce sujet, nous nous intéressons la génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires par exemple les arbres, les triangulations et les permutations L'objectif de ce travail est d'étudier des méthodes existantes qui peuvent faciliter la génération aléatoire et réduire le temps de génération En plus, le stagiaire proposera de nouveaux algorithmes pour certaines classes Dans le travail pratique, les algorithmes représentés seront implémentés par des outils comme des bijections, des probabilités et des graphes pour illustrer des méthodes différentes Ce rapport se compose de cinq chapitres : L'objectif du premier chapitre est de donner une vue globale sur des objets et des thèmes étudiés dans ce rapport Ce chapitre est consacré la présentation des définitions d'objets combinatoires étudiés dans ce rapport comme les arbres, les triangulations, les permutations et les partitions d'entier Ce sont des objets combinatoires souvent utilisés dans la structure de données informatiques ou dans la construction d'algorithmes Le concept de génération des objets d'un ensemble et le concept de génération aléatoire d'un objet sont aussi abordés dans ce rapport Puis, on présente la méthode de fonction génératrice pour calculer le nombre d'objets d'un ensemble Le but du deuxième chapitre est d'étudier et valider des différentes méthodes qui permettent de faciliter la génération aléatoire Ce chapitre parle du mécanisme de générer aléatoirement basé sur les données cryptographiques des objets combinatoires Dans plusieurs cas, la génération aléatoire d'objets est difficile si ces objets ont une structure complexe Si ces objets sont codés et on fait la génération sur les codages, la génération devient beaucoup plus facile On le voit plus claire via l’algorithme de génération aléatoire d'un arbre par le Codage de Prüfer et via la génération aléatoire d'une permutation par la table d’inversion La fin du chapitre présente l’algorithme de génération aléatoire d'une triangulation en assurant la distribution uniforme C'est un nouveau résultat de recherche en 2008 du l'équipe dont Mme Phan est responsable À côté de l'introduction d'algorithmes existants, il y a aussi nos contributions dans ce chapitre Ce sont nos analyses concernant la complexité et la distribution uniforme d'algorithmes Ces analyses aident comprendre et comparer l'efficacité de ces algorithmes par rapport aux autres Nous réalisons aussi des programmes de ces algorithmes dans le quatrième chapitre pour illustrer leurs fonctionnements via des paramètres différents Le chapitre est le centre de ce rapport qui parle de la partition La plupart des nos Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires contributions se situent dans ce chapitre Premièrement, nous rappelons la définition des types de partition, des bijections et des fonctions génératrices pour compter des partitions Puis, nous introduisons deux algorithmes ZS1 et ZS2 pour générer tous les partitions Ces deux algorithmes ayant les plus petits temps de fonctionnement sont le résultat de recherche de A Zoghbi et I Stojmenovic [18] en 1998 Particulièrement, selon des conseils sur la direction de recherche de Mme Phan, nous avons trouvé aussi nouveaux algorithmes Ils permettent de générer aléatoirement une partition impaire, une partition paire ou une partition stricte Tous ces algorithmes assurent la distribution uniforme et sont basés sur la méthode de génération aléatoire d'une partition[5][6] Des programmes de ces algorithmes sont réalisés au chapitre Dans la partie de l'implémentation de chapitre 4, il y a programmes Premièrement, c'est un programme pour générer aléatoirement un arbre par le codage de Prüfer Il y a aussi deux programmes de génération aléatoire d'une triangulation et d'une permutation En suite, ces sont des programmes concernant la partition : deux programmes qui génèrent tous les partitions d’entier positif selon ZS1 et ZS2, quatre programmes pour générer aléatoirement : une partition, une partition impaire, une partition paire ou partition stricte À côté de l'introduction des algorithmes, il y a des évaluations de la complexité des programmes et des résultats obtenus Des avantages et des inconvénients des programmes seront aussi discutés Enfin, le chapitre est consacré pour la conclusion Mots clés partitions d'entier, partitions strictes, partitions impaires, partitions paires, génération aléatoire, fonction génératrice, bijection, distribution uniforme Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires Abstract This subject is part of the research project "Enumerative Combinatorics and random generation" of the Academies of Science and Technology of Vietnam which Ms Phan is responsible In computing, random generation is a subject much studied and it gives rise to different applications in areas such as cryptographic algorithms, testing programs, probabilistic algorithms, modeling nuclear etc Under this regard, we are interested in the generation of random classes of positive partitions and other combinatorial objects such as trees, triangulations and permutations The objective of this work is to study existing methods that can facilitate the random generation and reduce the generation time In addition, we will propose new algorithms for classes In practical work, algorithms represented will be implemented by tools such as bijections, probabilities and graphs to illustrate different methods The report consists of five chapters : The objective of the first chapter is to give us a global view on objects in this report This chapter is devoted to presenting definitions of combinatorial objects studied in this report as trees, triangulations, the permutations and partitions over This combinatorial objects are often used in the structure of data or the construction of algorithms The concept of generating a set of objects and the concept of random generation of an object are also covered in this report Then, this method of generating function to calculate the number of objects in a set The goal of the second chapter is to examine and validate various methods to facilitate the random generation Chapter speaks of the mechanism to generate random data based on cryptographiques combinatorial objects The generation of random objects is difficult if they have the complex structure In many cases, if they are coded and so on encodings generation, the generation becomes much easier We see more clearly through the algorithm of random generation tree by the coding Prüfer and via the generation of random permutation of the inversion table The chapter will present the algorithm of the random generation triangulations ensuring uniform distribution It is a result of new research in 2008 from the team which Ms Phan is responsible Besides the introduction of existing algorithms, it is also my contributions in this chapter These are my analysis on the complexity and uniform distribution of algorithms These tests will help us to understand and compare the effectiveness of these algorithms compared to others I realize also programs of these algorithms in the fourth chapter to illustrate how they work via different parameters The chapter is the center of this report which spoke of the partition Most of my contributions are in this chapter First, I remind the definition of partition types of bijections and generating functions for counting scores Then, though I ZS1 two algorithms and ZS2 to generate all the partitions Both algorithms have the smallest operation time are the result of research by A Zoghbi and I Stojmenovic [18] in 1998 Specifically, according to advice on the research direction of Mrs Phan, I also found Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires new algorithms They can randomly generate a partition odd, a partition or a pair strict partition All these algorithms ensure uniform distribution and are based on the method of random generation of partition [5] [6] Programs of these algorithms will be carried out in Chapter In the part of the implementation of Chapter 4, there will be programs First, I realize a program to randomly generate a tree by encoding Prüfer There are also two generations of triangulation and random permutation, two programs that generate all partitions according ZS1 and ZS2 and four programs to randomly generate a partition, an odd partition, an even partition or a strict partition Besides the introduction of algorithms, there will be assessments of the complexity and results of programs Advantages and disadvantages of programs will also be discussed Finally, the chapter is devoted to the conclusion Keywords partitions d'entier, partitions strictes, partitions impaires, partitions paires, génération aléatoire, fonction génératrice, bijection, distribution uniforme Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires Liste des figures Figure Figure Figure Figure Figure Figure Une exemple de triangulations9 L'algorithme de triangulation20 L'arbre numéroté de 10 sommets54 L'arbre numéroté de 50 sommets55 Une permutation de 30056 Une permutation de 10056 Figure Une triangulation du polygone convexe de sommets57 Figure Une triangulation du polygone convexe de 25 sommets57 Figure Les partitions de 20 selon l'ordre inverse lexicographique58 Figure 10 Les partitions de 20 selon l'ordre lexicographique59 Figure 11 Une partition de 10062 Figure 12 Une partition de 25063 Figure 13 Une partition impaire de 35065 Figure 14 Une partition paire de 50066 Figure 15 Une partition stricte de 40068 Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires Liste des tableaux Table Exemple de codage 14 Table Exemple de décodage15 Table Distribution uniforme de triangulation 22 Table Temps de génération des partitions selon ZS1 et ZS232 Table Temps de génération des partitions de 75 en représentation standard33 Table Complexité de génération aléatoire d'une partition 38 Table Complexité de génération aléatoire d'une partition impaire 44 Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires Chapitre Introduction Ce chapitre commence par des définitions d'objets combinatoires étudiés dans ce rapport comme les arbres, les triangulations des polygone convexes, les permutations et les partitions d'entier Ce sont des objets combinatoires souvent utilisés en informatique Par exemple les arbres jouent un rôle central dans la conception et analyse d’algorithmes et ils aident décrire les propriétés dynamiques d'algorithmes Le concept de génération tous les objets d'un ensemble et le concept de génération aléatoire d'un objet sont aussi abordés dans ce rapport Puis, on présente la méthode de fonction génératrice pour calculer le nombre d'objets d'un ensemble Cette technique réduit le temps de calcul et nous aide conntre la formule explicite du nombre d'objets d'un ensemble 1.1 Définitions Définition : Un graphe G=(X , E) est la donnée d'un ensemble X de sommets et d'un ensemble E ⊂ X x X d'arcs Un graphe peut être orienté ou non orienté Dans le cas d'un graphe non orienté, les couples (x, y) et (y, x) représentent le même arc Dans le cas d'un graphe orienté, ils décrivent les deux arcs différents Définition : Un arbre est un graphe non orienté, connexe et sans cycle Définition : Un arbre numéroté d'ordre n est un arbre dont ses n sommets sont étiquetés par des entiers distincts de n ́ Dộfinition : Une triangulation d'ordre n2 est une faỗon de diviser un polygone convexe de n sommets en n2 triangles par des diagonales nonintersections On a prouvé que le nombre des faỗons pour trianguler un polygone convexe de n sommets est égale au (n2)ième nombre de Catalan (Cn2).[2] Exemple : On a les triangulations d‘ordre ( C3 =5 ) Figure – Exemple de triangulations Définition : Soit A un ensemble de n entiers de n Une permutation d'un ensemble A est une bijection σ de A sur luimême Exemple est une permutation de l'ensemble A = {1, 2, 3, 4, 5} On a σ(1)=5, σ (2)=2, σ (3)=1, σ (4)=4, σ(5)=3 Définition : Une partition d'un entier positif n est une séquence décroissante des k entiers positifs λ1, λ2, λk tels que ∑ λi = n où λi est appelé un part de la partition i=1 10 Génération aléatoire des classes des partitions d'entier positif et d'autres objets combinatoires //System.out.println(" xd " + x ); if ((x >= 0) && (x