Ackerman işlevi için açık mu-özyinelemeli ifade


15

Ackerman fonksiyonunun nasıl oluşturulacağını işaret edebilir misiniz (aslında Rózsa Péter ve Raphael Robinson tarafından önerilen bir versiyonla ilgileniyorum), standart mu-özyinelemeli operatörler aracılığıyla? Péter ve Robinson'ın orijinal makalelerini denedim, ancak Péter'in makalesinde İngilizce ve Robinson'ın “Özyineleme ve Çifte Özyineleme” ve “İlkel Özyinelemeli İşlevler” makalelerinden farklı bir dil kullanılıyor: birincisi daha alakalı görünüyor, ancak Ackerman işlevini tanımlamak için çift özyineleme operatörü olarak adlandırılır, bu durumda mu yinelemeli terimlerle operatörün açık tanımı aranır.

“Godel'in teoremlerine giriş” (CUP, 2007) (29.4 Ackermann-Peter işlevi μ-özyinelemeli) bölümündeki P. Smith en yakın sorudur, ancak aşağıdakileri ortaya çıkarır: “argümanı su geçirmez yapmak güzeldir zor olmasa da sıkıcı. Burada ayrıntıları açıklamaktan öğrenilecek bir şey yok: bu yüzden yapmayacağız. ”

Ayrıca Rózsa Péter'in “Özyinelemeli fonksiyonlar” kitabını da denedim (1967, Academic press). Orada yinelenen operatörler için birçok varyant vardır. Genellikle biri diğerine düşer. Ackerman fonksiyonunun tanımına ve onu ilkel geri dönüş ve minimizasyon operatörlerine indirgeyen adımlar dizisine uyan bir özyineleme operatörü olduğuna inanıyorum, ancak kendimi bütünüyle araştıramadım.


1
Aslında bu ilk göründüğü kadar zor değil. İşin püf noktası, operatörünün Ackerman işlevinin, yani girdiye kadar olan değer tablosunun bir hesaplamasını aramasına ve ardından tablonun işlevin tanımına uygun olup olmadığını denetlemesine izin vermektir . Gerekli olan sonlu dizileri kodlamak / kodunu çözmek ve tabloyu kontrol etmektir. Kodlama / kod çözme, birçok ders kitabında açıkça tanımlanmıştır, kontrol, tablonun girdileri arasındaki basit bir ilişki üzerinden sınırlı bir evrensel nicelik belirleyici tarafından yapılabilir. Sınırlı evrensel nicelik belirleyici, çarpma çarpımı olarak ifade edilebilir,μ
Kaveh

ve dönüşü açısından sınırlı çarpma ile ilgili açık bir tanım da ders kitaplarında bulunabilir. μ
Kaveh

@Kaveh evet, aynı fikir P. Smith'in “Godel'in teoremlerine giriş” de uygulandı. Kodlamalar ve minimizasyon operatörünün uygulaması burada verilmektedir. Zor kısmı, “tablo” nun adını nasıl oluşturacağınızdır. Smith atladı. Bu yüzden burada çözüm beklemek yerine daha fazla düşünmek zorunda kalacağım gibi görünüyor;) En azından genel yaklaşımı onayladığınız için teşekkürler.
Artem Pelenitsyn

Tablo, girişlerin bir eşleştirme fonksiyonunun sonucu ile indekslendiği sonlu bir dizidir. burada R ( c , x , y )μc:x<Len(c)y,z<x,x=<y,z>→c<y,z>=R(c,x,y)R(c,x,y) için denklem rhs'si olan Ack(x,y) .
Kaveh

Yanıtlar:


13

Ackermann işlevini temel operatörlere kadar kırmak gerçekten çok uzun olurdu, ancak işte bir taslak:

Hesaplanırken bu Not form bir ifade ile ilgileniyor hesaplama herhangi bir noktada yinelemeli, A ( m, 1 , A ( m, 2 , ... , A ( m, k , z ) ... ) . Verilen bir örten eşleştirme işlevi s ters ile ( π 1 , π 2 ) , s ( m, k , ... , p (A(m,x)A(m1,A(m2,,A(mk,z))p(π1,π2) bu durumu p ( z , p ( k) olarak kodlayabiliriz ( k = 0 olması durumundasadece p ( z , 0 ) ). Daha sonra bir durum verildiğinde tek adımlı değerlendirme işlevini tanımlayabiliriz:p(z,p(k,p(mk,,p(m2,m1))p(z,0)k=0

;e(p(z,0))=p(z,0)

;e(p(z,p(k,p(0,c))))=p(z+1,p(k1,c))

;e(p(0,p(k,p(m+1,c))))=p(1,p(k,p(m,c)))

.e(p(z+1,p(k,p(m+1,c))))=p(z,p(k+1,p(m+1,p(m,c))))

Daha sonra ilkel özyineleme kullanarak n adımlı değerlendirme işlevini elde edersiniz:

ve E ( n + 1 , m , x ) = e ( E ( n , m , x ) ) .E(0,m,x)=p(x,p(1,m))E(n+1,m,x)=e(E(n,m,x))

Son olarak, sarma çevresinde -recursion E biz bir şekilde bir duruma elde noktasını bulmak için p ( z , 0 ) - Z olacak bir ( m , xμEp(z,0)zA(m,x)


Teşekkürler! Bir soru daha (belki de oldukça naif, üzgünüm): desen eşleme benzeri tanımlar (f (0) = ..., f (n + 1) = ...) yaygın olarak kullanıldı, ancak özyinelemeli fonksiyon. Öyle mi?
Artem Pelenitsyn

Bu tür bir vaka ayrımı (örneğin, f(x,y) tarafından f(0,y)=g(y) ve f(x+1,y)=h(x,y)) yalnızca önceki değeri kullanmayan özel bir ilkel özyineleme vakasıdır. HesaplamasındaA(x,y), the you would additionally use auxiliary functions and the inverses π1,π2 quite a bit if you wanted to break this down to the basic set of operations.
Klaus Draeger

For example, you could translate the definition of e as e(s)=f1(π1(s),π2(s)), where f1(z,0)=p(z,0) and f1(z,m+1)=f2(z,π1(m+1),π2(m+1)), where f2 you get the idea.
Klaus Draeger

7

This is a variant of the idea posted by Kaveh, but I am posting anyway since it allows you to sweep many nasty details under the rug without actually doing any handwaving.

The key fact is that the graph of the Ackermann function is primitive recursive. It's not that hard to find a very crude primitive recursive bound B(m,n,w) on the code for the table of Ackermann values needed to verify that A(m,n)=w. Don't try to get sharp bounds — the cruder the easier! Something like B(m,n,w)=2mww should be good enough, but that depends on your choice of coding scheme. Since the verification of the table values can be described by a bounded formula, it is primitive recursive.

Once you have a primitive recursive definition for the graph G(m,n,w) of the Ackermann function, simply define A(m,n)=μwG(m,n,w).

Sadly, this strategy doesn't work for all functions defined by double (or multiple) recursion. The reason it works for the Ackermann function — as you will see when trying to figure out a good B(m,n,w) — is that it grows very monotonically. For the general case, you must use Kaveh's idea and have μ look for the appropriate table of values. This is basically the same reason why the Kleene's Normal Form Theorem needs to do a projection after applying the μ operator.


1
Hi François. It's nice to see you on cstheory.
Kaveh

Hi Kaveh. Nice to finally get to answer something here!
François G. Dorais
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.