Shakista 3

Seuraa 
Viestejä45973
Liittynyt3.9.2015

joo, sorvi käynyt kuumana, kun vääntänyt vaihteeksi shakkisielua numeroilla. Uskon edelleen brute-forcen voimaan. Siinä logiikassa siirtojen plaraaminen kasvaa suunnilleen pari-kolmekymmentä potenssiin plaraussyvyys. Siis 15 puolisiirrolla:

27^15 = 2954312706550833698643 muunnelmaa!

Vaan ei hätä. Muun muassa FEM:ssä yhtälöryhmä kasvaa helposti valtaviin mittasuhteisiin. Sadallatuhannella tuntemattomalla vaadittu muisti on:

(100000^2 + 100000)*8 = 80000800000 tavua muistia! Tammertekniikan kaavastossa giga on sovittu arvoksi 10^9, joten sadantuhannen tuntemattoman yhtälöryhmä vaatisi muistia 80 Gt.

no, sitten kun moista yhtälöryhmää rupeaa ratkaisemaan, jossain vaiheessa huomaa, että FEM:in generoima yhtälöryhmä on ns. nauhamatriisi, jolloin kun muistinkäyttö optimoidaan nauhamatriisin ratkaisemiselle, saa olla vaikka miljoona tuntematonta, johon riittää jo läppärin keskinkertainen RAM-muisti.

Vielä pitää pari iltaa sorvata, mutta alustavien tulosten tarkastelulla Rybkalle on tulossa noutaja.

Shakkinappuloiden tarkoin määrätyt liikeohjeet muodostavat omanlaisen "nauhamatriisin", jota hyväksi käyttämällä saadaan aikaan käsittämätön muistiavaruus, jottei asemia toisteta samalla tempolla toisessa järjestyksessä.

Kommentit (8)

Vierailija
_jone_

Vaan ei hätä. Muun muassa FEM:ssä yhtälöryhmä kasvaa helposti valtaviin mittasuhteisiin. Sadallatuhannella tuntemattomalla vaadittu muisti on:

(100000^2 + 100000)*8 = 80000800000 tavua muistia! Tammertekniikan kaavastossa giga on sovittu arvoksi 10^9, joten sadantuhannen tuntemattoman yhtälöryhmä vaatisi muistia 80 Gt.




Onko tuo nyt sitten jotenkin ihmeellinen luku? Meillä on konesalissa paljonkin ihan "perus-servereitä" (ei siis mitään mainframe-myllyjä) joissa on 128 GT muistia.

Saw
Seuraa 
Viestejä6251
Liittynyt20.6.2009
ZiPA
Meillä on konesalissa paljonkin ihan "perus-servereitä" (ei siis mitään mainframe-myllyjä) joissa on 128 GT muistia.
Olkoon vaikka 128 PT, 2954312706550833698643 muunnelmassa riittää pohtimista. Eikä raa'an voiman käytössä ole mitään järkeä tässäkään. Monte Carloon mieluummi.

Young man, there's a place you can go.
I said, young man, when you're short on your dough.
You can stay there, and I'm sure you will find
Many ways to have a good time.

It's fun to stay at the Y.M.C.A.
It's fun to stay at the Y.M.C.A.

Vierailija
ZiPA
_jone_

Vaan ei hätä. Muun muassa FEM:ssä yhtälöryhmä kasvaa helposti valtaviin mittasuhteisiin. Sadallatuhannella tuntemattomalla vaadittu muisti on:

(100000^2 + 100000)*8 = 80000800000 tavua muistia! Tammertekniikan kaavastossa giga on sovittu arvoksi 10^9, joten sadantuhannen tuntemattoman yhtälöryhmä vaatisi muistia 80 Gt.




Onko tuo nyt sitten jotenkin ihmeellinen luku? Meillä on konesalissa paljonkin ihan "perus-servereitä" (ei siis mitään mainframe-myllyjä) joissa on 128 GT muistia.

mutta mää oonkin niin perseestä, että oon tutkinut ongelmaa 64:sta lähtien. Tämä innovaatio näki tehon päivät jo silloin, kun väänsin moottorin ensimmäisen kerran 64:n assemblerilla.

se muuten vasta olikin yli selkeä assemblerkieli, koska oli akku, x ja y rekisterit, sekä pinoon PHA ja pinosta PLA, vai oliko nuo toisinpäin, kuitenkin.

Nykyisistä assemblereista melkein kaikki ovat raatoja, joissa on mukana kaiken maailman multimediakäskyjä, joissa yhden käskyn suorittaminen saa koneen tuikkimaan vähän joka kohdasta.

64:lle on vetänyt vertoja vasta ARM-prossun ehdollinen assembler. Siis joka käskylle voidaan antaa lippurekisteristä jokin suffiksi, että suoritetaanko käsky vaai ei, riippuen edellisten käskyjen generoimasta tilasta. Jaarittelua ARM:in 16:sta 32 bitin rekisteristä riittäisi aamuun asti.

Mutta siis siihen shakkiin. Eksponentiaalisuuden pullonkaulana on samojen muunnelmien toisto hiukan eri siirtojärjestyksellä. Jos ja kun siitä pääsee eroon, brute-force menee sinne, minne ihminen ei koskaan tule pääsemään. Eli yllättäen uhrata kaiken, pakottaa ottamaan kaikki uhraukset vastaan, ja se viimeinen ratsu mäjäyttää matin!

