1. Trang chủ
  2. » Ngoại Ngữ

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

116 252 1

Đ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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 triang

Trang 1

   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, 

      Maître de conférences de l'Université Paris 7 et chercheur de   l'IM

Hanoi, 15 Janvier, 2009

Trang 2

Remerciements­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­2Résumé­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­3Abstract­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­5Liste des figures­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­7Liste 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     

Trang 3

   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. 

Trang 4

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 

Trang 5

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

Trang 6

 

   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 

   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 

Trang 7

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

    

Trang 8

  Liste des figures 

Figure 1 ­ Une exemple de triangulations­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­9Figure 2 ­ L'algorithme de triangulation­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­20Figure 3 ­ L'arbre numéroté de 10 sommets­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­54Figure 4 ­ L'arbre numéroté de 50 sommets­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­55Figure 5 ­ Une permutation de 300­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­56Figure 6 ­ Une permutation de 100­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­56Figure 7 ­ Une triangulation du polygone convexe de 7 sommets­­­­­­­­­­­­­­­­­­57Figure 8 ­ Une triangulation du polygone convexe de 25 sommets­­­­­­­­­­­­­­­­­57Figure 9 ­ Les partitions de 20 selon l'ordre inverse lexicographique­­­­­­­­­­­­­­58Figure 10 ­ Les partitions de 20 selon l'ordre lexicographique­­­­­­­­­­­­­­­­­­­­­­59Figure 11 ­ Une partition de 100­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­62Figure 12 ­ Une partition de 250­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­63Figure 13 ­ Une partition impaire de 350­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­65Figure 14 ­ Une partition paire de 500­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­66Figure 15 ­ Une partition stricte de 400­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­68

Trang 9

Table 1­ Exemple de codage ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­14Table 2­ Exemple de décodage­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­15Table 3­ Distribution uniforme de triangulation ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­22Table 4­ Temps de génération des partitions selon ZS1 et ZS2­­­­­­­­­­­­­­­­­­­­­32Table 5­ Temps de génération des partitions de 75 en représentation standard­­­33Table 6­ Complexité de génération aléatoire d'une partition ­­­­­­­­­­­­­­­­­­­­­­­38Table 7­ Complexité de génération aléatoire d'une partition impaire ­­­­­­­­­­­­­44

Trang 10

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 à connaỵtre 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 6  :  Une partition d'un entier positif n est une séquence décroissante des 

entiers positifs λ 1 , λ 2 ,  λ k   tels que  

i=1 k

λi  = n ó λ i est appelé un part de la partition. 

Trang 11

1.3  Génération aléatoire d'un objet assurant la distribution uniforme

   Le problème de génération aléatoire est un problème actuel. Si l'objet a la structure complexe,   la   génération   aléatoire   n'est   pas   toujours   facile   Particulièrement,   on s’intéresse à la génération aléatoire assurant la distribution uniforme. C'est à dire que chaque objet a une probabilité égale d'être généré. Pour des applications informatiques, si 

on   a   une   suite   de   données   d’entrée   générée   aléatoirement   ayant   une   distribution uniforme, on pourrait très bien estimer l’exactitude de l’algorithme à travers plusieurs tests différents. Et  cela permet de  déterminer  la qualité de  logiciels. Nous  pouvons comprendre en profondeur des propriétés de la génération aléatoire via les algorithmes aux chapitres 2 et 3

   En combinatoire et en informatique, on a souvent besoins de connaître le nombre des objets   d'un   ensemble   On   pourrait   utiliser   la   règle   d’addition,   de   multiplication   et quelques d’autres méthodes pour trouver la réponse de ce problème. Une des méthodes efficaces pour compter des objets est la fonction génératrice.  L’idée est la suivante : depuis   la   formule   récursive   ou   la   structure   de   l'objet,   on   peut   déduire   la   fonction génératrice appropriée; après ça, à l’aide de la méthode de développement de Taylor, cette fonction génératrice sera étendue à une série formelle. Les coefficients de cette 

Trang 13

   Comme écrit dans l'introduction de ce chapitre, les objets présentés dans ce chapitre jouent un rôle important en informatique. Tout au long de cet rapport, nous introduisons des   algorithmes   existants   et   construisons   nos   nouveaux   algorithmes   concernant   ces objets. 

   Dans le chapitre 2, nous continuons à étudier des algorithmes de génération aléatoire existants et l'efficacité de génération aléatoire en basant les codages d'objets

