Ce rapport traite d'un sujet d'algorithmique dans lequel il s'agit de réaliser un programme en langage C qui permet de déterminer l'enveloppe convexe d'un ensemble de points distincts en dimension n, c'est-à-dire trouver les équations de tous les hyperplans qui englobent la totalité des points. Dans ce traité, la méthode est expliquée pas à pas afin d'aboutir au résultat souhaité, en expliquant l'algorithme utilisé, et enfin une implémentation en langage C est fournie pour pouvoir exécuter le programme et le tester sur un ordinateur.
[...] En effet, il est nécessaire d'avoir au moins n points pour déterminer cet hyperplan. Plaçons nous par exmple en dimension et considérons les trois points suivants : P1(1,1,1) P2(2,0,1) P3(1,3,2) Il s'agit alors dans cet exemple de déterminer le plan définit par ces points. C'est une équation du type ax + by + cz + d = où sont les coefficients à déterminer. On a vu précédemment la méthode afin d'obtenir ces coefficients. On doit alors obtenir : a = b = c = d = Paramètres Entrées/Sorties. [...]
[...] Enfin, nous disposons d'une fonction coeffmin et pgcd qui nous permettront de déterminer les coefficients minimum de l'hyperplan. La fonction pgcd prend deux entiers en entrée et renvoie leur pgcd noté div la fonction coeffmin prend en entrée la dimension le tableau tabcoeffs[n+1][1] contenant les coefficients de l'hyperplan. Dans notre exemple, cette fonction détermine pgcd(a,b,c,d), et divise tous les coefficients de l'hyperplan par ce pgcd afin d'obtenir les coefficients minimaux. Elle renvoie en sortie ce pgcd que l'on note z. [...]
[...] o Le paramètre k désignant l'indice à partir duquel on prendra les points du tableau T. Cependant, elle ne renvoie rien en sortie : dès qu'une combinaison est réalisée au sein de la fonction combinaison, cette dernière fera appel à la fonction equation_hyp afin de déterminer l'équation de l'hyperplan définit par les n points constituant la combinaison, et fera appel également à la fonction facette_test afin de valider si l'hyperplan considéré constitue ou non une facette du polyèdre convexe que l'on cherche à déterminer Pseudo-code/Commentaires. [...]
[...] Nous pourrions donc dans un deuxième temps penser à l'élaboration d'une méthode basée sur le pivot de Gauss afin de minimiser la complexité de l'algorithme. Avec l'algorithme que nous avons mis en oeuvre, le temps mis par le programme pour s'exécuter , est-à-dire pour fournir tous les hyperplans constituant une facette du polyèdre, commence à être important dès que la dimension est supérieure ou égale à et que le nombre de points devient important. Les coordonnées des points doivent être également des entiers petits (à un chiffre) afin de ne pas alourdir le temps de calcul Implémentation en C. [...]
[...] Prenons l'exemple de l'hyperplan calculé précédemment. Son équation est : x 3 y + 7 = 0 Pour tous les points pi , de coordonnées (xi,yi) on a xi 3 y i + 7 0 ce qui prouve que tous les points sont situés sur un unique demi-plan délimité par la droite. L'hyperplan calculé précédemment constitue donc bien une des facettes de l'EC engendré par les p points. Au final, il s'agit d'obtenir : Structure de donnée choisie Les données d'entrée sont les p points ayant chacune n coordonnées. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture