1. Trang chủ
  2. » Luận Văn - Báo Cáo

Génération aléatoire de classes des partitions dentier et de certains objets combinatoires

116 13 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

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  Remerciements­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­2 Résumé­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­3 Abstract­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­5 Liste des figures­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­7 Liste des tableaux­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­8 1. Introduction­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­9    1.1.     Définitions­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­9    1.2.     Générer tous les objets ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­10    1.3.     Génération aléatoire d'un objet assurant la distribution uniforme­­­­­­­­­­­­­­­­­10    1.4.     Méthode de fonctions génératrices­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­10 2. Codage et Génération aléatoire­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­13    2.1.     Génération aléatoire d'un arbre par le codage de Prüfer­­­­­­­­­­­­­­­­­­­­­­­­­­­­13    2.2.     Génération aléatoire d'une permutation par la table d'inversion­­­­­­­­­­­­­­­­­­­17    2.3.     Génération aléatoire d'une triangulation­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­19 3. Partitions d'entier positif­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­24    3.1.     Définitions­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­24    3.2.     Représentation de partitions et l'ordre de la classification­­­­­­­­­­­­­­­­­­­­­­­­­25    3.3.     Calcul le nombre des partitions­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­25    3.4.     Génération des partitions par ZS1 et ZS2­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­28    3.5.     Génération aléatoire d'une partition­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­33    3.6.     Génération aléatoire d'une partition impaire­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­40    3.7.     Génération aléatoire d'une partition paire­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­44    3.8.     Génération aléatoire d'une partition stricte­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­49 4. Expérimentation et Analyse des résultats­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­52    4.1.     Programme de génération aléatoire d'un arbre par le codage de Prüfer­­­­­­­­­­52    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 triangulation­­­­­­­­­­­­­­­­­­­­­­­­­­­­56    4.4.     Programme de génération des partitions d'entier par ZS1 et ZS2­­­­­­­­­­­­­­­­­58    4.5.     Programme de génération aléatoire d'une partition d'entier­­­­­­­­­­­­­­­­­­­­­­­­59    4.6.     Programme de génération aléatoire d'une impaire d'entier­­­­­­­­­­­­­­­­­­­­­­­­­63    4.7.     Programme de génération aléatoire d'une paire d'entier­­­­­­­­­­­­­­­­­­­­­­­­­­­­66    4.8.     Programme de génération aléatoire d'une partition stricte d'entier­­­­­­­­­­­­­­­66 5. Conclusion et perspective­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­69  Références­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­71  Annexe­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­72                     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 triangulations­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­9 Figure 2 ­ L'algorithme de triangulation­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­20 Figure 3 ­ L'arbre numéroté de 10 sommets­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­54 Figure 4 ­ L'arbre numéroté de 50 sommets­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­55 Figure 5 ­ Une permutation de 300­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­56 Figure 6 ­ Une permutation de 100­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­56 Figure 7 ­ Une triangulation du polygone convexe de 7 sommets­­­­­­­­­­­­­­­­­­57 Figure 8 ­ Une triangulation du polygone convexe de 25 sommets­­­­­­­­­­­­­­­­­57 Figure 9 ­ Les partitions de 20 selon l'ordre inverse lexicographique­­­­­­­­­­­­­­58 Figure 10 ­ Les partitions de 20 selon l'ordre lexicographique­­­­­­­­­­­­­­­­­­­­­­59 Figure 11 ­ Une partition de 100­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­62 Figure 12 ­ Une partition de 250­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­63 Figure 13 ­ Une partition impaire de 350­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­65 Figure 14 ­ Une partition paire de 500­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­66 Figure 15 ­ Une partition stricte de 400­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­68               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écodage­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­15 Table 3­ Distribution uniforme de triangulation ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­22 Table 4­ Temps de génération des partitions selon ZS1 et ZS2­­­­­­­­­­­­­­­­­­­­­32 Table 5­ Temps de génération des partitions de 75 en représentation standard­­­33 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 lui­mê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

Ngày đăng: 17/03/2021, 19:13

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w