Trang 14

   L'objectif du deuxième chapitre est d'aider à comprendre et à comparer l'efficacité de génération aléatoire basant sur les codages d'objets au travers des algorithmes différents. Dans certains cas, la génération aléatoire directe des objets est difficile si ces objets ont 

la structure complexe. Si ces objets sont codés et on fait la génération sur leurs codes, la génération devient beaucoup plus facile. En fait, on utilise la méthode de bijection. C’est 

à dire que pour générer aléatoirement un objet de l'ensemble A, on génère un objet de l'ensemble B qui possède la bijection avec l’ensemble A. Après avoir généré un objet de l'ensemble B, on construit un objet de l'ensemble A en basant sur la bijection entre eux. 

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. Ils sont extraits   à   partir   de   documents   [5]   et   [4].  Ces   deux   algorithmes   assurent   aussi   la distribution uniforme de la génération aléatoire. Enfin, la section dernière du chapitre présentera l’algorithme de génération aléatoire  une triangulation assurant la distribution uniforme. C'est un nouveau recherche dans [12] en 2008.  

Le codage de Prüfer est une manière très compacte de décrire un arbre. Il se compose 

de deux phases : le codage et le décodage. L'idée principale est de générer  aléatoirement une séquence S = (s1, s2, sn­2) ó si   {1, ,n}∊   pour tout 1  ≤ i ≤ n­2. À  partir de cette séquence, on utilise le décodage de Prüfer pour construire un arbre numéroté T de n sommets. En réalité, la génération aléatoire d'un arbre numéroté n'est pas vraiment facile. Pourtant, si on utilise la séquence S, la complexité de génération est diminuée beaucoup par rapport à la génération directe d'un arbre numéroté

Trang 15

• Étape 4 : S'il reste plus de deux sommets dans l'arbre courant T, on retourne à l'étape 1. Si non, on arrête et on a une séquence S de (n­2) nombres.

b. Complexité

   Pour identifier la feuille i de l'arbre courant ayant le numéro minimum, on doit vérifier les listes de sommets de a1 à an de l'arbre. Si la première liste ai a une élément, le sommet 

i est la feuille   de l'arbre courant ayant le numéro minimum. En plus, cette feuille est éliminée dans l'arbre T. Donc, le nombre   des listes diminue 1 après chaque fois de répétition de l'algorithme. Donc, les opérations à fait dans l'étape 1 à la i­ième  fois de répétition sont égale à (n+1­i). 

  Les opérations à fait dans l'étape 2 et 3 à la i­ième fois de répétition sont égale à 3 : une opération pour ajouter à la séquence S le seul sommet s adjacent à i dans l'arbre T courant et les deux opérations pour enlever de l'arbre T courant le sommet i et l'arête incidente à i

L'algorithme répète tant qu'il reste plus de deux sommets dans l'arbre courant T. Donc, l'algorithme répétera (n­2) fois

• Étape 2 : Ajouter à l'arbre T une arête (i,s) ó s est  le sommet correspondant au premier élément de la séquence S,

la i­ième  fois de répétition de l'algorithme,  le nombre des éléments de I est (n+1­i) et le 

Trang 16

nombre des éléments de S est ((n­2 +1)­i ). À la première répétition de l'algorithme, la séquence I a les n éléments et la séquence S a les (n­2) éléments. Donc, les opérations à fait dans l'étape 1 à la i­ième  fois de répétition sont égale à (n+1­i)((n­2 +1)­i) = (n+1­i)(n­1­i)=(n­i)2 ­ 1.

  Les opérations à fait dans l'étape 2 et 3 à la i­ième fois de répétition sont égale à 3 : une opération pour relier par une arête de T le sommet i avec le sommet s correspondant au premier élément de la suite S et les deux opérations pour enlever i de I et s de S

   L'algorithme répète tant qu'il reste plus de deux éléments dans I. Donc, l'algorithme répétera (n­2) fois. 

   La complexité de l'algorithme est   ((Σ n­i )2 + 2 )= O(n2)

Trang 17

S=

{4,10,3,8,4,4,5,10}

S={4,10,3,8,4,4,5,10} est le codage 

de Prüfer de l'arbre initial

Trang 18

Étape 5 Étape 6 Étape 7 Étape 8 Étape 9

Théorème 1  La génération aléatoire d'un arbre par le codage de Prüfer assure la 

