Fonksiyonel programlama neden dinamik ağaçları araştırmamıştır?


19

Dinamik ağaçlar ağ akışları, dinamik grafikler, kombinatoryal problemler (Tarjan ve Werneck tarafından "Uygulamada Dinamik Ağaçlar") ve yakın zamanda birleştirme sözlükleri (Adam Karczmarz tarafından "Basit Birleştirilebilir Sözlük") gibi sorunların çözümünde önemli bir rol oynamaktadır.

Dinamik ağaçlar ile 1983 yılında Sleator & Tarjan'ın "Dinamik ağaçlar için bir veri yapısı" başlıklı makalede belirtilen tanıma atıfta bulunuyorum.

  1. Edward Kmett, ST ağaçlarının bir versiyonunu çoğunlukla C ++ muadilinin çevirisi olarak uyguladı, bkz. Bağlantı kesme ağaçları .
  2. Chris Okasaki, "Tamamen işlevsel veri yapıları" adlı ünlü kitabında Splay ağaçlarının sınırlı bir uygulamasını yazdı.
  3. Ralf Hinze ve Ross Paterson, 2-3 parmak ağacı adı verilen, ancak dinamik ağaçların orijinal tanımından biraz farklı bir amaca sahip işlevsel bir veri yapısı ortaya koydu.

Dinamik ağaçların uygulanması (ve belki de performansı) üç yaklaşıma göre bölünmüştür:

  1. ET ağaçlarının (Euler turu) büyük rol oynadığı doğrusallaştırma. Tamamen işlevsel bir çalışma bulunamadı.
  2. ST ağaçlarının amiral gemisi olduğu yol ayrışımı, Kmett'ın versiyonunu buldu.
  3. Ağaç kasılması, Üst ağaçların, topoloji ağaçlarının ve RC ağaçlarının oyuncu olduğu yerler. Tamamen işlevsel bir çalışma bulunamadı.

Tamamen işlevsel analiz ve uygulama Splay, AVL, kırmızı-siyah ağaç üzerinde bulunabilir, ancak bunlar dinamik ağaçlar DEĞİLDİR. Birincisi, ikincisinin gölge (sanal veya yardımcı olarak da adlandırılır) veri yapısı olarak kabul edilir.

Benim sorum şu:

Fonksiyonel Programlama araştırma topluluğunun dinamik ağaç veri yapısına katılmama nedenleri (sakıncaları, zayıflıkları) nelerdir?


14
Resmi Görüşler Oluşturmak için Yetkili bir İşlevsel Programlama Topluluk Komitesi oluşturmadan bunun nasıl cevaplanabileceğini anlamıyorum. Burada cevaplanabilecek bir şey olması için soruyu yeniden biçimlendiremez miyiz? Anlayabildiğim kadarıyla, OP sadece dinamik ağaçlarını Haskell'de ya da her neyse uygulamalı ve sonra buraya yapıldığını rapor etmek için buraya geri dönmeli.
Andrej Bauer

@AndrejBauer Güncellemesi: OP Haskell'de dinamik ağaçlarını gitti ve uyguladı: arxiv.org/abs/1908.11105
jbapple

Yanıtlar:


-1

"Bilgisayar bilimlerinde fonksiyonel programlama bir programlama paradigmasıdır. Hesaplamayı matematiksel fonksiyonların değerlendirilmesi olarak ele alan ve durum ve değişken verileri değiştirmekten kaçınan bilgisayar programlarının yapısını ve unsurlarını inşa etme tarzıdır." - Wikipedia

"durum ve değişken verileri değiştirme", diğer bir deyişle "dinamik".

Yani sorunuz biraz solun neden doğru olmadığını sormak gibi.


1
Fonksiyonel programlar, kalıcı veri yapılarına sahip dinamik verileri temsil edebilir. Bu soru, belirli bir sorun için kalıcı veri yapılarının geliştirilmesinin neden araştırılmadığını sormaktadır. Soru mantıklı.
Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.