SURVO-RISTIKOISTA SEPPO MUSTONEN..00 Olen viime kuukausina tarjonnut ratkaistavaksi tehtäviä, joita sanon Survo ristikoiksi, omassa keskusteluryhmässämme (www.survo.fi Keskustelu). Niiden pohtiminen on kiehtonut yllättävän monia myös survoilijoiden ystäviä ja sukulaisia. Useat ratkovat Survo ristikoita päässään käyttäen vain kynää ja paperia. Varsinkin vaikeitten tehtävien selvittämisessä Survon erilaiset laskennalliset keinot tukevat toimintaa. Tehtävänä on täyttää m n taulukko luvuilla,,...,mn siten siten, että jokainen näistä luvuista esiintyy vain kerran ja että rivi- ja sarakesummat täsmäävät reunoilla annettuihin lukuihin. Lisäksi taulukkoon on saatettu sijoittaa joitakin lukuja jo valmiiksi, jottei ratkaiseminen olisi liian hankalaa eikä mahdollisia ratkaisuja olisi yhtä enempää.. Esimerkki Tarkastellaan ristikkoa 0 0 0 Siis esim.. rivin lukujen summa on 0 eli puuttuvien kolmen luvun summa on. Vastaavasti. sarakkeen summa on, joten kahden puuttuvan luvun summa on 0. Taulukosta puuttuvat lukua ovat,,,,,,0,,. Ratkaisu kannattaa yleensä aloittaa rivistä tai sarakkeesta, jossa on vähiten puuttuvia lukuja. Tässä ristikossa sarakkeet, ja ovat sellaisia. Sarake ei kuitenkaan ole kiitollinen sillä puuttuvien lukujen summa voidaan esittää sääntöjen sallimalla tavalla useassa muodossa (esim. = + = + = + 0 = 0 + ). Sarakkeella puuttuvien lukujen summa on 0, jolla on vain yksi mahdollinen esitys 0 = + sillä muut vaihtoehdot 0 = + = + = + sulkeutuvat pois jo taulukossa esiintyvien lukujen johdosta. Copyright c Seppo Mustonen, 00.
SEPPO MUSTONEN..00 Lukua ei voi sijoittaa riville, koska silloin tuon rivin summa ylittäisi arvon. Siis taulukko täydentyy aluksi muotoon 0 0 0 Nyt ensimmäiselle sarakkeelle jää vain vaihtoehto = = + = +. Luku ei voi kuitenkaan olla rivillä, sillä sen puuttuvien lukujen summa olisi 0 =, jonka ositus kahden luvun summaksi sallitulla tavalla ei onnistu. Taulukko täydentyy näin muotoon 0 0 0 jolloin viimeisen rivin viimeiseksi luvuksi tulee 0 = : 0 0 0 Ensimmäisellä rivillä puuttuvien lukujen summa on 0 =, jonka ainoa mahdollinen ositus on = + 0 vieläpä niin, että luku tulee kolmanteen sarakkeeseen; 0 tuolla paikalla aiheuttaisi sarakesumman 0 ylityksen: 0 0 0 0
SURVO-RISTIKOISTA Ristikko täydentyy nyt välittömästi lopulliseen muotoonsa 0 0 0 0. Esimerkki Myös tämä 0 ristikko on helppo etenkin, jos huomaa, että ensimmäinen rivisumma voi syntyä vain luvuista + + + + + + + + + 0 =. 0 Se täydentyy välittömästi muotoon 0 Koska ensimmäisen rivin luvut ovat kaikki korkeintaan 0, neljännen sarakkeen summa 0 voi syntyä vain muodossa 0 = 0 + 0 eli saadaan 0 0 0 Tämän jälkeen lopullinen ratkaisu kehittyy yksinkertaisin askelin esim. seuraavasti: 0 0 0
SEPPO MUSTONEN..00 0 0 0 0 0 0 0 0 0 0 0 0. Esimerkki Edellisten kaltaisista, helpoista Survo-ristikoista selviää peruslaskutaidolla ja yksinkertaisilla päätelmillä. Näytteenä siitä, miten Survoa erityisesti sen kombinatorisia tehtäviä käsittelevää COMB-ohjelmaa voi käyttää hyväksi vaikeampia ristikoita ratkaistaessa, katseltakoon seuraavaa tehtävää, missä rivit on osoitettu numeroin ja sarakkeet kirjaimin A E. A B C D E 0 Tässä pääsee mielestäni vähimmällä, jos aloittaa tutkimalla, mitkä ovat rivin kolme puuttuvaa lukua. On selvitettävä, millä eri tavoin saadaan erisuuren kokonaisluvun summaksi = 0, kun ei saa käyttää yhteenlaskettavina
SURVO-RISTIKOISTA taulukossa jo olevia lukuja. Mahdolliset vaihtoehdot selviävät nopeimmin Survon seuraavanlaisella COMB-komentokaaviolla. Jo käytetyt luvut kerrotaan COMBkomennolle täsmennyksellä OFF=,,,,,,,,,,, ja kaikki luvun 0 ositukset (partitiot) eri luvun (DISTINCT=) summaksi saadaan komennolla OFF=,,,,,,,,,,, COMB P,CUR+ / P=PARTITIONS,0, DISTINCT= Partitions of 0: N[P]= 0 Tarjolla on siis kaksi vaihtoehtoista ositusta 0 = ++ = +0+. Tutkitaan B-saraketta ja käytetään jälleen COMB-komentoa näin: ---= on puuttuvien lukujen summa. COMB P,CUR+ / P=PARTITIONS,, DISTINCT= Partitions of : N[P]= Koska luku ei voi olla rivillä (ositusvaihtoehtojen estäessä) on B= ja B=: A B C D E 0 Tutkitaan nyt A-saraketta: ---= OFF=,,,,,,,,,,,,, (Huom. ja mukaan) COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= Koska rivillä ei voi olla lukua tai, rivin oikea ositus on ++0 eli A= ja C=0 sekä lisäksi A=.
SEPPO MUSTONEN..00 Tullaan siis tilanteeseen A B C D E 0 0 jolloin D on = A B C D E 0 0 Katsotaan riviä ja saraketta D: Rivi : ---= OFF=,,,,,,,,,,,,,,,0,, COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= 0 Sarake D: ---= COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= 0
SURVO-RISTIKOISTA Tällöin on D=0 ja edelleen C=, D=: A B C D E 0 0 0 Ristikosta puuttuu enää neljä lukua, jotka ovat,,,, joten helposti saadaan lopullinen ratkaisu A B C D E 0 0 0
SEPPO MUSTONEN..00. Esimerkki Vielä hankalampi lienee seuraava Survo-ristikko, jonka kyllä pystyy selvittämään apuneuvoittakin. Tästä on osoituksena Olli Mustosen ratkaisu, joka sujui näin (suora lainaus hänen lähettämästään viestistä): A B C D E 0 0 0 Huomasin, että riville tarvitaan kahden luvun summana. Käytettävissä olevilla luvuilla tämä onnistuu vain kahdella tavalla: 0+ ja +. Suuria lukuja tarvitaan myös sarakkeessa E ongelmana on ruutu E, jossa ei voi olla kovin suurta lukua, koska rivin vielä tyhjänä olevien neljän ruudun summa saa olla vain. Pienen tutkimisen jälkeen tulin siihen tulokseen, että E voi olla vain, tai 0. Sarakkeen E jäljelle jäävän kahden ruudun summa voi siis olla, tai nämä summat voivat muodostua vain luvuista 0,, ja eri tavoin yhdisteltyinä. Koska kahta näistä neljästä luvusta tarvitsemme rivillä, ja siellä summan täytyy olla, voimme päätellä, että myös jäljelle jäävät kaksi suurta lukua ruuduissa E ja E saavat summakseen. Tämä puolestaan tarkoittaa sitä, että E täytyy olla 0. A B C D E 0 0 0 0 Kirjoitin nyt listan kaikista mahdollisista ratkaisuista sarakkeelle B. Näistä saatoin poistaa kaikki ne, joissa esiintyi luku 0 (tarvitaan ruudussa E) sekä sellaiset, joissa tarvittiin kahta lukua joukosta 0,, ja nämä kaikki luvuthan tarvitsemme ruutuihin B, C, E ja E. Tein vastaavanlaisen listan myös rivin tilanteesta.
SURVO-RISTIKOISTA Näiden toimenpiteiden jälkeen sarakkeelle B jäi kaksi mahdollista ratkaisua:,,0 tai,,. Tästä voimme jo päätellä, että näissä ratkaisuissa esiintymättömien lukujen ja täytyy sisältyä sarakkeeseen E, joista toisen täytyy siis esiintyä rivillä, ruudussa E. Ruudussa B esiintyvä luku täytyy vuorostaan olla alle 0. Ainoa aiemmin listaamistani rivin ratkaisuista, joka täyttää kaikki aiemmin mainitut ehdot (mukana täytyy olla joko tai, molempien muiden lukujen täytyy olla alle 0, luku 0 ei voi esiintyä rivillä) on,,. Tästä seuraa, että E on ja vastaavasti E on. Tästä seuraa myös, että ruudussa B täytyy olla joko tai. Sarakkeen B ratkaisu on siis,, B on, B on ja näin ollen B on. C on 0. A B C D E 0 0 0 0 0 Vastaavasti A on ja A+A täytyy olla yhteensä jäljellä olevilla luvuilla ainoa mahdollisuus on +. on liian suuri luku ruutuun A, joten A on ja A on. A B C D E 0 0 0 0 0 Näin ollen C+D on, ainoana ratkaisuna jäljellä olevilla luvuilla +. Tässä vaiheessa ratkaistavaksi jää enää se, kummin päin luvut ja ovat rivillä ja se, miten sijoittuvat pienet luvut,, ja ruutuihin C, D, C ja D.
0 SEPPO MUSTONEN..00 Pienen tutkimisen jälkeen oikea ratkaisu löytyy helposti: A B C D E 0 0 0 0 0 Myös Anna-Riitta Niskanen on ratkaissut tämän tehtävän.. Survo-ristikkojen laadinta Ristikkotehtävien luominen on periaatteessa helppoa, mutta ratkaisun yksikäsitteisyyden varmistaminen edellyttää ratkaisuohjelmaa, jonka tein Survo-modulina SUMMAT. Esim. edellinen peli syntyi Survon matriisitulkin avulla seuraavasti: FILE CREATE SUMMAT,0, FIELDS: N X numerot,,,... N Y satunnaislukuja X-lukujen sekoitukseen END FILE INIT SUMMAT, VAR X=ORDER TO SUMMAT VAR Y=rand(00) TO SUMMAT m= n= FILE SORT SUMMAT BY Y TO SUMMAT / X-arvot satunnaiseen järjestykseen MAT SAVE DATA SUMMAT TO A / VARS=X Muunto m*n alkion vektoriksi MAT A=VEC(A,m) / Muunto mxn-matriisiksi MAT A=ZER(m+,n+) / Tähän kootaan alkiot ja summat. MAT A(,)=A MAT S=SUM(A) MAT A(m+,)=S MAT S=SUM(A ) MAT A(,n+)=S MAT S=SUM(S) MAT A(m+,n+)=S MAT A=A MAT A(,)=ZER(m,n) / A-matriisin alkioiden nollaaminen, summat jäävät MAT NAME A AS A
SURVO-RISTIKOISTA Valittujen alkioiden kopiointi ratkaisumatriisista A: MAT A(,)=A(,) MAT A(,)=A(,) Osan alkioista valitsin suoraan ja MAT A(,)=A(,) loput niin, että ratkaisuohjelma MAT A(,)=A(,) SUMMAT antaa vain yhden mahdollisen MAT A(,)=A(,) ratkaisun. MAT A(,)=A(,) MAT A(,)=A(,) MAT A(,)=A(,) MAT A(,)=A(,) MAT NAME A AS A Tehtävän asettelu on valmis: LOADM A,(),CUR+ A Sum 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Sum Ratkaisuohjelma SUMMAT toimii hyvin alkeellisen, osittain satunnaistetun algoritmin mukaisesti. Se aloittaa sijoittamalla puuttuvat luvut umpimähkään taulukkoon (satunnaistettu ristikko) ja yrittää sitten systemaattisin vaihdoin saada lasketut rivi- ja sarakesummat mahdollisimman lähelle oikeita summia. Menettely johtaa joko oikeaan ratkaisuun tai (kuten yleensä) se päätyy pattitilanteeseen, jossa se ei enää pysty parantamaan ratkaisuksi kelpaamatonta tulosta. Jälkimmäisessä vaiheessa tapahtuu mutaatio, jossa kaksi tai useampia lukuja vaihtaa paikkojaan satunnaisesti. Tämän jälkeen yritetään parantaa tulosta jälleen systemaattisesti, kunnes joko päädytään ratkaisuun tai joudutaan turvautumaan uuteen mutaatioon. Ristikon vaikeutta kuvaavaksi tunnusluvuksi olen ottanut tarvittujen mutaatiokertojen lukumäärän keskiarvon, kun ratkaisu toistetaan esim. 000 kertaa lähtemällä joka kerran täysin satunnaistetusta ristikosta. Edellä kuvatuilla esimerkkiristikoilla vaikeusasteet näin laskettuna ovat 0,0,0 ja 0. Mutaatioiden lukumäärä näyttää noudattavan (kuten sopii odottaa) likimain geometrista jakaumaa. Olen tarkkaillut joissain esimerkkiristikoissa, mikä on kussakin mutaatiossa paras vaihtojen lukumäärä. Kolme vaihtoa näyttää ainakin ristikoilla antavan keskimäärin nopeimmin ratkaisun ja ratkaisu on luokkaa kolme kertaa nopeampi kuin lähdettäessä pattitilanteen jälkeen kokonaan uudelleen satunnaistetusta ristikosta. Olen sisällyttänyt ratkaisuohjelmaan myös option, jolla se tutkii ratkaisun yksikäsitteisyyttä ratkaisemalla tehtävän toistuvasti ja jos se havaitsee, että syntyy yksikin ensimmäisestä ratkaisusta eroava tulos, tästä tulee ilmoitus.
SEPPO MUSTONEN..00. Avoimista ristikoista Omalla tavallaan mielenkiintoisia (ja hankalia) ovat avoimet Survo-ristikot, joissa on annettuna vain rivi- ja sarakesummat ja joilla on silti vain yksi ratkaisu. Joka tapauksessa esim. sellainen avoin m n ristikko, jonka ratkaisussa luvut,,...mn ovat vaaka- tai pystyriveittäin suuruusjärjestyksessä, ratkeaa yksikäsitteisesti, mutta näitä on muitakin ja ilmeisesti jopa sitä enemmän, mitä suurempi on ristikko. Yksikäsitteisesti ratkeavat ristikot A ja B määritellään olennaisesti erilaisiksi, jos ratkaistua ristikkoa A ei voi palauttaa ratkaistuksi ristikoksi B vaihtamalla rivien tai sarakkeiden järjestystä eikä transponoimalla (tapauksessa m = n). Olkoon S(m, n) olennaisesti erilaisten, yksikäsitteisesti ratkeavien, avoimien m n Survoristikoiden lukumäärä. On ilmeistä, että S(, ) = ja S(, ) =. Ainoa yksikäsitteisesti ratkeava ristikko on sillä esim. seuraavalla ristikolla (ankarasti ottaen) on kaksi ratkaisua. Sarakesummien (samoin kuin rivisummien) tulee olla keskenään erisuuria, jotta ratkaisu voisi olla yksikäsitteinen. Reijo Sund kiinnitti ensimmäisenä huomiota näihin avoimiin ristikoihin ja selvitti, että olennaisesti erilaisia ristikoita on kappaletta eli S(, ) =. Hän päätyi lähtemällä!=0 mahdollisesta ristikosta tähän tulokseen suoraan Survon perustoimintojen avulla, mikä on nähtävissä liitteenä. Alla on taulukoituna noiden ristikkojen rivi- ja sarakesummat sekä vaikeusasteet V. Rivit Sarakkeet V Rivit Sarakkeet V 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
SURVO-RISTIKOISTA Ratkaisuohjelman antamiin ristikkojen vaikeusarvoihin tulee suhtautua varauksellisesti. Joka tapauksessa vaikeimmaksi arvioitu (toiseksi viimeinen arvolla ) on hankalimpia. Se ratkeaa seuraavalla päättelyllä (ote Survon toimituskentästä): Ratkaistaan ristikko A B C * * * * * * * * * Aloitetaan C-sarakkeesta (jolla on ainoana yksikäsitteinen ositus): COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= A B C * * C-sarakkeen luvut järjestystä vaille * * * * B-sarake: OFF=,, COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= Luku on sarakkeessa B rivillä tai - ei rivillä, koska summa ylittyisi. A-sarake: OFF=,,, COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= Luku on sarakkeessa A.
SEPPO MUSTONEN..00 Olisiko B=? Silloin olisi C= ja A= A B C * * * * ja A-sarakkeessa =++, mutta rivisumma ylittyisi! Siis B=. A B C * * * * * B-sarakkeen alkuosan ainoa ositus on -==+ - ei +, koska tämä johtaa heti ristiriitaan rivillä. Tällöin on B= ja B=, koska B= joko ylittää rivisumman tai jos C=, A olisi. A B C * * * Koska B=, C ei voi olla tai - siis C= ja A=. A B C * * Väistämättä tällöin on A= ja A=, jolloin C= ja C= A B C
SURVO-RISTIKOISTA Olennaisesti erilaisten, avoimien Survo-ristikoiden lukumäärän laskeminen vaikeutuu huomattavasti suuremmilla m ja n yhdistelmillä. Olen ratkaisuohjelmallani saanut selvitetyksi, että S(,)=. Koska mahdollisten ristikkojen lukumäärä on tällöin jo!=0000, on edullisempaa tarkastella ongelmaa kaikkien reunasummien yhdistelmien kautta eli tällöin mahdollisten ehdokkaiden määrä supistuu lukuun *=, mikä näkyy seuraavasta laskelmasta: Kaikkien lukujen summa x-ristikossa on */=. COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MIN=0 MAX= RESULTS=0 Partitions of : N[P]= COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MIN= MAX= RESULTS=0 Partitions of : N[P]= Olennaisesti erilaisten, avoimien ristikkojen lukumäärän S(, ) laskeminen edellyttää vielä tehokkaampia keinoja, sillä erilaisten reunasummayhdistelmien lukumäärä on 0*(0-)/=0. Seminaarissamme vieraillut kombinatoristen algoritmien erikoistuntija Petteri Kaski on omilla ohjelmillaan saanut tulokseksi S(, ) =. Hän mallinsi tehtävän ns. täsmällisen peitteen ongelmaksi (exact cover problem) reunasummien antamin lisärajoittein.
SEPPO MUSTONEN..00 Avoimet ristikot ovat yleensä vaativia. Esim. jo ristikot tuottanevat suurta vaivaa, jollei käytetä jotain ratkaisuohjelmaa. Joskus ratkaisu saattaa kuitenkin löytyä melko suoraan hyvän oivalluksen kautta. Kimmo Vehkalahti selvitti ristikon A B C D E F 0 0 jonka vaikeusaste ratkaisuohjelmani mukaan on peräti 0, näin: Katsoin pareittain sarakkeita A,B,C ja D,E,F ja niiden yhtaikaisia mahdollisuuksia: A B C D E F + + + a + + +0 + + + b + +0 + + + + c + + + + + + d +0 + + + + + e +0 + + + + + f + + +0 + + + Tästä näkyy, että ainoa sopiva yhdistelmä on a, ts. A B C D E F + + + ja + + +0 Taulukoimalla kaikki ensimmäisen rivin ositukset ( kpl.) COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]=... 0 ja poistamalla näistä sellaiset, joissa yhtaikaa esiintyvät luvut, tai, tai, tai, tai, tai,0 päädytään vain yhteen ositukseen ja tulokseen A B C D E F 0 0 0
SURVO-RISTIKOISTA. Avoimen ristikon ratkaisu Ainoa Survo-keskustelussa (huhti- toukokuussa 00) antamani tehtävä, johon ei ole tullut yhtään ratkaisua, on seuraava avoin ristikko: A B C D 0 0 Luonnostelen seuraavassa Survon toimituskentän otteessa ratkaisun. On siis ratkaistava Survo-ristikko A B C D * * * * * * * * * * * * * * * * 0 0 jonka vaikeusaste ratkaisuohjelmalla on 0. Näytetään ensin, että A=. Tarkastellaan ensimmäistä riviä: Ositukset,: COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= Tämän perusteella A on yksi luvuista,,,,,,,. Tutkimalla mahdollisia sarakkeen A (summa ) osituksia voidaan aluksi sulkea vaihtoehdot,,,,, pois. Esimerkkinä tapaus A=: Käydään läpi kaikki rivin ositukset,: COMB P,CUR+ / P=PARTITIONS,, DISTINCT= OFF=,, Partitions of : N[P]=0 COMB P,CUR+ / P=PARTITIONS,, DISTINCT= OFF=,, Partitions of : N[P]=0 COMB P,CUR+ / P=PARTITIONS,, DISTINCT= OFF=,, Partitions of : N[P]=0 Siis A ei voi olla.
SEPPO MUSTONEN..00 Tapaus A=: Osituksen, perusteella, rivin kolme viimeistä lukua olisivat,, tai,, tai,, tai,, (jossain järjestyksessä). COMB P,CUR+ / P=PARTITIONS,, DISTINCT= Partitions of : N[P]=0 COMB P,CUR+ / P=PARTITIONS,, DISTINCT= Partitions of : N[P]= OFF=,, OFF=,, A B C D Ristikko voisi näyttää tältä. * * * Rivin ja sarakkeen A punaiset * * * luvut eivät ole välttämättä * * * 0 oikeassa järjestyksessä. 0 Jos nyt riville yrittää sijoittaa käyttämättömistä luvuista pienimmät,,0 A B C D 0 * * * * * * 0 0 rivisummaksi tulee +++0=0> eli liian suuri. COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= OFF=,, Tämä johtaa samoin kuin edellä rivisumman ylitykseen. COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= OFF=,, A B C D 0 * * * * * * 0 0 Nyt toinen rivisumma olisi oikein, mutta vaikka sarakkeeseen D on nyt sijoitettuna suurimmat mahdolliset luvut ja 0, erotus --0= on liian suuri esitettäväksi kahden sallitun luvun summana. Siis A=.
SURVO-RISTIKOISTA A B C D * * * * * * * * * * * * * * * 0 0 Tarkastellaan edelleen rivin ja sarakkeen A osituksia - nyt ehdolla A=. -= COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= OFF= Partitions of : N[P]= -= COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= Partitions of : N[P]= 0 OFF= Mahdolliset ositusparit ovat silloin - - ja näin ensimmäisessä rivissä ja sarakkeessa ovat luvut,,,,,,. Pienimmät vapaat luvut rivin sarakkeisiin B,C,D ovat silloin,,0. Koska niiden summa ++0= alittaa koko rivin summan kahdella, on siis A=. Kaikki muut vapaat luvut aiheuttaisivat rivisumman ylityksen. Tilanne näyttää seuraavalta: A B C D * * *,, tällä rivillä jossain järjestyksessä * * *,,0 tällä rivillä jossain järjestyksessä * * * * * * * * 0 0 Luvut, sarakkeessa A jossain järjestyksessä. Tutkitaan B-sarakkeen ositusvaihtoehtoja: COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= OFF=,,, Partitions of : N[P]= 0
0 SEPPO MUSTONEN..00 0 0 ainoa mahdollinen! 0 0 0 Näistä mahdollisia ovat vain sellaiset, joissa eivät esiinny yhtaikaa toisaalta luvut,, eikä toisaalta luvut,,0. Ainoa ehdot täyttävä ositus on silloin +++= ja siis aikaisemmin todettujen ensimmäisten rivien ositusten perusteella on B= ja B=. On tultu tilanteeseen, jossa samalla värillä esitetyt luvut ovat järjestystä vaille paikallaan: A B C D 0 0 0 Oikeitten järjestysten setviminen tapahtuu katsomalla ensin D-sarakkeen tämänjälkeisiä, mahdollisia osituksia: COMB P,CUR+ / P=PARTITIONS,, DISTINCT= MAX= OFF=,,,,,,, Partitions of : N[P]= 0 0 Osituksista vain toinen +0++= on mahdollinen sen perusteella, mitä tiedetään kahdesta ensimmäisestä rivistä eli ristikko varmistuu osittain muotoon A B C D 0 0 0
SURVO-RISTIKOISTA joka sattuu olemaan lopullinen tulos. Periaatteessa kahden viimeisen rivin suhteen olisi vielä ^= vaihtoehtoa, mikä on aika lailla pienempi vaihtoehtojen määrä kuin alkuperäinen fact()=0000. Ratkaisun yksikäsitteisyyden varmistaa helpoiten viimeisen rivin ositus COMB P,CUR+ / P=PARTITIONS,0, DISTINCT= MAX= OFF=,,,,,,,0 Partitions of 0: N[P]= Näistä vaihtoehdoista vain kolmas +++=0 koostuu valintakelpoisista luvuista.
SEPPO MUSTONEN..00. Tehtäviä Tässä on ratkaistavaksi Survo-ristikkoa. Kymmenen ensimmäisen ratkaisut ovat tehtävien jälkeen. Tehtävän yhteydessä annettu, suluissa oleva luku kertoo ratkaisuohjelmasta saadun vaikeusasteen. Näihin lukuihin tulee suhtautua varauksella, koska ne eivät voi ottaa huomioon hyvien oivallusten kautta syntyviä oikoteitä. Osan tehtävistä olen esittänyt jo aikaisemmin Survo-keskustelussa. Tehtävä (.) Tehtävä () 0 Tehtävä ()
SURVO-RISTIKOISTA Tehtävä (0) Tehtävä (0) 0 0 Tehtävä (0) 0 Tehtävä (0) 0 0
SEPPO MUSTONEN..00 Tehtävä () 0 0 Tehtävä () 0 0 0 0 Tehtävä 0 () 0 Tehtävä (00)
SURVO-RISTIKOISTA Tehtävä (000 eli petomainen ) 0 0 0 0
SEPPO MUSTONEN..00 Tehtävä (.). Tehtävien ratkaisuja Tehtävä () 0 Tehtävä () 0
SURVO-RISTIKOISTA Tehtävä (0) Tehtävä (0) 0 0 0 Tehtävä (0) 0 0 Tehtävä (0) 0 0
SEPPO MUSTONEN..00 Tehtävä () 0 0 Tehtävä () 0 0 0 0 0 Tehtävä 0 () 0 0
RISTIKKOJEN ANALYYSIA REIJO SUND..00 Oheisessa toimituskentässä on hiukan x-ristikoiden analyysia. Kuten käy ilmi, oleellisesti erilaisia avoimia yksikäsitteisesti ratkeavia Survo-ristikoita ei ole kuin. Muodostetaan kaikki mahdolliset x-ristikot (N=0) FILE DEL SRIS.TXT COMB P TO SRIS.TXT / P=PERMUTATIONS, RESULTS= FILE DEL SRIS0 FILE SAVE SRIS.TXT TO NEW SRIS0 / NEWSPACE=0,0 Käytetään ristikossa seuraavia symboleita: X X X R X X X R X X X R S S S Lasketaan rivi- ja sarekesummat sekä tallennetaan nämä lisäksi yhdellä muuttujalla esitettäväksi VAR R:,R:,R:,S:,S:,S:,JARJ: TO SRIS0 R=X+X+X R=X+X+X R=X+X+X S=X+X+X S=X+X+X S=X+X+X JARJ=S+00*S+0000*S+000000*R+00000000*R+JARJ JARJ=0000000000*R+000000000000 FILE SHOW SRIS0 Järjestetään rivi- ja sarakesummien yhdistelmien mukaan FILE SORT SRIS0 BY JARJ TO SRIS0 Lasketaan montako kutakin rivi- ja sarakesummien yhdistelmää on (N=) FILE AGGR SRIS0 BY JARJ TO SRIS0 / PRIND=0
0 REIJO SUND..00 VARIABLES: JARJ FIRST JARJ MAARA N JARJ X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X R FIRST R R FIRST R R FIRST R S FIRST S S FIRST S S FIRST S END FILE SHOW SRIS0 Jatkotarkasteluihin vain ne ristikot, joihin on yksikäsitteinen ratkaisu pelkillä rivi- ja sarakesummilla (N=) FILE COPY SRIS0 TO NEW SRIS0 / IND=MAARA, NEWSPACE=0,0 FILE SHOW SRIS0 Kyseessä ovat oleellisesti samat ristikot, vaikka rivien (tai sarakkeiden) paikkoja vaihdettaisiin keskenään. Poistetaan "turhat" ristikot ja valitaan joka luokasta mukaan satunnainen ristikko esimerkiksi Järjestetään rivi- ja sarakesummat VARSTAT SRIS0,*,SORT / VARS=R,R,R VARSTAT SRIS0,*,SORT / VARS=S,S,S Muodostetaan rivi- ja sarakekohtaiset yhdistelmämuuttujat sekä satunnaisluku VAR RJARJ:,SJARJ:,SAT TO SRIS0 RJARJ=R+00*R+0000*R SJARJ=S+00*S+0000*S SAT=rnd() Rivit ja sarakkeet voivat vaihtaa paikkaa VARSTAT SRIS0,*,SORT / VARS=RJARJ,SJARJ
RISTIKKOJEN ANALYYSIA Järjestetään luokittain ja luokan sisällä satunnaisesti VAR JARJ:=SJARJ+000000*RJARJ+000000000000 TO SRIS0 FILE SORT SRIS0 BY JARJ,SAT TO SRIS0 Valitaan esimerkit jokaisesta oleellisesti erilaisesta ristikosta (N=) FILE AGGR SRIS0 BY JARJ TO SRIS0 / PRIND=0 VARIABLES: JARJ FIRST JARJ MAARA N JARJ X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X X FIRST X END FILE SHOW SRIS0 Lasketaan rivi- ja sarakesummat uudestaan FILE EXPAND SRIS0,0,0 VAR R:,R:,R:,S:,S:,S: TO SRIS0 R=X+X+X R=X+X+X R=X+X+X S=X+X+X S=X+X+X S=X+X+X
REIJO SUND..00 Näytetään kaikki yksikäsitteisesti ratkeavat ristikot (N=) FILE SORT SRIS0 BY R,R,R,S,S,S TO SRIS0S FILE LOAD SRIS0S X X X X X X X X X R R R S S S 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0