distribution uniforme. Cette distribution uniforme est égale à 1/n n­2

Preuve :

  Une séquence S se compose de (n­2) nombres. Chaque nombre a la valeur de 1 à n. On peut générer les nn­2 séquence S. Alors, la probabilité de génération d'une séquence S est égale à 1/nn­2. Il y a la bijection entre une séquence S de (n­ 2) nombres et un arbre numéroté T de n sommets. Donc, la probabilité de génération d'un arbre T de n sommet est égale à 

1/nn­2. 

  Il existe déjà des algorithmes différents pour générer aléatoirement une permutation. Pourtant, la plupart de ces algorithmes n'assurent pas la distribution uniforme ou ont la grande complexité. Dans cette section, nous introduisons une méthode qui assure la distribution uniforme et la petite complexité. 

2.2.1  Table d’inversion 

Définition 12  :  Soit a = a 1   a2 a n   une permutation d'entiers de 1 à n. Une table b =  

b1b2 b n  est appelée la table d'inversion de a si b i  est le nombre d'entiers qui se situent à   gauche de i dans a et sont supérieurs à i,  pour tout 1 ≤ i ≤ n.

Exemple 8. On a une permutation de cinq nombres de 1 à 5 : a = 5 3 1 2 4. La table 

d'inversion b de cette permutation est b = 2 2 1 1 0.  

Trang 19

  C'est   clair   que   chaque   permutation   fournit   l'unique   table   d'inversion   et   vice   versa. Autrement   dit,   il   y   a   la   bijection   entre   une   permutation   et   une   table   d'inversion appropriée. Alors, pour avoir une permutation d'entiers de 1 à n, on génère aléatoirement une table d’inversion. Puis, on calcule depuis cette table d’inversion pour obtenir une permutation via la bijection entre les permutations et les tables d’inversion. 

2.2.2  Algorithme

Entrée : L'entier n

Sortie  : Une permutation a d' entiers  de 1 à n. 

• Étape 1 : Générer un table b = b1,b2, ,bn tel que 1≤ b≤ n – i pour tout 1≤i  ≤ n.

• Étape 2 : Pour chaque bi généré aléatoirement, on ajoute i à la (bi +1)­ème position vide dans la permutation a

   De manière générale, on a : b1 ∈ {0, 1, , n­1 }, b  2 {0, 1,…, n­2}, , bn­1∈ {0, 1}, b  n ∈ {0}

Il y a tous les  n.(n­1).(n­2) 1 = n ! tables b. Alors, la probabilité de génération aléatoire d'un table b est 1/n!. Autre part, il y a  la bijection entre une permutation a et une table d'inversion b. Pour chaque table b, on a une permutation a. Donc, la probabilité de génération aléatoire d'une permutation est 1/n!.               ◻  

Trang 20

− Le nombre des opérations pour générer une table b est n

− Pour chaque bi , le programme peut parcourir tous les n positions dans la permutation 

a pour ajouter i à la bi +1ème position vide. En plus, la table b  a les n entiers. Alors, ça fait les n.n opérations pour insérer tous les entiers de la permutation  a

Donc, la complexité du programme est  n + n.n = n(n +1) = O(n2)

  Dans   cette   section,   nous   introduisons   un   algorithme   de   génération   aléatoire   de triangulation. Il est créé par N.H.Nguyen en 2008[8]. Il génère un polygone convexe triangulé et assure la distribution uniforme. L’idée de cet algorithme est identique avec l’expression   de   Rémy[8]  pour   générer   aléatoirement   un   arbre   binaire   complet   de   n sommets à partir d'un arbre binaire complet de (n­i) sommets. 

2.3.1  Algorithme pour construire une triangulation de (n+1) sommets G’ à  partir d’une triangulation de n sommets G 

• Étape 3: Ajouter un nouveau sommet v au G. Ce sommet se situe derrière i (selon 

la direction inverse  de la montre)

• Étape 4 : Ajouter deux nouvelles arêtes (i,v) et (j,v) au G

• Étape 5: Dans G, avec les sommets k = i+1,  ,j, on remplace les arêtes (k,i) par les arêtes (k,v). Alors, on obtient une nouvelle triangulation du polygone convexe G' de

 (n +1) sommets

Exemple 9.   On construit une triangulation du polygone convexe de 5 sommets à partir 

