SORU
2 Ocak 2010, CUMARTESİ


Tamamen fonksiyonel programlama verimliliği

Herkes zorunlu olarak (yan etkileri izin yani) aksine tamamen fonksiyonel programlama olabilecek en kötü Olası asimptotik yavaşlama ne olduğunu bilen var mı?

İtowlson yorum tarafından gelen açıklama: bilinen en yıkıcı olmayan bir algoritma bilinen en yıkıcı algoritma asimptotik olarak daha kötü, ve eğer herhangi bir sorun var mı?

CEVAP
2 Ocak 2010, CUMARTESİ


Göre Pippenger [1996], karşılaştırırken bir Lisp sistemi tamamen işlevsel (ve sıkı değerlendirme anlambilim, tembel değil) bu olabilir mutasyona veri, bir algoritma yazılmış kirli Lisp o çalışır OnO ) çalışan saf Lisp bir algoritma çevrilebilir(ngünlükn) zaman (random access memory yalnızca işaretçileri kullanarak simüle hakkında Ben-Amram and Galil [1992] tarafından işe bağlı olarak). Pippenger ayrıca yapabileceğin en iyi algoritmalar vardır kurar, O problemler vardır(n) É olan kirli sistemingünlüknsaf ) sistemi.

Bu kağıt hakkında yapılacak birkaç uyarılar vardır. Tembel fonksiyonel diller gidermez en önemli, Haskell gibi. Bird, Jones and De Moor [1997] sorun Pippenger tarafından inşa O tembel işlevsel bir dille çözülebileceğini göstermek(n) zaman, ama onlar değil, kurabilir (ve bildiğim kadarıyla, hiç kimse sahip) olsun ya da olmasın bir tembel işlevsel dil-ebilmek çözmek tüm sorunları aynı asimptotik çalışma süresi gibi bir dil ile mutasyon.

Sorun Pippenger tarafından inşa gerektirir É(ngünlüknözellikle bu sonucu elde etmek için inşa edilmiştir, ve pratik mutlaka temsilcisi değil, gerçek dünya sorunları. Orada bir kaç kısıtlama sorunu bu biraz beklenmedik, ama gerekli kanıt için iş; özellikle, sorun gerektiren sonuçlar bilgisayarlı on-line olmadan mümkün erişim gelecekteki giriş ve giriş oluşur, bir dizi atomlardan sınırlandırılmamış ayarlamak Olası atomu yerine bir sabit boyutunu ayarlayın. Ve sadece kağıt kurar (alt sınır) doğrusal çalışan kirli bir algoritma için; daha fazla çalışma süresi gerektiren sorunları için, ekstra O(log . olanaklıdır sonuçları ^em>n) faktör doğrusal sorun olarak görülen "" daha fazla çalışan kat. algoritmalar için ekstra gerekli işlemleri sürecinde absorbe olabilir Açıklamalar ve açık sorular bunlar, kısaca Ben-Amram [1996] tarafından incelenmiştir.

Uygulamada, birçok algoritmalar değişken veri yapıları ile bir dilde aynı verimi saf fonksiyonel bir dil olarak uygulanabilir. Teknikleri verimli bir şekilde ve tamamen fonksiyonel veri yapıları uygulamak için kullanmak için iyi bir başvuru için, Chris Okasaki's "Purely Functional Data Structures" [Okasaki 1998] tez [Okasaki 1996] genişletilmiş bir versiyonu olan (bkz.

Tamamen işlevsel veri yapıları algoritmaları uygulamak için ihtiyaç duyan herkes Okasaki okumalısınız. Her zaman en kötüsü O(log alırsınn) yavaşlama başına operasyonu simüle değişken bellek ile dengeli bir ikili ağaç, ama birçok durumda yapabileceğiniz oldukça iyidir ve Okasaki açıklanır birçok yararlı teknikler, itfa teknikleri için gerçek zamanlı olanlar bunu da amorti iş içermesi. Tamamen işlevsel veri yapıları olmak biraz zor iş ve analiz, ama sağladıkları birçok yararları gibi başvuru şeffaflık bu yararlı derleyici optimizasyon, paralel ve dağıtılmış bilgi işlem ve uygulama özellikleri gibi sürüm geri alma ve geri alma.

Bu anlatılır tüm zamanlarda çalışan asimptotik unutmayın. Tamamen işlevsel veri yapıları uygulamak için birçok teknikleri sabit faktör yavaşlama belirli bir miktar, söz konusu dil çalışmaları için gerekli, ve uygulama ekstra defter tutma detaylar nedeniyle ver. Tamamen işlevsel veri yapıları faydaları genellikle probleme dayalı takaslar yapmak gerekir, bu yüzden bu sabit faktör yavaşlaması çok daha fazla olabilir.

Referanslar

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kruno j

    kruno j

    6 Mayıs 2007
  • The Slow Mo Guys

    The Slow Mo

    15 AĞUSTOS 2010
  • Trulia

    Trulia

    29 Kasım 2006