Kategori teorisi, hesaplama karmaşıklığı ve kombinatorik bağlantılar?


17

Fonksiyonel Algoritma Tasarımının İncileri ” ve daha sonra “ Programlama Cebiri ” ni okumaya çalışıyorum ve özyinelemeli (ve polinom olarak) tanımlı veri türleri ve birleştirici nesneler arasında, aynı özyinelemeli tanımlamaya sahip olan ve daha sonra da önde gelen bir yazışma var. kombinatoryal türlerin girişlerinde gösterildiği gibi aynı resmi güç serisine (veya üreten fonksiyonlara) (“ Türler ve Functorlar ve Türleri, Oh My! ” okudum ).

Yani, ilk soru için, kuvvet serisinden üreten (özyinelemeli) denklemi kurtarmanın bir yolu var mı? Bu sonradan düşünülen bir şey.

İlk cebir ve son eş cebir kavramını bir çeşit “veri yapısı ile ilgili prosedürleri tanımlamak” olarak daha fazla ilgilendiriyordum. Fonksiyonel programlamada, kompozisyon, cebir ve benzeri arasındaki eşleme ürünleri, örneğin bu derste anlatılan bazı pratik kurallar vardır. Bana öyle geliyor ki, bu karmaşıklığa yaklaşmanın oldukça güçlü bir yolu olabilir ve örneğin, Master'ın teoremini bu bağlamda kurtarmak oldukça basit görünüyor (yani, aynı argümanı yapmanız gerekiyor, bu durumda çok fazla kazanç yok), ve ilk cebirdeki eşsiz katamorfizma ve F-polinom functoru için A ve FA arasındaki cebirlerin izomorfik olduğu gerçeği (yanılıyor muyum), bana bu tür bir yaklaşımın veri yapıları üzerindeki işlemler.

Pratik açıdan, füzyon kurallarına (temel olarak, cebir morfizmlerini birbirleriyle oluşturmanın yolları, kömürge morfizmleri ve genel morfizmler) benziyor, program dönüşümü ve yeniden düzenleme için çok güçlü bir optimizasyon tekniğidir. Bu kuralların tam olarak kullanılmasının optimal program üretebileceğini düşünüyor muyum? (Gereksiz ara veri yapıları veya diğer ekstra işlemler yok).

Burada bir şeye mi (ve ne)? Hesaplama karmaşıklığına bu şekilde bakmaya çalışmak (öğrenme bakış açısından) faydalanıyor mu? "Güzel" başlangıç ​​cebirlerine sahip olabileceğimiz yapılar bazı problemler için bir şekilde çok sınırlı mı?

Ben çoğunlukla arama alanının yapısı ve "arama alanı" ve "arama algoritması" functor ilk cebir gibi bazı "güzel" bir nesne ile etkileşim yolu açısından karmaşıklığı düşünmek için bir yol bulmaya çalışıyorum ve daha karmaşık yapılara bakarken olayları bu şekilde görüntülemenin faydalı olup olmadığını anlamak.


5
bunu okunabilir hale getirmek için yeniden biçimlendirebilir misiniz?
Lev Reyzin

11
Fikirlerinizle ilgili iki potansiyel sorun var. İlk olarak, tüm veri yapıları ilk cebirler kullanılarak temsil edilemez. Herhangi bir genel grafik veya karmaşık işaretçi yapısı, hiçbir işlevin ilk cebiri olmayacaktır. İkincisi, füzyon kuralları ve benzeri algoritmanın O (-) - verimliliğini değiştirmek yerine genellikle sadece kodun verimliliğini artıracaktır (istisnaları bildiğim halde).
Dave Clarke

Teşekkürler Dave, Algoritmik Oyun teorisi kitabını okumaya çalışıyorum ve geleneksel tedavilerdeki algoritmalar çoğunlukla işlevsel olarak belirtiliyor, tabiri caizse, ve onlara yaklaşmanın genel bir yolu olup olmadığını merak ediyordu ve ilk cebir vb. , ancak genel veri yapısı ve işleçler arasındaki yazışma eksikliği bir sorundur. @sclv: Teşekkürler, bakacağım!
Stefan Petrov

Grafikleri temsil etmenin karmaşık işaretçi yapılarından daha başka yolları olduğunu belirtmek istiyorum. Özellikle, bir tanesi bir dizi değişiklik veya eklemeyle @DaveClarke tarafından endüktif olarak temsil edilebilir. Aynı şey, bu tür diğer yapılar için de geçerlidir, ancak ilk cebir ve sınırlamaları konusunda uzman değilim gibi kategorik olarak söylemek istemiyorum.
Samuel Schlesinger

Yanıtlar:


7

Dave Clarke'ın yorumu oldukça önemlidir. Genellikle füzyon O (-) verimliliğini değiştirmez. Bununla birlikte, özellikle ilgi çekici olan Liu, Cheng ve Hudak'ın Nedensel Değişmeli Oklar üzerindeki çalışmasıdır. Onlarla yazılan programlar, kısmen akış füzyonu yoluyla, dinamik bellek ayırma ve ara yapılardan arınmış tek bir döngü için mutlaka optimize edilebilir: http://haskell.cs.yale.edu/?post_type=publication&p=72


6

Joyal'in Kombinatoryal Türleri, Sedgwick / Falojet'in Analitik Kombinatoriklerin "kabul edilebilir yapıları" ve Yorgey'in Haskell Türlerinin hepsi iyi.

Power Serisi UNIX diff fame McIlroy tarafından Ciddi Güç de Mantık Matematik ve Programlama için Haskell Yolu corecursion bölümünde olduğu gibi okumak gerekir.

Tarihsel eserler Buchi Saunders Maclane ve düzenleyen Chomsky / Schützenberger'in güç serisi, cebirlerin, ağaçlar, ve sonlu durumlu otomata arasındaki bağlantıyı yapmak. Stanley'de açıklanan Transfer Matrisi Yöntemi, ağırlıklı otomatlardan üretim işlevlerinin nasıl hesaplanacağını gösterir.

Hala alanlar (GF, ağırlıklı otomatlar, cebir, ağaç, özyineleme) arasında verimli bir şekilde çeviri yapmanın en iyi yolunu kullanıyorum. Şu anda SymPy'ye bağırıyorum çünkü henüz iyi bir Haskell sembolik paketi yok.

Şahsen, bir endofuction'ın yineleme grafiğini aldım, sonra tam bir kara kutu araması almak için üzerinde bir min hakim seti hesapladım, http://oeis.org/A186202 Ne tür karmaşıklık sonuçları aradığınızdan emin değilim, ancak bu teknik sonlu bir küme üzerindeki herhangi bir endofüksiyonu incelemede çok güçlüdür.

- Orijinal 2 Ekim 14, 15:37 cevap--

Belirttiğiniz makaleyi takip eden Brent Yorgey'in tezine bir göz atın. http://www.cis.upenn.edu/%7Ebyorgey/hosted/thesis.pdf

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.