d’une   triangulation   du   polygone   convexe   de   4   sommets   Tout   d'abord,   on   choisit aléatoirement une arête (2,4) et un sommet 4 de cette arête. On fait la triangulation comme suite : on ajoute un nouveau sommet 4'  qui se situe derrière le sommet 4 selon la direction inverse de la montre. Puis, on ajoute deux nouvelles arêtes (2,4') et (4,4') au G. L'arête (1,4) est replacée par l'arête  (1,4). Enfin, on donne de nouvelles étiquettes aux sommets et on a une triangulation du polygone de 5 sommets

Trang 21

  

2.3.2  Complexité  

  À partir d’une triangulation d’ordre 1. L’algorithme doit répéter (n –1) fois pour obtenir une triangulation d’ordre n. Chaque fois de répétition, le nombre maximal des arêtes changées est (2n­3). Donc, la complexité est (n­1)(2n­3)   O(n≈ 2). 

2.3.3  Distribution uniforme  

Théorème 3  La distribution uniforme de cet algorithme est  1/(n+1). 

Preuve :

   Avec n = 1, 2 ou 3, on peut vérifier facilement cette affirmation. Suppose que cet algorithme soit vrai avec les triangulations de polygones convexes de n sommets. On a prouvé que le nombre des triangulations du polygone convexe de n sommets est égale  au (n­2)­ième nombre de Catalan [12] Cn­2   ó  Cn =  2n!

n+1!n!    Selon l’algorithme ci­dessus, pour avoir une triangulation du polygone de n+1 

Exemple 10. Il y a les deux triangulations de polygone de 4 sommets. Nous appliquons 

cet algorithme sur ces triangulations et nous avons les 20 triangulations de polygone de 5 sommets. En fait, Il y a seulement les 5 triangulations distinctes car chaque triangulation distincte a répété 4 fois. La probabilité pour générer aléatoirement une triangulation distincte est 4/20 = 1/5

         

Trang 22

Les 20 triangulations du polygone convexe de 5 sommets ( Il y a 5 triangulations distinctes) obtenues après avoir appliqué l'algorithme sur les 2 triangulations ci­ dessus.arête choisie : (1,2) 

sommet choisi : 1

Trang 23

(1,4) 4 (1,4) 1 (1,4) 4 (1,4) 1

 Table 3 – Distribution uniforme de triangulation

Trang 24

    Après avoir analysé les complexités et les distributions uniformes des algorithmes dans 

ce chapitre, nous voyons que la génération aléatoire basant sur le code d'objets est facile à réaliser. En plus, la complexité concernant la mémoire et le temps de fonctionnement est petit. Les programmes de ces algorithmes sont réalisés dans le chapitre 4 pour vérifier ces propriétés au travers des paramètres différents

    Nous   venons   d'étudier   des   objets   comme   les   arbres,   les   permutation   et   les triangulations. Dans le chapitre suivant, nous   continuons à introduire des contenus le plus importants du rapport – les partitions d'entier

Trang 25

Partitions d'entier

   La théorie de partitions a une histoire longue. Certains problèmes particulières de partitions ont été étudiés depuis le Moyen­Âge. Pourtant, des premières inventions en profondeur  ont été découvertes dans le dix­huitième siècle quand L. Euler a prouvé des théorèmes très belles et signifiantes. Euler a vraiment créé la fondation de la théorème de partitions. Il y a encore d'autres grands mathématiciens – Cayley, Gauss, Hardy, Jacobi, Lagrange, Legendre, Littlewood, Rademacher, Schur, Sylvester, etc   qui   ont contribué beaucoup au développement de la théorie de partitions. 

   Le chapitre 3 est le centre de ce rapport. La plupart de nos contributions se situent dans 

ce chapitre  Premièrement,  nous  rappelons  la définition  des types de partitions,  des bijections   et   des   fonctions   génératrices   pour   compter   des   partitions   Puis,   c'est l'introduction de deux algorithmes ZS1 et ZS2 pour générer tous les partitions dans la section  3.4. Ces deux algorithmes ayant   le petits temps de fonctionnement sont le résultat de recherche de  A. Zoghbi et I. Stojmenovic [17] en 1998. Particulièrement, selon des conseils sur la direction de recherche de Mme Phan, nous avons trouvé aussi 3 nouveaux   algorithmes   Ils   seront   introduits   dans   les   sections   3.6,   3.7   et   3.8   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 d'Euler[5][6]  pour  générer  aléatoirement une partition  qui se situe dans la section 3.5.  La complexité et la distribution uniforme de tous les algorithmes dans ce chapitre   sont   analysées   Des   programmes   de   ces   algorithmes   sont   réalisés   aussi   au chapitre 4. 

