İnşaat Hesabı: İfadeyi en küçük biçimine sıkıştırın


11

Yapılar Analizinin güçlü bir şekilde normalleştiğinin farkındayım , yani her ifadenin beta olamaz, eta azaltılamaz. Aslında bu, orijinal ifadeyle aynı değeri hesaplayan en verimli ifadedir.

Ancak bazı durumlarda normalleştirme, küçük bir ifadeyi büyük bir ifadeye (boyut olarak) indirgeyebilir.

En küçük ifadeler var mı? Aynı değeri en küçük boyutla hesaplayan form.

Diğer bir deyişle, zaman açısından verimli bir normal form yerine, az yer kaplayan bir formdur.

Yanıtlar:


8

"Aynı değer" olarak düşündüğümüz şeyde biraz özgürlük var. "Aynı değer" "gözlemsel olarak eşdeğer" anlamına geliyorsa böyle bir algoritma olmadığını göstereyim. Yapının Kalkülüsünün bir parçasını kullanacağım, yani Gödel'in System T (basitçe hesabı, doğal sayılar ve bunlara ilkel özyineleme), bu yüzden argüman zaten çok daha zayıf bir hesap için geçerlidir.λ

Bir sayısı verildiğinde , ¯ n onu temsil eden karşılık gelen sayı olsun, yani s u c c ila 0 n uygulamaları . Bir Turing mahcine Verilen M , let M rakamı kodlama olmak M bazı makul bir şekilde.nn¯nsucc0MMM

De ki iki kapalı terimler bu olan eşdeğer , yazılı t u , ne zaman herkes için n N , tt,u:natnattunN vestn¯ her ikisi de aynı sayıya normalleşir (bir sayıya normalleşir, çünkü güçlü bir şekilde normalleştirici bir kapasiteye sahibiz).sn¯

Varsayalım ki, tipinde herhangi bir kapalı terimi veren bir algoritmanın minimum eşdeğer terimi hesapladığını varsayalım . Sonra Durma kehanetini şu şekilde çözebiliriz.natnat

Orada bir terim tüm bu, böyle bir n , N ve Turing makineleri K , S ( M , ¯ n ) için normalize ¯ 1 ise , T içinde durur n adımları , aksi takdirde ¯ 0 olur . Bu adımlar, sabit sayıda Turing makinesinin simülasyonunun beri iyi bilinmektedir , n ilkel özyinelemeli.S:nat×natnatnNMS(M,n¯)1¯Tn0¯n

Sonlu sayıda kapalı terimler vardır eşdeğer asgari koşulları şunlardır λ x : n bir t .Z1,,Zk . Minimizasyon algoritmamız λ x : n a t verdiğimizde bunlardan birini döndürür .λx:nat.0 ve hatta λ x : n a t .λx:nat.0 aslında böyle bir minimal terimdir. Tüm bunlar önemli değil, önemli olan tek şey, λ x : n a t'ye eşdeğer olan son derece çok az terim olmasıdır .λx:nat.0 .λx:nat.0

Şimdi, herhangi bir makinesi verildiğinde u : = λ x : n a t terimini düşünün .M ise M sonsuza sonra çalışır u ¯ n normalleştirir için ¯ 0 her için n ve eşdeğerdir λ X : n, bir t .

u:=λx:nat.S(M,x)
Mun¯0¯n . M'nin sonsuza kadarçalışıp çalışmadığınakarar vermek için, u minimzasyon algoritmamıza besler ve algoritmanın Z 1 , , Z k'dan birini döndürüp döndürmediğini kontrol ederiz. Eğer öyleyse, M sonsuza kadar koşar. Eğer yapmadıysa, durur. (Not: algoritma hesaplamak gerekmez Z 1 , ... , Z k kendisi tarafından, bu kodlanmış algoritma içine olabilir.)λx:nat.0MuZ1,,ZkMZ1,,Zk

Örneği sadece için, denklik daha zayıf kavramına ile çalışan bir argüman bilmek güzel olurdu -reducibility.β


Z1'i nasıl hesaplıyorsunuz .. Zk?
user47376

Yapmanıza gerek yok. Yani, tarif ettiğim algoritma orada ve tam olarak ne olduğunu bilmiyoruz, ama bu alakasız. Aslında algoritmayı çalıştırmaya çalışmıyorum, sadece algoritmanızın var olmadığını göstermek için varlığına ihtiyacım var.
Andrej Bauer

Evet, ama argümanınız algoritmam mevcutsa durma problemini çözebileceğimizi söylüyor. Bir tur makinesi M'nin algoritmanızı durdurup durdurmadığını belirlemek için u'yu normalleştirir ve Z1'den biri olup olmadığını kontrol eder. Zk. Bu yüzden bunları numaralandırması gerekir, aksi takdirde durmayabilir.
user47376

sabit kablolu algoritmada olduğu, algoritma hesaplama anlamda bunları saymak gerekmez. Tercih ederseniz, algoritmanın kaynak kodu bir tamsayı k (örn. C'de #define yönergesi) ve k uzunluğunda bir Z dizisi bildirimi ile başlar ve kod her ne olursa olsun Z [ i ] 'yi serbestçe kullanabilir vardır. Onları açıkça bilmemize gerek yok, sadece var olduklarını bilmemiz gerekiyor. Z1,,ZkkZkZ[i]
Damiano Mazza

7

Andrej'in dediği gibi, bir terimi diğerine, geniş çapta eşit olana değiştirmenize izin verirseniz sorun çözülemez. Ancak, ilgilenen olabilir optimum paylaşımı aşağıdaki anlamda, ifadelerin: azalma verildi açıktır ki terimin olaylar u edilebilir paylaşılan hafızaya aktarılır ve birine uygulanan her azaltma diğerine uygulanabilir.

(λx:T.C x x) uβC u u
u

Bu anlamda türlenmemiş terimlerin en uygun şekilde nasıl azaltılacağı ve paylaşımın mümkün olduğunca azaltılacağı bilinmektedir. Bu burada açıklanmaktadır: https://stackoverflow.com/a/41737550/2059388 ve ilgili alıntı J. J. Lamping'in Optimum lambda hesabı azaltması için bir algoritmadır . Türlenmemiş hesap için teoremin CIC'ye genişletilebileceğinden şüphe yoktur.

Başka bir ilgili soru, tür dönüşümü yapılırken silinebilecek tür bilgisi miktarı veya gerçekten de aktif bir araştırma alanı olan verimli dönüşümün nasıl gerçekleştirileceğidir, bkz. Örneğin Mishra-Linger tezi .


6

Cody'nin cevabının değindiği bakış açısı üzerinde ısrar edeyim.

Bildiğim kadarıyla bir, bir küçük bulmakta sorusunu görmek diğerine uzun dönem eşdeğer λ onu bilgisayar bir algoritma olsaydı bile, gerçekten ilginç uzun dönem değildir. Aslında, çoğu programlar yazmak λ -calculus (ya da her türlü hesabı λ -cube) Normal olarak yapılmaktadır, ya da en azından kafa normal formda de, onlar açıkladığınız anlamda kendi "küçük" de zaten bu yüzden. Ayrıca, "küçük" olmak, bu soruda tartışıldığı gibi daha verimli olmak anlamına gelmez .λλλλ

Dolayısıyla, işaret ettiğiniz sorun (normalleştirmenin boyutu patlatması) sadece bir argümana bir işlev uygulamak ve sonucu elde etmek için normal forma indirmek istediğinizde gerçek bir sorundur. Örneğin , ikili dizelerde f işlevini hesaplayan bir teriminiz olduğunu varsayalım . Sonra M varMf buradaL(|x|)o CoC içinde (eğer varsa her zaman, bunu normal bir formunu bulmak için garanti en soldaki-en dış azalma ile indirgeme adımlarının sayısını, var, ama söylediklerim tipsiz dava için de geçerlidir). Şimdi, varsayalım ki,bazı sabitkiçinl(n)=O(nk). Eğer sonucuna Canfpolinom zamanlı hesaplanabilir mi?

Mx¯l(|x|)f(x)¯
l(|x|)l(n)=O(nk)kf

λΘ(n)Θ(2n)λλ

λλ

λ

Bu aynı sözdizimi aksine naif sezgilerine, kanıtlamak için kullanılabilir, yukarıdaki sorunun cevabı aslında evet: Normal forma soldaki-dıştaki adım sayısı ise , makul bir maliyet ölçüsü bile boyut patlar, çünkü eğer aslında, aynı hesaplamayı (doğrusal açık ikameler kullanarak) temsil etmenin başka bir yolu vardır:

  1. boyutu etmez değil patlayabilir;
  2. λ

Tüm bunlar Accattoli ve Dal Lago'nun "Beta Reduction Invariant, Invariant, Invariant, Invariant", (LICS 2014 ve sonra bence daha yeni bir dergi versiyonu var).

λ


Aklıma gelen şey, örneğin, bir milyon element listesi oluşturmak için bir milyon adımı ortaya çıkaran bir terimdir. Bu, o değerin en verimli temsili olan gerçek listeye normalleşir (gerçek nihai sonuçtur, başka adım gerekmez). Ancak, ortaya çıkan terimin kendisi çok küçük olabilir.
user47376

β

Evet, Andrej'in dediği gibi imkansız. Sorumu yanıtladı.
user47376
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.