Hrvatska revija 4, 2013.

Altera

Kako se rješavaju matematički zadaci

Zdenko Kremer

Matematička ljepota može se definirati na isti način kao i ljepota u umjetnosti, samo što je oni koji proučavaju matematiku obično bez teškoća uočavaju.

Paul Dirac

S vremena na vrijeme u našim se medijima nešto više pozornosti posveti inače neopravdano zapostavljenoj temi prirodnih znanosti, matematike i fizike posebice, pa se onda priča o njihovoj važnosti i značenju za funkcioniranje i napredak našega društva. Nekada se možda čak može govoriti i o malim propagandnim kampanjama koje ti mediji pokreću. Doduše, obično se ta tema spominje u vezi sa »stanjem na tržištu rada«, odnosno s problemom nezaposlenosti koji se ovdje kod nas poteže otkad je svijeta i vijeka i nikako se, unatoč tolikim naporima onih odgovornih i neodgovornih, ne uspijeva riješiti, premda ova problematika ima veze i s nekim drugim, zasigurno još i gorim stvarima. Uglavnom, kažu neki novinari, djecu bi trebalo potaknuti da se matematikom i fizikom bave što više, jer je s takvim znanjima, navodno, lakše naći posao, a neki su od tih poslova dobro i plaćeni. Kako i sam smatram potrebnim propagirati i popularizirati prirodne znanosti, napose matematiku i fiziku (premda ne na takav način), prihvatio sam se pisanja ovoga teksta kako bih njime dao i neki svoj doprinos, ne samo jednoj od »propagandnih kampanja« nego i stanovitoj demistifikaciji (recimo to tako) ove teme. Napominjem da ću se u ovom tekstu zadržati samo na matematičkom području.

Vjerojatno nije potrebno naglašavati da su matematički problemi dio čovjekove svakodnevice i da ih susrećemo takoreći na svakom koraku. Primjerice, dovoljno je otići u trgovinu, odnosno trgovački centar da bi ti se, odmah na ulazu, postavio problem »minimalne putanje« kojom ćeš obići sve police s (potrebnom) robom u najkraćem mogućem vremenu ili, dok guraš kolica duž te minimalne putanje, problem »trodimenzionalnog skladišta«, tj. preslagivanja robe koja se stalno trpa u kolica, tako da zauzme najmanji mogući volumen ili, kad konačno stigneš na blagajnu, onaj klasični problem »razmjene novčanica«, koji u jednoj svojoj formulaciji može glasiti i ovako – Na koje se sve načine može platiti cijena c kupljene robe ako u novčaniku imaš nl5 kovanica od 5 lipa, nl10 kovanica od 10 lipa, nl20 kovanica od 20 lipa, nl50 kovanica od 50 lipa, nk1 kovanica od 1 kune, nk2 kovanica od 2 kune, nk5 kovanica od 5 kuna, nn5 (papirnatih) novčanica 5 kuna, nn10 novčanica 10 kuna, nn20 novčanica 20 kuna, nn50 novčanica 50 kuna, nn100 novčanica 100 kuna, nn200 novčanica 200 kuna, nn500 novčanica 500 kuna, i nn1000 novčanica 1000 kuna, te je li to u danom slučaju moguće ili nije. Zamislite samo kako je kompliciran život čovjeka koji ne podnosi »kartice«. U nekom drugom okruženju čovjeku se postavljaju problemi neke druge vrste, o čemu sam pisao u pričama o seoskoj matematici. Maloj i velikoj djeci koja se vole igrati prirodno se postavljaju problemi, poput onoga sa slagalicom ili šahovskom igrom na Möbiusovoj vrpci, o kojima sam pisao u drugim svojim pričama. S matematičkim problemima čovjek se može susresti i na raznim testovima ili ispitima u školi odnosno na faksu i to je svakako najgori način susreta, koji svakako treba izbjegavati. U takvim bi slučajevima možda najbolje bilo reći da ti ne pada na pamet da sjediš tu sat ili dva ili možda čak i više i baviš se nekim tuđim problemima (jer su ti tvoji vlastiti sasvim dovoljni) ili jednostavno da zadatak nije dobro formuliran, što je u dosta slučajeva i točno, premda to rijetko pomaže, s obzirom na to da većina nastavnika, profesora, asistenata slabo prihvaća takve argumente. Ne treba prema njima biti previše strog – oni svoj nezahvalni posao rade zato da bi prehranili obitelj.

