Tamamen işlevsel veri yapılarında öne çıkan sorular nelerdir?


51

Bu soru, 1998’de Okasaki’nin kitabının yayınlanmasından bu yana PFDS’deki yeniliklerle ilgili başka bir sorudan ilham almıştır .

Sahip olduğum iki soru ile başlayacağım:

  • Karma tabloların hızına yaklaşan tamamen işlevsel bir küme veri yapısı var mı? Denemeler henüz yok.
  • O (1) ekli tamamen işlevsel parmak ağaçları var mı? Şimdiye kadarki en iyisi Kaplan ve Tarjan tarafından tasarlanan O'dur (lg lg n).

Başka hangi tamamen işlevsel veri yapısı sorunları açık?


Anladığım kadarıyla, sıralı anahtarlar olan daha genel sözlüklerden ziyade hash ağaçlarındaki gibi deniyorsunuz? FWIW, eski güzel tabloya yaklaşmanın imkansız olduğunu düşünüyorum.
Jon Harrop

Yanıtlar:


19

Soruyu biraz liberal olarak yorumlayacağım. Okasaki tarzı veri yapıları için, notlandırma, çalışma süresi üzerinde yan etkisi olan gizli bir mutasyon şeklidir. Bu nedenle, birincinin alt kümesi olan tamamen işlevsel bir uygulamaya sahip veri yapılarından ziyade kalıcı veri yapılarına katı anlamda bakma sorusunu ele alacağım. Kesin olarak, veri yapısının eski sürümlerine ceza almadan erişebilmeniz gerektiğini düşünüyorum, sürümler ağacı isteğe bağlı olarak vb.

Bu bağlamda, sürekli UNION-FIND'ı önemli bir açık sorun olarak görüyorum. Diğer başlıkta bahsedilen Conchon-Filliâtre kağıdı var. Bir yorumcu zaten kalıcı dizileriyle ilgili bir sorun ortaya çıkardı: bu gerçekten sadece yarı kalıcı. Ancak, bunu en kötü (ve tartışmasız ortalama) durumda daha iyi davranan, ancak en iyi durumda daha kötü davranan başka bir kalıcı diziyle değiştirdiğinizi varsayalım. Bu hala önemli bir konuyu açık bırakıyor:

Makale, Coq'da resmi bir doğruluk kanıtı verir. Ancak, itfa edilen karmaşıklığı, resmi ya da gayri resmi olarak ele alamazlar. Sahnelerin arkasındaki karmaşık mutasyonun, her durumda beklenen itfa karmaşıklığına neden olduğu benim için çok açık değil . En son düşündüğümde, eğer çaba sarf edersem bir karşı örnek oluşturabileceğim konusunda kendimi biraz hissettim. Son bölüm hakkında yanılsam bile, uygun bir analizin olmaması büyük bir boşluktur; Trajan’ın UNION-FIND’ın klasik amortisman analizinin doğrudan aktarılmadığı açık.


5
Tamamen kalıcı (ancak birleştiğinde ısrarcı olmayan) diziler için adaylardan biri , Verimli Sürüm Kontrolü Konfluenti Kalıcı Denemelerde sunulmuştur . Yazarlar, Dietz ve arkadaşlarının O (lg lg m) yavaşlamasını dağıtan O (lg lg n) yavaşlamasını iddia eder, burada m, dizi üzerinde gerçekleştirilen işlemlerin sayısıdır.
jbapple

1
Ayrıca, Okasaki'nin tembel itfa edilmiş yapılarının alternatiflerden çok daha basit olmasına rağmen, aynı şekilde uygulanamayacak şekilde uygulanabilecek herhangi bir veri yapısını bilmiyorum (aynı zamanda, ancak En kötü durumda) tamamen işlevsel bir şekilde.
jbapple

12

Başka hangi tamamen işlevsel veri yapısı sorunları açık?

Işte bir tane:

Zayıf bir karma masanın tamamen işlevsel eşdeğeri nedir?


15
um .... OP cevapsız sorular istedi, bu yüzden OP'nin sorusuna potansiyel bir cevap olarak nitelendiriyor.
Jason S

6
Tamam, ısırırım. Zayıf bir karma tablo nedir?
Jeffε

4
Bu, yalnızca (ve diğer zayıf haritalar) kendisine referanslar içeriyorsa, öğelerinin çöp toplanmasına izin veren bir karma tablodur.
Havvy

3
@JonHarrop: Zayıf bir referansın saf sürümünün imkansız olduğunu kanıtlamak kolaydır, çünkü zayıf referanslar dilin anlambilimselini anlamsız kılar ve tamamen işlevsel diller belirleyicidir. Ek olarak türdeşleşmeçiliği türünde işaretlerseniz normal uygulama çalışır. Etkisi güvenli bir şekilde maskelemek istiyorsanız, bağımlı türlere (uygulamanın referansın içeriğinden bağımsız olarak aynı cevapları verdiğini kanıtlamak için) ihtiyacınız vardır.
Neel Krishnaswami,

5
@NeelKrishnaswami, böyle olduğunu sanmıyorum. Numaralandırmayı (veya saymayı) desteklemeyen zayıf bir tablo gibi determinizm oluşturmayan zayıf veri yapıları oluşturabilirsiniz. Örnek için wiki.ecmascript.org/doku.php?id=harmony:weak_maps adresine bakın .
Sam Tobin-Hochstadt 19:12
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.