Se on shakin perimmäinen sielu. Jos jollekin shakin sielu on sotilaissa, sitten on, eikä siitä sen enempää. Mun mielestä shakin sielu on kauneudessa. Niin kimaltelevassa sommittelussa, että muunnelman tutkiminen luo jännitystä yhä enemmän. Somitelma on enemmän, sen on pakko nähdä, miten se pääättyy. Vähän kuin hyvä toimintaleffapläjäys.

Vierailija

ja vielä heristän voimakkaasti nyrkkiäni koko ohjelmointialalle. Koko ohjelmointi sinällään on suurta ja mahtavaa paskaa ihan joka firmassa.

Kaikki ohjelmistojen kuvauskielet ovat niin ikään perseestä, varsinkin UML. saatana, että efektiivisen logiikan kuvauskielikin piti tehdä itse, koska pitää hallita helvetinmoiset rekursiot samanaikaisina/rinnakkaisina ilmentyminä.

Se on sitä kuvauskielen logiikkaa, jos kielessä on sama efektiivisyys ilman ohjelmointiformaatin sontaa.

niin, että olen jossain paskaohjelmointifirmassa ohjelmistosuunnittelijana, ja toimitan sontaa tuutin täydeltä aamusta iltaan, josta vielä maksetaankin ilmeisesti kohtalaisen hyvin papereita vastaan. Kyllä saisi pitkän pennin maksaa, jotta jättäisin paskasäiliöiden hitsaamisen sikseen, ja vääntäytyisin takaisin sinne saatanan vetelään akateemiseen maailmaan.

abskissa
Seuraa 
Viestejä3654
Liittynyt9.10.2008
_jone_

se muuten vasta olikin yli selkeä assemblerkieli, koska oli akku, x ja y rekisterit, sekä pinoon PHA ja pinosta PLA, vai oliko nuo toisinpäin, kuitenkin.

PHA = push accumulator
PLA = pull accumulator

Eli aivan oikein muistat.

_jone_
Eli yllättäen uhrata kaiken, pakottaa ottamaan kaikki uhraukset vastaan, ja se viimeinen ratsu mäjäyttää matin!

Tuo matin löytäminen taitaa tuottaa vähän ongelmia brute forcelle. Täällä sanotaan noista ratkaistuista loppupeleistä näin:

"In some six-piece positions you need to play over 200 accurate moves to win."

We're all mad here.

Vierailija

jep, noissa loppupeleissä on asemia, jolloin ihminen näkee voittomuunnelman yhdellä silmäyksellä, mutta kone joutuisi plaraamaan puolisiirtoja ikuisuuteen asti, että tajuaisi saman yksinkertaisen jatkon.

Monissa (kaikissa) shakkiohjelmissa onkin valmiiksi ohjelmoitu loppupelien siirrot samoin, kuin shakkiensyklopedian avauksetkin.

mun innovaatiossa on vain sommittelu. Kone joko voittaa keskipelin ehtoopuolella tai ei voita. Jos sillä ei voittomuunnelmaa siinä vaiheessa, ohjelma luovuttaa loppupelissä, jos se on liian teoreettinen. brute-force kun ei voi sisältää shakkiteoriaa valideja siirtoja enempää.

Vierailija

ja tuosta koodin paskasta vielä sen verran, että pue se efektiiviseen ja monumentaaliseen asuun. Koodin on vastattava mallinnuskieleen tasan sata. ei tarvita helvetin koodin luettavuutta vaikeuttavia idioottikommentteja, että:

int i; /* tässä mulla nyt on joku kokonaisluku i, jolla oon aatelut luupata jotain luuppia, ja siis käyttää tätä iitä jonkinlaisena laskurina. */

ja tuossa on vähän mallia gotoilusta, koska goto on kätevä ominaisuus:

[code:19t6iime]int re_move(int bl)
{
#define Z (int)16
int from[Z], i[Z];
int ret[Z], mux[z];
int pin[Z], tmp[Z];
int wh=(int)bl+0x01;
charPtr p[Z], to[Z];

goto __xx_begin; /**/
alku:; /***/
bl+=2; /****/
wh+=2; /******/
__xx_begin:; /*********/
.
.
.
[/code:19t6iime]
ja paskanko väliä sillä on, vaikka käyttäisi yhdessä ranskaa, ruotsia, saksaa, englantia, suomea, saamea?

abskissa
Seuraa 
Viestejä3654
Liittynyt9.10.2008
_jone_
jep, noissa loppupeleissä on asemia, jolloin ihminen näkee voittomuunnelman yhdellä silmäyksellä, mutta kone joutuisi plaraamaan puolisiirtoja ikuisuuteen asti, että tajuaisi saman yksinkertaisen jatkon.

Näin shakista mitään ymmärtämättä luulisin, että juuri alku- ja loppupelissä kone voi peitota ihmisen helposti, kun sillä on vaan riittävän laaja kirjasto käytettävissä. Eihän tuollaisia yli sadan siirron loppupelejä kukaan ihminen kai opettele ulkoa?

_jone_
goto on kätevä ominaisuus

Tjaa, että siis "GOTO considered useful" vai? Intercalin COME FROM peittoaa GOTOn mennen tullen.

We're all mad here.

Uusimmat

Suosituimmat