Kasutaja:Asaidlo/Notatsioon ja algoritmid

Allikas: Vikiõpikud

Kujutagem ette järgmist olukorda. Teie sõber on kõrvaltoas Rubiku kuubikuga ning teie peate aitama temal seda lahendada.
Toas on kaamera, mis näitab kuubiku hetkeseisu ning kõlar, mille abil saate sõbraga suhelda. Te näete, mis ta tegema peaks, et kuubik lahendatud saaks. Kuidas te talle seda ütlete?

Tegelikult ei ole teisele inimesele sellise asja selgitamine üldse lihtne asi. Kui seda lihtsalt maakeeli teha, siis kipuvad laused minema selliseks: "liiguta seda tükki sinna" või "keera punast külge päripäeva".
Need laused on enam vähem arusaadavad, kuid väga pikad ning kui seda tekstina kirja panna näeb see suhteliselt kole välja.

Järgmises peatükis õpime, kuidas seda paremini teha.

Rubiku kuubiku notatsioon[muuda]

Notatsioon on viis ming info kokkulepitud kujul üles märkimiseks. Rubiku kuubiku lahendamisel soovime lühidalt ja arusaadavalt kirja panna liigutusi, mida me kuubikul teeme.
Kõige levinum viis liigutusi kirja panna on kasutada iga kuubiku külgmise kihi jaoks ühte tähte. See täht tähendab kõne all oleva kihi keeramist 90 kraadi päripäeva selle kihi poolt vaadatuna. Kasutusel olevad tähed on:

  • R (right) - keerake paremat kihti 90 kraadi päripäeva
  • L (left) - keerake vasakut kihti 90 kraadi päripäeva
  • U (up) - keerake ülemist kihti 90 kraadi päripäeva
  • D (down) - keerake alumist kihti 90 kraadi päripäeva
  • F (front) - keerake eesmist kihti 90 kraadi päripäeva
  • B (back) - keerake tagumist kihti 90 kraadi päripäeva

All on piltidel näidatud, mis juhtub kui lahendatud kuubikule teatud liigutusi rakendada. (eeldusel, et eesmise kihina mõtleme sinist kihti)

Kui kuubikut sinise külje poolt vaadata, siis jääb mulje, et R ja L liigutused liiguvad vastupidises suunas. R liigutuse korral tulevad valged kleepsud siniste kõrvale, teisel puhul liiguvad nad vastupidises suunas.
Miks see nii on? Vastus seisneb eelpool mainitus. Liigutusi sooritatakse päripäeva liigutatava kihi poolt vaadatuna. Kui vaatate punast külge, siis R liigutus tõepoolest liigub päripäeva. Kui vaatate oranži külje poolt siis näete, et L liigutus liigutab asju päripäeva.

Kindlasti ei taha me asju lihtsalt päripäeva pöörata. Vahel on vaja ka teha liigutusi vastupäeva. Sel juhul kirjutame vastava kihi täha ning lisame taha ülakoma. Näiteks F' tähistab, et keerake eesmist kihti 90 kraadi vastupäeva.

Kui soovime aga teha 180 kraadise pöörde, siis kirjutame tähe taha number kahe. Seega B2 tähendab, et keerake tagumist kihti 180 kraadi.
Kas vastupäeva või päripäeva? Võite iseseisvalt veenduda, et 180 kraadise pöörde puhul ei ole mingit vahet kumba pidi te pöörate. Sarnaselt võite venduda, et 270 kraadine pööre ühes suunas on sama, mis 90 kraadine pööre teises suunas.

Ülesanne 1[muuda]

Olgu meil lahendatud Rubiku kuubik.

Millist värvi kleepsud asuvad ülemisel küljel, kui sooritada B' liigutus (eeldame, et eesmiseks kihiks on sinine)?

Kuigi need liigutused võimaldavad kirja panna iga Rubiku kuubiku seisu lahenduse, siis vahel vajame lisaks ka muid tähistusi.
Näiteks vahel tahame kuubikud käes pöörata. Selleks kasutame tähti x, y, z. Need tähed väljendavad kuubiku käes pööramist liigutusi tegemata ümber vastava telje. Et asi oleks selgem saame spikrina kasutada järgnevat:

  • x - pööra kuubikut 90 kraadi päripäeva ümber parema külje keskuse
  • y - pööra kuubikut 90 kraadi päripäeva ümber ülemise külje keskuse
  • z - pööra kuubikut 90 kraadi päripäeva ümber eesmise kihi keskuse

Ülesanne 2[muuda]

Olgu meil lahendatud Rubiku kuubik.

Millist värvi kleepsud asuvad ülemisel küljel, kui sooritada z2 pööre?

Algoritmid[muuda]

Oleme vaadanud kuidas kirja panna üksikuid liigutusi. Need on küll toredad, kuid enamasti ei saa lahendada Rubiku kuubikut ühe liigutuse kaupa.
Rubiku kuubiku liigutuste jada (millel on enamasti kindel eesmärk) nimetame algoritmiks. Algoritme saame kirja panna kergesti, kasutades ülal defineeritud notatsiooni.
Algoritmi üles kirjutamiseks kirjutame lihtsalt kõik tema liigutused järjest eraldades need tühikuga.

Näiteks selline algoritm: x (R' U R') D2 (R U' R') D2 R2 x liigutab ülemisel kihil kolme nurga päripäeva ringi.

Võistlustel kasutatakse arvutit, mis genereerib segamisalgoritmi. Kõik võistlejate kuubikut segatakse sama algoritmi järgi ära ja seega on kõikidel võrdne võimalus hea tulemus saada.

Minialgoritmid/Triggerid[muuda]

Ülal toodud algoritmis võisite midagi huvitavat tähele panna. Mingil põhjusel on osa liigutusi asetatud sulgudesse. Need sulud ei oma sisuliselt väga suurt tähendust, vaid neid kasutatakse algoritmi osade grupeerimiseks ning mõndade levinud algoritmide osadele tähelepanu juhtimiseks.

Näiteks need neli liigutust - R U R' U' - esinevad väga paljudes algoritmides. Seega on mõtekas neile tihti sulud ümber panna, et inimesed selle tuttava osa ära tunneksid. Siis on algoritmi lihtsam meelde jätta.

Selliseid algoritmide osi, mis esinevad paljudes algoritmides nimetatakse ingliskeelse terminiga trigger. Eesti keeles võime kasutada terminit minialgoritm.

Lihtsamate minialgoritmide tundmine abistab oluliselt kuubiku lahendamist. Algajate meetodis, millega järnevates peatükkides tutvume, oleks kindlasti kasulik teada järgnevaid minialgoritme.

  • R U R'
  • R U R' U' (eelmine trigger koos lisaliigutusega)
  • R' F R


Lisaülesanded harjutamiseks[muuda]

Enne ülesannete vaatamist tutvuge Rubiku kuubiku simulaatoriga siin - simulaator