Kuş-Meertens biçimciliği - Bird–Meertens formalism

Kuş-Meertens biçimciliği (BMF) bir hesap için programları türetmek itibaren özellikler (içinde işlevsel programlama bir eşitlik muhakeme süreci ile. Tarafından tasarlandı Richard Bird ve Lambert Meertens işlerinin bir parçası olarak IFIP Çalışma Grubu 2.1.

Bazen yayınlarda BMF olarak anılır, Backus-Naur formu. Şaşkınlıkla şu şekilde de anılır: Squiggolselam olarak Algol Bu, WG 2.1'in de görevindeydi ve kullandığı "dalgalı" semboller nedeniyle. Daha az kullanılan, ancak aslında ilk önerilen bir varyant adı, SQUIGOL.

Temel örnekler ve gösterimler

Harita bir listenin her elemanına belirli bir işlevi uygulayan iyi bilinen ikinci dereceden bir işlevdir; BMF'de yazılır :

Aynı şekilde, azaltmak bir listeyi tek bir değere daraltan bir işlevdir. ikili operatörün tekrarlanan uygulaması. BMF ile yazılmış / yazılmıştır. nötr elemanlı uygun bir ikili operatör olarak e, sahibiz

Bu iki operatörü ve ilkelleri kullanma (her zamanki ekleme olarak) ve (liste birleştirme için), bir listenin tüm öğelerinin toplamını kolayca ifade edebiliriz ve düzleştirmek işlev olarak ve , içindenoktasız stil. Sahibiz:

Türetilmesi Kadane algoritması

Benzer şekilde, yazı için fonksiyonel kompozisyon ve için bağlaç, bir listenin tüm öğelerinin bir yüklemi karşıladığını test eden bir işlev yazmak kolaydır pbasitçe :

Bird (1989), verimsiz, anlaşılması kolay ifadeleri ("spesifikasyonlar"), cebirsel manipülasyon yoluyla verimli ilgili ifadelere ("programlar") dönüştürür. Örneğin, ""," maksimum segment toplam algoritması "nın neredeyse gerçek bir çevirisidir,[1] ancak bu işlevsel programı bir boyut listesinde çalıştırmak zaman alacak Genel olarak. Bird bundan yola çıkarak, zaman içinde çalışan eşdeğer bir işlevsel programı hesaplar. ve aslında işlevsel bir sürümüdür Kadane algoritması.

Türetme, hesaplama karmaşıklıkları ile resimde gösterilmiştir.[2] mavi ile verilen hukuk uygulamaları ve kırmızıyla gösterilen hukuk uygulamaları kanun örnekleri üzerine tıklanarak açılabilir. [göstermek]; tamsayı sayıları, toplama, eksi ve çarpma listelerini kullanırlar. Bird'ün kağıdındaki notasyon, yukarıda kullanılandan farklıdır: , , ve karşılık gelmek , ve genelleştirilmiş bir versiyonu sırasıyla yukarıda ve hepsinin listesini hesapla önekler ve son ekler argümanlarının sırasıyla. Yukarıdaki gibi, işlev bileşimi "", en düşük olan bağlayıcı öncelik. Örnek durumlarda, listeler yuvalama derinliğine göre renklendirilmiştir; bazı durumlarda, yeni işlemler geçici olarak tanımlanır (gri kutular).

Homomorfizm lemması ve paralel uygulamalara uygulamaları

Bir işlev h listelerde bir liste homomorfizm ilişkisel bir ikili operatör varsa ve tarafsız eleman öyle ki aşağıdakiler geçerlidir:

homomorfizm lemma şunu belirtir h bir homomorfizmdir ancak ve ancak bir operatör varsa ve bir işlev f öyle ki .

Bu lemma için büyük ilgi çekici bir nokta, yüksek derecede türetmeye uygulanmasıdır. paralel hesaplama uygulamaları. Gerçekten, bunu görmek önemsizdir oldukça paralel bir uygulamaya sahiptir ve - en açık şekilde ikili ağaç olarak. Böylece herhangi bir liste homomorfizmi için hparalel bir uygulama var. Bu uygulama, listeyi farklı bilgisayarlara atanan parçalara böler; her biri sonucu kendi parçasında hesaplar. Ağdan geçen ve sonunda tek bir yerde birleştirilen bu sonuçlardır. Listenin çok büyük olduğu ve sonucun çok basit bir tür olduğu her uygulamada - örneğin bir tamsayı - paralelleştirmenin faydaları kayda değerdir. Bu temeli Harita indirgeme yaklaşmak.

Ayrıca bakınız

Referanslar

  1. ^ Nerede , , ve belirli bir listenin en büyük değerini, toplamını ve tüm segmentlerinin (yani alt listeler) listesini döndürür.
  2. ^ Bir satırdaki her ifade, maksimum segment toplamını hesaplamak için çalıştırılabilir bir işlevsel programı belirtir.
  • Lambert Meertens (1986). "Algoritmalar: Matematiksel bir aktivite olarak programlamaya doğru.". J.W. de Bakker; M. Hazewinkel; J.K. Lenstra (editörler). Matematik ve Bilgisayar Bilimleri, CWI Monographs Cilt 1. Kuzey-Hollanda. s. 289–334.
  • Lambert Meertens; Richard Bird (1987). "Algoritmalar Üzerine Bir Kitapta Bulunan İki Alıştırma" (PDF). Kuzey-Hollanda.
  • Richard S. Bird (1989). "Program Hesaplaması için Cebirsel Kimlikler" (PDF). Bilgisayar Dergisi. 32 (2): 122–126. doi:10.1093 / comjnl / 32.2.122.
  • Richard Bird; Oege de Moor (1997). Cebir Programlama, International Series in Computing Science, Cilt. 100. Prentice Hall. ISBN  0-13-507245-X.