Postuloin tässä uuden konjektuuran. Kasvaako tuo loputtomiin vai väheneekö? Päteekö kaikille luvuille?
Terveisin Pete
Terveisin Pete
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 21
Vanhimmat
Juurihan palstalla kerrottiin, että Collatzin konjektuuria ei ole pystytty todistamaan ja että tuollaiset konjenktuurit ovat oikeasti erittäin vaikeita selvittää jopa todella vaikeisiin ongelmiin verrattuna.
Todista ensin Collatzin konjektuuri niin tuon ratkominenkin sujuu paremmin.
Esitin tuossa juuri Peten konjektuurin. Kuka on Collatz?
Google on ystäväsi.
Katohan, joku on keksinyt erilaisen konjektuuran kuin Peten konjektuuri, mikä mahtaa olla todennäköisyys?!
Huomasin, että tuo voi jatkaa kasvua loputtomiin.
Terveisin Pete
Todista+väitteesi!++Todistukseksi+riittää+antaa+yksi+luku.
Kokeilin+edellisen+viestiketjusi+muokatulla+superohjelmalla.+Kaikki+isotkin+kokeilemani+luvut+suppenevat+erittäin+nopeasti.+Päättyy+aina+3,4,3,4,...
n+=+76318491457847
for+i+in+xrange(0,200):+n+=+n//2+1+if+n%2==0+else+(3*n-1)//2;+print+n,
Jos+et+jostain+syystä+vielä+osaa+Python+2:sta,+opit+sen+käytön+muutamassa+tunnissa.+Kätevä+ja+nopea+supertaskulaskin+joka+koneeseen!+Vakiona+lähes+kaikissa+ympäristöissä.
Jollain basicilla tai cobolilla saattaa saada ihan eri tuloksen. Fortranista puhumattakaan.
Ei varmasti saa! Ei edes teoriassa. Luvut ovat lukuja.
for+n+in+xrange(5,10**8):
____while+n!=3:+n+=+n//2+1+if+n%2==0+else+(3*n-1)//2
(Korvaa+alaviivat+blankoilla+while:n+edestä.)
Tuolla+Python+2+ohjelmalla+saa+testattua+Pypyä+käyttäen+paljon+alle+minuutissa+100+miljoonaa+lukua.+Eikä+miljardin+luvunkaan+testaamiseen+mennyt+kuin+hiukan+yli+5+min+yhdellä+ytimellä.+Ihan+realistista+kokeilla+biljoona+ekaa+numeroa+moniytimisella+kotikoneella+yhdessä+päivässä.++
Jos+saat+tuon+while-silmukan+pyörimään+ikuisesti+jollakin+erikoisesti+tähän+tarkoitukseen+rakennetulla+luvulla,+niin+olet+varma+Nobelisti!
Kokeile kahdeksanbittisellä assemblerilla. Saatat hämmästyä.
Minulla ei ole mitään python kakkosta. On vain kolmonen. Pitäisikö hankkia ihan ykkösluokan ohjelma.
Poistat ohjelmasta xrange - sanasta sen x - kirjaimen niin toimii myös python3:lla.
Hyvä+olla+molemmat.+Python+kakkosta+on+nopeampi+ja+mukavampi+käyttää+ohjelmoitavana+taskulaskimena+kertakäyttöohjelmissa.+Esim.+print-komennossa+ei+tarvita++sulkuja.+Valtava+etu++välitulosteitten+lisäämisessä.+Ja+jos+laittaa+pilkun+komennon+loppuun,+ei+tule+rivinvaihtoja.+Kätevä+tulostaa+testidataa+ja+seurata+ohjelman+edistystä+tai+jumiutumista.+Satoja+käteviä++matemaattisia+kirjasto-ohjelmia+ei+ole+muunnettu+toimimaan+Python+3:lla+eikä+varsinkaan+Pypy3:lla.
Kakkonen+oli+vielä+muutama+vuosi+sitten+paljo+yli+10+%+nopeampi+kuin+kolmonen.+Ero+on+pikku+hiljaa+pienentynyt.+Ero+oli+vielä+suurempi+pypyä+käytettäessä.+Nyt+pypy3v6.0+:n+alkaa+on+jo+lähes+yhtänopea+kuin+pypy2v6.0.+Valtavaa+kehitystä+molemmissa.+Molemmista+on+tullut+myös+v7.0.+En+ole+viitsinyt+vielä+kokeilla.+
Peruskoulun+laskuisssa+pärhää+ihan+hyvin+Python+3:lla.+Varsinkin+jos+siitäkään+ei+käytä+mihinkään!
Ei mitään ongelmaa. Tuota koodia on tullut tehtyä kilokaupalla suoraan ruutupaperille ja siitä sitten vaan käsin napulellen Eprom polttolaitteelle.
Samat tulokset tulevat myös yksi bitti kerrallaan laskevilla vanhoilla taskulaskimilla. Ja Intelin 4004:lla. Ja 18-bittisellä Nova-tietokoneella ja eri levyisillä signaaliprosessoreilla. Aina ja poikkeuksesetta. Aloita jostakin, niin opit ymmärtämään jotain.
Ja pelkkä range toimii myös hienosti Python 2:lla, jos ohjelmaa ajaa aina Pypyllä. Ja toimii hyvin suoraan Python 2:lla ajettuna, jos range:n lukuväli on alle 10 miljoonaa.
Tuolla suhteellisen "pienellä" 10**8 arvolla Python 2 varaa muistia 3 Gtavua. Ja aikaa menee ikuisuus. En viitsi edes kokeilla. Ja jos ajaa samanaikaisesti useassa ytimessä, muisti loppuu ja aletaan käyttää kovalevyn Swap-aluetta. Nopeus putoaa lähes nollaksi!
Rangen sijaan while-luuppi niin ei turhaan varata muistia triviaalin listan alkioille. Ongelman voi jakaa osiin eli ajaa samanaikaisesti eri GPU:lla/CPU:lla eri kohtaa alueesta. Itse ohjelma on hyvin pieni eikä tarvitse muistia juuri ollenkaan.
Kun testaus käy järjestyksessä lävitse kaikki luvut kakkosesta ylöspäin niin tiedetään tämä: Jos testattavana on luku N ja siitä laskemalla saadaan aikaan luku N-1 tai sitä pienempi niin testausta ei tarvitse jatkaa. Siitä eteenpäin suppeneminen on jo ennestään tiedossa oleva testattu asia. Testauksen loppuehdoksi riittää siis se, että välitulos on pienempi kuin N.
Pythonin sijaan pitäisi käyttää käännettävää kieltä.
Ei tällaisia kuitenkaan voi tietokonelaskuilla todistaa. Vääräksi voi osoittaa löytämällä vastaesimerkin ja tämä voi tietokoneella onnistua.
Kts. Wikipedia: Collatz conjecture kohta Experimental evidence.
Miksi hoette Collatzin konjektuuria? Tämä on siis Peten keksimä konjektuuri!
Terveisin Pete
Collatz vain esimerkki asiasta. Sama koskee Peten konjektuurin todistamista. Vain vastaesimerkin voi koneella löytää.
Vastaesimerkki todistaisi kyllä jo jotain. Sen jälkeen pitäisi enää todistaa vielä sekin, että löytyykö vielä lisääkin vastaesimerkkejä ja jos löytyy, niin löytyykö niitä loputtomasti, vai onko kaikki vastaesimerkit löytyneet.
Tavallisella+python3+(cpython)+alla+olevalla+käydään+läpi+100+miljoonaa+lukua+3+minuutissa+1+CPU:lla+koneessa,+jonka+kellotaajuus+on+3+GHz.
for+n+in+range(5,10**8):
#if+(n00000+<+1):+print(n)
#raja=n-1
#while+n+>+raja:
##if+n%2==0:
##n+=+n//2+1+
##else:+
##n=(3*n-1)//2
Tuossa+siis+pitää+korvata+jokainen+#+merkki+joko+tabulattorilla+tai+välilyönnillä+jotta+sisennykset+tulevat+oikein.+Muistin+kulutus+ei+ollut+mainittavaa.+Tulostaa+ruudulle+joka+miljoonannen+n+arvon.
Pypy:llä+(python+3)+tuon+pitäisi+rullata+varsin+nopeasti.