Trang 26

λ λ1 , λ 2 ,  λ k ).

Définition 14 :  En  représentation de multiplicité,  un partition   de n est écrite sousλ   forme :        λ = (μ 1λ1  , μ 2λ2 , ,μ k λk ) ó μ 1 , μ 2 , , μ k  sont le nombre de fois de répétitions  d'entiers distincts correspondants λ 1 , λ 2 , ,λ k   dans la partition  λ

On peut classifier les partitions de l'entier n selon l'ordre lexicographique ou l'ordre inverse lexicographique. 

Définition 15  : Soit a= (a 1 ,a 2 , ,a s )  et soit b= (b 1 ,b 2 , ,b t ) les deux partitions de n. La  partition a est classifiée  devant la partition b selon  l'ordre lexicographique si  k ≥ 1  tel que a t =b t , pour tout t < k et a k  < b k  

Trang 27

Alors   (n­ k) = (λ1  ­1) + (λ 2 ­1) + + (λk ­1).        (3.1)L'expression (3.1) représente une somme de (n­k) qui a au plus k parties car  l'entier λ

de parenthèses de R(q) une partie de façon que le somme d'exposants des parties est égale à n. 

On peut choisir :

. une partie q a1 .1 dans la première paire de parenthèses,

. une partie q a2 .2 dans la deuxième paire de parenthèses,

. une partie q a3 .3 dans la troisième paire de parenthèses,

Trang 28

Exemple 13. Pour avoir l'exposant 12 de la partie q12, on peut choisir  : q2.1  dans la 

première partie, q0.2  dans la deuxième partie, q2.3  dans la troisième partie, et q1.4  dans la quatrième partie

   On a       q 2.1.q 0.2. q 2.3. q 1.4 = q 2.1 +  0.2  + 2.3  + 1.4 =  q 12 

   Les exposants  (1.4, 2.3, 0.2, 2.1 ) sont récrits sous forme  (4,3,3,1,1 ). Cette forme est une partition de 12. Donc, une façon de choix  pour avoir q12 est une partition de 12

   À travers l'exemple ci­dessus, on voit que une façon de choix   pour avoir qn  est une partition de n. Donc, le nombre des choix pour avoir qn est correspondant au nombre des partitions pn. Alors, le coefficient  de qn dans R(p)  est égal au nombre  des partitions de 

      (1 + q 1.n + q 2.n + q 3.n + ∙ ∙ ∙ ) =  1

1−q n Donc

   Alors, la fonction génératrice pour les partitions distinctes est 

Trang 30

Entrée : l'entier n

Sortie   :   les   partitions   selon   l'ordre   inverse   lexicographique   Chaque   partition   est représentée sous forme (x1,x2,  , xm). Le nombre des parties m n'est pas fixe. Il change selon chaque partition

• Étape 1 : la première partition est n. 

• Étape 2 : Parcourir de droite à gauche dans la partition et trouver  la première partie  xi  qui est plus que 1

• Étape 3 : Soustraire 1 de xi. 

• Étape 4 : Remplacer xj par xi    pour  j = i+1, , m­1

• Étape 5 : Remplacer xm par la reste de somme ( xm = n ­ ∑xi ,  i= 1, ,m ­1). On a une nouvelle partition. 

partition

• Étape 1 : La première partition est (1,1, ,1). Elle se compose de n nombres 1

• Étape 2 : Parcourir de droite à gauche dans la partition et trouver  la première partie à gauche xj satisfaisant xj ­1 > xj et  xj = xj+1 = xj+2 = xm­1.

• Étape 3 : xj est augmenté 1

• Étape 4 : La reste de partition est remplacée par  un nombre convenable de 

Trang 31

• Étape 5 :  Si x1 est égale à n, on arrête et on a une nouvelle partition. Si non, on retourne à l'étape 2

