» »

Digitalna evolucija

Digitalna evolucija

««
19 / 29
»»

noraguta ::

seveda spremeni ravno to ti tupim vse cas. naredi neumno distribucijo stevilk. posebej za to funkcijo,ki je cudna ze sama po sebi pa se toliko bolj, mislim jaz te nerazumem , ce ena števka ne sovpada greš žile rezat ko je dve miljarde pogreškov si pa frapiran nad natačnostjo. criticalov algoritem je primerljiv z lutom zgolj za prvi if v proceduri , pri tretjem ifu v critticaovei proceduri je ze hitrejši lut.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

To ti na pamet. Dej benchmark.
Man muss immer generalisieren - Carl Jacobi

noraguta ::

gor sem dal en link na prirejene benche, igraj se ,ce se hočeš. lahko pa dodaš še to obtežitev zraven, da bo slika bolj popolna.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Noragutin test.

Test ni dober. Nima smisla delati 8 bitne distribucije, potem pa računati z za 20 bitov narejeno kodo.

Ali pa celo 32 bitno distribucijo računati z 20 bitno kodo.

Neustrezen test, kar že sam ugotavlja tam, kjer ga je dal:

> mogoče ni dosti vreden

Res ni.
Man muss immer generalisieren - Carl Jacobi

noraguta ::

spregledal da tvoj dela le do 20 bitov , dd3 daje pravilen output na celem int območju.

8 bitna distribucija in ostale distribbucije niso nesmiselne, če iščeš all rounderja med procedurami.
in tudi z stališča analize so uporabne. če popraviš tvojo proceduro na int domeno lahko pričakujemo pohitritev?
ali ga diskvalificiramo zaradi napačnega outputa?
Pust' ot pobyedy k pobyedye vyedyot!

Zgodovina sprememb…

  • spremenilo: noraguta ()

noraguta ::

no pa smo malo za salo popravili teste.
(vašo proceduro).

da lahko po benchamo in dodali se eno trivijalono obtežitev na distribucijo števk. kakšne rezultate pa dobite sedaj?
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Še ni dobro. Manjkajo distribucije, ali pa so vse razen enakomerne, kjer ima vsako število enako verjetnost, odveč.

Ti si naredil distribucije, ki favorizirajo DD3, čeprav so - numerično gledano - te v manjšini.

Toda tudi za kakršnokoli vnaprej znani distribucijo sploh, obstaja varianta CRI (binarija), ki je najhitrejša.
Man muss immer generalisieren - Carl Jacobi

noraguta ::

če bi pogledal ,bi videl da je dd3 konstantnež(je neodvisen od distribucije ).amapk tudi za velika števila se bolje obnese. tvoj je konkurencen ,ce ga pitamo z 32h testom(bolj se distribucije ne da optimizirat za krittikal).in za to trdiš ,da je najbolj verjetna distribucija? no ja je samo konkurenčen ,nič več odega.

kakeršen sloj logike ,ki bi preklapljal med 1000 cri metodami bi stvar še poslabšalo.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Zadeva je podobna ugibanju števila. Kako z najmanj koraki uganiti neka (recimo 10 bitno) število?

Je x >= 512?

Če ni, je x >= 512-256?

Če je, je x >= 512-256+128?

Če je, je x >= 512-256+128+64?

Če ni, je x >= 512-256+128+64-32?

itd, 10 korakov vedno, do naprimer:

je x>= 512-256+128+64-32-16+8-4+2-1?


TOLE je teoretično najhitrejši način, da to ugotovimo.

Kaj pa "real life distribucije" števil, ne "samo za enakomerno", kjer so vsa števila enako verjetna?

Za večino možnih distribucij je tole optimum. Za kakšne posebne, je treba popraviti konstante, pa je binary spet najhitrejši možen.

Pri ugibanju števil ne moreš premagati binarija. Lahko samo zafejkaš, da si ga, kot to zafejka test, ki ga je sestavil noraguta.

To je corner stone informacijske teorije, da je binary algoritem ugibanja vedno najboljši.

Ker za ugibanje gre. V katerem intervalu [2n, 2n+1] je število x - in zgornja meja intervala je potem odgovor.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

> za ugibanje gre. V katerem intervalu [2n, 2n+1] je število x - in zgornja meja intervala je potem odgovor.


za ugibanje gre. V katerem intervalu [2n, 2n+1] je število x - in zgornja meja intervala je potem odgovor.