Mnogi se matematički zadaci mogu dakle riješiti po obrascu »Što me briga, imam pametnijeg posla«. Neki će doduše reći da to uopće nije neko rješenje, no ako me ta stvar nimalo ne zabrinjava i ne tangira, onda za mene to jest rješenje. No, postoje zadaci preko kojih ne možeš prijeći samo tako. Recimo, na zadatak koji ću u ovom tekstu iznijeti kao primjer naišao sam pri programiranju jedne aplikacije koja je nekim ljudima vrlo potrebna, a koju smatram bitnom i zbog toga što bi trebala poslužiti za neke »više ciljeve«. Mogao se taj zadatak doduše i izbjeći, no meni se nije dalo puno petljati; uostalom više mi se sviđaju takvi matematički nego čisto tehnički ili, recimo to tako, programerski poslovi.

I što sad, kad se nađeš pred matematičkim zadatkom koji treba riješiti pod svaku cijenu? Marljiv i pametan čovjek zašiljit će olovku, skupiti dostupnu literaturu, prirediti veću količinu papira za pisanje, isprazniti svoj koš za smeće, upaliti digitron i hrabro se upustiti u borbu s elementima. Za takve je vjerojatno da će na kraju stvar i riješiti, uredno uokviriti rezultat zaokružen na dvije ili tri decimale, odahnuti i pomisliti, barem na trenutak – »The rest is history«.

No, što ako je čovjek lijen ili glup, ili i jedno i drugo? Tada se stvari prilično kompliciraju. Kako sam već objasnio na drugome mjestu, takvi jednostavno mogu pričekati da im sine kakva zgodna ideja. Ta je metoda nekad prilično efikasna – bez ikakvog rada i truda problem se riješi sam od sebe. Treba reći da je barem u ovoj stvari zaista moguće ostvariti san svih lijenčina – da ti pečena kokoš padne s grane. (Inače, kad je već o lijenosti riječ, ne treba zaboraviti da je lijenost najbolja od svih mana, kao što je štedljivost najgora od svih vrlina.) No, treba reći i to da je ta metoda vrlo nepouzdana, i da je nekad potrebno čekati i mjesecima, ili godinama, u nekim slučajevima čak i desetljećima da bi se nešto riješilo. A moguće je da se zadatak nikada i ne riješi. Ako čovjek ima vremena, i ako sve to skupa uopće nije bitno – onda OK, no, ako, kao u mom konkretnom slučaju, to baš tako i nije, onda treba posegnuti za drugim metodama.

Možeš se recimo potruditi da zadatak umjesto tebe riješi netko drugi. U ovom je slučaju jako zgodno biti profesor ili asistent na nekom prirodoslovnom ili tehničkom fakultetu ili barem profesor u nekoj (boljoj) srednjoj školi. Takvi uvijek mogu svoj zadatak postaviti učenicima ili studentima, na nekom testu, kolokviju ili ispitu, i nadati se pozitivnom ishodu, jer se uvijek u većoj grupi ljudi nađu i oni pametni i marljivi. To što će vas učenici ili studenti suditi strogo – nema veze – u pitanju su ipak viši ciljevi. Uostalom, oni koji zadatak riješe sigurno će biti nagrađeni nekom malo boljom ocjenom.

No, ako (više) nisi ni srednjoškolski profesor, onda stvar već postaje neugodna. Imaš doduše na umu neke prijatelje za koje znaš da bi mogli pomoći, ali ne možeš ih gnjaviti samo tako. Zadatak je tada potrebno formulirati na neki zgodan način da bi se ljude zainteresiralo. I tako sam se ipak morao potruditi barem oko formulacije. Na kraju je ispalo ovo:

Već u prvom razredu osnovne škole đaci nauče »standardni« algoritam za oduzimanje dvaju prirodnih brojeva – brojevi se napišu jedan ispod drugog, tako da odgovarajuće znamenke stoje jedna ispod druge, podvuče se crta i onda se oduzima – od zadnje znamenke prvog broja (minuenda) oduzme se zadnja znamenka drugog (suptrahenda), zatim od predzadnje znamenke prvog predzadnja znamenka drugog itd. dok ne dođemo do prve znamenke. Rezultate tog oduzimanja pišemo ispod podvučene crte i sve tako ispisane znamenke zajedno, gledane slijeva nadesno, čine razliku gornja dva broja.

Primijetimo da taj postupak funkcionira samo ako je minuend (broj koji smo zapisali gore, od kojeg se oduzima) veći od suptrahenda (broja koji smo zapisali ispod njega, koji se oduzima). No, što ćemo dobiti ako spomenuti algoritam primijenimo u slučaju kada je minuend manji od suptrahenda, tj. kad je broj koji je zapisan gore manji od onoga koji je zapisan ispod njega?

Razmotrimo sada taj slučaj (zgodno je da na papiru konkretno pokušate izračunati jedan takav primjer) i pritom označimo minuend u tom računu sa m, a suptrahend sa n, gdje je, kako smo rekli, n > m. Ako pokušamo oduzeti n od m koristeći se spomenutim algoritmom, primjećujemo da ćemo (ispod podvučene crte) dobiti »broj« s beskonačno mnogo znamenki oblika ...9...9rk rk–1 ... r1 r0 – devetke i rl-ovi su znamenke tog broja gdje indeks l znamenke rl označava njezino decimalno mjesto.

Pretpostavimo da je rk prva znamenka tako definiranog »broja« gledano slijeva koja je različita od 9. Prirodni broj koji definiraju rk i znamenke koje joj stoje zdesna (zadnjih k + 1 znamenki onog »broja«) označimo s R (R je dakle broj koji nastaje brisanjem beskonačnog niza devetki ispred rk).

Poslao sam taj tekst na nekoliko e-mail adresa i čekao neko vrijeme. Dani su prolazili, no odgovora nije bilo. To me čudilo: Pa ti su ljudi nekad bili matematičarski fanatici. Kako to da ih zadatak ne zanima? Možda sam ih trebao malo potaknuti: Hajde da vidimo jeste li još uvijek tako dobri kao što ste nekad bili. Neke sam poslije i pitao što je s tim. No njihova odgovora nije bilo ni tada, a nema ga ni do dan-danas, a prošlo je više od godine dana. Nije li to malo čudno? Zaista, gdje su ti marljivi i pametni? Tko zna, možda se ljudi s vremenom pokvare. Pa i sam sâm se uostalom pokvario. Ili zadatak ipak nisam dobro formulirao? Zvuči li to uistinu previše glupo? Ili je zadatak previše trivijalan?

No što je tu je, idemo dalje. Sljedeća je metoda pogledati ima li kakvih rješenja na internetu. Moram priznati da mi je muka tražiti takve stvari, odnosno na internetu tražiti bilo što. Kakav je to kaos. Ima doduše siteova na kojima su sadržaji prilično lijepo uređeni, no sve je to daleko od (onoga globalnog) uređenja koje bi čovjek očekivao. I tako, ako nisi baš jako uporan i ako ti veza prema internetu baš i nije neka naročita, i ako baš nemaš neke sreće, brzo odustaneš.

Čovjek bi zatim mogao pokušati prelistati neke knjige ili stare brojeve Matematičkog lista, no već te i sam pogled na sve te papiruse posve obeshrabri. Tko bi sve to listao i gledao, pa to bi trajalo danima. A usput bi se i ugušio u prašini. Uostalom, možda neki tuđi dokaz uopće ne bi ni uspio shvatiti.

Na kraju ti ne preostaje ništa drugo nego pokušati učiniti nešto sa samim zadatkom. Često je puta zgodno najprije pogoditi rješenje, pa ga onda izvesti, odnosno dokazati nekakvim koracima unazad. To je ono staro i dobro matematičarsko pravilo da se zadatak puno lakše rješava kad mu je rješenje poznato; njegov analogon u informatici kaže kako se program puno lakše debugira ako radi dobro. Navedeni zadatak zapravo i jest primjer jednoga pogođenog rješenja, i premda se na prvi pogled čini da je dokaz očigledan, ipak se radi o »očiglednosti« koju nije posve trivijalno dokazati (»očigledno« je da 10 k + 1 + m – n odgovara definiciji broja R u slučaju 10 k + 1 > n, no to ne mora a priori biti ispunjeno). U zadacima u kojima figuriraju prirodni brojevi često puta pomogne matematička indukcija, no ta stvar ovdje, koliko mi se čini, baš i ne pali, odnosno nije ju baš trivijalno provesti. I neke druge matematičke metode ovdje su se pokazale beskorisnima.

Konačno sam odlučio provjeriti svoju tvrdnju na konkretnim primjerima. U nekim je problemima konačne matematike moguće čak »pješice« provjeriti sve slučajeve koji se mogu pojaviti. U ovom zadatku to dakako nije moguće, no već i provjera na par primjera daje čovjeku neku sigurnost. Recimo za n = 7, m = 4 oduzimanjem prema onom algoritmu dobivamo k = 0 i R = 7 i zaista je 7 – 4 = 10 – 7. Ne možeš, jasno, biti siguran potpuno, no sad si barem sigurniji nego prije.

I tako sam se nakon nekoliko provjera koje su potvrđivale moju hipotezu, odlučio na krajnji korak – iskoristiti tu formulu u programu gdje mi je zapravo i trebala i onda čekati što će reći korisnici. Ako budu šutjeli, znači da je to OK, a ako se budu bunili, znači da nije. Premda sve to nije baš tako jednostavno, jer u programu može biti i pogrešaka neke druge vrste zbog kojih neće raditi kako treba.

Uglavnom, program sam pustio u optjecaj, i korisnik se (zasad, nažalost, samo jedan jedini) zbilja bunio, ali zbog nekih drugih stvari. Bilo je doduše i nekih pogrešnih izračuna, no problem nije bio u onoj formuli. A najveće su zamjerke dakako bile – zašto nema ikonice na desktopu, zašto je pokretanje programa tako komplicirano, zašto se ne radi o GUI aplikaciji, nego o character modu (pa nećemo valjda danas, na početku 21. stoljeća, raditi u tim ružnim crnim prozorima ili čak na konzoli), itd. Tako je to u svijetu gdje ipak vlada Microsoft i njegove ikonice. Trebat će još puno vremena da stvari napokon dođu na svoje mjesto.

Vjerojatno je i slaba rasprostranjenost Linuxa uzrok tomu što se dotični program previše ne koristi. Zbog toga se baš ne može reći da je zaista testiran kako treba, no u svakom slučaju moja hipoteza, premda još nedokazana, nije bila ni oborena. Nije baš lijepo živjeti u neizvjesnosti, no čovjek se i na to navik­ne. Uostalom nije li nam neizvjesnost jedino izvjesna?

Na kraju sam ipak odlučio dokazati onu formulu, da barem u ovoj priči ne bi ispalo da sam lijen i glup. Zašiljio sam olovku, skupio dostupnu literaturu, priredio veću količinu papira za pisanje, ispraznio svoj koš za smeće (digitron mi ovdje ne treba) i hrabro se suočio s problemom.

Evo rezultata:

Napišimo brojeve n, m u obliku

m = mi ∙ 10 i + mi–1 ∙ 10 i–1 + ... + m1 ∙ 101 + m0 ∙ 100

n = nj ∙ 10 j + nj–1 ∙ 10j–1 + ... + n1 ∙ 101 + n0 ∙ 100

gdje je nj > 0, mi > 0 i, kako smo rekli, n > m, pa je dakle j ≥ i.

»Broj« s beskonačno mnogo znamenki koji smo dobili primjenom opisanog algoritma na m i n označimo s R i formalno ga zapišimo u obliku beskonačne sume

R = ... + rl + 1 ∙ 10l + 1 + rl ∙ 10l + rl–1 ∙ 10l–1+ ... +
+ r1 ∙ 101 + r0 ∙ 100

gdje je rl = 9 za l > k. Označimo s R0 broj koji definira zadnjih i + 1 znamenki u R,

tj. R0 = ri ∙ 10i + ri–1 ∙ 10i–1 + ... + r1 ∙ 101 + r0 ∙ 100.

Neka je također

n a = nj ∙ 10j + nj–1 ∙ 10j–1 + ... + n i + 1 ∙ 10i + 1 i n b =
= ni ∙ 10i + ni–1 ∙ 10i–1 + ... + n0 ∙ 100.

Jasno je da je n = n a+ n b. Pretpostavimo da je m > n b. U tom je slučaju j > i i vrijedi R0 = m – n b. Sada se R po definiciji može napisati u obliku

R = ... + 9 ∙ 10 j + 2 + 9 ∙ 10j + 1 + (9 – nj) ∙ 10 j +
+ (9 – nj–1) ∙ 10 j–1 + ... (9 – ni + 2) ∙ 10 i + 2 +
+ (10 – ni + 1) ∙ 10 i + 1 + m – n b

Ako je j > i + 1 član uz 10j ne može biti jednak 9 jer je nj > 0, pa je k = j, a R je oblika

R = (9 – nj) ∙ 10 j + (9 – n j–1) ∙ 10 j–1 + ... (9 – ni + 2) ∙ 10 i + 2 +
+ (10 – ni + 1) ∙ 10 i + 1 + m – n b

odnosno prema definiciji n a oblika

R = 9 ∙ 10 k + 9 ∙ 10 k–1 + ... + 9 ∙ 10 i + 2 + 10 i + 2 – n a + m – n b

Sada je 9 ∙ 10 i + 2 + 10 i + 2 = 10 i + 3, pa onda možemo nastaviti sa zbrajanjem – 9 ∙ 10 i + 2 + 10i + 2 = 10 i + 3, sve dok ne dođemo do sume u kojoj figurira prvi član gornjeg izraza tj. do 9 ∙ 10 k + 10 k = 10 k + 1. Prema tome na kraju dobivamo

R = 10 k + 1 + m – n a – n b = 10 k + 1 + m – n

što je i trebalo dokazati. Ako je j = i + 1, tada se u slučaju ni + 1 = 1 u izrazu za R pojavljuje devetka uz 10 i + 1 pa je k = i. Prema tome je

R = m – n b = m – (n – n a) =
= 10i + 1 + m – n, jer je n a = 10i +1,

pa zbog i = k ponovno vrijedi

R = 10 k + 1 + m – n

Ako je ni + 1 > 1 tada je k = i + 1, pa iz izraza za R slijedi

R = 10 i + 2 + m – n a – n b = 10 k + 1 + m – n

Što dokazuje našu tvrdnju za slučaj m > n b .

Ako je m < n b, vrijedi j ≥ i, a R0 se može napisati u obliku R0 = 10 i + 1 + m – n b. Ostale znamenke u R lako nalazimo iz definicije tog broja, pa vrijedi

R = ... + 9 ∙ 10 j + 2 + 9 ∙ 10j + 1 + (9 – nj) ∙ 10 j +
+ (9 – nj–1) ∙ 10 j–1 + ... + (9 – ni + 2) ∙ 10i + 2 +
+(9 – ni + 1) ∙ 10 i + 1 + 10 i + 1 + m – n b

što odgovara formuli R u slučaju m > n b, pa vrijedi isto razmatranje kao i gore. Ostaje nam dakle samo da razmotrimo slučaj j = i. Kako je ni > 0, mi > 0, nemoguće je da bude mi – ni = 9, pa je k = i. Sada je, jasno R = R0, pa kako je po definiciji n = n b vrijedi

R = 10 i + 1 + m – n b = 10 k + 1 + m – n

što sve zajedno dokazuje traženu formulu.

Primijetimo da ta formula vrijedi i za slučaj kad primjenom spomenutog algoritma dobijemo broj koji se sastoji od beskonačno mnogo devetki – npr. pri oduzimanju 0 – 1 – u tom slučaju možemo uzeti da je k = –1, a R da je ništa, pa zaista vrijedi

1 – 0 = 10–1 + 1 – ništa = 1

Sad se lako dokazuje da ako stavimo Ri = 9 · 10 k + i +
+ 9 · 10 k + i –1 + ... + 9 · 10 k + 1 + R, za svaki i ≥ 0 vrijedi

n – m = 10 k + 1 + i – Ri

gdje uzimamo da je R0 = R = 10 k + 1 + m – n, što je generalizacija koja odražava također »očiglednu« činjenicu da razliku n - m možemo dobiti iz razlike m »–« n izračunate opisanim algoritmom (minus je u navodnicima jer on, kao što znamo, ne predstavlja »normalno« oduzimanje, pa da bi bilo n – m = – (m »–« n)), tako da broju m dodamo broj oblika 10 k + 1 + i, i ≥ 0 tj. »jedinicu« na mjesto k + 1 ili bilo gdje »ispred« toga mjesta, brojeno zdesna i od nule.

Na kraju možemo primijetiti i da skup »brojeva« s beskonačno mnogo znamenki oblika ...9...9rk rk–1 ... r0 – označimo taj skup s B – na određen način odgovara skupu negativnih cijelih brojeva, točnije da se na skup N U {0} U B zajedno s operacijom zbrajanja (+) definiranom »standardnim« algoritmom za zbrajanje (onim kad sumande napišemo jedan ispod drugog pa onda podvučemo crtu i zbrajamo znamenku po znamenku) čini komutativnu grupu izomorfnu grupi (Z, +). Čitatelj za zadaću može definirati operaciju množenja na N U {0} U B tako da skup (N U {0} U B, +, ∙ ) čini komutativni prsten s jedinicom koji odgovara (Z, +, ∙ ). Čitatelj također može formulirati pravilo prema kojem se transformiraju znamenke broja iz B pri djelovanju izomorfizma grupa (N U {0} U B, +) -> (Z, +).

(2006.)

Hrvatska revija 4, 2013.

4, 2013.

Klikni za povratak