12.07.2015 Views

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

Algorithmes de la morphologie mathématique pour - Pastel - HAL

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Algorithmes</strong> <strong>de</strong> <strong>la</strong> <strong>morphologie</strong> <strong>mathématique</strong> <strong>pour</strong> les architectures orientées fluxJaromír BRAMBORExpliquons son utilisation sur quelques exemples <strong>de</strong>s signatures <strong>de</strong> type <strong>pour</strong> les array polymorphes <strong>de</strong>1 et 2 dimensions. Elles seront employées par <strong>la</strong> suite dans les définitions <strong>de</strong>s fonctions maniant cesstructures <strong>de</strong> données :• Ar I α – array d’une dimension, dont les in<strong>de</strong>x sont du type I et dont les élements sont du typepolymorphe α,• Ar (I, I) α – array <strong>de</strong> <strong>de</strong>ux dimensions, dont les in<strong>de</strong>x sont <strong>de</strong>s tuples (I, I) et dont les élements sontdu type polymorphe α,• Ar (I, I) Int – array <strong>de</strong> <strong>de</strong>ux dimensions, dont les in<strong>de</strong>x sont <strong>de</strong>s tuples (I, I) et dont les élementssont du type précis, entier, Int,• Ar (I, I) (Ar (I, I) α) – array <strong>de</strong> <strong>de</strong>ux dimensions, dont les in<strong>de</strong>x sont <strong>de</strong>s tuples (I, I) et dont leséléments sont <strong>de</strong>s arrays <strong>de</strong> <strong>de</strong>ux dimensions Ar (I, I) α.• Ar (I, I) (PVec I α) – array <strong>de</strong> <strong>de</strong>ux dimensions, dont les in<strong>de</strong>x sont <strong>de</strong>s tuples (I, I) et dont leséléments sont <strong>de</strong>s arrays paquetés PVec I α.4.4 Primitives du calcul comme skeletons algorithmiquesPour pouvoir exprimer <strong>la</strong> structure <strong>de</strong>s métho<strong>de</strong>s du calcul sans exposer les détails <strong>de</strong> leurs implémentations,nous allons faire appel aux fonctions du Haskell qui seront définies <strong>pour</strong> les types polymorphes(α, β, γ, etc.) Ces fonctions, entièrement génériques ou partiellement spécialisées <strong>pour</strong> <strong>de</strong>stypes concrets, ont le caractère <strong>de</strong>s primitives du calcul et elles sont <strong>de</strong>stinées à être utilisées dans lesalgorithmes plus complexes.Vu qu’elles définissent formellement le principe <strong>de</strong> fonctionnement d’un algorithme, nous allons lesdésigner par le terme skeletons algorithmiques, en reprenant le terme couramment utilisé dans <strong>la</strong> littératureang<strong>la</strong>ise traitant ce sujet. Nous gardons expressément le terme ang<strong>la</strong>is skeleton plutôt qu’utiliser sestraductions françaises possibles – squelette, qui peut être confondu avec les opérations morphologiquesdésignées par le même mot, ou charpente dont <strong>la</strong> forme nous semble trop éloignée du mot ang<strong>la</strong>is originalet où son utilisation éventuelle dans <strong>la</strong> locution charpente algorithmique ne nous semblerait pasappropriée.4.4.1 Primitives du calcul séquentiel4.4.1.1 Paradigme pipeline, skeleton pipeLe skeleton pipe DFH+ 93 capture <strong>la</strong> façon séquentielle et uniforme <strong>de</strong> traitement <strong>de</strong>s données. Il effectueune composition chaînée <strong>de</strong>s fonctions, remises dans une liste comme le paramètre d’entrée, àune fonction <strong>de</strong> sortie en utilisant <strong>la</strong> fonction foldr1 <strong>de</strong> réduction par application <strong>de</strong> <strong>la</strong> fonction <strong>de</strong> composition◦. Le parallélisme est obtenu par l’allocation d’un processeur distinct <strong>pour</strong> chaque fonction.Remarquons que lors du traitement avec ce skeleton, le type polymorphe <strong>de</strong> <strong>la</strong> donnée ne change pas aucours <strong>de</strong> <strong>la</strong> progression dans le pipeline, il reste toujours α.pipe :: [α → α] → (α → α)pipe = foldr1 ( ◦ )P 1 P 2 P 3 P nFIG. 4.2 : Skeleton algorithmique pipe66

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!