n. Et on ne compte pas le temps d'affichage de résultat

   La taille de sortie de chaque partition est O(n). Cela signifie que la taille totale des partitions  est  O(n   *  P(n))  Toutefois,  dans  certaines  applications,   on  n'a   pas   besoin d'imprimer tous les partitions car ils ne servent que la source d'informations pour d'autres travaux sans afficher tous les partitions. Dans cette section, les deux algorithmes ZS1 et ZS2 sont prouvé qu'ils ont la propriété du délai moyen constant et on ne compte pas le temps d'affichage des partitions. Tout d'abord, on a besoins d'un lemme suivant pour prouver la propriété du délai moyen constant de ZS1 et ZS2. 

Trang 32

Dans la représentation de multiplicité, chaque partition dont la plus grande partie est moins que 3  ou  égale à 3  est écrites  sous forme   = ( cλ 1.3, c 2. 2, c 3 1 ) ó c1, c2, c3 sont 

le nombre des fois de répétitions de 3, 2, et 1 dans chaque partition

   On a :      n = 3c1 + 2c2 + 1c3 .      (3.3)

Le nombre des partitions RP(n,3)  est  les solutions de l'équation (3.3). 

On voit que   0 ≤ c1 ≤ (n/3). Pour chaque c1 dans cet intervalle, on résout l'équation 2c1+ 

c3 = n ­3c1. Cet équation a seulement une solution c3  pour chaque c2,  pour tout  0 ≤ c2 ≤ (n­3c1)/2). Donc, pour chaque c1 fixe, le nombre des solutions est ((n­3c1)/2) +1 ≥ 

(n­3c1)/2

Dans cet équation, c1 est le nombre des répétitions du nombre 3 dans chaque partition. Les valeurs  possibles de c1 sont  0, 1, 2, , n/3

     Le temps de parcourir sur chaque partie de chaque partition est O(1). Le temps de retour pour chercher xi et changer les  valeurs de xi+1  à xm est O(rj) ó rj = n – x1 ­x2 ­ ­xj est le reste à distribuer après les premières j parties est fixés. La partie xi sera changé seulement après une étape de traçage "balayé" sur i­ème partie ou après avoir reconnu la i­ème partie comme le point tournant.  Il y a les RP (ri, xi) telles partitions qui gardent  la partie intacte xj. 

    Pour xi>3, selon le lemme au dessus, le nombre de ces partitions est plus que ri2/12. Alors, le nombre moyen d'opérations qui sont effectué sur chaque xi  pour toutes les partitions  RP(ri, xi ) est 

      O(1)/ RP(ri,xi) ≤  O(1)/ri2 = O(1/ri2) < qi/ri2  ó  qi est constante. 

   Donc, le nombre moyen des opérations pour toutes les parties ≥ 3 est  ≤   q1/r12 + q2/

r22+ +qs/rs2 ≤ q(1/r12 +  + 1/rs2) <  q(1/n2  + 1/(n­1)2 + 1/12 ) <  2q qui est constant (la dernière inégalité est obtenue par appliquer le calcul intégral ). 

   Le case   xi  ≤  2 n'est pas compté dans les arguments au dessus. Pourtant, les deux algorithmes effectuent le nombre constant des opérations sur les cas. Donc, ces deux algorithmes ont le délai moyen constant du temps.   

Trang 33

   Cette section montre notre expérimentation et nos évaluations de ces algorithmes. L'objectif de notre expérimentation est de vérifier la précision de deux algorithme ZS1 et ZS2   et   le   temps   de   génération   des   partitions   est   petit   ou   non   ?   En   plus,   notre expérimentation est aussi comparée avec des résultats d'autres informaticiens

    Nous avons codé ces deux algorithmes ZS1 et ZS2 en langage Java sur l'ordinateur ayant le processeur de Pentium 4 et la mémoire de 512MB. La structure donnée utilisée est une liste d'éléments pour contenir une partition en représentation standard. Les deux programmes de ces algorithmes ont été vérifiés des entiers de 1 à 100. Les deux tables suivants  représentent certains nos résultats. Ils contiennent la valeur de n, le nombre des partitions de n et le temps en second de génération tous les partitions sans afficher les résultats   Nous   avons   calculé   le   temps   moyen   de   10   fois   de   fonctionnement   du programme

n Nombre des 

partitions 

Temps de génération en second (sans afficher les partitions )

partitions 

Temps de génération

en second(sans afficher les partitions)

   Nous avons aussi comparé notre résultat avec le résultat des auteurs de ces algorithmes. Ils   sont près identiques. Le table 4 suivant montre l'expérimentation de A. Zoghbi et I. Stojmenovic [18] dans lequel il y a le temps en second de génération tous les partitions de 

75 selon des algorithmes différents. Tous ces algorithmes ont été codées en langage C. Ils ont été mis en œuvre sur le PC­286, Sun et NeXT. Dans le table de temps de CPU suivant,   les   noms   des   algorithmes   sont   définis   premièrement   Puis,   les   ordres   de générations sont abrégés comme suit: Un (inverse­lexicographique), L(lexicographique), P(part ordre ), U( non­classifiée ) et N (aucun d'entre eux). 

Trang 34

       Table 5 – Temps de génération des partitions de 75 en représentation standard   Après avoir comparé sur le table de temps de performance, les auteurs des ces deux algorithmes ont conclu que les deux algorithmes ZS1 et ZS2 étaient beaucoup plus rapide que d'autres algorithmes connus. Au travers les résultats ci­ dessus, nous pouvons conclure que les deux algorithmes ZS1 et ZS2 sont optimaux.  Ses résultats sont précis et 

le temps de fonctionnement est très petit par rapport à d'autres algorithmes. En plus, Ils sont faciles à comprendre et à réaliser. 

   Nous venons de présenter dans la section 3.4 les deux algorithmes de A. Zoghbi et I. Stojmenovic [18]pour générer tous les partitions et nos évaluations concernant la précision 

et   le   temps   de   fonctionnement   Dans   la   section   3.5,   nous   continuons   à   étudier   en profondeur la génération aléatoire de partitions. 

   La génération aléatoire d'une partition a été largement étudiées au cours des trente dernières années, et ont trouvé des applications divers dans la biologie, les statistiques de Bayes,   la   combinatoire   et   la   physique   statistique,   etc   Dans   cette   section,   nous introduisons l'algorithme d'Euler pour générer aléatoirement une partition. Tout d'abord, nous   décrivons   son   principe   général   pour   la   génération   au   hasard   d'un   objet   de l'ensemble. Au hasard ­ C'est à dire que les objets de l'ensemble ont la même probabilité d'être générés. Ce principe est appliqué dans l'algorithme pour générer aléatoirement une partition d'entier. Enfin, c'est la preuve de la distribution uniforme de cet algorithme

• Étape 1 : Choisir aléatoirement une valeur m de 0 à (n­1)  selon la probabilité suivante 

Trang 35

      Prob(m) = αm,n a m

a n .       (3.5)

• Étape 2 :  Choisir aléatoirement un objet d'ordre m et  cet objet est étendu pour obtenir un objet d'ordre n

de la  première preuve de (3.6) est la fonction génératrice. La deuxième preuve de (3.6) est une preuve combinatoire basée sur la représentation de  multiplicité  de partitions et elle est la base de l'algorithme de génération aléatoire d'une partition dans cette partie

a. Première preuve :

    Cette preuve est basé sur la fonction génératrice. Nous avons la fonction génératrice des partitions 

Trang 36

Alors

Trang 37

   Soit   la partition  de m et soit d un diviseur de (n­m). Pour chaque paire ( , d), laΠ Π  partition   ' de n est obtenue en ajoutant  (n ­ m)/d fois de d. Avec tous les partitions Π Π 

• Si   1 ≤ x ≤ ∆0   on choisit m = 0

• Si ∆0 < x ≤ ∆0 +∆1  on choisit m = 1

Trang 38

à   la   somme   des   diviseurs   de   n     Alors,   la   complexité   pour   calculer   la   somme   des diviseurs de n est (2 .n ).

Trang 39

2n'−m Tm2 n' −m12n '+7

Trang 40

   Soit  ' une partition de n. Elle peut être écrite sous forme :Π       

       'Π : n = μ1r1 + μ2r2+ + μkrk 

ó μ1, μ2, , μk sont le nombre de fois de répétitions des entiers correspondants r1, r2, , rk dans la partition  '.Π

   Suppose  que pour tout n' < n, on a montré que cet algorithme a produit des partitions n' en  probabilités égales. 

   Soit Prob(  '')Π   la probabilité pour avoir une  partition de l'entier m < n et soit Prob( 

Πm ''    ' → Π )  la probabilité de la partition  ''Π   de m devient la partition  '.Π

Selon l'algorithme au dessus, la partition Π' est obtenue à partir de la partition  ''Π  en replaçant (n – m) dans la partition   ''Π  par j.d     (j= (n­m)/d)

Ngày đăng: 27/10/2016, 23:04

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN