Bird-Meertensův formalismus - Bird–Meertens formalism
The Bird-Meertensův formalismus (BMF) je počet pro odvozování programů z Specifikace (v Funkcionální programování nastavení) procesem rovnicového uvažování. Byl navržen Richard Bird a Lambert Meertens jako součást jejich práce uvnitř Pracovní skupina IFIP 2.1.
V publikacích se někdy označuje jako BMF, jako kývnutí na Backus – Naurova forma. Facetiously it is also called as Squiggol, kývnutím na ALGOL, který byl rovněž v kompetenci WG 2.1, a kvůli „klikatým“ symbolům, které používá. Méně používaný název varianty, ale ve skutečnosti první navrhovaný, je SQUIGOL.
Základní příklady a notace
Mapa je známá funkce druhého řádu, která aplikuje danou funkci na každý prvek seznamu; v BMF je psáno :
Rovněž, snížit je funkce, která sbalí seznam na jednu hodnotu o opakovaná aplikace binárního operátoru. Je napsán / v BMF.Taking jako vhodný binární operátor s neutrálním prvkem E, my máme
Pomocí těchto dvou operátorů a primitiv (jako obvyklý doplněk) a (pro zřetězení seznamu) můžeme snadno vyjádřit součet všech prvků seznamu a zploštit funkce, jako a , vpoint-free styl. My máme:
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/Max_seg_sums_svg.svg/450px-Max_seg_sums_svg.svg.png)
Ukázky použitých zákonů |
---|
![]() Zákon o propagaci mapy |
![]() Přeložte zákon o podpoře |
![]() Zobecněné Hornerovo pravidlo |
![]() Skenovat lemma |
![]() Skládací skenovací zákon |
Podobně psaní pro funkční složení a pro spojení, je snadné napsat test funkce, že všechny prvky seznamu splňují predikát str, jednoduše jako :
Bird (1989) algebraickou manipulací transformuje neefektivní snadno srozumitelné výrazy („specifikace“) na efektivně zapojené výrazy („programy“). Například specifikace „„je téměř doslovný překlad„ algoritmu součtu maximálního segmentu “,[1] ale spuštěním tohoto funkčního programu na seznamu velikostí bude to nějakou dobu trvat obecně. Z toho Bird vypočítá ekvivalentní funkční program, který běží v čase a je ve skutečnosti funkční verzí Kadanův algoritmus.
Odvození je znázorněno na obrázku s výpočetními složitostmi[2] uvedeny modře a aplikace právních předpisů označeny červeně. Ukázky zákonů lze otevřít kliknutím na [ukázat]; používají seznamy celých čísel, sčítání, mínus a násobení. Zápis v Bird's paper se liší od výše uvedeného: , , a odpovídají , a zobecněná verze výše, zatímco a vypočítat seznam všech předpony a přípony jejích argumentů. Jak je uvedeno výše, funkční složení je označeno „", který má nejnižší závazná přednost. V příkladech jsou seznamy obarveny hloubkou vnoření; v některých případech jsou nové operace definovány ad hoc (šedé pole).
Lemma homomorfismu a jeho aplikace na paralelní implementace
Funkce h na seznamech je seznam homomorfismus pokud existuje asociativní binární operátor a neutrální prvek tak, že platí:
The homomorfismus lemma tvrdí, že h je homomorfismus právě tehdy, když existuje operátor a funkce F takhle .
Velkým zájmem tohoto lemmatu je jeho aplikace na odvození vysoce paralelní implementace výpočtů. Je skutečně maličké to vidět má vysoce paralelní implementaci, stejně tak - nejzřejmější jako binární strom. Tedy pro jakýkoli seznam homomorfismus hexistuje paralelní implementace. Tato implementace rozdělí seznam na bloky, které jsou přiřazeny různým počítačům; každý vypočítá výsledek na svém vlastním bloku. Právě tyto výsledky procházejí sítí a jsou nakonec spojeny do jednoho. V každé aplikaci, kde je seznam enormní a výsledkem je velmi jednoduchý typ - řekněme celé číslo - jsou výhody paralelizace značné. To je základ zmenšit mapu přístup.
Viz také
Reference
- Lambert Meertens (1986). „Algoritmika: Směrem k programování jako matematické činnosti.“. V J.W. de Bakker; M. Hazewinkel; J.K. Lenstra (eds.). Matematika a informatika, CWI Monografie Svazek 1. Severní Holandsko. 289–334.
- Lambert Meertens; Richard Bird (1987). „Dvě cvičení nalezená v knize o algoritmizaci“ (PDF). Severní Holandsko.
- Richard S. Bird (1989). "Algebraické identity pro výpočet programu" (PDF). Počítačový deník. 32 (2): 122–126. doi:10.1093 / comjnl / 32.2.122.
- Richard Bird; Oege de Moor (1997). Algebra programování, International Series in Computing Science, sv. 100. Prentice Hall. ISBN 0-13-507245-X.
- Cole, Murray (1993). „Parallel Programming, List Homomorphisms and the Maximum Segment Sum Problem“. Parallel Computing: Trends and Applications, PARCO 1993, Grenoble, France. 489–492.