Collatz özyineleme süresi ne kadardır?


19

Aşağıdaki Python kodu var.

def collatz(n):
    if n <= 1:
        return True
    elif (n%2==0):
        return collatz(n/2)
    else:
        return collatz(3*n+1)

Bu algoritmanın çalışma süresi nedir?

Deneyin:

Eğer fonksiyonu çalışma süresini belirtmektedir . O zaman var { t ( n ) = 1  için  n 1 T ( n ) = T ( n / 2 )  için  , n  , hatta T ( n ) = T ( 3 , n + 1 )  için  , n  tekT(n)collatz(n)

{T(n)=1 for n1T(n)=T(n/2) for n evenT(n)=T(3n+1) for n odd

Eğer n eşit olsa lg n olacağını düşünüyorum ama genel olarak nüks nasıl hesaplanır?T(n)lgnn


4
Bu T ( n ) = T ( n olmalıvb. +1 önemlidir, aksi takdirdedizinin sona erdiğitümniçinT(n)=1 vardır. T(n)=T(n2)+1T(n)=1n
user253751

2
54 eşittir, T (54) = 112! =
Lg

Kullanıcının yalnızca tamsayı gireceği varsayılıyor mu?
Dean MacGregor

@DeanMacGregor Evet. Aslında, pozitif bir tamsayı olduğu varsayılır.
duskwuff

daha fazla bkg detay yardımcı olur. kodu nereden aldınız, kodla nasıl tanıştınız? bu sayı teorisinde ~ yüzyıl boyunca çözülemeyen ve Lagarias tarafından yazılan tüm kitabın yazıldığı yarı-açık bir problemdir. CS pov herhangi bir zamanda veya boşluk karmaşıklık sınıfının bir kanıtı eşdeğer olduğunu kanıtlamak. burada daha birçok referans var . ilgilenen herkes için Bilgisayar Bilimi Sohbet için de harika bir konu . MathOverflow vb. collatzüzerinde de bir etiket var . Son araştırmalar problemin içsel fraktal niteliklere sahip olduğunu gösteriyor.
vzn

Yanıtlar:


29

Bu Collatz varsayımı - hala açık bir problem.
Konjektif, bu dizinin herhangi bir girdi için durduğuna dair kanıt ile ilgilidir, çünkü bu çözülmediği için, bu çalışma zamanı tekrarlama ilişkisinin nasıl çözüleceğini bilmiyoruz, ayrıca hiç durmayabilir - bu yüzden kanıtlanana kadar, çalışma süresi bilinmiyor ve olabilir .


Teşekkürler. Ama özyinelem doğru mu? Eğer öyleyse, yine de bu özyineleme için çözüm bulamıyoruz?
9bi7

"Tekrarlama doğrudur" ile ne demek istiyorsun? Çalışma süresini bulamıyorsunuz, ancak birçok sayı için bu birtakım sıçramalar yapacak ve 1'e ulaşacaktır. çalışma zamanını değil, işlevin kendisini gösterir. T(n)
Şeytan

Demek istediğim, örneğin birleştirme sıralamasında olduğu gibi . Kod yinelemeli olduğundan, bunun için yinelemeyi yazabiliriz, değil mi? T(n)=2T(n/2)+O(n)
9bi7

7
"Bu çözülmediği için, üst sınır yoktur" - buradaki dile dikkat etmeliyiz. Bu nüksün çözümünü bilmiyoruz, hikayenin sonu.
Raphael

7


13

Zaman karmaşıklığı işlevi

{T(n)=Ö(1) için n1T(n)=T(n/2)+Ö(1) için n hattaT(n)=T(3n+1)+Ö(1) için n garip

Eğer asimtotik zaman karmaşıklığıyla ilgileniyorsanız, aşağıdaki gibi yeniden yazılabilir.

{T(n)=1 for n1T(n)=T(n/2)+1 for n evenT(n)=T(3n+1)+1 for n odd

M,1nHaltnn

Collatz varsayımı , Collatz'ın 1937'de önerdiği çok ünlü bir varsayımdır. Birçok seçkin matematikçi bu varsayımı çözmek için sayısız saat harcadı (okudu) ama çok az boşuna. Paul Erdős bile Collatz'ın “Matematik henüz bu tür problemlere hazır değil” iddiasını söyledi.


1
“boşa giden” öznel bir yargıdır. varsayımdaki çalışma / kısmi sonuçların neden "boşa gitmedi" olarak kabul edilebileceğini öğrenmek için Lagarias'ın uzman analizine bakınız. Ayrıca Erdos'un alıntısı muhtemelen birkaç on yıllıktır ve matematik o zamandan beri önemli ölçüde ilerlemiştir ve devam etmektedir ... ve muhtemelen soruna karşı tüm yeni matematiksel teknikler denenmemiştir.
Mart'ta vzn

Yanak yorumunda dil buydu. (Adil olmak gerekirse onu parantez içine aldım, değil mi). Sorun çözülene kadar, tüm çabalar boşa gitmiş gibi görünüyor, ancak bir kez çözüldüğünde, arızaların bile çözüme nasıl yol açtığını görüyorsunuz. Ve matematiğin önemli ölçüde ilerlediğini kabul etmiyorum; teknoloji önemli ölçüde ilerledi, ancak fizik, matematik ve hatta bilgisayar bilimi yavaş ilerliyor ve bu böyle olmalı (bunu söyleyebilirim çünkü 30 yıl önce iplerimi öğrenen, hala modası geçmiş hissetmiyorum).
Shreesh

3x+1

Lagarias konuyla ilgili bütün bir kitabı yazdı / derledi / düzenledi ve problemin incelenmesi konusunda “özür dileyen” geliyor mu? lol! tam tersine . ancak diğer pek çok matematikçi problemi önemli veya büyük bir saldırı / çabaya değmediği için savunma pozisyonuna sahip olduğu konusunda hemfikir / kabul eder (ve gauss'un Fermats Last Thm! ancak üst düzey matematikçilerin onu tamamen ciddiye alan devasa başka vakaları vardır, örneğin bir tanesi için Tao .
vzn

2

noddn3n+1

T(n)=2T(n/2)+nT(0)T(1)

3n+1


0

N eşitse T (n) = T (n / 2) + 1 vardır. Ama o zaman n / 2 oldukça muhtemel değil, bu yüzden orada sıkışıp kaldınız.

Olan şey, öğrendiğiniz güzel küçük kuralların gerçek bir problemle karşı karşıya kalması ve işe yaramamasıdır. Bir tuğla duvara çarptılar, önce yüzleştiler ve acıyor. Kendinize bir iyilik yapın ve T (7) için özyinelemeyi manuel olarak takip edin ve sonra bunun lg n ile ilgili olduğuna inanıp inanmadığınızı söyler.

Bunun orijinal soru ile ilgili olmadığını düşünüyorsanız, çünkü 7 eşit değildir: n her garip olduğunda, T (n) = T (3n + 1) ve 3n + 1 eşittir, yani T (n) günlüğe kaydedilmişse n n eşitse, n> 1 tek olduğunda günlük (3n + 1) + 1 olur.

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.