Tole je res bistveno, zato tako poudarjam. Ta naloga, najti prvo večjo potenco števila 2, je samo poenostavitev naloge, najdi število na intervalu. Poenostavitev pri kateri je že prvi DA zmaga.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Največji je končni možni interval, kjer bi število znalo biti. 50% števil se nahaja tam. V 50% primerov nam torej da odgovor že prvi if, po njem zapustimo funkcijo.

Od preostanka nam 50% primerov zaključi druga vrstica binarija (CRIja), itd.

Pravzaprav ne iščemo na intervalu [2n,2n+1] pač pa na (2n,2n+1]. Kar pa nič ne spremeni.
Man muss immer generalisieren - Carl Jacobi

noraguta ::

no še dve vprašanji , preden zablodimo v nesmisle, saj tisto tvoje iskanje 10 bitnega števila ne poseduje kategorij naš pa.

ali lahko cri ju naštimamo bolj ugodno distribucijo kot je v 32h testu?
kakšne rezultate dobiš?

iz teh testov se precej dobro ,da ekstrapolirat kdaj bo cri pokleknil. če mu dodamo spredaj še odločitveno logiko za izbiro optimalnega drevesa, se praktični izrodi v neraben algoritem.

zgolj rezultati štejejo , jes grem na per.
Pust' ot pobyedy k pobyedye vyedyot!

Zgodovina sprememb…

  • spremenilo: noraguta ()

Vesoljc ::

> jes grem na per.

ob tej uri? 8-O

pohvalno ;)
Abnormal behavior of abnormal brain makes me normal...

Thomas ::

> ali lahko cri ju naštimamo bolj ugodno distribucijo kot je v 32h testu?

99+% distribucij je takih, da binary (CRI) da odgovor pri prvem ifu v 50%.

V povprečju se pri enakomerni distribuciji zgodita 2 ifa. Nič več.

Ne samo pri enakomerni, pri veliki večini distribucij je tako.

2 ifa v povprečju. Pa tudi če greš skozi vse možne distribucije sploh, je povprečje 2 ifa na število.

Ker to je res ekvivalentno ugibanju intervala (2n,2n+1], na katerem leži število. Najprej se vprašaš za tavelki interval, potem za pol manjšega ...

To je vse. Razumi ali pusti.
Man muss immer generalisieren - Carl Jacobi

noraguta ::

čemu še slepomišiš? preštej konju zobe(pomerimo hitrost), verjemi da znam prešteti zanke tudi sam,na roke brez evolucije pa vsega tega sranja.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Tebi je evolucija seveda sranje, to je tvoja top agenda. Ampak daj lepo svoj benchmark na mizo! :)
Man muss immer generalisieren - Carl Jacobi

noraguta ::

moj benchmark je na mizi. je dal svoje rezultate od sebe le ti še po malem mimosuvaš ampak bres argumentov.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Kje ga maš?
Man muss immer generalisieren - Carl Jacobi

noraguta ::

ibid
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Jah no, nobenih casov nisi dal ... saj ne najdem jih. Pastej!
Man muss immer generalisieren - Carl Jacobi

noraguta ::


times 32 32h 24 16 8
Critt: 562 641 469 1000 1360 1781
n2DD3: 360 516 515 485 484 453


o čemer je times irelavanten.
32h pa trivial.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

32h je ok. Ostali so pa primeri posebnih distribucij. Zanje vzemi par ifov ven. Brez potrebe se izvajajo.

Kot da bi ugibal števila do 1000, pa bi vedno najprej vprasal:

Je vecje kot milijarda?

Je vecje kot pol milijarde?

Je vecje kot cetrt milijarde ...

....

Handicap, ki je odveč.


Eden od naju strika brezveze! :)


Poleg tega, kaksno vrednost da n2DDR3 za 0 in za 1?
Man muss immer generalisieren - Carl Jacobi

noraguta ::

ničla ni panike(manj kot 5% pribitka).
ne spremeni bencha.
32h je trivial in ne rabim ne cri ne 32h za to ,da mi pove nekaj kar vem. je preobtezena distribucija pri kateri se izvede le en if.za to tudi dodana notri. 32 je relavanten in ostale podistribucije saj je le to zadeva ki cloveka zanima. ker v nasprotnem bi zadevo lahko zreducirali na
if (n>1073741824) return 2147483648;

ali na( v najblosem primeru )

if (n>1073741824) return 2147483648;
if (n>536870912) return 1073741824;


in se pocutili blazno fino.to je komajda isti problem .

Kot da bi ugibal števila do 1000, pa bi vedno najprej vprasal:

