Doties uz galveno

Bebru datubāze

Skolēnu loģiskās un algoritmiskās domāšanas konkursa Bebr[a]s uzdevums 9.-10. klašu skolēniem.

Bloga raksts

Bebru ciematā dzīvo vairākas bebru ģimenes. Datorzinātnieks Bebrs Džefrijs ir izveidojis ciema iedzīvotāju datubāzi, ierakstot tajā datus par katru bebru 16 bitu virknes formā. Biti nozīme no b15 (pa kreisi) līdz b0 (pa labi) ir šāda:

b15 _ b12: četri biti ģimenes numuram;
b11: viens bits dzimumam (0 = mātīte, 1 = tēviņš);
b10 _ b4: septiņi svara biti (naturāls mārciņu skaits);
b3 _ b2: divi biti “strādnieka kvalifikācijai” (00 = namiņu celtniecība, 01 = dambju celtniecība,
10 = barības krātuvju ierīkošana, 11 = jauno bebru izglītošana);
b1 _ b0: divi biti iecienītākajam ēdienam (00 = koku miza, 01 = ūdensaugi, 10 = zāles, 11 = grīšļi).

Piemēram, virkne 0100 0 0100101 10 01 norāda, ka bebrs pieder pie 4. ģimenes, ir mātīte, sver 37 mārciņas, ir kvalificēta strādniece pārtikas krātuvju ierīkošanā un viņai patīk ūdensaugi.

Uzdevums

Bebrs Džefrijs veido vaicājumus – Būla izteiksmes, izmantojot loģiskās operācijas “un” (and), “vai” (or) un negāciju (not). Katras izteiksmes vērtība ir 0 (aplama) vai 1 (patiesa). Kādu bebru kopu apraksta sekojošā izteiksme?

b11 and not (b10) and b9 and b7 and not (b3 and b2)

Atbilžu varianti

A) Mātītes, kuras sver vismaz 16 mārciņas, ir kvalificētas strādnieces pārtikas krātuvju ierīkošanā.
B) Tēviņi, kuri sver vismaz 64 mārciņas, ir kvalificēti strādnieki namiņu vai dambju celtniecībā.
C) Tēviņi, kuri sver no 40 līdz 63 mārciņām, ir kvalificēti strādnieki kaut kā celtniecībā vai barības krātuvju ierīkošanā.
D) Tēviņi, kuru svars nepārsniedz 39 mārciņas, ir kvalificēti strādnieki dambju celtniecībā.
28

Atbildes izskaidrojums

Pareizā atbilde: C

Jo: b11 = 1 nozīmē “tēviņš”, b10 = 0 nozīmē “maksimāli sver 63 mārciņas”, b9 = 1 un b7 = 1 nozīmē “sver vismaz (32 + 8) mārciņas” un visbeidzot b3 = 0 vai b2 = 0 neietver tikai “kvalificētu darbinieku jauno bebru izglītošanā” (b3 = 1 un b2 = 1).Ņemiet vērā, ka saskaņā ar De Morgana likumiem not (b3 and b2) atbilst not (b3) or not (b2).

A atbilde ir nepareiza: b11 = 1 nozīmē “tēviņš”, bet atbildē minētas mātītes. Izteiksme, kas apraksta 1. atbildē doto bebru kopu, ir: not (b11) and b8 and b3 and not (b2).
B atbilde ir nepareiza: b2 = 0 nozīmē arī “kvalificēts strādnieks barības krātuvju ierīkošanā”; turklāt b9 = 1 un b7 = 1 nosaka maksimālo svara ierobežojumu. Izteiksme, kas apraksta 2. atbildē doto bebru kopu, ir: b11 and b10 and not (b3).
D atbilde ir nepareiza: b3 = 0 nozīmē arī “kvalificēts strādnieks namiņu celtniecībā”; turklāt b10 = 0 nosaka svara augšējo robežu. Izteiksme, kas apraksta 4. atbildē doto bebru kopu, ir: b11 and not (b10) and not (b3) and b2.

Ņemiet vērā, ka kopa atbildē 1. nešķeļas ar kopu katrā no pārējām trim atbildēm, bet tā nav
taisnība attiecībā uz pārējiem trim kopu pāriem (2. un 3.; 2. un 4.; 3. un 4. .) un neviena no
kopām 2., 3. un 4. atbildē nav citas atbildes kopas apakškopa.

Tā ir informātika!
Iepriekš aprakstītā uzdevuma kontekstā Būla izteiksmi (vai, labāk, propozīciju loģikas
formulu) var izmantot, lai veidotu vienkāršas datubāzes vaicājumus – tas ir, to var uzskatīt
par “meklēšanas atslēgu”. Parasti šāda formula identificē datu apakškopu (un šīs
situācijas var grafiski attēlot, izmantojot Venna diagrammas). Šeit piedāvātā veida piemēri
ir atrodami Konrāza Cūzes 1943.–1944. gada rakstos par propozīciju aprēķinu un to
pielietojumu releju shēmās. Konrāds Cūze bija vācu būvinženieris, bet viņa lielākais
sasniegums bija pirmais programmvadītais elektromehāniskais dators, kas sāka darboties 1941. gadā.
Lielākajā daļā mūsdienu programmēšanas valodu ir Būla unārais operators not un binārie
operatori and, or. Operatoriem not, and (tāpat kā not, or) pietiek ar tā sauktajiem De
Morgana likumiem. Būla shēmas, kas sastāv no atbilstošajiem loģiskajiem vārtiem, ir daudzu datoru inženierijā izmantoto digitālo komponentu (multiplekseri, summatori, aritmētiskās loģikas vienības
utt.) pamatā. 1913. gadā (jau 1880. gadā to atklāja Čārlzs S. Pīrss) Henrijs M. Šefers parādīja, ka visus loģiskos operatorus var atvasināt no viena operatora nand: A nand B ir līdzvērtīgs not (A and B), tādējādi A nand A atbilst not (A). Līdzīgi nand ventiļiem, nor ventiļi (A nor B atbilst not (A or B), tādējādi A nor A atbilst not (A)) ir “universāli ventiļi” – tos kombinējot var izveidot jebkuru citu loģisko ventili, un ļoti daudzas elektroniskas sistēmas ir būvētas, izmantojot tikai nand vai nor loģiskos ventiļus.