Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 116 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
116
Dung lượng
1,14 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 StagiaireCAOPhuongThao ẫtablissementd'accueil:L'InstitutdeMathộmatiques(IM)ư L'AcadộmiesdesSciencesetdesTechnologiesduVietnam ẫquiped'acceuil:DộpartementôFondationsmathộmatiquespourl'Informatiqueằ Directeurderecherche:MadamePHANThiHaDuong, Maợtredeconfộrencesdel'UniversitộParis7etchercheurdel'IM Hanoi,15Janvier,2009 Gộnộrationalộatoiredesclassesdespartitionsd'entierpositifetd'autresobjetscombinatoires Table des matières Remerciements2 Résumé3 Abstract5 Liste des figures7 Liste des tableaux8 1. 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 2. 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 3. 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 4. 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. Programme de génération aléatoire d'une permutation par la table d'inversion 55 4.3. Programme de génération aléatoire d'une triangulation56 4.4. Programme de génération des partitions d'entier par ZS1 et ZS258 4.5. Programme de génération aléatoire d'une partition d'entier59 4.6. Programme de génération aléatoire d'une impaire d'entier63 4.7. Programme de génération aléatoire d'une paire d'entier66 4.8. Programme de génération aléatoire d'une partition stricte d'entier66 5. 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 3 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 3 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 4 Dans la partie de l'implémentation de chapitre 4, il y a 9 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 5 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 2 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 3 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 3 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 4. In the part of the implementation of Chapter 4, there will be 9 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 5 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 1 Une exemple de triangulations9 Figure 2 L'algorithme de triangulation20 Figure 3 L'arbre numéroté de 10 sommets54 Figure 4 L'arbre numéroté de 50 sommets55 Figure 5 Une permutation de 30056 Figure 6 Une permutation de 10056 Figure 7 Une triangulation du polygone convexe de 7 sommets57 Figure 8 Une triangulation du polygone convexe de 25 sommets57 Figure 9 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 1 Exemple de codage 14 Table 2 Exemple de décodage15 Table 3 Distribution uniforme de triangulation 22 Table 4 Temps de génération des partitions selon ZS1 et ZS232 Table 5 Temps de génération des partitions de 75 en représentation standard33 Table 6 Complexité de génération aléatoire d'une partition 38 Table 7 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 1 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 1 : 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 2 : Un arbre est un graphe non orienté, connexe et sans cycle Définition 3 : Un arbre numéroté d'ordre n est un arbre dont ses n sommets sont étiquetés par des entiers distincts de 1 à n. ́ Définition 4 : Une triangulation d'ordre n–2 est une faỗon de diviser un polygone convexedensommetsennư2trianglespardesdiagonalesnonưintersections Onaprouvộquelenombredesfaỗonspourtriangulerunpolygoneconvexeden sommetsestộgaleau(nư2)ưiốmenombredeCatalan(Cnư2).[2] Exemple1:Onales5triangulationsdordre3(C3=5) Figure1Exempledetriangulations Dộfinition5:SoitAunensembledenentiersde1n.Unepermutationd'unensemble A est une bijection σ de A sur luimême. Exemple 2. 5 2 1 4 3 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 6 : 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 */ public static void main(String[] args) { MainForm m=new MainForm(); m.setBounds(100,100,500,500); m.setVisible(true); } } 6. Programme de génération aléatoire d'une partition impaire d'entier 6.1 Fichier PartitionImpaire.java import java.util.Random; // Random functions public class PartitionImpaire { public int[] sumOddDivisors ; public float[] numberOddPartitions ; //Calculate sum of all divisors int SumOddDivisors(int n) { int s = ;int i; for ( i=1; i < Math.sqrt(n); i++) if (n%i==0) { if (i%2 == 1) s = s + i ; if ((n/i)%2 ==1) s = s + n/i ; } if ((i*i == n ) && (i%2 == 1)) s = s + i ; System.out.print("n = " + n); System.out.println(" s = " + s); return s ; } int SelectOddDivisor(int n) { // Initialize random engine Random generator = new Random(); // Initialize the result array int[] a = new int[n+2]; // use from a[0] to a[n-1] int i = 0; int uocso = ; int sumDivisors1 = ; int sumDivisors2= ; //Find all odd divisors of n for (int j=1; j = 0) && (x