“Tümevarımsal” ve “özyineli olarak” çok benzer anlamları var mı?


11

"Endüktif" ve "özyinelemeli" çok benzer mi demek?

Örneğin, belirlenen ilk k bileşenlerine dayanarak ilk k + 1 bileşenlerini belirleyerek n-dim vektörünü belirleyen bir algoritma varsa ve ilk bileşenle başlatılırsa, özyinelemeli mi yoksa indüktif olarak mı çalıştığını söyler misiniz? Ben "özyinelemeli" kullanıyorum, ama bugün birisi "endüktif" dedi.


Tümevarım ve Özyineleme ile ilgili bu makale güzel bir şekilde özetlemektedir, ancak özü, yakından ilişkili olmalarıdır; Matematiksel tümevarım kanıtı özyinelemeli bir algoritma olarak yazılabilir.
Merbs

İndüktif genellikle ardışık gelen anlamına gelir için çok yinelemeli, daha genel zarftır. nn+1
Yuval Filmus

Ne tür özyinelemeli olarak endüktif değildir, @YuvalFilmus?
Tim

@YuvalFilmus: Bu çok sınırlı bir endüktif kavram.
Dave Clarke

Bana göre aynı şey bağlam dışı. Belirli bir bağlamda, farklı şeyler ifade edebilirler.
Gilles 'SO- kötü olmayı kes'

Yanıtlar:


6

Hayır , ama diğer insanların vermiş olduğu nedenlerden dolayı değil. Özyineleme ve indüksiyon arasındaki fark, özyineleme "yukarıdan aşağı" ve indüksiyonun "aşağıdan yukarıya" olmasıdır. Tümevarım, "ilkel özyineleme" adı verilen bir şey için izomorfiktir, ancak genel olarak özyineleme, tümevarımdan kesinlikle daha güçlüdür .

Yukarıdan aşağıya ve aşağıdan yukarıya arasındaki ayrım önemsizdir - herhangi bir "yukarıdan aşağıya" ilkel özyinelemeli program mekanik olarak "aşağıdan yukarıya" bir şeye dönüştürülebilir. Aslında, tümevarımla ilgili herhangi bir kanıt, özyinelemeli bir programa dönüştürülebilir. Endüktif konstrüksiyon hesabı çerçevesinde, her doğal sayının saçma olduğunu kanıtlamak istiyorsanız, bunu n- 1 çok saçma.

Tümevarımın temel faktörü, şeylerin daha küçük şeyler olarak tanımlanmış olması ve sonlu birçok adımdan sonra "dibe vurmaları" dır. Doğal sayılar endüktiftir, çünkü her doğal ya 0'dır ya da daha küçük bir doğallığın halefi. Listeler tümevarımlıdır çünkü her liste ya boştur ya da bir öğeye ve daha küçük bir listeye bölünebilir ("katlanmamış").

Bazen yinelemeli programlar daha küçük şeyler açısından yazılmaz. Örneğin, bu Collatz işlevini ele alalım:

fun collatz(n) 
   if n <= 1
      return 0;
   else if n % 2 == 0
     return 1 + collatz(n / 2)
   else
     return 1 + collatz(3 * n + 1)
end

Bu işlev ne yukarıdan aşağıya ne de aşağıdan yukarıya gider ve doğal sayılar üzerinde endüktif değildir.

Bunu endüktif olarak tedavi etmek için bir emir olabilir, ancak çoğu şey için basit bir yolu yoktur. Sonsuz akışlar üzerindeki işlevler harika bir örnektir. Aslında, akışlar "koindüktif" tipin prototipsel örneğidir.

Bob Harper'ın çevrimiçi olarak ücretsiz olarak sunulan "Programlama Dilleri için Pratik Temeller" in tümevarımsal, koindüktif ve özyinelemeli türlerine hoş bir girişi vardır.


2

Bana göre bu çoğunlukla bir bakış açısı sorunudur. Nesneleri daha küçük olana göre tanımlarsam, bunu endüktif olarak yaparım, böylece aşağıdan yukarıya doğru. Bir problemi aynı şekilde çözülen daha küçük parçalara ayırarak çözersem, özyineleme diyorum, yukarıdan aşağıya.

(düzenle) PS. Benzer bir soruyu Matematik kardeş bölümümüzde, Özyinelemeli ve tümevarımsal tanımlamaya da bakınız . Carl Mummert'ın cevabından alıntı yapıyorum:

En iyi açıklamam, "hiçbir şeyden yoksun" bir nesne kümesini tanımlarken "endüktif tanım" ın daha yaygın olduğu, zaten var olan bir nesne koleksiyonunda bir işlev tanımlarken "özyinelemeli tanım" daha yaygın olduğudur.

Ama daha önemlisi:

üzerinde uykuyu kaybetmeye değmez


yani "özyineleme = böl ve fethet", hangisi önce yukarıdan aşağıya ve sonra aşağıdan yukarıya?
Tim

1

Hayır, aynı değiller. Ve haklısın (tanımladığınız algoritmayı varsayıyorum): bu yinelemeli.

Nedeni, bir sözlükte veya Wikipedia'da okuyabileceğiniz her iki kelimenin tanımıdır.

Tümevarım ('matematiksel tümevarım' varsayarak) özellikle bir argümanın tüm vakalarının doğru olduğunu kanıtlamakla ilgilidir.

Özyineleme özellikle aynı süreç içinde bir şekilde tekrarlanabilecek bir süreçle ilgilidir.

RE: diğer insanların cevapları:

Diğer insanların cevaplarını gördükten sonra, neden karışıklık olduğunu anlayabiliyorum: veri yapılarını, işlevleri ve dilleri tanımlarken bazı teorisyenler kafa karıştırıcı bir şekilde 'endüktif' ve 'özyinelemeli' kullanıyor gibi görünüyorlar (bu sorunun yorumlarına bakın). Koppel'in cevabının (mevcut en yüksek oylarla bile) gerçekten bu karışıklığı yansıttığını düşünmüyorum. Bir algoritmadan bahsettiğimiz için, 'endüktif algoritmalar' olduğunu söyleyemem; Bence bu gereksiz bir kategorileştirme.


Tümevarım sadece kanıtlarla ilgili değildir. Ayrıca sürekli olarak özyinelemeli yapıları (veri yapıları, diller, vb.) Endüktif olarak tanımlamak için de kullanabilirsiniz
hugomg

@missingno Lütfen bu tanım için bir kaynak belirtin.
Tom

Aklıma gelen bir örnek olduğunu burada : "indüktif tanımlanır da formulæ onun kümesi olarak bilinen bir \ mathcal {L} dil, aşağıdaki kurallara göre formül veya wffs iyi biçimlendirilmiş:"
hugomg

missingno , esasen 'özyinelemeli' olarak kullanılan 'endüktif' kelimesinin gereksiz ve kafa karıştırıcı bir kullanımı olduğunu düşündüğüm bu Wikipedia sayfasına götürüyor
Tom

Lütfen daha fazla örnek aramamı sağlayın. Buna katılmamanıza rağmen, kesinlikle çok yaygın bir deyim ve eğer ararsanız birçok kitapta da bulabilirsiniz. Ve bu, benim açımdan kanıtlamak için wikipedia makalesini düzenledi gibi değil ...
hugomg
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.