Je vecje kot milijarda?

Je vecje kot pol milijarde?

Je vecje kot cetrt milijarde ...


že res ampak ampak v tem je point kompresije v lookup tabelo ,dvoje cincanj (ifov) za celo miljardo ali dve konstantno. ostale operacije pa poberejo cca 10% if-anja.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Ti priznaš, da če narediš (celo s tvojimi optimizaciji) benchmark tako, da je prvi if na največji signifikanten bit, potem je CRI najhitrejši.

Ampak edino tako je smiselno. Da se ne izvajajo prvi ifi zmeraj na prazno. Ti pa praviš da ne.

Če bi tvoj argument veljal, bi veljal tudi za iskanje po bisekciji. Po tvoje bisekcijsko iskanje ne bi bilo najboljše, ker vztrajaš, naj najprej nekoliko išče med večjimi števili kot sploh so. Recimo, če bi po tvojem z bisekcijo iskali 24 bitno število, ti vztrajaš, naj najprej gremo gledat med vsa 32 bitna števila. Tako, za vsak slučaj.

Tako bi tudi lahko "dokazal", da obstaja hitrejši način za iskanje števila v urejenem nizu, kot je bisekcija. Pod temi pogoji seveda.

Štekaš?
Man muss immer generalisieren - Carl Jacobi

noraguta ::

distribucije so sestavljene zadosti dobro da pokazeo odvisnost procedure od inputa. vse ostalo se da dosti dobro ekstrapolirat.

mar res misliš ,da boš dobil najhitrejši algoritem če pofrezaš zgornje ife pa recimo za 8 bina števila(distribucijo)?
ali tudi tu pričakujemo ,da bo 90% inputa med 128 in 255?(tu je celo možno da se kaj takega zgodi pi 32 bitni varijanti pa nekako ni).


Ampak edino tako je smiselno. Da se ne izvajajo prvi ifi zmeraj na prazno. Ti pa praviš da ne.


kar trdim jaz je da bo v rl problemih input na tem intervalu za vecino problemov precej skromen.oziroma skromnejši od 90% . pa recimo ,da je v 90% procentov inputa nad miljardo in tisto nekaj drobiža 10% pa sopodaj in lineariziran. in glej ,glej ifi spet suckajo.

seveda vem da mi boš ponudil 10.000 binarnih dreves za vsako dano distribucijo. ampak kaj če je ne vem v naprej? nisi ponudil odločitvenega logike kdaj kakšno uporabit. za linearno distribucijo na katerem koli ne ozkem intervalu itak suksa tvoje ifanje.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

To kar si napisal, če bi veljalo za npow2, bi moralo veljati tudi za bisekcijsko iskanje. Lahko bi trdil, da za "vse realne distribucije, je pa neka look up tabela pa boljša". "Bisekcijsko iskanje pa suksa, kakor hitro nimaš ravno enakomerne distribucije!"

Predpostavljena distribucija je lahko samo enakomerna pa povprečje vseh distribucij. "Real life distribucija" pač ne pomeni nič.

Torej, benchmark je lahko samo za vsa števila z nekega intervala, kjer imajo vsa števila enako verjetnost.

Če ne, podaj distribucijo verjetnosti. Recimo eksponentna. Kjer je:

p(0)=0,5
p(1)=0,25
...
p(n)=(1/2)^(n+1)
..

Potem je optimalni program:

if x<1 return 1;
if x<2 return 1;
if x<3 return 2;
if x<5 return 4;

....

Prvi štirje ifi podelajo v tem primeru preko 90%.

Za vsako distribucijo je optimum zaporedje ifov. Vprašanje samo kakšno.
Man muss immer generalisieren - Carl Jacobi

Zgodovina sprememb…

  • spremenil: Thomas ()

noraguta ::

:~) ja v tistem tvojem orodju sem prepričan da.

(še vedno ti ni jasno , da ti če nimaš razreda ki ima vsaj 90% ne zastopansoti so ifi pocasni).

v rl bi bilo potrevno pa pogledat, samo ker na svetu ocitno ni cloveka ki bi razumel zadevo , ti pa ne znas spisat drugacnih testov kot ,da vracajo nicle, nam bo za vedno ostalo zastrto.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

Ne vemo, kaj si ti pod "rl" predstavljaš. Niti ne, kaj si predstavljajo tisti tipi na Gamedev. Ne dosti pravzaprav.

Če pa že, pa poleg konstantne, Poissonove, Studentove, binomske .... distribucije verjetnosti za števila, vi poznate še to, "real life distribution" ... potem pa prosim! Povejte kaj to je, bom povedal kakšno je optimalno zaporedje ifov.

To vedno obstaja. Binary rules!
Man muss immer generalisieren - Carl Jacobi

noraguta ::

ša za linerano ne znaš.
ne na 32 na na 8ih biotih ne kjerkoli vmes.
Pust' ot pobyedy k pobyedye vyedyot!

Thomas ::

To si ti izvoliš misliti. Ker slabo razumeš zadevo. Ali pa je sploh ne razumeš.

Pod "linearno" verjetno misliš konstantno. Ko ima vsako število enako verjetnost.

Takrat je zelo enostavno. Če je primer eksponentne verjetnosti, ko ima vsako naslednje število pol tako verjetnost od prejšnjega, potem sem dal primer nekaj postov zgoraj.

Binary always rules. No, razen če naredimo eno orjaško tabelo, ko je odgovor kar takle:

return t[x];

Ampak takrat se v mikrokodi CPUja zgodi adresiranje na x. Po bitih po vrsti. Od najbolj signifikantnega, do najmanj. Zgodi se en binary v malem!
Man muss immer generalisieren - Carl Jacobi

Thomas ::

In ja, seveda, preko 90% adres ima vsaj enega od prvih štirih bitov na ON. Pa naj bo to 32 ali 64 bitni procesor. Ali 1024. Če je memorija omejena na en sam megabyte, se pač adresira samo do 20 bitov, velja pa isto. Prvi 4 biti določijo 90% natančnosti, kam poknemo eno spremenljivko.

To je en tako zelo real life primer.
Man muss immer generalisieren - Carl Jacobi

noraguta ::

Pod "linearno" verjetno misliš konstantno. Ko ima vsako število enako verjetnost.
Takrat je zelo enostavno. Če je primer eksponentne verjetnosti, ko ima vsako naslednje število pol tako verjetnost od prejšnjega, potem sem dal primer nekaj postov zgoraj.



pod konstantno smo videli medikoren rezultat.
tudi za eksponentno ki jo navajaš bo tak , če ne verjameš pa naredi teste.



Ampak takrat se v mikrokodi CPUja zgodi adresiranje na x. Po bitih po vrsti. Od najbolj signifikantnega, do najmanj. Zgodi se en binary v malem!


večje nemumnosti že dologo nisem slišal , preprosto seštevanje naslovov človek prekonvertira v BISEKCIJO, LOL. mar ja ne misliš ora v aderju ? :~>>>>


če ne moreš podpreti svojih izjav z rezultati se lahko preprosto umakneš . ker tole že ni več niti patetično ampak je absurdno.
Pust' ot pobyedy k pobyedye vyedyot!

Zgodovina sprememb…

  • spremenilo: noraguta ()

Thomas ::

Jah ... zgubil sem te pač. Ko že mislim, da bo s tabo možno pametno debatirati, se ponovno začneš spakovati.

No, bom kasneje razložil bolj podrobno.
Man muss immer generalisieren - Carl Jacobi

Vesoljc ::

Abnormal behavior of abnormal brain makes me normal...

Thomas ::

Mah, najprej o binariju še, znanem kot CRI.

Sit sem ga, in noragute z njim. Ljudje so dveh sort. Tisti ki kapirajo, da binary je tahitrejši, pa tisti ki kapirajo da ni. Totalen dolgcajt že.


Evolucija, kot pravi Vesoljc, gre dalje!
Man muss immer generalisieren - Carl Jacobi

tx-z ::

Eno vprašanje imam....kaj je to "območje veljavnosti", ki ga določiš pr npr. $rinvar x(1,100) ..a to pomen, da bo ta (izboljšan) algoritem sigurno deloval za števila v tem območju al kej druzga?
tx-z

Thomas ::

Pomeni, da bodo testirana števila v tem obsegu kot input vrednosti.

y(1,100) pri tebi nima nobenega smisla. Škodi pa tudi ne!

x(1,100) pri tebi pa pomeni, da bo algoritem skoraj zagotovo veljal za vse x med 1 in 100. Milijon ali več testov bo šlo skozi.

Sem gonil tale tvoj primer. Interesanten.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

> y(1,100) pri tebi nima nobenega smisla. Škodi pa tudi ne!

Ker pač y potem vedno določiš drugače, kot je bil pri inputu. Ampak ni bistveno to. Še malo več testinga si s tem sprovociral.
Man muss immer generalisieren - Carl Jacobi

tx-z ::

hmm, zanimivo,
pr x(1,100) y(2,100) sm pršu "samo" do tega-// The algorithm has been enhanced For 88.6117%

pr x(1,400) y(2,400) pa sm pršl do celo// The algorithm has been enhanced For 95.5078%

samo pr drugm nism pustu do konca(do tam k prekine kr je neregistrirana verzija)
tx-z

Zgodovina sprememb…

  • spremenilo: tx-z ()

tx-z ::

bom probu v kratkm še uporabt ta izbolšan algoritm pa prevert tut za višja števila če deluje pravilno ;)
tx-z

Thomas ::

V tem konkretnem primeru [formula za praštevila do 100?] boš kaj več težko dobil, tudi če zelo dolgo laufa. Ampak:

$rinvar x(1,1000)

in brez kakršnegakoli ipsilona pri $rinvar ... zna biti zanimivo.
Man muss immer generalisieren - Carl Jacobi

tx-z ::

// The algorithm has been enhanced For 95.7319%


mal je bolš, hmm, kaj je sploh fora če določm y oz. če ga ne?
tx-z

Thomas ::

y se določi doli v programu sam iz x-a, ne glede na to, kakšen je y pri inputu. Zato je vseeno če ga imaš ali nimaš.

Samo če Critticall vidi, da je več input spremenljivk, dela več preverjanja kode.

Kar dobiš je pa alien ko hudič, to pa ja.
Man muss immer generalisieren - Carl Jacobi

Thomas ::

No, govorim za konkreten program, ki ga midva poznava. Jest ga ne bom objavil, ti ga daj, če želiš, saj je tvoj!
Man muss immer generalisieren - Carl Jacobi

_marko ::

A lahko daš optimizairat DNK?
The saddest aspect of life right now is that science
gathers knowledge faster than society gathers wisdom.

Thomas ::

V principu ni nobene ovire za kaj takega. Jasno, ne s Critticallom, pač pa z enim bolj za ta namen prilagojenim orodjem.

Kar potrebuješ je F@H style simulacij in potem lahko za določen namen optimiziraš DNA. Recimo, za natančnost pri podvajanju.

Seveda pa potrebuješ še dovolj CPUja. Enormno.

Samo zakaj bi šli na DNA. Boljš zamenjat celice s kakšnimi učinkovitejšimi strojčki.
Man muss immer generalisieren - Carl Jacobi

snow ::

Ubitsvu bi moral dat v evolucijo/simulacijo DNK z vsemi sistemi, ki sodelujejo zraven pri kopiranju, prepisovanju itd, itd.
Pa pustiti evoluciji (taki naspidirani v računalniku seveda) da poišče boljše sisteme, boljše substrate za nas.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Thomas ::

Ja. Pa če pride ven s čisto drugim, kot z DNA. Glavno da ostane zavest in pozitivne qualie, pa vse kar je zanje potrebno.

Najbolj "čudno" bo to, ko bomo lahko postavili cilj, kamor bomo hoteli.

:)
Man muss immer generalisieren - Carl Jacobi

Thomas ::

Digitalna evolucija ... na urniku.

Downloadate lahko en resničen primer, samo priimki in imena so spremenjeni v bolj klingonske.

Kdo pride do manjšega ERROR rezultata?

:\

OwcA ::

Nekdo mora začeti,

19,840,120,351 po 45 minutah, P4 3,3 GHz.

P.S. inštalacija deluje "zanimivo", glede uporabniškega vmesnika pa sem svoje povedal že pri CR.

popravek 1: 15,474,378,641 po 1:08

popravek 2: 14,696,474,123 po 2:30

Zdej pa dost, grem spat. ;)
Otroška radovednost - gonilo napredka.

Zgodovina sprememb…

  • spremenilo: OwcA ()
««
19 / 29
»»


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Najhitrejši programski jezik? (strani: 1 2 )

Oddelek: Programiranje
757757 (5577) Senitel
»

Funkcija z logičnimi operaterji.... (strani: 1 2 )

Oddelek: Programiranje
905578 (4924) CaqKa
»

Petaflopsu naproti (strani: 1 2 3 )

Oddelek: Novice / Procesorji
1058877 (8877) Marjan
»

cene permutacij help please

Oddelek: Programiranje
262076 (1683) Sergio
»

kako definirtati prastevilo

Oddelek: Programiranje
143799 (3604) ooux

Več podobnih tem