18.02.2015 Views

Diskr¯et¯a Matem¯atika 2 P¯eteris Daugulis Sanita Mick¯ane

Diskr¯et¯a Matem¯atika 2 P¯eteris Daugulis Sanita Mick¯ane

Diskr¯et¯a Matem¯atika 2 P¯eteris Daugulis Sanita Mick¯ane

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Diskrētā Matemātika 2<br />

Pēteris <strong>Daugulis</strong><br />

<strong>Sanita</strong> Mickāne<br />

Datorzinātņu un matemātikas katedra, Inženieru fakultāte, Rēzeknes Augstskola,<br />

Rēzekne, Latvija


Saturs<br />

Nodaļa 1. MATEMĀTISKO PIERĀDĪJUMU TEORIJA UN TEHNIKA 4<br />

1.1. IEVADS 4<br />

1.2. SVARĪGĀKIE NOSACĪJUMA APGALVOJUMU VEIDI 6<br />

1.3. PIERĀDĪJUMU VEIDI 10<br />

1.4. APGALVOJUMU ATSPĒKOŠANA 12<br />

1.5. MATEMĀTISKĀ INDUKCIJA 13<br />

1.6. VINGRINĀJUMI 16<br />

Nodaļa 2. KOMBINATORIKA 17<br />

2.1. IEVADS 17<br />

2.2. KOMBINATORIKAS PAMATPRINCIPI 18<br />

2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 23<br />

2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS) 31<br />

2.5. REKURENTO SAKARĪBU METODE 37<br />

2.6. VEIDOTĀJFUNKCIJU METODE 43<br />

2.7. ǦEOMETRISKI UZDEVUMI UN METODES 61<br />

2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 65<br />

2.9. KOMBINATORIKAS ALGORITMISKIE JAUTĀJUMI 73<br />

2.10. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 76<br />

2.11. PROGRAMMĒŠANAS UZDEVUMI 81<br />

Nodaļa 3. GRAFU TEORIJA 82<br />

3.1. IEVADS 82<br />

3.2. PAMATDEFINĪCIJAS 85<br />

3.3. SPECIĀLAS GRAFU KLASES 92<br />

3.4. DATU STRUKTŪRAS GRAFU UZDOŠANAI 97<br />

3.5. GRAFU PIELIETOJUMI MODELĒŠANĀ 98<br />

3.6. GRAFU IZOMORFISMS UN INVARIANTI 101<br />

3.7. NEATRISINĀTAS GRAFU TEORIJAS PROBLĒMAS PIEMĒRS - LIELAIS<br />

MŪRA GRAFS 107<br />

3.8. OPERĀCIJAS AR GRAFIEM 108<br />

3.9. GRAFU SAKARĪGUMS 109<br />

3.10. KOKI 117<br />

3.11. CIKLI 125<br />

3.12. NEATKARĪGUMS 133<br />

3.13. PLANARITĀTE 136<br />

3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 140<br />

3.15. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 154<br />

3.16. PROGRAMMĒŠANAS UZDEVUMI 156<br />

Literatūra 158<br />

iii


SATURS<br />

iv<br />

IEVADS<br />

Šī grāmata ir turpinājums pirmā autora darbam ”Diskrētā matemātika”, kas tika publicēts<br />

Rēzeknes Augstskolas izdevniecībā 2001.gadā. Tajā ir izklāstītas diskrētās matemātikas nodaļas,<br />

kuras tradicionāli iekļauj diskrētās matemātikas divu semestru studiju kursa otrajā semestrī -<br />

kombinatoriku un grafu teoriju. Papildus tam ir izklāstīti matemātisko spriedumu tehnikas<br />

pamati.<br />

Grāmatu kā mācību līdzekli vai informācijas avotu var izmantot visu specialitāšu, sevišķi eksakto<br />

zinātņu un inženierzinātņu, studenti, kaut arī tā ir īpaši orientēta attiecībā uz datorzinātņu<br />

studentiem. Tās galvenie uzdevumi ir šādi: iepazīstināt lasītājus ar definīcijām, pamatfaktiem<br />

un pierādījumu veidiem, iepazīstināt lasītājus ar vienkāršākajiem apskatāmo matemātikas nozaru<br />

algoritmiem. Kopā ar grāmatu ”Diskrētā matemātika” šis izdevums satur un pārsniedz diskrētās<br />

matemātikas minimumu (izņemot diskrēto varbūtību teoriju), kas ir rekomendēts datorzinātņu<br />

un informācijas tehnoloǧiju specialitāšu studentiem akadēmiskajās un profesionālajās studiju programmās.<br />

Lekcijās neiekļauto materiālu var izmantot studentu patstāvīgā darba organizēšanai.<br />

Grāmatā ir trīs nodaļas - matemātisko pierādījumu teorija un tehnika, kombinatorika un grafu<br />

teorija.<br />

Priekšzināšanas, kas ir vēlamas grāmatas materiāla apgūšanai, aptver diskrētās matemātikas<br />

pirmā semestra nodaļas (kopu, attēlojumu un attiecību teoriju, matemātisko loǧiku, veselo<br />

skaitļu teorijas pamatus). Grāmatā dotais materiāls pārsniedz vienā semestrī apgūstamā studiju<br />

kursa mācību materiālu. Dažu jautājumu apgūšanai ir nepieciešamas arī pamatzināšanas vispārīgajā<br />

un lineārajā algebrā (binārās operācijas, grupu teorija, lineārie attēlojumi un matricas,<br />

matricu īpašvērtības u.c.) un automātu un valodu teorijā (pamatzināšanas par galīgiem deterministiskiem<br />

automātiem un regulārajām valodām). Jāpiebilst, ka grāmatas saturu ir ierobežojis<br />

tas apstāklis, ka tai ir jābūt orientētai uz pirmā kursa studentiem, kas nepārvalda vispārīgo un<br />

lineāro algebru. Šī iemesla dēļ palika neapskatītas vairākas interesantas tēmas, piemēram, kombinatorikas<br />

saistība ar automātu un valodu teoriju. Materiāla izklāsts ir ar mainīgu grūtības un<br />

detalizācijas pakāpi, lai iepazīstinātu lasītājus ar dažādu līmeņu materiālu. Lasītājam, sevišķi<br />

pirmajā lasījumā, ir jāizvēlas piemērots lasīšanas ātrums. Teorēmu pierādījumi ir doti tajos<br />

gadījumos, ja tie nav pārāk viegli vai pārāk grūti. Nodaļu beigās ir doti dažādu grūtības pakāpju<br />

vingrinājumi, pētnieciska rakstura un programmēšanas uzdevumi.<br />

Autori izsaka sirsnīgu pateicību studentiem un kolēǧiem par izteiktajiem komentāriem. Īpaša<br />

pateicība tiek izteikta recenzentam asociētajam profesoram Dr.math. Jānim Cīrulim (Latvijas<br />

Universitāte) par lielo darbu šī teksta novērtēšanā un uzlabošanā.


NODAĻA 1<br />

MATEMĀTISKO PIERĀDĪJUMU TEORIJA UN TEHNIKA<br />

1.1. IEVADS<br />

Spēja izdarīt loǧiski pareizus secinājumus un pietiekoši garas un saskaņotas šādu secinājumu<br />

virknes ir svarīga iemaņa, kas ir vajadzīga jebkuram cilvēkam. Vēl jo vairāk tā ir svarīga tiem,<br />

kas ikdienā saskaras ar skaitļošanu un algoritmiem, piemēram, programmētājiem vai inženieriem.<br />

Šajā nodaļā mēs apskatīsim vienkāršākos matemātisko pierādījumu teorijas jautājumus. Priekšzināšanas,<br />

kas ir nepieciešamas šīs nodaļas apgūšanai ir matemātiskās loǧikas pamatjēdzieni -<br />

matemātiskie izteikumi, predikāti un operācijas ar tiem, matemātiskās loǧikas formulas, Būla<br />

funkcijas, to normālās formas. Matemātisko pierādījumu formalizācijas pirmos mēǧinājumus veica<br />

matemātiķis G.Leibnics 17.gadsimta otrajā pusē, taču sistemātiska matemātisko pierādījumu<br />

kā matemātikas objekta pētīšana sākās 19. gadsimta beigās.<br />

Cilvēka spēja izdarīt pareizus secinājumus un prognozes nākotnes paredzēšanas nolūkā ir<br />

augstākās nervu darbības funkcionalitāte, kas ir radusies evolucionārās atlases ceļā. Pamatproblēma,<br />

kas katru brīdi ir jārisina dzīviem organismiem, ir šāda - ja ir dota noteikta situācija<br />

laikā vai telpā, kāda būs šī situācija vēlākā laika momentā vai citos telpas punktos. Šī pamatproblēma<br />

liek definēt un pētīt saliktus izteikumus formā<br />

(1.1) ”JA A(ir patiess izteikums), T AD B(ir patiess izteikums)”,<br />

kur A un B ir izteikumi.<br />

Teiksim, ka predikāts q seko (loǧiski seko) no predikāta p (apzīmē ar pierakstu p → q), ja q<br />

ir patiess ar visām tām predikāta argumentu vertībām, ar kurām p ir patiess. Citiem vārdiem<br />

sakot, ja predikāts p ir patiess ar kādu argumentu vērtību sarakstu x, tad predikāts q arī ir patiess<br />

ar šo vērtību sarakstu x . Šādā gadījumā izteikumu vai predikātu p → q sauksim par nosacījuma<br />

apgalvojumu. Izteikuma vai predikāta p → q patiesumvērtība tiek definēta kā ”patiess”, ja tas<br />

ir nosacījuma apgalvojums un ”nepatiess” pretējā gadījumā. Var domāt, ka<br />

p → q = ∀x(p(x) ⇒ q(x)),<br />

kur ⇒ ir matemātiskās loǧikas implikācijas operācija. Predikātu p sauc par nosacījumu vai<br />

pietiekamo nosacījumu attiecībā uz q, bet predikātu q - par secinājumu vai nepieciešamo nosacījumu<br />

attiecībā uz p.<br />

Par nosacījuma apgalvojumu var domāt kā par predikātu, kura argumenti ir predikāti vai kā<br />

par attiecību (attieksmi) predikātu kopā, kurā tiek saistīts nosacījums un secinājums. Izteikumu<br />

p → q parasti formulē veidā ”ja p, tad q”. Izteikumu (p → q) ∧ (q → p) formulēsim veidā ”p tad<br />

un tikai tad, ja q ”, sauksim par loǧisko ekvivalenci un un apzīmēsim ar p ↔ q . Nosacījuma<br />

apgalvojumu var saukt arī par pareizu secinājumu.<br />

Nosacījuma apgalvojumu var mēǧināt vizualizēt izmantojot Eilera-Venna diagrammas šādā<br />

veidā. Ja ir doti divi predikāti p un q, tad uzskatīsim, ka katrai argumentu vērtībai atbilst<br />

punkts universā un piekārtosim katram no predikātiem to universa apakškopu, ar kuras elementu<br />

vērtībām predikāts ir patiess, apzīmēsim šīs apakškopas ar P un Q . Apakškopas P, Q<br />

sauc par predikātu p, q patiesumvērtību kopām. Viegli saskatīt, ka izteikuma p → q patiesums<br />

nozīmē, ka P ⊆ Q.<br />

4


1.1. IEVADS 5<br />

U <br />

P <br />

Q <br />

1.1. attēls. Nosacījuma apgalvojuma vizualizācija ar predikātu patiesumvērtību kopu palīdzību<br />

Izteikuma p ↔ q patiesums nozīmē, ka P = Q (predikātu patiesumvērtību kopas ir vienādas).<br />

U<br />

P = Q<br />

1.2. attēls. Loǧiskās ekvivalences vizualizācija ar predikātu patiesumvērtību kopu palīdzību<br />

Nosacījuma apgalvojumu interpretācija ar patiesumvērtību kopu izmantošanu ļauj noformulēt<br />

nosacījuma apgalvojuma kritēriju gadījumā, kad predikātu argumenti ir Būla mainīgie un predikāti<br />

ir izteikti PDNF.<br />

Teorēma 1.1. p → q ir nosacījuma apgalvojums tad un tikai tad, ja katra elementārā<br />

konjunkcija, kas piedalās predikāta p PDNF, piedalās arī predikāta q PDNF.<br />

Pierādījums. Pieņemsim, ka p → q ir nosacījuma apgalvojums, tātad, ja p(X ε 1<br />

1 , X ε 2<br />

2 , ..., Xn εn )<br />

ir patiess, tad arī q(X ε 1<br />

1 , X ε 2<br />

2 , ..., X ε n<br />

n ) ir patiess. Izteikums p(X ε 1<br />

1 , X ε 2<br />

2 , ..., X ε n<br />

n ) ir patiess tad un<br />

tikai tad, ja elementārā konjunkcija<br />

X ε 1<br />

1 X ε 2<br />

2 ...X ε n<br />

n<br />

piedalās predikāta p PDNF, q(X ε 1<br />

1 , X ε 2<br />

2 , ..., X ε n<br />

n ) ir patiess tad un tikai tad, ja tā pati konjunkcija<br />

piedalās arī predikāta q PDNF. Tātad, ja X ε 1<br />

1 , X ε 2<br />

2 , ..., X ε n<br />

n piedalās predikāta p PDNF, tad tā<br />

piedalās arī predikāta q PDNF. QED<br />

Par divu nosacījuma apgalvojumu p → q un q → r kompozīciju sauksim izteikumu p → r.<br />

Par pierādījumu sauksim vairāku nosacījuma apgalvojumu kompozīciju:<br />

(p ↦→ q) = (p = p → p 2 → ... → p n−1 → p n = q).<br />

Var redzēt, ka pierādījums arī ir nosacījuma apgalvojums: ja visi izteikumi<br />

p 1 → p 2 , p 2 → p 3 , ..., p n−1 → p n<br />

ir patiesi, tad, ja izteikums p 1 (x) ir patiess, tad p 2 (x) ir patiess; ja p 2 (x) ir patiess, tad p 3 (x)<br />

ir patiess; ...; ja p n−1 (x) ir patiess, tad p n (x) ir patiess. Tātad kompozīcija p 1 → p n arī ir<br />

nosacījuma apgalvojums.


1.2. SVARĪGĀKIE NOSACĪJUMA APGALVOJUMU VEIDI 6<br />

Par teorēmu (grieķu valodā - ”skaties!”) sauksim izteikumu, kas tiek iegūts pareiza pierādījuma<br />

ceļā no aksiomām (dotiem predikātiem vai izteikumiem, kas tiek definēti par patiesiem, grieķu<br />

valodā atbilstošā vārda nozīme ir ”vērtīgs”). Parasti teorēmas veido formā p → q (”no p seko<br />

q”) vai p ↔ q (”p tad un tikai tad, ja q” vai ”p → q un q → p ”). Par lemmu sauksim teorēmu,<br />

kas ir starpposms kādas svarīgākas teorēmas pierādījumā. Par secinājumu no teorēmas sauksim<br />

izteikumu, ko var relatīvi viegli pierādīt, pieņemot šo teorēmu.<br />

Par apgalvojuma/teorēmas p → q apgriezto apgalvojumu sauksim q → p , par pretējo<br />

apgalvojumu sauksim q → p , par pretējam apgriezto (inverso) apgalvojumu sauc p → q .<br />

Par matemātisku teoriju vai pierādījumu sistēmu sauksim struktūru, kas satur<br />

• fiksētu alfabētu,<br />

• apgalvojumu veidošanas likumus,<br />

• fiksētu aksiomu kopu,<br />

• fiksētu nosacījuma apgalvojumu veidu (likumu) kopu.<br />

Aksiomas var būt gan vispārīgas (loǧiskas), gan arī specifiskas dotajai teorijai (neloǧiskas).<br />

Aksiomu kopa var būt gan galīga, gan arī bezgalīga. Aksiomu kopu sauksim par neatkarīgu, ja<br />

nekāda no aksiomām nav pierādāma, izmantojot pārējās aksiomas. Parasti dotajā teorijā atļauto<br />

nosacījuma apgalvojumu veidu kopa ir galīga. Katras matemātiskās teorijas attīstība sastāv no<br />

tās objektu un valodas koordinatizēšanas un formalizēšanas, grūtu teorēmu pierādīšanas, teorijas<br />

galamērķu noteikšanas un sasniegšanas. Matemātisku teoriju sauksim par nepretrunīgu ja nav<br />

iespējams pierādīt kādu apgalvojumu s un tā noliegumu ¬s. Matemātisku teoriju sauksim par<br />

pilnu, ja tajā katra patiesa teorēma ir pierādāma. Matemātisku teoriju sauksim par atrisināmu,<br />

ja eksistē algoritms (piemēram, Tjūringa mašīna), kas katram teorijas apgalvojumam nosaka,<br />

vai tas ir pierādāms.<br />

1.2. SVARĪGĀKIE NOSACĪJUMA APGALVOJUMU VEIDI<br />

Pārskatīsim dažus vienkāršākos nosacījuma apgalvojumu konstruēšanas veidus. Vairāki no<br />

tiem ir aprakstīti jau Senās Grieķijas vai Romas filozofu darbos, tāpēc to nosaukumi ir pārņemti<br />

no latīņu valodas. Pēc savas būtības nosacījuma apgalvojumu konstruēšanas veidi seko no kopu<br />

teorijas, tāpēc ir lietderīgi apskatīt atbilstošos apgalvojumus par predikātu patiesumvērtību<br />

kopām un vizualizēt šos nosacījuma apgalvojumu veidus izmantojot Eilera-Venna diagrammas.<br />

Nosacījuma apgalvojumu konstruēšanas likumus apzīmē ar kanonisko pierakstu<br />

(1.2)<br />

p 1 , ..., p n<br />

,<br />

q<br />

kas nozīmē nosacījuma apgalvojumu p 1 ∧ ... ∧ p n → q .<br />

Vienkāršākie nosacījuma apgalvojumu veidi ir šādi.<br />

1.2.1. Modus ponens. Kanoniskais pieraksts -<br />

p → q, p<br />

.<br />

q<br />

Šis nosacījuma apgalvojuma veids ir ekvivalents nosacījuma apgalvojuma definīcijai.<br />

1.2.2. Modus tollens. Kanoniskais pieraksts -<br />

p → q, ¬p<br />

.<br />

¬q<br />

Šis nosacījuma apgalvojuma veids ir ekvivalents nosacījuma apgalvojuma definīcijai.


1.2. SVARĪGĀKIE NOSACĪJUMA APGALVOJUMU VEIDI 7<br />

1.2.3. Kontrapozīcijas likums. Kanoniskais pieraksts -<br />

p → q<br />

¬q → ¬p .<br />

Šis nosacījuma apgalvojuma veids ir ekvivalents nosacījuma apgalvojuma definīcijai.<br />

Secinājums 1.1. Teorēma ir patiesa tad un tikai tad, ja apgrieztā teorēma ir patiesa.<br />

1.2.4. Ekvivalences secināšanas likums. Kanoniskais pieraksts -<br />

p → q, q → p<br />

.<br />

p ↔ q<br />

Šis nosacījuma apgalvojuma veids atbilst šādai kopu īpašībai: ja P ⊆ Q un Q ⊆ P , tad P = Q.<br />

1.2.5. Hipotētiskais silloǧisms. Kanoniskais pieraksts -<br />

p → q, q → r<br />

p → r.<br />

Šis nosacījuma apgalvojuma veids atbilst faktam, ka nosacījuma apgalvojumu kompozīcija ir<br />

nosacījuma apgalvojums.<br />

U<br />

P<br />

P<br />

Q<br />

R<br />

1.3. attēls. Hipotētiskā silloǧisma vizualizācija<br />

Piemērs 1.2. Ja katrs Rēzeknes Augstskolas students mācās sekmīgi un katrs sekmīgs students<br />

saņem stipendiju, tad katrs RA students saņem stipendiju.<br />

1.2.6. Disjunktīvais silloǧisms. Kanoniskais pieraksts -<br />

p ∨ q, ¬p<br />

.<br />

q<br />

Šis secināšanas veids atbilst kopu īpašībai (P ∪ Q) ∩ P ⊆ Q.<br />

U<br />

P<br />

Q<br />

1.4. attēls. Disjunktīvā silloǧisma vizualizācija<br />

Piemērs 1.3. Jānis dzīvo vai nu Rēzeknē, vai Rīgā. Ja Jānis nedzīvo Rīgā, tad Jānis dzīvo<br />

Rēzeknē.


1.2. SVARĪGĀKIE NOSACĪJUMA APGALVOJUMU VEIDI 8<br />

1.2.7. Disjunktīvā pievienošana. Kanoniskais pieraksts -<br />

p<br />

p ∨ q .<br />

Šis nosacījuma apgalvojuma veids atbilst kopu īpašībai P ⊆ P ∪ Q.<br />

Piemērs 1.4. Ja reāls skaitlis ir lielāks par 0, tad tas ir lielāks vai vienāds ar 0. Ja Jānis<br />

dzīvo Rēzeknē, tad Jānis dzīvo kādā no Latvijas pilsētām.<br />

1.2.8. Dilemma. Kanoniskais pieraksts -<br />

p ∨ q, p → r, q → r<br />

.<br />

r<br />

Šis nosacījuma apgalvojuma veids atbilst šādai kopu īpašībai:<br />

P ∪ Q ⊆ R.<br />

ja P ⊆ R un Q ⊆ R, tad<br />

U<br />

P<br />

Q<br />

R<br />

1.5. attēls. Dilemmas vizualizācija<br />

Piemērs 1.5. Ir dots, ka, ja x > 1, tad f(x) < 0, un, ja x < −1, tad f(x) < 0. Var secināt,<br />

ka, ja |x| > 1, tad f(x) < 0.<br />

1.2.9. Konstruktīvā dilemma. Kanoniskais pieraksts -<br />

p ∨ q, p → r, q → s<br />

.<br />

r ∨ s<br />

Šis apgalvojuma veids atbilst šādai kopu īpašī-bai: ja P ⊆ Q un R ⊆ S, tad P ∪ R ⊆ Q ∪ S.<br />

U<br />

R<br />

P Q S<br />

1.6. attēls. Konstruktīvās dilemmas vizualizācija<br />

Piemērs 1.6. Ir dots, ka ja x > 1, tad f(x) < 0 un ja x < −1, tad f(x) > 1. Var secināt,<br />

ka, ja |x| > 1, tad f(x) < 0 vai f(x) > 1.


1.2. SVARĪGĀKIE NOSACĪJUMA APGALVOJUMU VEIDI 9<br />

1.2.10. Destruktīvā dilemma. Kanoniskais pieraksts -<br />

(¬q) ∨ (¬s), p → q, r → s<br />

.<br />

(¬p) ∨ (¬r)<br />

Šis nosacījuma apgalvojuma veids atbilst šādai kopu īpašībai: ja P ⊆ Q un R ⊆ S, tad Q ∪ S ⊆<br />

P ∪ R.<br />

Piemērs 1.7. Ir dots, ka, ja x > 1, tad f(x) < 0 un, ja x < −1, tad f(x) > 1. Var secināt,<br />

ka, ja f(x) ≥ 0 vai f(x) ≤ 1, tad x ≤ 1 vai x ≥ −1.<br />

1.2.11. Nosacītais pierādījums. Kanoniskais pieraksts -<br />

p, (p ∧ q) → r<br />

.<br />

q → r<br />

Šis nosacījuma apgalvojuma veids atbilst šādai kopu īpašībai: ja P ∩ Q ⊆ R, tad P ∩ Q ⊆ P ∩ R.<br />

Piemērs 1.8. Ir dots, ka, ja x > 1 un y < −1, tad f(x, y) > 1. Var secināt, ka, ja x > 1,<br />

tad no tā, ka y < −1, seko f(x, y) > 1.<br />

Piemērs 1.9. Pieņemsim, ka p(x) =”x ir strādīgs cilvēks”, q(x) =”x ir muzikāli apdāvināts<br />

cilvēks” un r(x) =”x ir izcils mūziķis”. Pieņemsim, ka cilvēks ir izcils mūziķis, ja viņš vai viņa<br />

ir gan strādīgs, gan muzikāli apdāvināts. Izmantojot nosacītās secināšanas likumu, var secināt,<br />

ka, ja cilvēks ir strādīgs, tad, lai šis cilvēks būtu izcils mūziķis, pietiek ar to, ka viņš vai viņa ir<br />

muzikāli apdāvināts.<br />

1.2.12. Konjunktīvā vienkāršošana. Kanoniskais pieraksts -<br />

p ∧ q<br />

p .<br />

Šis apgalvojuma veids atbilst kopu īpašībai P ∩ Q ⊆ P .<br />

1.2.13. Pretrunas likums. Kanoniskais pieraksts -<br />

p → c<br />

¬p ,<br />

kur c ir pretruna (identiski aplams izteikums). Šis nosacījuma apgalvojuma veids atbilst šādai<br />

kopu īpašībai: ja P = ∅, tad P = U.<br />

Piemērs 1.10. Ja no tā, ka x > 1 seko, ka 2 + 2 = 5, tad var secināt, ka x ≤ 1.<br />

Nākamie nosacījuma apgalvojuma veidi satur universālos vai eksistences kvantorus. Pieņemsim,<br />

ka predikātu argumenti ir kādas kopas A elementi.<br />

1.2.14. Konkretizācija uz patvaļīgu elementu. Kanoniskais pieraksts -<br />

kur a ∈ A ir patvaļīgs.<br />

∀x ∈ X P (x)<br />

,<br />

P (a)<br />

1.2.15. Vispārināšana no patvaļīga elementa. Kanoniskais pieraksts -<br />

P (a)<br />

∀x ∈ X P (x) ,<br />

kur a ∈ A ir patvaļīgs. Šo nosacījuma apgalvojuma likumu bieži izmanto pierādījumos. Ja<br />

predikāts ir patiess ar patvaļīgu argumentu vērtību, tad tas ir patiess ar jebkuru argumenta<br />

vērtību.


1.3. PIERĀDĪJUMU VEIDI 10<br />

1.2.16. Eksistenciālā specifikācija. Kanoniskais pieraksts -<br />

∃ x ∈ X P (x)<br />

P (a)<br />

vismaz vienam a ∈ A.<br />

1.2.17. Eksistenciālā vispārināšana. Kanoniskais pieraksts -<br />

P (a) vismaz vienam a ∈ A<br />

.<br />

∃ x ∈ A P (x)<br />

1.2.18. Universālais modus ponens. Kanoniskais pieraksts -<br />

P (a) → Q(a) jebkuram a ∈ A<br />

.<br />

∀ x ∈ A (P (x) → Q(x))<br />

1.3. PIERĀDĪJUMU VEIDI<br />

Šajā nodaļā mēs apskatīsim dažas biežāk pielietotās vispārīgās teorēmu pierādīšanas stratēǧijas.<br />

1.3.1. Tiešais pierādījums.<br />

1.3.1.1. p → q. Mēs pieņemam, ka izteikums vai predikāts p ir patiess ar vispārīgiem predikātu<br />

argumentiem un pierādām, ka pierādāmais izteikums vai predikāts q ir patiess.<br />

Piemērs 1.11. Pierādīsim šādu apgalvojumu: ”Ja n un m ir pāra skaitļi, tad arī n + m ir<br />

pāra skaitlis”. Šo apgalvojumu var pierādīt ar šādu nosacījuma apgalvojumu virkni. Ja n un m<br />

ir pāra skaitļi, tad n = 2n 1 un m = 2m 1 . Ja n = 2n 1 un m = 2m 1 , tad n + m = 2(n 1 + m 1 ). Ja<br />

n + m = 2(n 1 + m 1 ), tad n + m = 2s, kur s ir vesels skaitlis. Ja n + m = 2s, tad n + m ir pāra<br />

skaitlis.<br />

1.3.1.2. (∀ x ∈ A)P (x). Mēs pieņemam, ka x ir patvaļīgs elements un pierādām, ka P (x) ir<br />

patiess.<br />

Piemērs 1.12. Patvaļīgs pāra skaitlis x ir izsakāms formā x = 2y, kur y ∈ Z, tātad jebkurš<br />

pāra skaitlis ir izsakāms šādā formā.<br />

1.3.2. Konstruktīvais tiešais pierādījums. Šo pierādījuma veidu parasti izmanto, ja ir<br />

jāpierāda apgalvojumi, kuros ir iesaistīti eksistences kvantori.<br />

1.3.2.1. (∃x ∈ A)P (x). Lai pierādītu šādu izteikumu, ir jāpierāda vismaz viena tāda elementa<br />

x eksistence, ar kuru predikāts P (x) ir patiess. Šajā stratēǧijā mēs atrodam vai konstruējam<br />

konkrētu elementu x, ar kuru P (x) ir patiess.<br />

Piemērs 1.13. Ir jāpierāda šāds apgalvojums: ”Eksistē pirmskaitlis, kas ir mazāks nekā 20<br />

un lielāks nekā 10”. Lai pierādītu šo apgalvojumu, pietiek uzrādīt skaitli 13.<br />

1.3.2.2. ∀x ∈ A ∃x ∈ A P (x, y). Lai pierādītu šādu izteikumu, katram x ir jāpierāda vismaz<br />

viena tāda elementa y eksistence, ar kuru predikāts P (x, y) ir patiess. Mēs fiksējam patvaļīgu<br />

elementu x un atrodam konkrētu elementu y, kuram P (x, y) ir patiess.<br />

Piemērs 1.14. Ir jāpierāda apgalvojums ∀n ∃m : m > n. Ja n ir fiksēts, tad definēsim<br />

m 0 = n + 1, skaitļu pāris (n, m 0 ) apmierina pierādāmo apgalvojumu.<br />

1.3.3. Nekonstruktīvais tiešais pierādījums. Šo pierādījumu veidu arī izmanto tādu<br />

apgalvojumu pierādīšanā, kas satur eksistences kvantorus, bet atšķirībā no konstruktīvā veida,<br />

šajā gadījumā pierāda apgalvojumus, neuzrādot konkrētus kopu elementus.<br />

Piemērs 1.15. Ir jāpierāda apgalvojums ”∀n ∃p : p > n un p ir pirmskaitlis”. Šo apgalvojumu<br />

var pierādīt, izmantojot pirmskaitļu kopas bezgalību: eksistē bezgalīgi daudz pozitīvu<br />

pirmskaitļu, tātad vismaz viens no tiem ir lielāks nekā n.


1.3. PIERĀDĪJUMU VEIDI 11<br />

1.3.4. Pierādījums apskatot speciālgadījumus. Šo stratēǧiju izmanto, pierādot apgalvojumus,<br />

kurus var pierakstīt formā<br />

(1.3) p → q, kur p = p 1 ∨ p 2 ∨ ... ∨ ...p n .<br />

Izmantojot dilemmas secināšanas likumu, redzam, ka šāds apgalvojums ir pierādīts, ja pierāda,<br />

ka katram i izpildās p i → q.<br />

Piemērs 1.16. Ir jāpierāda apgalvojums ”Ja n = 2m + 1, tad 8|n 2 − 1”. Ja n ir nepāra<br />

skaitlis, tad n = 4k + 1 vai n = 4k + 3, ir jāpierāda, ka katrā no šiem gadījumiem izpildās<br />

8|n 2 − 1. Ja n = 4k + 1, tad<br />

tātad 8|n 2 − 1. Ja n = 4k + 3, tad<br />

tātad arī šajā gadījumā 8|n 2 − 1.<br />

n 2 − 1 = (4k + 1) 2 − 1 = 16k 2 + 8k = 8(2k 2 + k),<br />

n 2 − 1 = (4k + 3) 2 − 1 = 16k 2 + 24k + 8 = 8(2k 2 + 3k + 1),<br />

1.3.5. Netiešais pierādījums jeb pierādījums izmantojot kontrapozīciju. Lai pierādītu<br />

apgalvojumu p → q, var izmantot kontrapozīcijas secināšanas likumu: pieņemam, ka ¯q ir<br />

patiess, un pierādām, ka ¯p ir patiess.<br />

Piemērs 1.17. Ir jāpierāda apgalvojums ”Ja n 2 ir pāra skaitlis, tad n ir pāra skaitlis”.<br />

Pieņemsim, ka n = 2k + 1. Tādā gadījumā<br />

n 2 = (2k + 1) 2 = 4k 2 + 4k + 1 = 2(2k 2 + 2k) + 1.<br />

Ir pierādīts, ka, ja n ir nepāra skaitlis, tad arī n 2 ir nepāra skaitlis, līdz ar to sākotnējais apgalvojums<br />

ir pierādīts.<br />

1.3.6. Pierādījumi ar pretrunas palīdzību. Šajā stratēǧijā pieņem, ka pierādāmā apgalvojuma<br />

noliegums ir patiess un no šī pieņēmuma secina identiski nepatiesu izteikumu (pretrunu).<br />

1.3.6.1. p → c. Šajā stratēgijā pieņem, ka pierādāmā apgalvojuma noliegums ir patiess, un<br />

pierāda, ka no tā seko pretruna, citiem vārdiem sakot, pierāda, ka secinājums<br />

(1.4) ¬(p → q)) → c,<br />

kur c ir pretruna, ir nosacījuma apgalvojums.<br />

Piemērs 1.18. Pierādīsim, ka √ 3 ir iracionāls skaitlis. Pieņemsim, ka √ 3 ir racionāls skaitlis<br />

m<br />

. Pieņemsim, ka vai nu m vai arī n nedalās ar 3. Iegūstam, ka n 3n2 = m 2 , no kurienes seko, ka<br />

gan m, gan n dalās ar 3, kas kopā ar pieņēmumu attiecībā uz m un n ir pretruna.<br />

1.3.6.2. (∃x ∈ A)P (x). Pieņem, ka visiem x izteikums P (x) ir nepatiess un parāda, ka tas<br />

noved pie pretrunas.<br />

Piemērs 1.19. n + 1 balodis tiek likts n būros. Pierādīt, ka eksistē būris, kurā ir vismaz 2<br />

baloži. Ja katrā būrī būtu 0 vai 1 balodis, tad kopā būtu ne vairāk kā n baloži, kas ir pretruna.<br />

1.3.6.3. (∀x ∈ A)P (x). Pieņem, ka eksistē x, kuram ir P (x) nepatiess un parāda, ka tas<br />

noved pie pretrunas.<br />

1.3.7. Disjunkcijas p → (q ∨ r) pierādīšana. Lai pierādītu šādu apgalvojumu, pietiek<br />

pierādīt, ka vismaz viens no apgalvojumiem p → q vai p → r ir patiess. Vispārīgā gadījumā<br />

neviens no šiem apgalvojumiem var nebūt patiess, tāpēc, analizējot disjunkcijas apgalvojumu ar<br />

patiesumvērtību kopu palīdzību, varam iegūt vismaz divas disjunkcijas apgalvojumam ekvivalentas<br />

apgalvojumu sistēmas:


• p → (q ∨ r) tad un tikai tad, ja<br />

1.4. APGALVOJUMU ATSPĒKOŠANA 12<br />

((p ∧ (¬q)) → r) ∨ ((p ∧ (¬r)) → q)<br />

ir patiess, citiem vārdiem sakot, lai pierādītu disjunkciju, ir pietiekoši un nepieciešams<br />

pierādīt, ka vismaz viens no apgalvojumiem ((p ∧ (¬q)) → r) vai ((p ∧ (¬r)) → q) ir<br />

patiess,<br />

• p → (q ∨ r) tad un tikai tad, ja<br />

ir identiski aplams izteikums.<br />

p ∧ (¬q) ∧ (¬r)<br />

1.3.8. Vairāku apgalvojumu ekvivalences pierādīšana ar cikla palīdzību.<br />

izmanto, lai pierādītu vairāku apgalvojumu loǧisko ekvivalenci:<br />

(1.5) p i ↔ p j , ∀i, j.<br />

Pierādām, ka visi izteikumi<br />

Šo metodi<br />

(1.6) p 1 → p 2 , p 2 → p 3 , ..., p i → p i+1 , ..., p n−1 → p n , p n → p 1<br />

ir nosacījuma apgalvojumi. Tā kā nosacījuma apgalvojumu kompozīcija ir pareizs secinājums,<br />

tad eksistē pierādītu nosacījumu apgalvojumu virkne, kas savieno jebkurus divus apgalvojumus<br />

p i un p j .<br />

Piemērs 1.20. Ir doti trīs divu naturālu argumentu predikāti:<br />

P 1 (a, b) = ”a|b”, P 2 (a, b) = ”MKD(a, b) = b”, P 3 (a, b) = ”⌊ b a ⌋ = b a ”.<br />

Ir jāpierāda, ka tie ir ekvivalenti, tas ir, to patiesumvērtību kopas sakrīt. Pierādīsim šo apgalvojumu<br />

ar cikla palīdzību - pierādīsim 3 nosacījuma apgalvojumus:<br />

P 1 → P 2 , P 2 → P 3 , P 3 → P 1 .<br />

Tiešām, ja a|b, tad MKD(a, b) = b. Ja MKD(a, b) = b, tad b dalās ar a un ⌊ b ⌋ = b . Ja<br />

a a<br />

⌊ b ⌋ = b , tad b dalās ar a un cikls ir noslēgts.<br />

a a<br />

1.4. APGALVOJUMU ATSPĒKOŠANA<br />

Pierādot matemātiskus apgalvojumus, nereti gadās, ka sākotnējais nosacījuma apgalvojums,<br />

kuru mēǧina pierādīt, nav patiess. Ja nav saskatāms ceļš sākotnējā apgalvojuma pierādīšanai, ir<br />

lietderīgi sākt domāt par tā nolieguma pierādīšanu. To var mēǧināt darīt, apskatot speciālgadījumus<br />

vai piemērus. Apgalvojumu nepatiesuma pierādīšanas tehnika ir daļa no matemātisko<br />

pierādījumu tehnikas.<br />

Apgalvojuma atspēkošana ir apgalvojuma nepatiesuma pierādījums. Apgalvojuma<br />

(∀x ∈ A)P (x)<br />

pretpiemērs ir elements c ∈ A tāds, ka P (c) ir nepatiess izteikums.<br />

Lai atspēkotu kādu apgalvojumu formā (∀x ∈ A)P (x), pietiek atrast vienu pretpiemēru.<br />

Pretpiemēra eksistences pierādīšana var tikt veikta konstruktīvi vai nekonstruktīvi. Konstruktīvajā<br />

gadījumā ir lietderīgi meklēt pretpiemēru ar ekstremālām īpašībām, piemēram, kā kopas<br />

maksimālu vai minimālu elementu ar noteiktu īpašību.<br />

Lai atspēkotu apgalvojumu formā (∃x ∈ A)P (x), ir jāpierāda apgalvojums (∀x ∈ A)(¬P (x)).<br />

Piemērs 1.21. Apskatīsim ”apgalvojumu” a 2 < b 2 → a < b. Lai atspēkotu šo apgalvojumu,<br />

pietiek atrast vienu skaitļu pāri ar šādām īpašībām: a 2 < b 2 un a > b. Par šādu skaitļu pāri var<br />

ņemt pāri (1, −2).


1.5. MATEMĀTISKĀ INDUKCIJA 13<br />

Piemērs 1.22. Apskatīsim izteikumu ”vienādojumam 2x = 1 eksistē atrisinājums veselos<br />

skaitļos”. Lai atspēkotu šo apgalvojumu, ir jāpierāda, ka nekādam veselam skaitlim x<br />

vienādojums 2x = 1 nevar izpildīties. To var viegli redzēt, apskatot atlikumus pēc moduļa<br />

2.<br />

1.5. MATEMĀTISKĀ INDUKCIJA<br />

Relatīvi bieži ir jāpierāda apgalvojumi formā<br />

(1.7) ∀n P (n), kur n ∈ N vai n ∈ N\{1, 2, ..., n 0 }.<br />

Ir skaidrs, ka nav iespējams galīgā laikā pierādīt visus apgalvojumus P (n), ja mēs pieņemam,<br />

ka katra šāda apgalvojuma pierādīšanai cilvēkam vai skaitļošanas mašīinai ir nepieciešams no<br />

apakšas ierobežots laika intervāls. Apgalvojumu ∀n P (n) pierādīšanai ir izstrādāta pierādījumu<br />

tehnika, ko sauc par matemātisko indukciju. Matemātiskās indukcijas pamatideja ir sadalīt<br />

apgalvojuma ∀n P (n) patiesumvērtību kopu apakškopās, kas atbilst apgalvojumiem P (n) un<br />

pierādīt, ka katram n predikāta definīcijas apgabalā apgalvojuma P (n+1) patiesumvērtību kopa<br />

satur apgalvojuma P (n) patiesumvērtību kopu, vai, citiem vārdiem sakot, katram n izteikums<br />

(1.8) P (n) → P (n + 1)<br />

ir nosacījuma apgalvojums<br />

Matemātiskās indukcijas princips ir secināšanas likums, ar kuru pierāda, ka predikātam P (n)<br />

ar definīcijas apgabalu N vai, vispārīgā gadījumā, N\{1, 2, ..., n 0 } atbilstošais universālais kvantors<br />

∀n P (n) ir patiess. Matemātiskās indukcijas princips balstās uz hipotētiskā silloǧisma<br />

(nosacījuma apgalvojumu kompozīcijas) secināšanas likumu. Realizējot matemātiskās indukcijas<br />

principu, ir jāveic šādas darbības:<br />

• jāpierāda, ka izteikums P (n 0 ) ir patiess,<br />

• jāpierāda, ka izteikums P (i) → P (i+1) ir nosacījuma apgalvojums visiem i ≥ n 0 , citiem<br />

vārdiem sakot, jāpieņem, ka izteikums P (i) ir patiess, un jāpierāda, ka no tā seko, ka<br />

P (i + 1) ir patiess.<br />

Izmantojot patiesumvērtību kopas matemātiskās indukcijas principu, var vizualizēt šādā veidā.<br />

U<br />

P(x 0<br />

) ……... P(i) P(i+1) ………..<br />

"x<br />

P(x)<br />

1.7. attēls. Matemātiskās indukcijas principa vizualizācija<br />

Formāli matemātiskās indukcijas principu var pierakstīt šādā nosacījuma apgalvojuma likuma<br />

formā<br />

P (n 0 ), (∀i ≥ n 0 )[P (i) → P (i + 1)]<br />

(1.9)<br />

.<br />

(∀n ≥ n 0 )P (n)<br />

Apgalvojumu P (n 0 ) sauksim par indukcijas bāzi apgalvojuma P (i) patiesuma pieņemšanu<br />

sauksim par indukcijas pieņēmumu; apgalvojuma P (i) → P (i + 1) pierādīšanu sauksim par<br />

indukcijas soļa pierādīšanu. Predikāta P argumentu sauksim par indukcijas argumentu vai<br />

indukcijas parametru.


1.5. MATEMĀTISKĀ INDUKCIJA 14<br />

Piemērs 1.23. Pierādīsim apgalvojumu ”katram naturālam skaitlim n izpildās vienādība<br />

1 + 2 + ... + n = n(n+1) ”. Ja n = 1, tad vienādība ir pareiza. Pieņemsim, ka vienādība ir<br />

2<br />

pareiza ar kādu argumentu n = i, un pierādīsim, ka tad formula ir pareiza ar argumenta vērtību<br />

n = i + 1. Varam redzēt, ka<br />

1 + 2 + ... + i + (i + 1) = (1 + 2 + ... + i) + (i + 1) =<br />

kas arī pierāda apgalvojumu.<br />

i(i + 1)<br />

2<br />

+ i + 1 =<br />

(i + 1)(i + 2)<br />

,<br />

2<br />

Pastiprinātais matemātiskās indukcijas princips ir tāds secināšanas likums, ar kuru pierāda,<br />

ka predikāts P (n) ir patiess visiem n ≥ n 0 :<br />

(1.10)<br />

P (n 0 ), (∀k ≥ n 0 )[( ∧ k<br />

i=n 0<br />

P (i)) → P (k + 1)]<br />

.<br />

(∀n ≥ n 0 )P (n)<br />

Tātad, lai ar matemātiskās indukcijas metodi pastiprinātajā formā pierādītu, ka predikāts P (n)<br />

ir patiess visiem n ≥ n 0 , ir jāveic šādas darbības:<br />

• jāpierāda, ka P (n 0 ) ir patiess,<br />

• jāpieņem, ka P (i) ir patiess visiem n 0 ≤ i ≤ k (tas ir, visi izteikumi P (n 0 ), ..., P (k) ir<br />

patiesi), un jāpierāda, ka tad izteikums P (k + 1) ir patiess.<br />

Izmantojot pastiprināto matemātiskās indukcijas principu, ir iespējams relatīvi vieglāk pierādīt<br />

apgalvojumus, kurus ar parasto matemātiskās indukcijas principu pierādīt ir relatīvi grūti.<br />

Piemērs 1.24. Pierādīsim apgalvojumu ”∀ n ≥ 2 ∃p : p|n” (katram naturālam skaitlim, kas<br />

lielāks nekā 2, eksistē pirmskaitlis, kas to dala). Pieņemsim, ka apgalvojums ir patiess visiem<br />

naturāliem skaitļiem, kas ir stingri mazāki nekā k. Katrs naturāls skaitlis dalās ar vismaz diviem<br />

skaitļiem - ar 1 un pats ar sevi. Ja k dalās tikai ar diviem skaitļiem, tad tas ir pirmskaitlis un<br />

apgalvojums ir pierādīts. Ja k dalās vēl ar kādu skaitli a, tad a < k un saskaņā ar indukcijas<br />

pieņēmumu eksistē pirmskaitlis p, kas dala a un tātad arī k.<br />

Sarežǧītu apgalvojumu pierādīšanai tiek izmantotas arī citas matemātiskās indukcijas metodes<br />

shēmas, kuras atšķiras no aprakstītajām ar indukcijas soli.<br />

Jebkurš pierādījums ar parasto matemātiskās indukcijas metodi var tikt uzskatīts par pierādījumu<br />

ar pastiprinātās indukcijas metodi, jo parastās indukcijas metodes pieņēmums ir pastiprinātās<br />

indukcijas pieņēmuma secinājums. Izrādās, ka arī pastiprinātās indukcijas pierādījums var<br />

tikt pārveidots par parastās indukcijas pierādījumu.<br />

Teorēma 1.25. Apgalvojuma (∀n ≥ n 0 )P (n) pierādījumu ar pastiprinātās matemātiskās<br />

indukcijas metodi var pārveidot par tā pierādījumu ar parasto matemātiskās indukcijas metodi.<br />

Pierādījums. Definēsim jaunu predikātu<br />

Q(n) = (∀k : n 0 ≤ k ≤ n)P (k),<br />

ievērosim, ka<br />

(∀n ≥ n 0 )[Q(n) → P (n)].<br />

Konstruēsim parastās matemātiskās indukcijas pierādījumu apgalvojumam<br />

(∀n ≥ n 0 )Q(n).<br />

Indukcijas bāze ir Q(n 0 ) = P (n 0 ), tāpēc te nekas nav jāpierāda. Pastiprinātās indukcijas solis ir<br />

nosacījuma apgalvojums<br />

((∀k ≤ n)P (k)) → P (n + 1),<br />

jeb<br />

Q(n) → P (n + 1).<br />

Ja Q(n) → P (n + 1) ir nosacījuma apgalvojums, tad<br />

Q(n) → (Q(n) ∧ P (n + 1)) = Q(n + 1)


arī ir nosacījuma apgalvojums un tātad ir pierādīts, ka<br />

1.5. MATEMĀTISKĀ INDUKCIJA 15<br />

(∀n ≥ n 0 )[Q(n) → Q(n + 1)],<br />

kas ir parastās indukcijas solis. Līdz ar to apgalvojums<br />

un tātad arī<br />

(∀n ≥ n 0 )Q(n)<br />

(∀n ≥ n 0 )P (n)<br />

ir pierādīts ar parastās indukcijas metodi. QED<br />

Apgalvojuma (∀n ≥ n 0 )P (n) pierādīšanai var izmantot arī citas matemātiskās indukcijas<br />

principa modifikācijas, kas atšķiras no klasiskās ar bāzi un indukcijas soli. Piemēram, varam<br />

uzskatīt, ka indukcijas bāze ir trīs izteikumu<br />

konjunkcija un indukcijas solis ir<br />

P (n 0 ), P (n 0 + 1), P (n 0 + 2)<br />

P (k) → P (k + 3).<br />

Tiek izmantota arī matemātis¯ka indukcija, kurā indukcijas parametrs pieder skaitļu kopas Dekarta<br />

reizinājumam.<br />

Matemātiskās indukcijas principam ekvivalenta pierādīšanas tehnika ir minimāla pretpiemēra<br />

metode. Šajā metodē izmanto to faktu, ka katra naturālo skaitļu kopas apakškopa satur minimālo<br />

elementu. Pieņemsim, ka ir jāpierāda apgalvojums (∀n ≥ n 0 )P (n). Rīkosimies šādi: pieņemsim<br />

pretējo - eksistē netukša naturālo skaitļu kopas apakškopa F tāda, ka (∀n ∈ F )(¬P (n)). Apskatīsim<br />

šīs kopas vismazāko elementu m. Ja m = n 0 , tad to var viegli pārbaudīt. Ja m > n 0 ,<br />

tad m−1 nepieder kopai F . Lai pierādītu apgalvojumu (∀n ≥ n 0 )P (n), mums atkal ir jāpierāda,<br />

ka P (n 0 ) ir patiess un, ka, ja P (m − 1) ir patiess, tad P (m) ir patiess visiem m > n 0 .<br />

Matemātiskās indukcijas principu var vispārināt, ja predikāta argumentu kopā var definēt<br />

noteikta veida daļēji sakārtotas kopas struktūru. Naturālo skaitļu kopā var dabiski definēt<br />

daļēji sakārtotas kopas struktūru, ja sakārtojuma attiecība ir skaitļu salīdzināšanas attiecība,<br />

šai attiecībai atbilstošais Hasses grafs ir grafs, kura vienīgās šķautnes ir veidā x ← x + 1, skaitlis<br />

1 ir vienīgais minimālais un vismazākais elements šādā daļēji sakārtotā kopā, katram naturālam<br />

skaitlim eksistē galīgs skaits šķautņu ķēdē, kas to savieno ar skaitli 1. Matemātiskās indukcijas<br />

princips pēc būtības sastāv no nosacījuma apgalvojuma P (k) → P (k + 1) pierādīšanas katrai<br />

naturālo skaitļu kopas Hasses grafa šķautnei k ← k + 1. Pieņemsim tagad, ka mums ir jāpierāda<br />

apgalvojums (∀x ∈ X)P (x), kur kopa X ir tāda, ka tajā var uzdot daļēja sakārtojuma attiecību<br />

ar šādām īpašībām (dilstošo ķēžu nosacījumu): katrai kopas X elementu virknei x ≥ x 1 ≥ ... ≥<br />

x n ≥ ... eksistē tāds indekss n, ka visiem m ≥ n izpildās nosacījums x m = x n (katra dilstoša<br />

elementu virkne stabilizējas pēc galīga soļu skaita). Viegli redzēt, ka, piemēram, naturālo skaitļu<br />

kopa šo īpašību apmierina, jo par katru skaitli n mazāki ir tikai galīgās kopas {1, 2, , n − 1}<br />

elementi. Vispārīgā gadījumā apgalvojumu (∀x ∈ X)P (x) var mēǧināt pierādīt ar strukturālās<br />

indukcijas metodi:<br />

• jāpierāda, ka apgalvojums P (x) ir patiess, ja x ir minimāls elements kopā X (vispārīgā<br />

gadījumā minimālo elementu kopa var būt pat bezgalīga, taču pierādīt apgalvojumu<br />

P (x), ja x ir minimāls elements, var relatīvi viegli),<br />

• jāpierāda strukturālās indukcijas solis P (x) → P (z), kur elementi x un z ir tādi, ka<br />

kopas X Hasses grafā eksistē šķautne x ← z.<br />

Dilstošo ķēžu nosacījums šajā metodē ir svarīgs tāpēc, ka tas nodrošina jebkura kopas elementa<br />

sasniegšanu no kāda minimāla elementa ar galīga soļu skaita palīdzību.<br />

Bieži vien strukturālās indukcijas solis sastāv no galīga skaita nosacījuma apgalvojumu<br />

P (x) → P (f i (x)) pierādīšanas, kur pārveidojumi f i raksturo daļēji sakārtotās kopas Hasses grafa<br />

uzbūvi, piemēram, matemātiskās indukcijas gadījumā ir tikai viens pārveidojums f(x) = x + 1,<br />

ar kura palīdzību var aprakstīt visas Hasses grafa šķautnes naturālo skaitļu kopā.


1.6. VINGRINĀJUMI 16<br />

Strukturālās indukcijas ideju datorzinātnē izmanto arī rekursīvajās definīcijās, kas sastāv no<br />

šādiem soļiem:<br />

• no sākuma definē kādu matemātisku jēdzienu vai objektu daļēji sakārtotas kopas minimālajiem<br />

elementiem,<br />

• pēc tam katram elementu pārim (x, y), kuram eksistē šķautne Hasses grafā, parāda, kā<br />

definēt šo jēdzienu elementam y, ja tas ir definēts elementam x.<br />

1.6. VINGRINĀJUMI<br />

Vingrinājums 1.26. Vispāriniet disjunkcijas pierādīšanas likumu šādā veidā. Ir dots nosacījuma<br />

apgalvojums, kurā nosacījums un secinājums ir divu elementāru izteikumu konjunkcija<br />

vai disjunkcija. Atrast, ja tas ir iespējams, dotajam nosacījuma apgalvojumam ekvivalento<br />

apgalvojumu sistēmu (konjunkciju vai disjunkciju), kurā<br />

1) katra nosacījuma apgalvojuma nosacījums ir viens elementārs izteikums vai<br />

2) katra nosacījuma apgalvojuma secinājums ir viens elementārs izteikums.<br />

Vingrinājums 1.27. 2. Attīstīt matemātisko pierādījumu tehniku, risinot vienkāršus skolēnu<br />

matemātisko olimpiāžu uzdevumus.


NODAĻA 2<br />

KOMBINATORIKA<br />

2.1. IEVADS<br />

Kombinatorika (no latīņu valodas saknes ar nozīmi ”apvienošana”) - matemātikas nozare,<br />

kas nodarbojas ar saliktu diskrētas dabas objektu (kopu elementu, apakškopu, virkņu u.c.)<br />

skaitīšanu, vispārīgām skaitīšanas metodēm un likumsakarībām. Matemātikā skaitīšanu parasti<br />

saprot kā empīriskā, fizikālā skaitīšanas procesa paātrināšanu ar matemātiskām metodēm -<br />

efektīvi aprēķināmu formulu vai ātrākas darbības algoritmu iegūšanu. Tipisks kombinatorikas<br />

uzdevums ir skaitīt noteikta veida objektus, kas tiek kvantitatīvi raksturoti ar vienu vai varākiem<br />

paramet-riem, kas ir veseli skaitļi. Šādā gadījumā atbilde ir vairāk vai mazāk izsmeļoša informācija<br />

par objektu skaitu - slēgta formula elementāras funkcijas veidā, aprēķināšanas formula<br />

galīgas summas vai reizinājuma veidā, matemātiskās īpašības u.c. Par kombinatorikas<br />

sastāvdaļu uzskata arī diskrētās matemātikas formulu vienkāršošanu, speciāla veida diskrētu objektu<br />

konstruēšanu un skaitīšanas rezultātu izmantošanu matemātisku izteikumu pierādījumos.<br />

Mūsdienās kombinatorikas iemaņas tiek uzskatītas par obligātām tiem augstskolu studentiem, kas<br />

specializējas matemātikā vai datorzinātnēs, un vēlamas tiem, kas specializējas citās eksaktajās<br />

zinātnēs. Kombinatorikas pirmsākumi ir meklējami seno laiku un agro viduslaiku matemātiķu<br />

darbos, bet arī mūsdienās kombinatorika ir aktīvas pētnieciskas darbības arēna ar daudzām<br />

interesantām neatrisinātām problēmām.<br />

Datorspeciālistiem kombinatorika ir jāpārvalda šādu divu galveno iemeslu dēļ:<br />

(1) lai varētu sekmīgi apgūt vienu no tiem nepieciešamajām profesionālajām pamatiemaņām<br />

- novērtēt skaitļošanas resursus (skaitļošanai nepieciešamo laiku, atmiņu u.c. parametrus),<br />

kas nepieciešami dotā uzdevuma veikšanai;<br />

(2) lai varētu noteikt dotā tipa objektu biežumu vai proporciju (varbūtību) visu objektu<br />

kopā.<br />

Kombinatorikas pārvaldīšana palīdz datorspeciālistiem novērtēt, piemēram, cik ilgi strādās<br />

programma, cik atmiņas tai būs vajadzīgs, kādas datu struktūras ir optimālas dotā uzdevuma<br />

veikšanai, kādi ir optimālie algoritmi dotā uzdevuma atrisināšanai, kāda būs datortīkla noslodze<br />

ar doto lietotāju skaitu, kāda ir varbūtība, ka dotā datorsistēma darbosies noteiktu laika intervālu<br />

u.c. Kombinatorikas iemaņas tiks izmantotas kursos, kas ir saistīti ar datu struktūru un<br />

algoritmu projektēšanu un analīzi.<br />

Priekšzināšanas kombinatorikas apgūšanai ietver šādus matemātikas pamatjēdzienus, kas<br />

parasti tiek apgūti diskrētās matemātikas pamatkursā: kopa, apakškopa, multikopa, n-multikopa,<br />

apakšmultikopa, virkne, operācijas ar kopām, kopu tiešais reizinājums, injektīva, surjektīva, bijektīva<br />

funkcija, faktoriāls: n! = n(n − 1) · ... · 2 · 1 . Lietderīgas ir arī reālo skaitļu funkcijas [x]<br />

(skaitļa x veselā daļa) un ⌈x⌉ (skaitļa x ”griesti” - mazākais veselais skaitlis, kas nav mazāks kā<br />

x). Atgādināsim arī šādu kopu teorijas pamatfaktu: galīgas kopas apjomu (ekvivalences klasi<br />

attiecībā uz kopu vienlieluma attieksmi) var identificēt ar kopas elementu skaitu.<br />

Piemērs 2.1. Ir dots veselu skaitļu masīvs (a 1 , ..., a 1000 ). Risinot kādu uzdevumu, algoritmā<br />

tiek pieprasīts apskatīt visus iespējamos sakārtotos pārus (a i , a j ). Cik laika tam ir nepieciešams,<br />

ja viena pāra apstrādāšana aizņem 1 sekundi? Cik atmiņas būs vajadzīgs visu pāru saglabāšanai,<br />

ja katrs skaitlis aizņem 1 baitu?<br />

17


2.2. KOMBINATORIKAS PAMATPRINCIPI 18<br />

2.2. KOMBINATORIKAS PAMATPRINCIPI<br />

Jebkura kombinatorikas uzdevuma risināšana sastāv no diviem svarīgiem soļiem:<br />

1) skaitāmo objektu uzdošanas (kodēšanas) ērtos matemātiskos terminos;<br />

2) kombinatorikas metožu pielietošanas uzdevuma atrisināšanai.<br />

Parasti kombinatorikas objekti var tikt uzdoti vienkāršos diskrētās vai nepārtrauktās matemātikas<br />

terminos kā virknes fiksētā alfabētā vai apakškopas ar noteiktām īpašībām fiksētā kopā.<br />

Diezgan bieži tiek izmantotas binārās virknes (virknes alfabētā {0, 1}). Kodēšana ar virkņu<br />

palīdzību ir iespējama arī tad, ja skaitāmie objekti nav lineāri, piemēram, ja tos ērtāk ir uzdot<br />

kā skaitļu tabulas vai ǧeometriskus objektus. Svarīgs kodēšanas veids ir kodēšana ar vienkāršu<br />

skaitļošanas mašīnu valodu palīdzību šādā veidā. Var definēt primitīvas skaitļošanas mašīnas,<br />

kas nolasa simbolus no lentas, maina savu iekšējo stāvokli un stāvokli uz lentas. Šīm mašīnām<br />

ir izdalīti beigu jeb pieņemošie stāvokļi. Par dotās mašīnas valodu sauksim to vārdu kopu<br />

dotajā alfabētā, kuras elementus pieņem šī mašīna. Papildus tam tiek izmantotas arī dažādas<br />

ǧeometriskās kodēšanas metodes, piemēram, virkņu vai apakškopu kodēšana plaknes vai telpas<br />

līniju veidā. Pareiza skaitāmo objektu kodēšana ir svarīgs un bieži vien pat kritisks solis<br />

uzdevuma atrisināšanā. Pētāmo objektu kodēšana var tikt veikta dažādos veidos, lai atrisinātu<br />

uzdevumu, ir jāizvēlas pietiekoši ērts kodēšanas veids.<br />

Skaitāmie objekti parasti ir atkarīgi no viena vai vairākiem diskrētiem parametriem, kas<br />

pieņem vērtības naturālo skaitļu kopā.<br />

Kombinatorikas uzdevumi var būt saistīti gan ar tādu objektu skaitīšanu, kuru sastāvdaļas<br />

- atomi tiek kodētas kā ”iezīmētas”, gan arī ar objektiem, kuru sastāvdaļas nav atšķiramas -<br />

”neiezīmētas”.<br />

Piemērs 2.2. Bināru virkni ar garumu n un m vieniniekiem var interpretēt kā vismaz 3<br />

dažādu objektu kodu. To var interpretēt kā n-kopas m-apakškopas bitu vektoru. Definēsim<br />

naturāla skaitļa kompozīciju kā tā pierakstu sakārtotas naturālu skaitļu summas veidā. Ja ir<br />

dota skaitļa n + 1 kompozīcija n + 1 = a 1 + ... + a m+1 , tad definēsim bināru virkni {b 1 , ..., b m }<br />

ar nosacījumu b i = 1 tad un tikai tad, ja i ir izsakāms formā i = a 1 + ... + a k kādam k. Ja ir<br />

dots maršruts plaknē no punkta (0, 0) līdz punktam (m, n − m) ar atļautiem soļiem x = (1, 0)<br />

un y = (0, 1) veidā s 1 ...s n , tad piekārtosim tam bināru virkni {z 1 , ..., z n }, kur z i = 1, ja s i = x<br />

un z i = 0, ja s i = y.<br />

Piemērs 2.3. Ir dots kubs ar izmēriem n × n × n , kas sastāv no n 3 mazākiem kubiem ar<br />

izmēriem 1×1×1 . Šajā kubā divi cilvēki spēlē spēli ”Krustiņi-nullītes”. Cik ir dažādu vinnējošo<br />

kubiņu virkņu? Lai eleganti atrisinātu šo uzdevumu, iekodēsim vinnējošās virknes šādā veidā.<br />

Konstruēsim dotā kuba ”apvalku” - kuba ar izmēriem (n + 2) × (n + 2) × (n + 2) un dotā kuba<br />

starpību. Katra vinnējošā virkne ”caururbj” apvalku tieši divās vietās, tātad vinnējošo virkņu<br />

skaits ir divreiz mazāks nekā apvalka kubiņu skaits, tātad atbilde ir<br />

(n + 2) 3 − n 3<br />

.<br />

2<br />

Šajā gadījumā vinnējošo virkņu kodēšana tiek veikta ar apvalka palīdzību.<br />

Piemērs 2.4. Izmantojot permutācijas sadalījumu ciklos, to var iekodēt kā ciklu apvienojumu.<br />

Zemāk šajā nodaļā mēs uzskaitīsim vienkāršākos skaitīšanas principus, uz kuriem balstās<br />

kombinatorika. Sāksim ar šādu vienkāršu novērojumu. Galīgas kopas A elementu skaitu |A| var<br />

interpretēt kā kopas A elementu skaitīšanas rezultātu, kura katrs elements tiek skaitīts vienu<br />

reizi (ar svaru 1):<br />

(2.1) |A| = ∑ a∈A<br />

1.


2.2. KOMBINATORIKAS PAMATPRINCIPI 19<br />

2.2.1. Rekursijas (skaldi un valdi!) likums. Risinot kombinatorikas uzdevumus, ir<br />

lietderīgi sadalīt skaitāmos objektus mazākās daļās, atkārtojot šo soli vairākas reizes, kamēr<br />

skaitīšanas uzdevums kļūst ļoti vienkāršs. Skaitāmo objektu dalīšana mazākās daļās var tikt<br />

veikta dažādos veidos:<br />

• sadalot objektu uz pusēm;<br />

• sadalot objektu daļās pēc to strukturālām īpašībām;<br />

• atmetot vienu simbolu virknes galā vai kādā noteiktā vietā, ja skaitāmie objekti ir<br />

iekodēti kā virknes.<br />

Plaši izplatīts šī principa pielietošanas piemērs ir rekurento sakarību metode, kurai šajā grāmatā<br />

ir veltīta nodaļa.<br />

2.2.2. Summas likums. Ja A = A 1 ∪ A 2 un A 1 ∩ A 2 = ∅, tad<br />

|A| = |A 1 | + |A 2 |.<br />

Šo likumu izmanto, ja skaitāmo objektu kopu var sadalīt vairākās šķirtās daļās, katrā no<br />

kurām šos objektus var skaitīt neatkarīgi un, iespējams, pat ar dažādām metodēm. Summas<br />

likumu var vispārināt arī uz vairāku šķirtu kopu apvienojuma gadījumu: ja A = A 1 ∪A 2 ∪...∪A n<br />

un A i ∩ A j = ∅ visiem i ≠ j, tad<br />

n∑<br />

|A| = |A 1 | + A 2 | + ... + |A n | = |A i |.<br />

i=1<br />

Piemērs 2.5. Ja no pilsētas A var aizbraukt uz pilsētu B caur pilsētām C vai D N C vai N D<br />

veidos, tad kopējais ceļu skaits no A uz B ir vienāds ar N C + N D (skatīt 2.1.attēlā).<br />

C<br />

A<br />

B<br />

D<br />

2.1. attēls. Summas likuma pielietošanas ilustrācija<br />

Pielietojot summas likumu, var sastapties ar dažādiem iespējamo variantu skaita sadalījumiem:<br />

1) varianti var būt sadalīti ”vienmērīgi” pa kopām A i ;<br />

2) dažas kopas A i ir jāuzskata par īpašiem speciālgadījumiem, kuros variantu skaits ir<br />

būtiski mazāks nekā citās kopās.<br />

Ir uzdevumi, kuros elementi dažādās kopās ir jāskaita ar dažādām metodēm. Var būt arī<br />

nepieciešams pielietot summas likumu vairākas reizes viena uzdevuma risināšanas gaitā.<br />

2.2.3. Reizināšanas likums. Ja A = B × C, tad<br />

|A| = |B| · |C|.<br />

Šo likumu izmanto, ja skaitāmos objektus var uzdot kā virknes, kuru elementi var tikt skaitīti<br />

pēctecīgi neatkarīgi viens no otra. Kopas B un C var būt gan fiksētas, gan arī atkarīgas viena


2.2. KOMBINATORIKAS PAMATPRINCIPI 20<br />

no otras. Reizināšanas likumu var vispārināt arī uz vairāku kopu tiešā reizinājuma gadījumu: ja<br />

A = A 1 × A 2 × ... × A n , tad<br />

n∏<br />

|A| = |A 1 | × |A 2 | × ... × |A n | = |A i |.<br />

Piemērs 2.6. Pieņemsim, ka visi ceļi no A uz B iet caur C. Ja no A uz C var aizbraukt<br />

N AC veidos un no C uz B var aizbraukt N CB veidos, tad no A uz C var aizbraukt N AC × N CB<br />

veidos, jo katru ceļu no A uz C var uzdot kā sakārtotu elementu pāri (u, v), kur u ir ceļš no A<br />

uz C un v ir ceļš no C uz B.<br />

i=1<br />

N AC<br />

N CB<br />

A C B<br />

2.2. attēls. Reizināšanas likuma pielietošanas ilustrācija<br />

2.2.4. Dalīšanas likums. Ja kopa A ir sadalīta m elementus lielās apakškopās, tad šādu<br />

apakškopu skaits ir vienāds ar<br />

|A|<br />

m .<br />

Šo likumu izmanto, ja skaitāmo objektu kopu var sadalīt vienāda un zināma lieluma apakškopās,<br />

kuru skaitu var noteikt relatīvi viegli. Dalīšanas likumu var formulēt, izmantojot funkcijas: ja ir<br />

dotas divas galīgas kopas A un B un funkcija f : A → B ar īpašību |f −1 (b)| = m katram b ∈ B<br />

(citiem vārdiem sakot, tieši m elementi tiek sūtīti uz katru kopas B elementu), tad |B| = |A|<br />

m .<br />

Piemērs 2.7. Cik ir divu elementu apakškopu kopa, kas satur 10 elementus? No sākuma<br />

atradīsim, cik ir sakārtotu dažādu elementu pāru 10 elementu kopā. Tā kā sakārtots dažādu<br />

elementu pāris ir elements kopas Dekarta kvadrātā, tad saskaņā ar reizināšanas likumu, šādu pāru<br />

skaits ir 10(10 − 1) = 90. Katru divu elementu apakškopu var sakārtot divos veidos: pirmais<br />

veids ir tāds, ka pirmais elements ir mazāks nekā otrais, un otrais tāds, ka pirmais elements<br />

ir lielāks nekā otrais. Tādējādi visa sakārtoto pāru kopa ir sadalīta divās vienādas daļās un<br />

meklējamais apakškopu skaits ir vienāds ar elementu skaitu jebkurā no šīm daļām. Atbilde ir<br />

vienāda ar 90<br />

2 = 45.<br />

2.2.5. Vienlieluma likums. Ja eksistē bijektīva (savstarpēji viennozīmīga) funkcija no<br />

galīgas kopas A uz galīgu kopu B, tad<br />

|A| = |B|.<br />

Šo likumu izmanto, ja dotajā kopā B ir grūti saskaitīt elementus, bet eksistē un ir viegli redzama<br />

kāda cita kopa A, kuras elementus ir iespējams relatīvi viegli saskaitīt, un bijektīva funkcija no<br />

A uz B. Vienlieluma likumu sauksim arī par skaitīšanu ar bijekcijas palīdzību. Pielietojot šo<br />

metodi, ir iespējami šādi gadījumi:<br />

1) kopa B pēc savas dabas būtiski atšķiras no kopas A, tādējādi kopas B ieviešana būtiski<br />

izmaina uzdevuma risināšanas gaitu;<br />

2) kopa B atšķiras no kopas A ar tādām detaļām, kas tikai palīdz atrisināt uzdevumu,<br />

neizmainot to būtiski.<br />

Piemērs 2.8. Pieņemsim, ka katram studentam pieder tieši viena cepure. Lai saskaitītu studentus,<br />

pietiek saskaitīt to cepures, un otrādi, lai saskaitītu cepures, pietiek saskaitīt studentus.<br />

Piemērs 2.9. Katrai kopas {1, ..., n} permutācijai var viennozīmīgi piekārtot tās sadalījumu<br />

neatkarīgajos ciklos, un otrādi, katram n elementu kopas sadalījumam permutāciju ciklu kopā<br />

var viennozīmīgi piekārtot atbilstošo permutāciju. Līdz ar to ir pierādīts, ka n elementu lielas<br />

kopas permutāciju skaits ir vienāds ar n elementus lielas kopas permutāciju ciklu kopu skaitu.<br />

Vienlieluma likumu vispārināt, ja ir dota patvaļīga funkcija f : A → B.


2.2. KOMBINATORIKAS PAMATPRINCIPI 21<br />

Teorēma 2.10. Ja A un B ir galīgas kopas un f ir funkcija no A uz B, tad<br />

1) ja f ir injektīva funkcija, tad<br />

2) ja f ir sirjektīva funkcija, tad<br />

3) ja f ir bijektīva funkcija, tad<br />

|A| ≤ |B|,<br />

|A| ≥ |B|,<br />

|A| = |B|.<br />

Pierādījums. Visi apgalvojumi seko no funkciju speciālgadījumu definīcijām. QED<br />

Piemērs 2.11. Pieņemsim, ka katram studentam pieder ne vairāk kā viena cepure. Lai<br />

novērtētu studentu skaitu no apakšas, pietiek saskaitīt cepures. Lai novērtētu cepuru skaitu no<br />

augšas, pietiek saskaitīt studentus. Šajā gadījumā kopa A ir cepuru kopa, kopa B ir studentu<br />

kopa un funkcija f katrai cepurei piekārto tās īpašnieku, līdz ar to f ir injektīva funkcija.<br />

Ja ir dota funkcija f : A → A, tad interesantus kombinatoriskus rezultātus var iegūt pētot<br />

tās sadalījumu neatkarīgos ciklos.<br />

2.2.6. Skaitīšana izmantojot papildinājumu. Šo metodi izmanto, ja ir vieglāk noteikt<br />

elementu skaitu sākotnējās kopas papildinājumā un universā nekā sākotnējā kopā, kuras elementus<br />

ir uzdots saskaitīt. Apzīmēsim universu ar U, tad<br />

un<br />

U = A ∪ (U\A), |U| = |A| − |U\A|<br />

|A| = |U| − |U\A|.<br />

Ja kopa A tiek definēta ar kādu nosacījumu P , tad kopa U\A tiek definēta ar nosacījumu ¬P<br />

un šo kopu elementu skaitīšanas grūtības pakāpes var būt dažādas.<br />

Piemērs 2.12. Izmantojot papildināšanas metodi atradīsim, cik ir divu dažādu elementu<br />

virkņu (sakārtotu pāru) kopā, kas satur 10 elementus. Saskaņā ar reizināšanas likumu ir 10 · 10<br />

dažādu sakārtotu pāru, no kuriem 10 pāros abi elementi ir vienādi. Sakārtotā elementu pārī<br />

elementi var būt vai nu vienādi, vai arī dažādi, tāpēc pāru skaits ar dažādiem elementiem ir<br />

vienāds ar 100 − 10 = 90.<br />

Piemērs 2.13. Ir dota pilsēta, kuras pašvaldība plāno uzsākt ielu remontu. Ir zināms, ka<br />

98% ielu ir jāremontē. Kā uzdot remontējamās ielas? Acīmredzams risinājums ir šāds: pārskaitīt<br />

ielas, kuras NAV jāremontē.<br />

2.2.7. Skaitīšana divos dažādos veidos. Šo metodi izmanto, lai vienkāršotu formulas.<br />

Skaitot vienas galīgas kopas elementus divos vai vairāk veidos, atbilde, protams, ir viena un tā<br />

pati, bet tā var būt izteikta un interpretēta dažādos veidos, kurus analizējot var iegūt interesantus<br />

kombinatoriskus rezultātus. Par šo metodi var domāt arī kā par saskaitāmo kārtības maiņu<br />

summā.<br />

Klasisks šī principa pielietošanas piemērs un ilustrācija ir skaitļu tabulas (matricas) elementu<br />

skaitīšana. Skaitļu tabulas elementu summu var atrast divos veidos:<br />

1) no sākuma saskaitīt skaitļu summu katrā rindā, pēc tam atrast visu šādi iegūto skaitļu<br />

(katras rindas locekļu summu) summu;<br />

2) no sākuma saskaitīt skaitļu summu katrā kolonnā, pēc tam atrast visu šādi iegūto skaitļu<br />

(katras kolonnas locekļu summu) summu.<br />

Ir skaidrs, ka abi paņēmieni dos vienu rezultātu, jo summa nemainās, ja saskaitāmos maina<br />

vietām.


2.2. KOMBINATORIKAS PAMATPRINCIPI 22<br />

2.3. attēls. Matricas elementu summas skaitīšana divos dažādos veidos<br />

2.2.8. Dirihlē princips. Risinot dažādus kombinatorikas uzdevumus, nereti nākas noteikt,<br />

cik daudzi no apskatāmajiem objektiem apmierina kādu īpašību. Šī uzdevuma atrisināšanai ir<br />

lietderīgi domāt par doto īpašību kā par objektu ievietošanu kastēs vai kā par objektu kopas<br />

attēlošanu uz īpašības vērtību kopu. Šādā interpretācijā objektu skaits ar doto īpašību ir<br />

vienāds ar to skaitu atbilstošajā kastē vai ar atbilstošās īpašības vērtības inversā attēla elementu<br />

skaitu. Atbilstošo kombinatorikas principu sauksim par Dirihlē principu (par godu matemātiķim<br />

L.Dirihlē). Dirihlē princips (”baložu būru princips”):<br />

• vienkāršākajā (klasiskajā) formā - sadalot n + 1 elementus lielu kopu n apakškopās,<br />

vismaz viena apakškopa satur vismaz divus elementus (saliekot n + 1 baložus n būros,<br />

vismaz vienā būrī ir vismaz divi baloži);<br />

• klasiskā formā izmantojot funkcijas - funkcija no n + 1 elementus lielas kopas uz n<br />

elementus lielu kopu nevar būt injektīva;<br />

• vispārīgā formā izmantojot funkcijas - ja A un B ir galīgas kopas un |A| > |B|, tad<br />

jebkurai funkcijai f : A → B eksistē divi dažādi elementi a 1 ∈ A un a 2 ∈ A, kuriem<br />

izpildās nosacījums f(a 1 ) = f(a 2 );<br />

• daļveida formā - sadalot m elementus lielu kopu k apakškopās, vismaz viena apakškopa<br />

satur vismaz ⌈ m ⌉ elementus, kur ⌈x⌉ ir skaitļa x ”griesti” (mazākais veselais skaitlis,<br />

k<br />

kas nav mazāks kā x);<br />

• bezgalīgajā formā - sadalot bezgalīgu kopu galīga skaita apakškopās, vismaz viena<br />

apakškopa būs bezgalīga.<br />

Dirihlē principu izmanto gan kombinatorikā, gan ǧeometrijā.<br />

Piemērs 2.14. Jebkuru astoņu cilvēku kolektīvā ir divi, kas ir dzimuši vienā nedēļas dienā.<br />

Jebkurā 25 cilvēku grupā eksistē 4 cilvēki, kas ir dzimuši vienā nedēļas dienā. Ja kvadrātā ar<br />

malas garumu 2 tiek ievietoti 5 punkti, tad vismaz divi no tiem atrodas attālumā ne mazāk kā<br />

√<br />

2 viens no otra.<br />

2.2.9. Vingrinājumi.<br />

Vingrinājums 2.15. Cik veidos uz šaha galdiņa var izvietot divus torņus (dāmas, karaļus,<br />

laidņus, zirgus) tā, lai tie neapdraudētu viens otru? Atgādināsim, ka šaha galdiņš ir kvadrāts<br />

ar izmēriem 8 × 8, kura rūtiņas ir iekrāsotas baltā un melnā krāsā tā, ka nekādas divas rūtiņas,<br />

kurām ir kopīga šķautne, nav vienā krāsā. Dāma var pārvietoties pa horizontāli, vertikāli vai<br />

diagonāli pa jebkuru skaitu rūtiņu. Karalis var pārvietoties horizontāli, vertikāli vai diagonāli<br />

pa vienu rūtiņu. Laidnis var pārvietoties pa diagonāli pa jebkuru skaitu rūtiņu. Zirgs var<br />

pārvietoties divus soļus horizontālā virzienā un vienu - vertikālā virzienā vai otrādi.<br />

Vingrinājums 2.16. Cik veidos naturālu skaitli n var uzrakstīt kā sakārtotu naturālu skaitļu<br />

summu?<br />

Vingrinājums 2.17. 15 cilvēki kopā salasīja 100 ābolus. Pierādīt, ka eksistē divi cilvēki,<br />

kas salasīja vienādu ābolu skaitu.<br />

Vingrinājums 2.18. Pierādīt, ka jebkurā cilvēku kopā A ir divi cilvēki, kuriem draugu skaits<br />

kopā A ir vienāds.


2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 23<br />

Vingrinājums 2.19. Studentu grupa, kurā ir 41 cilvēks, nokārtoja sesiju, kurā bija trīs<br />

eksāmeni. Visi studenti saņēma atzīmes 4, 5, vai 6. Pierādīt, ka vismaz pieci studenti nokārtoja<br />

sesiju ar vienādām atzīmēm.<br />

Vingrinājums 2.20. Katra no divām binārajām virknēm satur n nulles un n vieniniekus.<br />

Pierādīt, ka vienu no šīm virknēm var cikliski nobīdīt tā, ka nobīdītā virkne sakrīt ar otru virkni<br />

n vietās.<br />

Vingrinājums 2.21. Taisnstūrī ar izmēriem 3×4 ir atzīmēti seši punkti. Pierādīt, ka eksistē<br />

divi punkti, starp kuriem attālums nav lielāks kā √ 5.<br />

Vingrinājums 2.22. Ir dots kvadrāts ar malas garumu 1. Cik punktu ir jāatzīmē šajā<br />

kvadrātā, lai garantēti eksistētu n punkti ar šādu nosacījumu: attālums starp jebkuriem diviem<br />

punktiem nepārsniedz α, kur α > 0?<br />

Vingrinājums 2.23. Pierādīt, ka katra dažādu reālu skaitļu virkne ar garumu n 2 + 1 satur<br />

vai nu augošu virkni ar garumu n vai arī dilstošu virkni ar garumu n.<br />

2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI<br />

Daži kombinatorikas uzdevumi tiek bieži izmantoti kā apakšuzdevumi citos sarežǧītākos uzdevumos,<br />

tāpēc tos mēs apskatīsim atsevišķi šajā nodaļā.<br />

2.3.1. Variācijas ar atkārtojumiem. Cik veidos var konstruēt m vienības garas virknes,<br />

kurās var būt n dažādu tipu elementi, kas var atkārtoties (n-multikopas elementi), šo skaitli<br />

apzīmēsim ar Ām n . Termins variācija ir termina virkne sinonīms.<br />

Lai atrisinātu šo uzdevumu, izmantosim reizināšanas likumu. Skaitīsim, cik dažādu m<br />

vienības garu virkņu var izveidot no n tipu neierobežoti lielas multikopas (n-multikopas). Veidosim<br />

šādas virknes, sākot no kreisās malas. Virknes pirmo elementu var izvēlēties n veidos,<br />

virknes otro elementu neatkarīgi no pirmā var izvēlēties n veidos, tātad pirmos divus virknes<br />

elementus var izvēlēties n × n = n 2 veidos,..., visus virknes m elementus var izvēlēties n m veidos.<br />

Iegūstam, ka<br />

(2.2) Ā m n = n } · n {{ · ... · n}<br />

= n m .<br />

m<br />

Piemērs 2.24. Cik dažādos veidos var izvēlēties piecciparu tālruņa numuru? Katru no<br />

pieciem cipariem var neatkarīgi izvēlēties 10 veidos, cipari var atkārtoties, tāpēc atbilde ir vienāda<br />

ar A 5 10 = 10 5 .<br />

Parādīsim, ka Ām n var interpretēt kā visu funkciju skaitu no m elementu kopas uz n elementu<br />

kopu. Uzdot funkciju no m elementu kopas A uz n elementu kopu B ir tas pats, kas uzdot<br />

sakārtotu virkni (iespējams, ar atkārtojumiem, ja funkcija nav injektīva): funkciju f : A → B<br />

viennozīmīgi uzdot ar virkni<br />

(f(a 1 ), ..., f(a m )),<br />

} {{ }<br />

m<br />

kuras elementi ir kopas B elementi. Otrādi, katrai m elementus garai virknei, kuras elementi<br />

pieder kopai B, var viennozīmīgi piekārtot atbilstošo funkciju. Tādējādi ir nodibināta bijektīva<br />

atbilstība starp virknēm un funkcijām.<br />

Ā m 2 var interpretēt arī kā visu m elementu lielas kopas apakškopu skaitu, jo katru apakškopu<br />

var uzdot kā funkciju no šādas kopas uz divu elementu kopu 0, 1, kas elementam piekārto 1, ja<br />

tas pieder apakškopai, un 0, ja nepieder. Tādējādi m elementu lielas kopas visu apakškopu skaits<br />

ir vienāds ar 2 m .


2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 24<br />

2.3.2. Variācijas bez atkārtojumiem. Cik ir dažādu m vienības garu virkņu, kurās var<br />

būt dotās n elementus lielas kopas elementi, šo skaitli apzīmēsim ar A m n . Atšķirībā no iepriekšējā<br />

uzdevuma elementi virknē nevar atkārtoties, jo tie tiek izvēlēti no kopas.<br />

Arī šajā gadījumā izmantosim reizināšanas likumu. Skaitīšanu veiksim, konstruējot visas<br />

iespējamās virknes. Konstruēsim virknes, pievienojot jaunus elementus labajā pusē. Virknes<br />

pirmo elementu (sākot no kreisās puses) var izvēlēties n veidos, virknes otro elementu (ja pirmais<br />

elements jau ir izvēlēts) var izvēlēties neatkarīgi no pirmā n − 1 veidā. Tātad saskaņā<br />

ar reizinājuma likumu pirmos divus virknes elementus var izvēlēties n(n − 1) dažādos veidos.<br />

Spriežot līdzīgi, redzam, ka pirmos trīs virknes elementus var izvēlēties n(n − 1)(n − 2) dažādos<br />

veidos. Turpinot šo spriedumu, iegūstam, ka kopējais dažādu virkņu skaits ir n(n−1)...(n−m+1),<br />

tātad<br />

(2.3) A m n = n(n − 1) · ... · (n − m + 1) =<br />

n!<br />

(n − m)! .<br />

Piemērs 2.25. Cik dažādos veidos var nostādīt ierindā piecus cilvēkus no desmit cilvēku<br />

lielas grupas? Atbilde ir vienāda ar A 5 10 = 10 · 9 · 8 · 7 · 6 = 30240.<br />

Svarīgs speciālgadījums ir A n n = n! (n elementus lielu kopu var sakārtot n! veidos). A n n<br />

apzīmēsim ar P n un sauksim par n elementus lielas kopas permutāciju skaitu. Naturāliem<br />

skaitļiem m un n definēsim A m n = 0, ja m > n. Ar formulu<br />

(2.4) A m a = a(a − 1) · ... · (a − m + 1)<br />

varam definēt skaitļus A m a arī tad, ja a ir jebkurš reāls un ne obligāti naturāls skaitlis.<br />

A m n ir vienāds ar injektīvu funkciju skaitu no m elementu lielas kopas uz n elementus lielu<br />

kopu tāpēc, ka injektīvas funkcijas uzdošana ir ekvivalenta virknes bez atkārtojumiem uzdošanai.<br />

Gadījumā, kad m = n mēs iegūstam visu injektīvu un tātad arī bijektīvu funkciju skaitu no n<br />

elementu kopas uz n elementu kopu, ko var interpretēt arī kā n elementus lielas kopas permutāciju<br />

jeb sakārtojumu skaitu.<br />

Pierādīsim, ka visu iespējamo virkņu bez atkārtojumiem (ieskaitot tukšo virkni) skaits V n<br />

kopai ar n elementiem ir vienāds ar [n! · e], ja n > 1. Tiešām, šis skaitlis ir vienāds ar<br />

n∑ n∑<br />

A i n!<br />

n∑<br />

n =<br />

(n − i)! = n!<br />

n∑<br />

i! = n! 1<br />

i! .<br />

i=0<br />

i=0<br />

Tagad ievērosim, ka iegūtā summa ir funkcijas e x Teilora rindas parciālsumma, kad izvirzījuma<br />

punkts ir 0 un x = 1, un tātad<br />

n! · e − V n = 1<br />

n + 1 + 1<br />

(n + 1)(n + 2) + ... < ∑ i≤1<br />

Redzam, ka skaitļa n! · e veselā daļa ir vienāda ar V n .<br />

i=0<br />

i=0<br />

1<br />

(n + 1) = 1<br />

i n + 1 ( 1<br />

1 − 1 ) = 1 n ≤ 1.<br />

n+1<br />

2.3.3. Kombinācijas bez atkārtojumiem. Cik ir dažādu m elementus lielu apakškopu<br />

kopā, kas satur n elementus? Šo skaitli apzīmēsim ar Cm n (Austrumeiropā pieņemts apzīmējums)<br />

vai ( n<br />

m)<br />

(Rietumos un Rietumu puslodē pieņemts apzīmējums). Termins kombinācija kā apakškopas<br />

sinonīms ir matemātiska tradīcija, kas pakāpeniski atmirst.<br />

Atradīsim Cn m , izmantojot dalīšanas likumu. Saskaņā ar spriedumu, ar kura palīdzību mēs<br />

aprēķinājām A m n , katru m elementus lielu apakškopu var sakārtot m! veidos, tātad vienai m<br />

elementus lielai apakškopai atbilst m! sakārtotas virknes, tātad ir spēkā vienādības<br />

A m n = Cn m m!<br />

un<br />

(2.5) Cn m = Am n<br />

m! = n!<br />

(n − m)!m! .


2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 25<br />

Piemērs 2.26. Cik dažādos veidos var izvēlēties piecus cilvēkus no desmit cilvēku lielas<br />

grupas? Atbilde ir vienāda ar C 5 10 = 10·9·8·7·6<br />

5·4·3·2·1 = 252.<br />

Ja m > n, tad definēsim C m n<br />

(2.6) C m a =<br />

= 0. Ar formulu<br />

a(a − 1) · ... · (a − m + 1)<br />

m!<br />

divu argumentu funkciju Ca<br />

m var definēt arī patvaļīgām (ne obligāti veselām) argumenta a<br />

vertībām. Arī šajā gadījumā definēsim Ca m = 0, ja m > a.<br />

Skaitļiem Cn<br />

m ir vēl vairākas lietderīgas interpretācijas:<br />

• Cn<br />

m var interpretēt kā n vienības garu bināru virkņu skaitu, kurās ir m vieninieki, jo<br />

katrai n elementus lielas kopas m-apakškopai var viennozīmīgi piekārtot n vienības<br />

garu bināru virkni ar m vieniekiem, un, otrādi, katrai binārai virknei var viennozīmīgi<br />

piekārtot apakškopu šādā veidā: sakārtojam kopas elementus virknē (ar garumu n), ja<br />

elements x ir dotajā apakškopā, tad attiecīgajā vietā rakstām 1, ja nē, tad 0, katrai<br />

apakškopai viennozīmīgi atbilst tieši viena bināra virkne,<br />

• Cn<br />

m var interpretēt kā fiksēta garuma augošu (dilstošu) virkņu skaitu pilnīgi sakārtotā<br />

kopā: katru m-apakškopu n elementus lielā pilnīgi sakārtotā kopā var sakārtot augošā<br />

vai dilstošā kārtībā tieši vienā veidā, otrādi, katrai augošai vai dilstošai virknei var<br />

viennozīmigi piekārtot atbilstošo apakškopu,<br />

• Cn<br />

m var interpretēt kā koeficientus, ko iegūst, atverot iekavas izteiksmē (a + b) n , šo<br />

faktu var pierādīt, izmantojot matemātisko indukciju, to var vispārināt uz gadījumu,<br />

kad kāpinātājs nav vesels skaitlis (binomiālā teorēma):<br />

(1 + x) r = ∑ i≥0<br />

C i rx i ,<br />

šādā gadījumā summa ir bezgalīga un sakrīt ar kreisās puses funkcijas Teilora rindu.<br />

Pārskaitīsim dažas vienkāršākās skaitļu Cn<br />

m īpašības:<br />

1) Cn 0 = 1, Cn 1 = n, Cn n = 1;<br />

2) Cn m = Cn n−m ;<br />

3) Cn m + Cn m+1 = Cn+1 m+1 (Paskāla trijstūra īpašība);<br />

4) ∑ n<br />

i=0 Ci n = 2 n (visu apakškopu skaits ir vienāds ar 2 n )<br />

Piemērs 2.27. Apskatīsim kādu formulu vienkāršošanas uzdevumu, kurā ir iesaistīti skaitļi<br />

Cn<br />

m un kurš ilustrē arī kombinatorikas pamatprincipu ”skaitīšana divos dažādos veidos”. Vienkāršosim<br />

summu<br />

n∑<br />

S n = Cnk.<br />

k<br />

Redzam, ka<br />

k=1<br />

S n = s 1 + s 2 + ... + s n ,<br />

kur s k = C k nk. Skaitli s k var interpretēt kā visu to veidu skaitu, kā no n elementu lielas kopas<br />

izvēlēties k elementus lielu apakškopu un vienu šīs apakškopas elementu. Mainot i, mēs iegūsim<br />

dažādas apakškopas, tātad, izmantojot summas likumu, redzam, ka S n ir vienāds ar visu veidu<br />

skaitu, kā no n elementu lielas kopas izvēlēties (netukšu) apakškopu un vienu šīs apakškopas<br />

elementu (piemēram, kādas cilvēku grupas komiteju kopā ar tās priekšsēdi). Cik dažādos veidos<br />

to var izdarīt? Redzam, ka saskaņā ar reizināšanas likumu<br />

S n = n · 2 n−1<br />

- no sākuma izvēlamies priekšsēdi, pēc tam jebkuru, iespējams, tukšu, apakškopu no atlikušās<br />

cilvēku kopas.


2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 26<br />

2.3.4. Kombinācijas ar atkārtojumiem. Cik ir dažādu m elementus lielu apakšmultikopu<br />

multikopā, kas satur n dažādu tipu elementus neierobežotā skaitā (n-multikopa)? Šo skaitli<br />

apzīmēsim ar ¯C n m .<br />

Atrisināsim šo uzdevumu ar vienlieluma likuma metodi - piekārtosim savstarpēji viennozīmīgi<br />

katrai apakšmultikopai noteikta veida bināru virkni. Katrai apakšmultikopai ar dotajām īpašībām<br />

piekārtosim bināru virkni šādā veidā:<br />

1) sanumurēsim n-multikopas elementu tipus ar naturāliem skaitļiem no 1 līdz n;<br />

2) pieņemsim, ka apakšmultikopā ir r i elementi, kuru tips ir i ( ∑ n<br />

i=1 r i = m), sākot no<br />

kreisās puses rakstīsim r 1 nulles un 1 vieninieku, r 2 nulles un 1 vieninieku,..., r n nulles<br />

un 1 vieninieku (piemēram, ja elementu tipi ir kopā {1, 2, 3}, tad apakšmultikopai<br />

{1, 1, 1, 2, 2, 3} atbilst bināra virkne (0, 0, 0, 1, 0, 0, 1, 0, 1)).<br />

Iegūsim viennozīmīgi definētu virkni, kurā ir m nulles un n − 1 vieninieks. Otrādi, katrai šādai<br />

virknei atbilst viena vienīga apakšmultikopa ar dotajām īpašībām. Tātad meklējamais multikopu<br />

skaits ¯C n<br />

m ir vienāds ar tādu bināru virkņu skaitu, kuras satur m nulles un n − 1 vieninieku, jo<br />

ir konstruēta bijektīva funkcija no mūs interesējošās apakšmultikopu kopas uz aprakstīto bināro<br />

virkņu kopu. Saskaņā ar iepriekš pierādīto bijekciju starp binārām virknēm un apakškopām, šis<br />

skaits ir vienāds ar n − 1 elementu lielu apakškopu skaitu n + m − 1 elementus lielā kopā, tātad<br />

(2.7) ¯Cm n = C n−1<br />

n+m−1 = C m n+m−1.<br />

Piemērs 2.28. Veikalā ir 5 dažādu veidu markas neierobežotā skaitā. Cik dažādos veidos var<br />

iegādāties 10 marku komplektu? Redzam, ka mums ir jāatrod 10 elementus lielu apakšmultikopu<br />

10<br />

skaits multikopā, kas satur 5 tipu elementus. Atbilde ir vienāda ar ¯C 5 = C14 4 = 1001.<br />

2.3.5. Apakškopu virkņu skaits. Cik veidos kopu, kas satur n elementus, var sadalīt<br />

k apakškopu virknē tā, ka i-tā apakškopa satur m i elementus, kur ∑ k<br />

i=1 m i = n, šo skaitli<br />

apzīmēsim ar C m 1,m 2 ,...,m k<br />

n vai P n (m 1 , m 2 , ..., m k ).<br />

Pirmo apakškopu var izvēlēties C m 1<br />

n veidos, otro apakškopu, ja pirmā ir izvēlēta, var izvēlēties<br />

C m 2<br />

n−m 1<br />

veidos, trešo var izvēlēties C m 3<br />

n−m 1 −m 2<br />

veidos utt, iegūstam, ka<br />

(2.8) C m 1,m 2 ,...,m k<br />

n = C m 1<br />

n C m 2<br />

n−m 1<br />

C m 3<br />

n−m 1 −m 2<br />

...C m k<br />

n−m 1 −...−m k−1<br />

.<br />

Pēc pārveidojumiem iegūstam, ka<br />

(2.9) C m 1,m 2 ,...,m k<br />

n =<br />

n!<br />

m 1 !m 2 !...m k ! .<br />

2.3.6. Kopas sadalījums apakškopās ar noteiktu elementu skaitu. Cik veidos kopu,<br />

kas satur n elementus, var sadalīt šķirtās apakškopās tā, ka katram i : 0 ≤ i ≤ n ir tieši m i<br />

apakškopas, kas satur i elementus, tādējādi izpildās nosacījums<br />

(2.10) 1 · m 1 + 2 · m 2 + 3 · m 3 + ... + n · m n = n,<br />

šo skaitli apzīmēsim ar S m 1,m 2 ,...,m n<br />

n .<br />

Tāpat kā gadījumā ar skaitļiem A m n un Cn m , no sākuma atradīsim noteikta veida apakškopu<br />

virkņu skaitu tā, lai tiktu izpildīts to elementu summas nosacījums. Konstruējot šādu apakškopu<br />

virkni, sākot ar mazāka elementu skaita apakškopām, iegūstam, ka apakškopu virkņu skaits, kuru<br />

mēs apzīmēsim ar R m 1,m 2 ,...,m n<br />

n , ir vienāds ar<br />

(2.11)<br />

Cn 1 · Cn−1 1 · ... · Cn−1m 1 1 +1 ·<br />

} {{ }<br />

m 1<br />

· Cn−1m 2 1 · Cn−1m 2 1 −2 · ... · Cn−1m 2 1 −2m 2 +2 ·<br />

} {{ }<br />

m 2<br />

· Cn−1m 3 1 −2m 2 · ... · Cn−1m 3 1 −2m 2 −3m 3 +3 ·...<br />

} {{ }<br />

m 3


Vienkāršosim R m 1,m 2 ,...,m n<br />

n :<br />

(2.12) · (n−1m 1+1)!<br />

2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 27<br />

R m 1,m 2 ,...,m n<br />

n =<br />

1!(n−1m 1 )!<br />

·<br />

n!<br />

1!(n − 1)! ·<br />

(n−1m 1 )!<br />

2!(n−1m 1 −2)! · ... =<br />

=<br />

n!<br />

(1!) m 1(2!) m 2...(n!) mn<br />

(n − 1)!<br />

1!(n − 2)! · ...<br />

Lai atrastu nesakārtotu šādu sadalījumu skaitu, ievērosim, ka katram i apakškopas, kas satur i<br />

elementus, var sakārtot m i ! veidos neatkarīgi no citu elementu skaita apakškopām, tātad saskaņā<br />

ar dalīšanas likumu<br />

(2.13) S m 1,m 2 ,...,m n<br />

n<br />

= Rm 1,m 2 ,...,m n<br />

n<br />

m 1 !m 2 !...m n ! = n!<br />

(1!) m 1 (2!)<br />

m 2...(n!) m nm1 !m 2 !...m n ! .<br />

2.3.7. Cikliskas virknes. Cik veidos n elementus lielu kopu var izvietot ciklā (ap riņķa<br />

līniju), ja ir fiksēts cikla apiešanas virziens?<br />

Šis uzdevums atšķiras no uzdevuma par A m n ar to, ka katram ciklam var piekārtot vairākas<br />

virknes atkarībā no tā, no kuras vietas šo ciklu sāk lasīt. Katrai n elementus garai virknei atbilst<br />

n cikli, tāpēc, izmantojot dalīšanas likumu, iegūstam, ka ciklu skaits ir vienāds ar<br />

A n n<br />

(2.14)<br />

= (n − 1)!<br />

n<br />

2.3.8. Objektu ievietošanu kastēs. Cik veidos m objektus var ievietot n kastēs? Šim<br />

uzdevumam ir vairākas variācijas, kuras mēs apskatīsim atsevišķi:<br />

• dažādu objektu ievietošana dažādās kastēs - katrai šādai ievietošanai atbilst injektīva<br />

funkcija no m elementu kopas uz n elementu kopu, tāpēc variantu skaits ir vienāds ar<br />

Ā m n ;<br />

• identisku objektu ievietošana dažādās kastēs - katrai šādai ievietošanai atbilst n-multikopas<br />

m-apakšmultikopa, tātad variantu skaits ir vienāds ar<br />

¯C n<br />

m = Cn+m−1;<br />

m<br />

• dažādu objektu ievietošana identiskās kastēs - katrai šādai ievietošanai atbilst m elementu<br />

lielas kopas sadalījums ne vairāk kā n apakškopās. Ar { j i<br />

} vai S(j, i) apzīmēsim<br />

j elementus lielas kopas dažādu sadalījumu skaitu i netukšās apakškopās. Definēsim arī<br />

0, ja n≠0<br />

S(n, 0) = { 1, ja n=0.<br />

Kopējais variantu skaits šajā uzdevumā ir ∑ n<br />

i=1<br />

S(m, i). Jāpiebilst, ka nav zināma<br />

vienkārša formula skaitļiem S(j, i), tos sauksim par Stirlinga apakškopu skaitļiem vai<br />

otrā veida Stirlinga skaitļiem. Visu m elementu lielas kopas sadalījumu skaitu netukšās<br />

apakškopās sauksim par m-to Bella skaitli un apzīmēsim ar B m ;<br />

• identisku objektu ievietošana identiskās kastēs - katrai šādai ievietošanai atbilst naturāla<br />

skaitļa m izteikšana ne vairāk kā n naturālu skaitļu summā, kopējo variantu skaitu<br />

apzīmēsim ar p n (m). Arī šajā gadījumā vienkārša formula skaitļiem p n (m) (ka funkcijām<br />

no m un n) nav zināma.<br />

Piebildīsim, ka naturāla skaitļa n izteikšanu naturālu skaitļu summā mēs sauksim par tā<br />

sadalījumu, apzīmēsim sadalījumu skaitu ar p(n) un sauksim to par n-to sadalījuma skaitli.<br />

Parasti skaitļa n sadalījumu uzdod kā monotonu, piemēram, nedilstošu, naturālu skaitļu virkni<br />

n 1 ≥ n 2 ≥ ...n k , kas apmierina nosacījumu<br />

k∑<br />

n i = n.<br />

Sadalījumu var definēt arī kā vienādojuma<br />

i=1<br />

x 1 + 2x 2 + ... + mx m = n


2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 28<br />

atrisinājumu nenegatīvos skaitļos, šajā gadījumā x i nozīmē skaitļa i multiplicitāti jeb kārtu<br />

sadalījumā. Sadalījumus var arī vizualizēt, izmantojot Janga diagrammas: ja ir dots sadalījums<br />

n = n 1 + n 2 + ... + n k , kur n i ≥ n j , ja i > j, tad šādu sadalījumu uzdosim kā kreisajā malā<br />

nolīdzinātu tabulu ar mainīga garuma rindām, kur i-tā rindas satur n i rūtiņas.<br />

11 = 6 + 3 +1 + 1<br />

2.4. attēls. Sadalījuma Janga diagrammas piemērs<br />

Katram sadalījumam var konstruēt duālo sadalījumu, kas atbilst transponētajai (simetriskajai<br />

attiecībā pret diagonāli, kas iziet no augšējā kreisā stūra) Janga diagrammai. Zīmējuma 2.4.<br />

piemēra duālais sadalījums ir 11 = 4 + 2 + 2 + 1 + 1 + 1. Tā kā transponēšana ir bijektīva<br />

operācija, tad saskaņā ar vienlieluma likumu varam iegūt šādu rezultātu: naturāla skaitļa n to<br />

sadalījumu skaits, kuros katrs saskaitāmais nepārsniedz m, ir vienāds ar to sadalījumu skaitu,<br />

kuros ir ne vairāk kā m saskaitāmie.<br />

2.3.9. Vienādojuma x 1 + x 2 + ... + x n = m atrisinājumi veselos skaitļos. Arī šim<br />

uzdevumam var būt dažādas variācijas:<br />

• nenegatīvu atrisinājumu skaits - katram šādam atrisinājumam atbilst n-multikopas m-<br />

apakšmultikopa, tātad kopējais variantu skaits ir vienāds ar<br />

¯C m n<br />

= C m n+m−1;<br />

• pozitīvu atrisinājumu skaits - katram šādam atrisinājumam atbilst nenegatīvs atrisinājums<br />

vienādojumam<br />

x 1 + x 2 + ... + x n = m − n,<br />

tātad variantu skaits ir vienāds ar<br />

¯C m−n<br />

n<br />

= C m−n<br />

m−1 = C n−1<br />

m−1;<br />

• no apakšas ierobežotu nenegatīvu atrisinājumu skaits - meklēsim atrisinājumus ar īpašību<br />

0 ≤ a i ≤ x i , katram šādam atrisinājumam atbilst nenegatīvs atrisinājums vienādojumam<br />

x 1 + x 2 + ... + x n = m − (a 1 + ... + a n ).<br />

Apzīmēsim ∑ n<br />

i=1<br />

ar S, tad variantu skaits ir vienāds ar<br />

¯C m−S<br />

n<br />

= C n−1<br />

n+m−S−1 ;<br />

• augošu atrisinājumu skaits - meklēsim atrisinājumus ar īpašību 0 ≤ x 1 ≤ ... ≤ x n .<br />

Katram šādam atrisinājumam atbilst skaitļa m sadalīšana ne vairāk kā n pozitīvu<br />

saskaitāmo summā, tātad kopējais variantu skaits ir vienāds ar p n (m).<br />

2.3.10. Vingrinājumi.<br />

Vingrinājums 2.29. Daudzdzīvokļu mājas ārdurvju atslēgai ir kods, kuru var atkodēt<br />

a) nospiežot vienlaicīgi 3 ciparus;<br />

b) nospiežot pēc kārtas 3 ciparus.<br />

Cik ir dažādu kodu atslēgu katrā gadījumā?<br />

Vingrinājums 2.30. Kāda eksāmena jautājumi ir sadalīti 4 grupās, katrā grupā ir 30<br />

jautājumi. Eksāmena biļetē ir pa divi jautājumi no katras grupas. Cik dažādu eksāmena biļešu<br />

ir iespējams sastādīt?


2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 29<br />

Vingrinājums 2.31. Vairāki cilvēki tiek sēdināti ap apaļu galdu. Divi sēdināšanas veidi tiek<br />

uzskatīti par vienādiem, ja abos veidos katram cilvēkam abu pušu kaimiņi sakrīt. Cik ir dažādu<br />

sēdināšanas veidu n cilvēkiem?<br />

Vingrinājums 2.32. Cik dažādos veidos (skatīt iepriekšējo uzdevumu) var nosēdināt ap<br />

apaļu galdu n vīriešus un n sievietes tā, lai nekādi divi viena dzimuma cilvēki nesēdētu blakus?<br />

Vingrinājums 2.33. Cik dažādos veidos var izmainīt 1 latu izmantojot 1, 2, 5, 10, 20 un 50<br />

santīmu monētas?<br />

Vingrinājums 2.34. Cik dažādos veidos 50 studentu grupā var izveidot divas futbola komandas<br />

pa 10 cilvēkiem katrā un 10 zolītes grupas pa 3 cilvēkiem katrā?<br />

Vingrinājums 2.35. Cik dažādos veidos var izveidot virknes ar garumu m no kopas {1, ..., n}<br />

elementiem, kurām<br />

1) nekādi divi blakusesoši elementi nav vienādi;<br />

2) nekādi divi blakusesoši elementi nav vienādi un pirmais elements nav vienāds ar pēdējo;<br />

3) nekādi k blakusesoši elementi nav vienādi, 2 ≤ k ≤ m.<br />

Vingrinājums 2.36. Virkni {a 1 , ..., a n } sauksim par palindromu, ja<br />

a 1 = a n , a 2 = a n−1 , ..., a k = a n−k+1<br />

visiem k : 1 ≤ k ≤ [ n ]. Piemēram, frāze angļu valodā ”never odd or even” ir palindroms, ja<br />

2<br />

ignorējam atstarpes starp vārdiem. Cik palindromu var izveidot no n-multikopas elementiem?<br />

Vingrinājums 2.37. Cik ir bināru virkņu ar garumu n, kurām elementu summa pēc moduļa<br />

2 ir vienāda ar 0?<br />

Vingrinājums 2.38. Cik attiecību var uzdot n elementu kopā, kas ir<br />

1) patvaļīgas;<br />

2) refleksīvas;<br />

3) antirefleksīvas;<br />

4) simetriskas;<br />

5) antisimetriskas;<br />

6) ekvivalences?<br />

Vingrinājums 2.39. Dota kopa X = {1, ..., n}. Izmantojot tikai kopas X elementus un<br />

elementu 0 iekodēt virkņu veidā šādus objektus tā, lai dažādiem objektiem atbilstu dažādas<br />

virknes:<br />

1) fiksēta apjoma X apakškopas;<br />

2) X sadalījumus;<br />

3) X elementu izvietojumus kuba virsotnēs.<br />

Vingrinājums 2.40. No standarta kāršu kavas, kas satur 36 kārtis, tiek izņemtas četras<br />

kārtis. Cik veidos to var izdarīt tā, lai šīs četras kārtis saturētu<br />

1) tieši vienu dūzi;<br />

2) vismaz vienu dūzi;<br />

3) tieši divus dūžus;<br />

4) vismaz divus dūžus;<br />

5) nevienu dūzi;<br />

6) visu mastu kārtis;<br />

7) visu mastu kārtis, starp kurām ir vismaz viens dūzis?<br />

Vingrinājums 2.41. Ir dots naturāls skaitlis ar zināmu sadalījumu pirmskaitļu pakāpju<br />

reizinājumā. Atrast, cik tam ir dažādu naturālu dalītāju!<br />

Vingrinājums 2.42. Atrodiet S(n, 1),S(n, 2),S(n, n − 1) un S(n, n − 2).


2.3. VIENKĀRŠĀKIE KOMBINATORIKAS UZDEVUMI 30<br />

Vingrinājums 2.43. Kādam m skaitlis Cn<br />

m<br />

fiksēts?<br />

pieņem maksimālo iespējamo vērtību, ja n ir<br />

Vingrinājums 2.44. Cik ir variāciju ar atkārtojumiem no kopas {1, 2, ..., n} elementiem,<br />

kas satur pāra skaitu reizes elementu 1?<br />

Vingrinājums 2.45. Pieņemsim, ka |X| = 2m, kur m ∈ N. Par kopas X faktoru sauksim<br />

tās sadalījumu m divu elementu kopās. Pierādīt, ka visu faktoru skaits ir vienāds ar<br />

m∏<br />

1 · 3 · 5 · ... · (2m − 1) = (2i − 1)<br />

(šo skaitli apzīmēsim ar (2m − 1)!! un sauksim par divkāršo faktoriālu).<br />

Vingrinājums 2.46. Ir doti 3n + 1 objekti, no kuriem n ir nešķirami viens no otra un visi<br />

pārējie ir dažādi (un atšķirīgi no pirmajiem n objektiem). Cik veidos var izvēlēties n objektus?<br />

Vingrinājums 2.47. Cik veidos no n elementu lielas kopas var izvēlēties apakškopu, kas<br />

satur nepāra skaitu elementu?<br />

Vingrinājums 2.48. Cik veidos no n elementu lielas kopas var izvēlēties divas šķirtas<br />

apakškopas?<br />

Vingrinājums 2.49. Cik veidos no n elementu lielas kopas var izvēlēties trīs savstarpēji<br />

šķirtu kopu virkni?<br />

Vingrinājums 2.50. Cik veidos no n elementus lielas kopas var izvēlēties divu apakškopu<br />

A un B virkni, kas apmierina īpašības A ⊆ B, |A| = m, |B| = k ? Cik šādu apakškopu pāru<br />

eksistē, ja elementu skaits tajās ir patvaļīgs?<br />

Vingrinājums 2.51. Ar kombinatoriskiem (piemēram, divkāršas skaitīšanas vai vienlieluma<br />

likuma) spriedumiem pierādīt šādas sakarības:<br />

1) Cn m = Cn−1 m + C m−1<br />

2) C m n = n m Cm−1 n−1 ;<br />

3) C k nC m k = Cm n C k−m<br />

n−m;<br />

4) Cn m = ∑ n<br />

i=0 Ci n−k Cm−i<br />

5) ∑ n<br />

i=0 (−1)i Cn i = 0;<br />

n−2 + ... + C 0 n−m−1, n > m;<br />

k<br />

, kur k : 0 ≤ k ≤ n;<br />

6) ∑ n<br />

i=0 (Ci n) 2 = C2n;<br />

n<br />

7) ∑ n (−1) i−1<br />

i=1<br />

C i i n = ∑ n 1<br />

j=1<br />

; j<br />

8) ∑ {<br />

n<br />

0, ja n = 2k + 1, k ∈ N<br />

i=0 (−1)i (Cn) i 2 =<br />

(−1) k C2k k ;<br />

, ja n = 2k, k ∈ N<br />

9) ∑ {<br />

n<br />

0, ja n = 2k + 1, k ∈ N<br />

i=0 (−1)i (Cn) i 3 =<br />

(−1) k (3k)!<br />

, ja n = 2k, k ∈ N ;<br />

(k!) 3<br />

10) ∑ n<br />

i=0 i2 Cn i = n(n + 1)2 n−2 ;<br />

11) ∑ n<br />

i=0 (m − 1)n−i Cn i = m n ;<br />

12) ∑ n<br />

i=0 C2i+1 2m+1Cn+i 2m = C2n 2m .<br />

Vingrinājums 2.52. Izteikt C m n (mod 3) kā funkciju no n(mod 3) un m(mod 3)!<br />

Vingrinājums 2.53. Pieņemsim, ka ir zināmi naturālu skaitļu n un m izvirzījumi pirmskaitļa<br />

p pakāpju summā: n = ∑ k<br />

i=1 a ip i un m = ∑ k<br />

i=1 b ip i , kur 0 ≤ a i ≤ p − 1 un 0 ≤ b i ≤ p − 1.<br />

Pierādīt, ka<br />

k∏<br />

Cn<br />

m ≡ C b i<br />

a i<br />

(mod p)<br />

(Lukasa teorēma).<br />

i=0<br />

i=1


2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS) 31<br />

Vingrinājums 2.54. Pierādīt, ka skaitļi<br />

ir veseli.<br />

(2n)!<br />

2 n , (3n)!<br />

6 n , (n 2 )!<br />

(n!) n+1 ,<br />

(n!)!<br />

(n!) (n−1)! ,<br />

(2n)!<br />

n!(n + 1)!<br />

Vingrinājums 2.55. Pierādīt, ka katram naturālam skaitlim k katru naturālu skaitli a var<br />

viennozīmīgi izteikt formā ∑ k<br />

i=1 Ci n i<br />

, kur 0 ≤ n 1 ≤ ... ≤ n k .<br />

2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS)<br />

Šo metodi pielieto, ja ir jāatrod elementu skaits vairāku tādu kopu apvienojumā, kurām ir<br />

kopīgi elementi. Ieslēgšanas-izslēgšanas princips ir summas likuma vispārinājums uz gadījumu,<br />

kad ir dots kopas pārklājums, nevis sadalījums. Atgādināsim, ka summas likums saka, ka<br />

|A 1 ∪ A 2 ∪ ... ∪ A n | = |A 1 | + |A 2 | + ... + |A n |,<br />

ja A i ∩ A j = ∅ dažādiem indeksiem.<br />

Šajā nodaļā mēs nedaudz vispārināsim skaitīšanas ideju, atļaujot skaitīt elementus arī ar<br />

negatīvu zīmi: ja ir dotas divas galīgas kopas A un B, tad starpību |A| − |B| var interpretēt<br />

kā tādas skaitīšanas rezultātu, kurā katrs kopas A elements tiek skaitīts parastajā nozīmē (ar +<br />

zīmi), bet katrs kopas B elements tiek skaitīts negatīvā nozīmē (ar − zīmi).<br />

Sāksim izstrādāt šo metodi, apskatot speciālgadījumus, kad kopu skaits ir 2 un 3. Atradīsim<br />

elementu skaitu divu kopu A 1 un A 2 apvienojumā, ja ir zināms elementu skaits katrā no kopām<br />

un to šķēlumā. Viegli redzēt, ka<br />

(2.15) |A 1 ∪ A 2 | = |A 1 | + |A 2 | − |A 1 ∩ A 2 |.<br />

Loceklis −|A 1 ∩ A 2 | formulas labajā pusē ir tāpēc, lai kompensētu summā |A 1 | + |A 2 | divas reizes<br />

skaitītos šķēluma elementus. Otrs veids, kā pierādīt šo formulu ir šāds. Ievērosim, ka<br />

un<br />

Saskaņā ar summas likumu iegūstam, ka<br />

Ievērosim arī, ka<br />

tāpēc<br />

un formula ir pierādīta.<br />

A 2 = (A 1 ∩ A 2 ) ∪ (A 2 \A 1 )<br />

(A 1 ∩ A 2 ) ∩ (A 2 \A 1 ) = ∅.<br />

|A 2 | = |A 1 ∩ A 2 | + |A 2 \A 1 |.<br />

|A 2 \A 1 | = |A 1 ∪ A 2 | − |A 1 |,<br />

|A 2 | = |A 1 ∩ A 2 | + |A 1 ∪ A 2 | − |A 1 |<br />

U<br />

A1<br />

A I A<br />

1<br />

2<br />

A2<br />

2.5. attēls. Divu kopu apvienojums


2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS) 32<br />

Divu kopu apvienojuma formulu var pārrakstīt ekvivalentā veidā<br />

|A 1 ∩ A 2 | + |A 1 ∪ A 2 | = |A 1 | + |A 2 |.<br />

Atradīsim elementu skaitu trīs kopu A 1 , A 2 un A 3 apvienojumā, ja ir zināms elementu skaits<br />

katrā no kopām un visos to šķēlumos. Pirmajā tuvinājumā šo skaitu varētu pieņemt vienādu ar<br />

|A 1 | + |A 2 | + |A 3 |,<br />

bet tad elementi jebkuru divu kopu šķēlumos tiks skaitīti divas vai trīs reizes, tāpēc nākošajā<br />

tuvinājumā uzskatīsim, ka elementu skaits trīs kopu apvienojumā ir vienāds ar<br />

|A 1 | + |A 2 | + |A 3 | − |A 1 ∩ A 2 | − |A 1 ∩ A 3 | − |A 2 ∩ A 3 |.<br />

Savukārt tagad ir problēmas ar elementiem visu trīs kopu šķēlumā, jo katrs no tiem vispār netiek<br />

skaitīts. Nedaudz piepūloties, var redzēt, ka<br />

(2.16)<br />

|A 1 ∪ A 2 ∪ A 3 | =<br />

= |A 1 | + |A 2 | + |A 3 | − |A 1 ∩ A 2 | − |A 1 ∩ A 3 | − |A 2 ∩ A 3 | +<br />

+ |A 1 ∩ A 2 ∩ A 3 |.<br />

Līdzīgi tam, kā tas bija divu kopu gadījumā, arī šoreiz papildus locekļu summu<br />

−|A 1 ∩ A 2 | − |A 1 ∩ A 3 | − |A 2 ∩ A 3 | + |A 1 ∩ A 2 ∩ A 3 |<br />

var interpretēt kā kompensējošo labojumu, lai panāktu to, ka katrs elements labajā pusē tiek<br />

algebriski (ņemot vērā skaitīšanas zīmi) skaitīts tieši vienu reizi.<br />

U<br />

A1<br />

A I A<br />

1<br />

2<br />

A I A I A<br />

1<br />

2<br />

3<br />

A2<br />

A I<br />

1<br />

A<br />

3<br />

A I A<br />

2<br />

3<br />

A3<br />

2.6. attēls. Trīs kopu apvienojums<br />

Tagad apskatīsim vispārīgo gadījumu. Pieņemsim, ka ir dota galīga indeksu kopa U =<br />

{1, ..., n} un galīga kopa A i katram indeksam i. Katrai netukšai U apakškopai I definēsim<br />

A I = ⋂ i∈I A i.<br />

Teorēma 2.56 (ieslēgšanas-izslēgšanas formula).<br />

(2.17) | ⋃ A i | = ∑<br />

(−1) |I|+1 |A I |,<br />

i∈U<br />

citos apzīmējumos -<br />

∅≠I⊆U<br />

(2.18)<br />

|A 1 ∪ ... ∪ A n | =<br />

= ∑ n<br />

i=1 |A i| − ∑ i


2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS) 33<br />

Pierādījums. Saskaitāmo ±|X| domāsim kā kopas X elementu skaitīšanu ar atbilstošo zīmi.<br />

Pierādīsim, ka katrs elements, kas pieder vismaz vienai kopai A i , labajā pusē tiek skaitīts tieši<br />

vienu reizi, tas nozīmēs, ka ir spēkā pierādāmā vienādība. Pieņemsim, ka elements a pieder tieši<br />

k kopām A i , 1 ≤ k ≤ n. Atzīmēsim, ka tas nozīmē, ka a pieder Ck 2 divu kopu A i šķēlumiem, Ck<br />

3<br />

trīs šādu kopu šķēlumiem, ..., Ck<br />

m m kopu šķēlumiem, ..., vienam (1 = Ck k ) k kopu šķēlumam.<br />

Cik reizes šis elements a tiek skaitīts formulas labajā pusē? Pirmajā summā tas tiek skaitīts<br />

k = Ck 1 reizes, otrajā summā tas tiek skaitīts C2 k reizes ar − zīmi (vienu reizi katrā no A i ∩ A j<br />

tipa šķēlumiem), ..., m-tajā summā tas tiek skaitīts Ck<br />

m reizes ar zīmi (−1)m−1 (vienu reizi katrā<br />

no šķēlumiem, kuram tas pieder). Tātad kopā elements tiek skaitīts<br />

C 1 k − C 2 k + C 3 k − ... = 1 − (1 − C 1 k + C 2 k − ...) = 1 − (1 − 1) k = 1<br />

reizes. Redzam, ka katrs elements pierādāmās formulas labajā pusē tiek skaitīts tieši vienu reizi<br />

un teorēma ir pierādīta. QED<br />

Secinājums 2.1. 1. Pieņemsim, ka katra no kopām A i pieder fiksētam galīgam universam<br />

A, definēsim A ∅ = A, tad to kopas A elementu skaits, kuri nepieder nevienai no<br />

kopām A i , ir vienāds ar<br />

∑<br />

(−1) |I| |A I |.<br />

I⊆U<br />

2. To elementu skaits, kuri pieder visām tām kopām A i , kuru indekss pieder fiksētai indeksu<br />

apakškopai I ⊆ U, un tikai šādām kopām ir vienāds ar<br />

∑<br />

(−1) |J\I| |A J |.<br />

∅̸=I⊆J<br />

Pierādījums. Pirmais secinājums uzreiz seko no teorēmas. Pierādīsim otro secinājumu.<br />

Katram k ∈ U\I definēsim kopu<br />

B k = A I<br />

⋃ k ,<br />

katrai indeksu universa U apakškopai K definēsim<br />

B K = ⋂<br />

k∈K<br />

Definēsim arī B ∅ = A I . Mums ir jāsaskaita to elementu skaits kopā, kuri nepieder nevienai no<br />

kopām B k . Saskaņā ar pirmo secinājumu šis skaits ir vienāds ar<br />

∑<br />

(−1) |K| |B K |.<br />

K⊆U\I<br />

Ievērosim, ka funkcija f : P (U\I) → {S ∈ P (U)|I ⊆ S}, kas definēta ar formulu f(K) = I ∪ K,<br />

ir bijektīva, tāpēc summēšanā varam pāriet uz jaunu summēšanas indeksu J = I ∪ K, tādu, ka<br />

I ⊆ J. Redzam arī, ka B K = A I∪K , tāpēc<br />

∑<br />

K⊆U\I(−1) |K| |B K | = ∑ (−1) |U\J| |A J |.<br />

I⊆J<br />

QED<br />

Ieslēgšanas-izslēgšanas formulu var pierādīt, arī izmantojot matemātiskās indukcijas principu<br />

ar indukcijas argumentu n. Pieņemsim, ka ir spēkā formula<br />

n∑<br />

|A 1 ∪ ... ∪ A n | = |A i | − ∑ |A i ∩ A j | + ∑<br />

|A i ∩ A j | − ... + (−1) n+1 |A 1 ∩ ... ∩ A n |<br />

i=1 i


2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS) 34<br />

Izmantojot indukcijas pieņēmumu, tagad var pārveidot vienādības labo pusi un pārliecināties<br />

par ieslēgšanas-izslēgšanas formulas pareizību.<br />

Vēl viens veids kā pierādīt ieslēgšanas-izslēgšanas formulu balstās uz apakškopas raksturīgās<br />

funkcijas jēdzienu. Atcerēsimies, ka par kopas S ⊆ U raksturīgo funkciju sauc funkciju χ S : U →<br />

{0, 1}, kas definēta ar nosacījumu<br />

0, ja a/∈S<br />

χ S (a) = {<br />

1, ja a∈S .<br />

Ievērosim, ka galīgai kopai A izpildās formula |A| = ∑ a∈A χ A(a). Ievērosim, ka χ A∩B (a) =<br />

χ A (a)χ B (a), χ Ā (a) = 1 − χ A (a). Atcerēsimies kopu vienādību<br />

⋃<br />

Ā i ,<br />

A i = ⋂<br />

i∈I i∈I<br />

no kuras seko raksturīgo funkciju vienādība<br />

1 − χ A (a) = ∏ i∈I<br />

(1 − χ Ai (a)),<br />

kur A = ⋃ i∈I A i. Katrai indeksu kopas I apakškopai J definēsim A J = ⋂ j∈J A j. Atverot iekavas<br />

labajā pusē un sagrupējot saskaitāmos atbilstoši kopas I apakškopām iegūsim vienādību<br />

1 − χ A (a) = ∑ ((−1) ∏ |J| χ Aj (a)) = 1 − ∑<br />

(−1) |J|+1 χ AJ (a)<br />

J⊆I<br />

j∈J<br />

vai<br />

χ A (a) = ∑<br />

∅≠J⊆I<br />

∅≠J⊆I<br />

(−1) |J|+1 χ AJ (a).<br />

Apskatot kreisās un labās puses funkciju vērtības punktā a un summējot pa visām vērtībām<br />

a ∈ A iegūsim ieslēgšanas-izslēgšanas formulu.<br />

Ieslḡšanas-izslēgšanas formulas labās puses dažus pirmos locekļus var izmantot kreisās puses<br />

novērtēšanai no vienas vai otras puses. Piemēram, var redzēt, ka<br />

n∑<br />

|A 1 ∪ ... ∪ A n | ≤ |A i |<br />

(Būla nevienādība), tāpēc, ka nevienādības labās puses summā apvienojuma elementi, kas pieder<br />

vairāk kā vienai kopai, tiek skaitīti vairāk kā vienu reizi. Otrs piemērs -<br />

n∑<br />

|A 1 ∪ ... ∪ A n | ≥ |A i | − ∑ |A i ∩ A j |<br />

i=1 i


2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS) 35<br />

funkciju skaits no X uz Y ir vienāds ar A n m = m n . Skaitīsim, cik ir nesirjektīvu funkciju.<br />

Apzīmēsim ar F i to funkciju kopu, kuru attēls nesatur elementu i ∈ Y un ar F I - to funkciju<br />

kopu, kuru attēls nesatur nevienu indeksu i ∈ I ⊆ Y . Viegli redzēt, ka<br />

F I = ⋂ i∈I<br />

F i .<br />

Atradīsim elementu skaitu kopā F I . Funkcijas no šīs kopas ir visas funkcijas no X uz Y \I, kuru<br />

skaits ir vienāds ar<br />

A n m−|I| = (m − |I|) n .<br />

Visu nesirjektīvo funkciju kopa ir vienāda ar ⋃ i∈Y F i, tāpēc ka katrai nesirjektīvai funkcijai attēlā<br />

trūkst vismaz viens kopas Y elements. Saskaņā ar ieslēgšanas-izslēgšanas principu iegūstam, ka<br />

| ⋃ F i | = ∑<br />

(−1) |I|+1 |F I | = ∑<br />

(−1) |I|+1 (m − |I|) n .<br />

i∈Y<br />

∅̸=I⊆Y<br />

∅̸=I⊆Y<br />

Katram naturālam skaitlim i, 0 ≤ i ≤ m to apakškopu I skaits, kas apmierina nosacījumu<br />

|I| = m, ir vienāds ar Cm. i Ņemot vērā šo faktu, mēs varam summā pārgrupēt saskaitāmos un<br />

pāriet uz summēšanas indeksu i:<br />

| ⋃ F i | = ∑<br />

(−1) i+1 Cm(m i − i) n .<br />

i∈Y 0


2.4. IESLĒGŠANAS-IZSLĒGŠANAS PRINCIPS (SIETA PRINCIPS) 36<br />

(2.22) |F n | = n!<br />

Ievērosim, ka<br />

n∑<br />

(−1) i 1 i!<br />

i=0<br />

n∑<br />

(−1) i 1 i!<br />

i=0<br />

ir Teilora rindas parciālsumma funkcijai e x , kad izvirzījuma punkts ir 0 un x = −1. Šajā<br />

gadījumā Teilora rinda ir alternējoša un tai var piemērot Leibnica teorēmu par alternējošām<br />

rindām. Redzam, ka<br />

| n!<br />

∞∑<br />

e − |F n|| = n!| (−1) i 1 n∑<br />

i! − (−1) i 1 i! | < n!|(−1)n+1 (n + 1)! | = 1<br />

n + 1 ≤ 1/2,<br />

i=1<br />

i=0<br />

ja n ≥ 1. Tātad skaitlis n! atšķiras no |F e<br />

n| mazāk nekā par 1/2, un varam apgalvot, ka |F n | ir<br />

tuvākais veselais skaitlis attiecībā uz skaitli n! , citiem vārdiem sakot, |F e n| var iegūt, noapaļojot<br />

n!<br />

. e<br />

2.4.1. Vingrinājumi.<br />

Vingrinājums 2.60. Aprēķināt ∑ 1<br />

k<br />

, kur summēšana tiek veikta pa visiem naturāliem k,<br />

2 k<br />

kuri nedalās ne ar vienu no skaitļiem 2,3 vai 5.<br />

Vingrinājums 2.61. n ir naturāls skaitlis un P n ir visu to pozitīvo pirmskaitļu kopa, kas<br />

dala n. Pierādīt, ka<br />

ϕ(n) = n ∏<br />

p∈P n<br />

(1 − 1 p ),<br />

kur ϕ ir Eilera funkcija.<br />

Vingrinājums 2.62. Būla funkcijas argumentu sauc par fiktīvu, ja tā vērtības izmaiņa<br />

(nemainot pārejo argumentu vērtības) nemaina funkcijas vērtību. Būla funkciju sauc par būtiski<br />

atkarīgu no tās argumentiem vai vienkārši būtisku, ja neviens no argumentiem nav fiktīvs. Cik<br />

ir dažādu būtisku Būla funkciju ar n argumentiem?<br />

Vingrinājums 2.63. X n ir to kopas {1, ..., n} permutāciju kopa, kas apmierina nosacījumus<br />

f(i) ≠ i un f(i) ≠ i + 1(mod n). Atrast |X n |.<br />

Vingrinājums 2.64. Apzīmēsim ar β(m, n) tādu bināru matricu ar izmēriem m × n skaitu,<br />

kurām katrā rindā un katrā kolonnā ir vismaz viens vieninieks. Pierādīt, ka<br />

n∑<br />

β(n, m) = (−1) k Cn(2 k n−k − 1) m .<br />

k=0<br />

Vingrinājums 2.65. Ar ieslēgšanas-izslēgšanas principa palīdzību pierādīt formulas<br />

1) Cn m = ∑ m<br />

i=1 (−1)i+1 C m−i<br />

n−i Ci n;<br />

n−i = 0;<br />

2) ∑ m<br />

i=0 (−1)i C i nC m−i<br />

3) C m n = ∑ n+1<br />

i=m+1 (−1)i−m−1 C i n+1;


2.5. REKURENTO SAKARĪBU METODE 37<br />

2.5. REKURENTO SAKARĪBU METODE<br />

2.5.1. Ievads. Risinot kombinatorikas uzdevumus, nereti rodas situācija, kad ir grūti uzreiz<br />

saskatīt atbildi vai pat hipotēzi. Tāda situācija gadās arī tad, ja ir jāatrod virknes {a n } n≥n0<br />

vispārīgā locekļa a n atkarība no n. Lietderīga šā¯du uzdevumu risināšanas stratēǧija ir izteikt<br />

virknes vispārīgo locekli a n kā funkciju no iepriekšējiem šīs virknes locekļiem un mēǧināt izdarīt<br />

pietiekoši daudz secinājumu, lai atrastu atbildi - a n atkarības veidu no n. Šī ideja ir kombinatorikas<br />

pamatprincipa ”skaldi un valdi” pielietošanas piemērs. Informāciju par saistību starp a n<br />

un iepriekšējiem virknes locekļiem parasti iegūst pētot to, kā skaitāmie objekti ar indeksu n tiek<br />

veidoti no mazākiem objektiem.<br />

Realizējot šādu stratēǧiju, ir nepieciešams arī atrast dažu (parasti dažu pirmo) virknes locekļu<br />

vērtības - ”sākuma nosacījumus”. Tātad, ja ir jāatrod virknes vispārīga locekļa izteiksme, tad<br />

var būt lietderīgi, izmantojot uzdevuma nosacījumus, meklēt sakarības<br />

(2.23) a n = f(a n−1 , a n−2 , ..., a 1 )<br />

un pēc tam atrast formulu a n aprēķināšanai, neizmantojot iepriekšējas a i vērtības. Sakarību<br />

(2.23) sauksim par rekurentu sakarību. Viens no pirmajiem dokumentētajiem rekurento sakarību<br />

izmantošanas piemēriem ir atrodams 13.gs. matemātiķa L.Fibonači darbos. Rekurentās sakarības<br />

tiek meklētas, sadalot skaitāmās kopas objektus ar indeksu n mazākās daļās vai pētot, kā objekti<br />

ar indeksu n ir atkarīgi no objektiem ar indeksu n − 1, n − 2, .... Rekurentu sakarību sauksim<br />

par k-tās kārtas rekurentu sakarību, ja a n var izteikt, izmantojot a n−1 , ..., a n−k . Par rekurentas<br />

sakarības atrisinājumu sauksim jebkuru virkni, kas apmierina šo sakarību. Rekurentas sakarības<br />

atrisinājums ir noteikts viennozīmīgi.<br />

Rekurentu sakarību sauksim par homogēnu, ja nulles virkne<br />

a 0 = a 1 = ... = a n = ... = 0<br />

ir tās atrisinājums, pretējā gadījumā rekurentu sakarību sauksim par nehomogēnu. Rekurentu<br />

sakarību sauksim par lineāru, ja tai ir galīga kārta un funkcija f ir lineāra.<br />

Atrisināt rekurento sakarību ar dotajiem papildus nosacījumiem nozīmē atrast visas virknes,<br />

kas apmierina rekurento sakarību un papildus nosacījumus.<br />

Rekurentas sakarības izmanto arī, lai pārbaudītu hipotēzes - ja ir zināma rekurenta sakarība<br />

R viennozīmīgi noteiktai virknei {a n } n≥n0 , ja ir zināmi pietiekoši daudzi sākuma nosacījumi un<br />

ja kāda hipotēzes virkne {b n } n≥n0 apmierina R un sākuma nosacījumus, tad meklējamā virkne<br />

{a n } n≥n0 sakrīt ar virkni {b n } n≥n0 . Visbiežāk tiek apskatītas fiksētas kārtas rekurentas sakarības<br />

veidā<br />

(2.24) a n = f(a n−1 , ..., a n−k )<br />

un rekurentas sakarības veidā<br />

(2.25) a n = f(a n/2 , a n/3 , ...).<br />

Tiek izmantotas arī rekurentu sakarību sistēmas. Ja nezināmā virkne ir atkarīga no vairākiem<br />

indeksiem, tad rekurentajā sakarībā var būt saistīti virknes locekļi ar dažādu indeksu nobīdēm.<br />

Datorzinātnē rekurento sakarību teorija tiek pielietota ciklisku un rekursīvu algoritmu resursu<br />

(laika) novērtēšanai.<br />

Piemērs 2.66. Virkņu piemēri, kas apmierina vienkāršas rekurentas sakarības ir aritmētiskā<br />

un ǧeometriskā progresija, kuru rekurentās sakarības ir<br />

un<br />

a n = a n−1 + d<br />

a n = a n−1 q.


2.5. REKURENTO SAKARĪBU METODE 38<br />

Piemērs 2.67. Ir dots algoritms (datorprogramma), kurš uzdevumu ar sākuma parametru<br />

n reducē uz divu tādu pašu uzdevumu risināšanu ar sākuma parametru n − 1. Kādu rekurentu<br />

sakarību var atrast algoritma darbības laika funkcijai T n ? Tā kā katru uzdevumu ar sākuma<br />

parametru n − 1 algoritms atrisina laikā T n−1 , tad atbilde ir<br />

T n = T n−1 + T n−1 = 2T n−1 .<br />

Piemērs 2.68. Apskatīsim visu n elementu kopas {1, ..., n} permutāciju skaita P n atrašanas<br />

uzdevumu. Parādīsim, ka P n apmierina rekurentu sakarību<br />

P n = P n−1 · n.<br />

Pieņemsim, ka ir zināms P n−1 , kas atbilst elementu kopai {1, ..., n − 1}. Skaitīsim, cik veidos var<br />

sakārtot kopu {1, ..., n}, kas satur vienu ”jaunu” elementu n. Ja elementi {1, ..., n − 1} jau ir<br />

sakārtoti, tad elementu n jau esošajā sakārtojumā var ievietot n veidos. Izmantojot reizināšanas<br />

likumu, iegūstam, ka P n = P n−1 · n, jo n elementus lielas kopas permutāciju var domāt kā<br />

sakārtotu pāri (f n−1 , x), kur pirmais objekts ir n − 1 elementus lielas kopas permutācija un x ir<br />

pēdējā elementa ”koordināte” attiecība uz f n−1 . Tā kā P 1 , tad iegūstam, ka<br />

P 2 = 2, P 3 = 3 · 2 = 6, ..., P n = n!<br />

Piemērs 2.69. Apskatīsim visu n elementus lielas kopas X n = {1, ..., n} apakškopu skaita<br />

|P (X n )| atrašanas uzdevumu. Atcerēsimies, ka eksistē bijektīva atbilstība starp kopas apakškopām<br />

un binārām virknēm. Pieņemsim, ka ir zināms |P (X n−1 )|, kas atbilst n − 1 elementu kopai<br />

X n−1 = {1, ..., n − 1}. Skaitīsim, cik veidos var konstruēt apakškopu no kopas X n , kas satur<br />

vienu ”jaunu” elementu n. Ja kopas X n−1 elementi šai apakškopai jau ir izvēlēti (ir konstruēta<br />

bināra virkne ar garumu n − 1, tad elementu n jau esošajai apakškopai var vai nu pievienot vai<br />

nepievienot (binārajā virknē galā ierakstīt 0 vai 1). Izmantojot reizināšanas likumu, iegūstam,<br />

ka<br />

|P (X n ) = |P (X n−1 )| · 2,<br />

jo n elementus lielas kopas apakškopu var domāt kā sakārtotu pāri (s n−1 , x), kur pirmais objekts<br />

ir šīs apakškopas sašaurinājums uz X n−1 un x ir 0 vai 1. Tā kā |P (X 1 )| = 2, tad iegūstam, ka<br />

|P (X n )| = 2 n .<br />

Piemērs 2.70. Apskatīsim uzdevumu par kopas sadalījumu skaitu. Par galīgas kopas X<br />

sadalījumu sauksim tādu netukšu un savstarpēji šķirtu kopas X apakškopu sistēmu {X i } i∈I ,<br />

kuras elementu apvienojums ir vienāds ar X. n elementu kopas sadalījumu skaitu apzīmēsim ar<br />

B n un sauksim par n-to Bella skaitli. Viegli redzēt, ka<br />

B 1 = 1, B 2 = 2, B 3 = 5, B 4 = 15.<br />

Definēsim B 0 vienādu ar 1. Izteiksim B n+1 rekurentā veidā. Pieņemsim, ka X n+1 = {1, ..., n+1}<br />

un apskatīsim apakškopu, kas satur elementu n + 1, pieņemsim, ka tā satur vēl k elementus, kur<br />

0 ≤ k ≤ n, šos k elementus var izvēlēties C k n veidos un atlikušos n − k elementus var sadalīt<br />

apakškopās B n−k veidos. Tātad kopējais sadalījumu skaits, ja tā apakškopa, kas satur elementu<br />

n + 1, satur vēl k elementus, ir C k nB n−k . Saskaitot kopā visas iespējas, kas atbilst dažādām k<br />

vērtībām, iegūstam rekurentu sakarību<br />

B n+1 =<br />

n∑<br />

CnB k n−k .<br />

k=0<br />

Šajā gadījumā kompakta formula skaitļiem B n neizmantojot summu nav zināma.


2.5. REKURENTO SAKARĪBU METODE 39<br />

2.5.2. Lineārās rekurentās sakarības. Relatīvi viegli analizējams un risināms ir rekurento<br />

sakarību speciālgadījums, kad rekurentās sakarības labā puse ir lineāra funkcija ar fiksētu argumentu<br />

skaitu.<br />

Ja katram n > k + n 0 ir spēkā sakarība<br />

(2.26) a n = u 1 a n−1 + u 2 a n−2 + ... + u k a n−k<br />

tad teiksim, ka virkne {a n } n≥n0 apmierina homogēnu lineāru rekurentu sakarību ar kārtu k.<br />

Teorēma 2.71. Ja virknes {x n } n≥n0 un {y n } n≥n0 apmierina homogēnu lineāru rekurentu<br />

sakarību, tad virkne<br />

{αx n + βy n } n≥n0<br />

arī apmierina to pašu sakarību.<br />

Pierādījums. Izmantojot summas īpašības, redzam, ka<br />

k∑<br />

k∑<br />

k∑<br />

αx n + βy n = αu i x n−i + βu i y n−i = u i (αx n−i + βy n−i ).QED<br />

i=1<br />

i=1<br />

Šī teorēma nozīmē to, ka, lai atrisinātu homogēnu lineāru rekurentu sakarību, ir<br />

1) jāatrod (vai jāuzmin) daži pietiekoši neatkarīgi ”partikulāri” atrisinājumi ϕ i,n (indekss i<br />

apzīmē atrisinājumu un indekss n ir virknes indekss);<br />

2) pēc tam ir jāmeklē rekurentās sakarības ”vispārīgais” atrisinājums formā<br />

i=1<br />

c 1 ϕ 1,n + c 2 ϕ 2,n + ..,<br />

kur koeficienti c i tiek noteikti, izmantojot sākuma nosacījumus (dažu pirmo virknes<br />

locekļu vērtības).<br />

Var piebilst, ka homogēnu lineāru rekurentu sakarību risināšanas metode ir analoǧiska lineāru<br />

homogēnu diferenciālvienādojumu risināšani (skat. [9]). Piebildīsim arī to, ka virkņu lineārā<br />

neatkarība ir jāsaprot kā tām atbilstošo funkciju lineārā neatkarība: virkņu kopa {a 1 , ..., a k } ir<br />

lineāri neatkarīga, ja nosacījums<br />

k∑<br />

γ i a i n = 0<br />

ir spēkā visiem indeksiem n tad un tikai tad, ja γ i = 0, ∀i.<br />

Lineārajām rekurentajām sakarībām meklēsim atrisinājumu formā<br />

attiecībā uz λ iegūsim vienādojumu<br />

vai<br />

i=1<br />

x n = λ n ,<br />

λ n = u 1 λ n−1 + u 2 λ n−2 + ... + u k λ n−k<br />

(2.27) λ k = u 1 λ k−1 + u 2 λ k−2 + ... + u k ,<br />

kuru sauksim par homogēnas lineāras rekurentas sakarības raksturīgo vienādojumu. To atrisinot,<br />

iegūsim visas iespējamās λ vērtības, ar kurām virkne x n = λ n var būt atrisinājums. Pēc tam,<br />

kad raksturīgā vienādojuma saknes λ 1 , λ 2 , ..., λ l ir atrastas, meklēsim atrisinājumu formā<br />

a n = c 1 λ n 1 + c 2 λ n 2 + ... + c l λ n l<br />

vai kaut kā līdzīgi un atradīsim koeficientu c i vērtības tā, lai apmierinātu rindas dažu pirmo<br />

locekļu vērtības.<br />

Apskatīsim gadījumu, kad k = 2. Raksturīgais vienādojums ir<br />

kura saknēm ir iespējami divi gadījumi:<br />

λ 2 = u 1 λ + u 2 ,


2.5. REKURENTO SAKARĪBU METODE 40<br />

1) eksistē divas dažādas saknes λ 1 , λ 2 , partikulārie atrisinājumi λ n 1 un λ n 2 ir lineāri neatkarīgi,<br />

meklējam vispārīgo atrisinājumu formā<br />

a n = c 1 λ n 1 + c 2 λ n 2,<br />

ja saknes ir kompleksas, tad ir lietderīgi pārveidot vispārīgo atrisinājumu, izmantojot<br />

Eilera formulas;<br />

2) viena divkārša sakne λ, eksistē 2 lineāri neatkarīgi partikulāri atrisinājumi λ n un nλ n ,<br />

meklējam vispārīgo atrisinājumu formā<br />

a n = c 1 λ n + c 2 nλ n = λ n (c 1 + c 2 n).<br />

Ja homogēnas lineāras rekurentas sakarības kārta ir lielāka nekā 2, tad katrai raksturīga<br />

vienādojuma saknei λ ar kārtu k atbilst lineāri neatkarīgi atrisinājumi<br />

λ n , nλ n , ..., n k−1 λ n<br />

un jebkura to lineāra kombinācija arī ir homogēnas lineāras rekurentas sakarības atrisinājums.<br />

Lineāru rekurentu sakarību sauksim par nehomogēnu, ja to var izteikt formā<br />

(2.28) a n = u 1 a n−1 + u 2 a n−2 + ... + u k a n−k + f n ,<br />

kur {f n } ir dotā virkne. Analoǧiski nehomogēno lineāro diferenciālvienādojumu teorijai arī nehomogēnajām<br />

lineārajām rekurentajām sakarībām vispārīgais atrisinājums ir vienāds ar atbilstošās<br />

homogēnās sakarības vispārīgā atrisinājuma un nehomogēnās sakarības partikulārā atrisinājuma<br />

summu.<br />

Piemērs 2.72. Fibonači virkne tiek definēta ar šādiem nosacījumiem:<br />

Raksturīgais vienādojums ir<br />

a 0 = 1, a 1 = 1, a n = a n−1 + a n−2 , ja n > 1.<br />

λ 2 = λ + 1,<br />

tā saknes ir 1±√ 5<br />

2<br />

. Meklēsim vispārīgo atrisinājumu formā<br />

a n = c 1 ( 1 + √ 5<br />

) n + c 2 ( 1 − √ 5<br />

) n .<br />

2<br />

2<br />

Ja n = 0, tad iegūstam sakarību<br />

1 = c 1 + c 2 ,<br />

un, ja n = 1, tad sakarību<br />

1 = c 1 ( 1 + √ 5<br />

) + c 2 ( 1 − √ 5<br />

).<br />

2<br />

2<br />

Atrisinot šo lineāru vienādojumu sistēmu attiecībā uz c 1 un c 2 , iegūstam, ka c 1 = √ 1<br />

5 · 1+√ 5<br />

un<br />

2<br />

c 2 = − √ 1<br />

5 · 1−√ 5.<br />

2<br />

Piemērs 2.73. Šajā piemērā apskatīsim homogēnu lineāru rekurentu sakarību sistēmu. Risināsim<br />

šādu uzdevumu - cik ir dažādu n elementus garu vārdu alfabētā {0, 1, 2} tādu, ka jebkuri<br />

divi kaimiņu simboli atšķiras par 0 vai 1? Apzīmēsim ar A n to vārdu kopu, kas beidzas ar 1,<br />

un ar B n - vārdu kopu, kas beidzas ar 0 vai 2. Apzīmēsim |A n | ar a n un |B n | ar b n . Mums ir<br />

jāatrod c n = a n + b n ar pareiziem sākuma nosacījumiem. Domāsim par to, kā no vārdiem ar<br />

garumu n − 1 var iegūt vārdus ar garumu n, pievienojot vienu simbolu beigās. Teiksim, ka vārds<br />

w rada vārdu w ′ , ja vārdu w ′ var iegūt no vārda w, pievienojot tam beigās vienu simbolu. Ir<br />

spēkā šādas sakarības:<br />

1) a n = a n−1 + b n−1 (katrs vārds no A n−1 rada vienu jaunu vārdu no A n un katrs vārds no<br />

B n−1 rada vienu jaunu vārdu no A n );<br />

2) b n = 2a n−1 + b n−1 (katrs vārds no A n−1 rada divus jaunus vārdus no B n un katrs vārds<br />

no B n−1 rada vienu jaunu vārdu no B n ).


2.5. REKURENTO SAKARĪBU METODE 41<br />

Iegūstam, ka<br />

un<br />

tātad<br />

un<br />

b n = 2a n−1 + a n − a n−1 = a n−1 + a n<br />

a n+1 = a n + b n ,<br />

a n+1 − a n = a n−1 + a n<br />

a n+1 = 2a n + a n−1 .<br />

Lai atrisinātu uzdevumu līdz galam, ir jāatrod virkne {a n }, kas apmierina sākuma nosacījumus<br />

a 1 = 1, a 2 = 3, jāatrod b n pēc formulas b n = a n+1 − b n un jāatrod c n = a n + b n .<br />

3.<br />

2.5.3. Vingrinājumi.<br />

Vingrinājums 2.74. Atrast lineāras rekurentas sakarības virknēm a n = n k , kur k = 1,2 vai<br />

Vingrinājums 2.75. X n ir tādu apakškopu skaits kopā {1, ..., n}, kurās nav divu elementu<br />

ar pēctecīgiem numuriem. Atrast rekurentu sakarību virknes {X n } n>0 locekļiem.<br />

Vingrinājums 2.76. X n ir tādu virkņu skaits alfabētā {1, 2}, kuru elementu summa ir<br />

vienāda ar n. Atrast rekurentu sakarību virknes {X n } n>0 locekļiem.<br />

Vingrinājums 2.77. X n ir tādu permutāciju skaits kopā {1, ..., n}, kurām visi cikli ir ar<br />

garumu 1 vai 2. Atrast rekurento sakarību skaitļiem. Pierādīt, ka visi skaitļi X n ir pāra skaitļi<br />

un ir spēkā nevienādība X n > √ n!, ja n > 1.<br />

Vingrinājums 2.78. Ar p m (n) mēs apzīmējam naturāla skaitļa n sadalījumu skaitu ne vairāk<br />

kā m naturālu skaitļu summā. Pierādīt, ka ir spēkā rekurenta sakarība<br />

p m (n) = p m−1 (n) + p m (n − m).<br />

Vingrinājums 2.79. Ar q m (n) apzīmēsim naturāla skaitļa n sadalījumu skaitu tieši m<br />

naturālu skaitļu summā. Pierādīt, ka ir spēkā rekurenta sakarība<br />

q m (n) = q m (n − m) + q m−1 (n − 1).<br />

Vingrinājums 2.80. Kopas {1, 2, ..., n} permutāciju f sauksim par sakarīgu, ja visiem k,<br />

1 < k < n, kopa {1, ..., k} nav invarianta attiecībā uz šo permutāciju. Pierādīt, ka visu sakarīgo<br />

permutāciju skaita skaitļi X n apmierina rekurentu sakarību<br />

n∑<br />

X i (n − i)! = n!<br />

Vingrinājums 2.81. Atrisināt šādas rekurentas sakarības:<br />

1) a n+1 = a 2 n, a 1 = 1;<br />

2) a n = a n−1 + a n−2 + a n−3 , a 0 = a 1 = a 2 = 1;<br />

3) a n = ∑ n−1<br />

i=1 a i + 1, a 0 = 1.<br />

i=1<br />

Vingrinājums 2.82. Pierādīt, ka Fibonači skaitļi apmierina šādas rekurentas sakarības:<br />

1) Fn 2 − F n+1 F n−1 = (−1) n ;<br />

2) ∑ n<br />

i=0 F i = F n+2 − 1;<br />

3) Fn−1 2 + Fn 2 = F 2n ;<br />

4) F n−1 F n + F n F n+1 = F 2n+1 .<br />

Vingrinājums 2.83. Atrisināt rekurentu sakarību<br />

a n+2 = a n+1 a n , a 0 = 1, a 1 = 2.


Vingrinājums 2.84. Pierādīt, ka<br />

kur F n ir Fibonači skaitlis.<br />

2.5. REKURENTO SAKARĪBU METODE 42<br />

[ n 2 ]<br />

∑<br />

Cn−i i = F n+1 ,<br />

i=0<br />

Vingrinājums 2.85. Pierādīt, ka X n =<br />

[ ]<br />

[<br />

Fn+1 F n<br />

1 1<br />

, ja n ≥ 2 un X =<br />

F n F n−1 1 0<br />

Vingrinājums 2.86. Pierādīt, ka Fibonači skaitļi (iespējams, ar indeksa nobīdi) ir atrisinājums<br />

šādiem kombinatorikas uzdevumiem:<br />

1) katra vīrišķā bite (trans) rodas no vienas sievišķās bites, bet katra sievišķā bite rodas<br />

no vienas sievišķās un vienas vīrišķās bites, pierādīt, ka vīrišķajām bitēm ”vecvecāku”<br />

skaits kā funkcija no paaudzes indeksa ir izsakāms ar Fibonači skaitļu palīdzību, atrast<br />

formulu sievišķo bišu ”vecvecāku” skaitam,<br />

2) cik veidos naturālu skaitli var izteikt nepāra naturālu skaitļu sakārtotas summas veidā;<br />

3) cik veidos naturālu skaitli var izteikt vairāku skaitļu 1 un 2 sakārtotas summas veidā.<br />

Vingrinājums 2.87. Pierādīt, ka otrā veida Stirlinga skaitļi S(n, k) apmierina šādas rekurentas<br />

sakarības:<br />

1) S(n, k) = kS(n − 1, k) + S(n − 1, k − 1);<br />

2) ∑ n<br />

m=k S(m − 1, k − 1)kn−m = S(n, k);<br />

3) ∑ n<br />

m=k S(m, k)Cm n = S(n + 1, k + 1);<br />

4) ∑ n<br />

m=k (−1)m S(m + 1, k + 1)Cn<br />

m = (−1) n S(n, k);<br />

5) ∑ m≤n S(m, k)(k + 1)n−m = S(n + 1, k + 1);<br />

6) ∑ n<br />

i=1 ik = ∑ k<br />

j=1<br />

j!S(k, j)Cj+1 n+1.<br />

Vingrinājums 2.88. Par pirmā veida Stirlinga skaitli s(n, k) sauksim skaitli (−1) n−k c(n, k),<br />

kur c(n, k) ir n elementu kopas permutāciju skaits ar k cikliem. Papildus definēsim<br />

Pierādīt šādas sakarības:<br />

1) s(n + 1, k) = −ns(n, k) + s(n, k − 1);<br />

2) ∑ n<br />

m=k s(n + 1, m + 1)nm−k = s(n, k);<br />

3) ∑ n<br />

m=0<br />

c(n, m) = n!;<br />

4) ∑ n<br />

m=k c(n, m)Ck m = c(n + 1, k + 1);<br />

5) ∑ n<br />

m=k s(n + 1, m + 1)Ck m = s(n, k);<br />

6) ∑ n<br />

n!<br />

m=0<br />

c(m, k) = c(n + 1, k + 1).<br />

m!<br />

0, ja n≠0<br />

s(n, 0) = { 1, ja n=0.<br />

Vingrinājums 2.89. Atrast c(n, 1),c(n, 2),c(n, n − 1),c(n − 2).<br />

Vingrinājums 2.90. Pierādīt, ka pirmā un otrā veida Stirlinga skaitļus saista šādas sakarības:<br />

1) ∑ n<br />

m=k<br />

s(n, m)S(m, k) = δ(n, k);<br />

2) ∑ n<br />

m=k<br />

S(n, m)s(m, k) = δ(n, k).<br />

Šajā uzdevumā δ ir Kronekera simbols, tā vērtība ir 1, ja indeksi ir vienādi, un 0 - ja indeksi ir<br />

dažādi.<br />

Vingrinājums 2.91. Apzīmēsim atvasināšanas operāciju ar D: (Df)(x) = f ′ (x). Pierādīt,<br />

ka ir spēkā vienādība<br />

n∑<br />

((xD) n f)(x) = (( S(n, i)x i D i )f)(x).<br />

i=0<br />

]<br />

.


2.6. VEIDOTĀJFUNKCIJU METODE 43<br />

2.6. VEIDOTĀJFUNKCIJU METODE<br />

2.6.1. Ievads. Ja ir jāatrod virknes {a n } n≥n0 vispārīgā locekļa a n atkarība no n, tad var<br />

būt lietderīgi mēǧināt izveidot no šīs virknes locekļiem kādu citu objektu, kas saturētu visu<br />

informāciju par virkni, bet būtu vieglāk analizējams. Plaši izplatīta kombinatorikas metode,<br />

kurā ir realizēta šī ideja, ir veidotājfunkciju metode. Virknei tiek piekārtota funkciju rinda,<br />

kuru bieži var identificēt ar elementāru funkciju, izmantojot informāciju par virkni, piemēram,<br />

rekurentās sakarības, tiek pētīta šī jaunizveidotā funkcija un secinājumi tiek attiecināti uz virknes<br />

locekļiem. Veidotājfunkcija tiek definēta tā, lai, zinot veidotājfunkciju, varētu relatīvi viegli<br />

atrast atbilstošās virknes locekļus. Veidotājfunkciju pētīšana parasti ir saistīta ar algebras un<br />

matemātiskās analīzes tehnikas pielietošanu, un virknes locekļu atrašana tiek reducēta uz algebrisku<br />

vienādojumu vai diferenciālvienādojumu risināšanu. Algebriskās un analītiskās operācijas<br />

ar veidotājfunkcijām var interpretēt kombinatorikas terminos.<br />

Ja ir dota skaitļu virkne {a n } n≥n0 , tad formālu pakāpju rindu<br />

∞∑<br />

(2.29) A(x) =<br />

n=n 0<br />

a n x n<br />

sauksim par virknei atbilstošo veidotājfunkciju un formālu pakāpju rindu<br />

∞∑ a n<br />

(2.30) A exp (x) =<br />

n! xn<br />

n=n 0<br />

sauksim par virknes eksponenciālo veidotājfunkciju. Divas veidotājfuncijas sauksim par vienādām<br />

jeb formāli vienādām, ja attiecīgie koeficienti pie vienādām argumenta pakāpēm ir vienādi. Identificēsim<br />

ar virknes veidotājfunkciju jebkuru izteiksmi, kas ir ar to formāli vienāda. Ievērosim, ka<br />

divu dažādu pakāpju monomu formālas saskaitīšanas rezultātā nekāds netriviāls pārveidojums<br />

netiek veikts.<br />

Ja ir dota veidotājfunkcija A(x), tad ar [x n ]A(x) apzīmēsim tās Teilora koeficientu pie x n .<br />

Parastās veidotājfunkcijas tiek izmantotas kombinatorikas uzdevumos, kuros skaitāmie objekti<br />

tiek veidoti no neiezīmētiem, neatšķiramiem atomiem, eksponenciālās veidotājfunkcijas tiek<br />

izmantotas, ja objekti tiek veidoti no iezīmētiem atomiem.<br />

Kombinatorikas uzdevumu risināšana izmantojot veidotājfunkcijas parasti notiek pēc šāda<br />

algoritma:<br />

1) uzdevuma nosacījumi tiek pārveidoti nosacījumos, kurus apmierina veidotājfunkcijas;<br />

2) tiek atrastas veidotājfunkcijas vai izdarīti iespējamie secinājumi par to dabu;<br />

3) izmantojot Teilora rindu teoriju tiek atrasti veidotājfunkciju koeficienti.<br />

Veidotājfunkciju teorija balstās uz ideju vispārināt skaitīšanu šādā veidā. Ja ir dota kopa<br />

A (iespējams, bezgalīga) un kopa R ar asociatīvu un komutatīvu bināru operāciju, tad fiksēsim<br />

funkciju w : A → R un skaitīsim katru mūs interesējošās kopas A elementu a ∈ A ar savu svaru<br />

w(a) , tādējādi rezultātā mēs iegūsim formālu summu<br />

∑<br />

w(a),<br />

a∈A<br />

ko sauksim par kopas A veidotājfunkciju attiecībā uz svaru w un apzīmēsim ar G(A, w). Ievērosim<br />

šo vispārināšanas soli: naivā skaitīšana ∑ a∈A 1 tiek vispārināta uz skaitīšanu ar svaru ∑ a∈A w(a).<br />

Veidotājfunkciju tagad varam interpretēt kā skaitīšanas rezultātu, kurā katrs skaitāmās kopas objekts<br />

ar parametru n tiek skaitīts ar svaru x n . Tādējādi veidotājfunkcija ir matemātiska konstrukcija,<br />

kas atbilstošajā nozīmē satur informāciju par doto kombinatorikas uzdevumu kopumā. Veidotājfunkcijas<br />

pieraksts elementārās funkcijas veidā bieži vien ļauj pielietot divkāršās skaitīšanas<br />

principu. Veidotājfunkcijas pirmais sāka izmantot 18.gs. matemātiķis De Muavrs.<br />

Summēšana (tāpat kā virkne) var sākties ar jebkuru indeksu, visbiežāk ar 0 vai 1. Var<br />

redzēt, ka veidotājfunkcija A(x) var tikt interpretēta kā Teilora rinda punkta x = 0 apkārtnē.<br />

Ja ir iespējams, veidotājfunkciju ir jāmēǧina pierakstīt elementāras funkcijas veidā. Jāpiebilst,


2.6. VEIDOTĀJFUNKCIJU METODE 44<br />

ka jautājumi par veidotājfunkciju konverǧenci vai konverǧences rādiusu klasiskajā nozīmē parasti<br />

kombinatorikā nespēlē izšķirošo lomu. Veidotājfunkcijas konverǧences rādiuss tiek izmantots, lai<br />

novērtētu koeficientus, izmantojot Ābela teorēmu par pakāpju rindām. Formālo pakāpju rindu<br />

teorijā tiek lietots cits konverǧences jēdziens: teiksim, ka viena argumenta pakāpju rindu virkne<br />

{f n } n≥n0 konverǧē uz pakāpju rindu f, ja katram naturālam k eksistē naturāls N, tāds, ka visiem<br />

n > N pakāpju rindām f n un f pirmie k locekļi ir vienādi (kā polinomi).<br />

Atgādināsim, ka, ja f(x) ir bezgalīgi daudzas reizes atvasināma funkcija un kādā punkta<br />

x = 0 apkārtnē var tikt izvirzīta pakāpju rindā f(x) = ∑ n≥0 a nx n , tad a n = f (n) (0)<br />

. Elementāras<br />

funkcijas jebkura Teilora rindas koeficienta noteikšana ir iespējama galīgā laikā ar<br />

n!<br />

deterministiska algoritma palīdzību, tāpēc kodēšanu no veidotājfunkcijas pieraksta elementārās<br />

funkcijas veidā uz tās koeficientu virkni ir iespējams realizēt ar datorprogrammas palīdzību.<br />

Virknes veidotājfunkciju var uzskatīt arī par tās kompaktu pierakstu elementāras funkcijas veidā.<br />

Atzīmēsim arī to, ka polinomu var uzskatīt par veidotājfunkciju, kurai tikai galīgs skaits koeficientu<br />

ir atšķirīgi no 0.<br />

Atšķirībā no matemātiskās analīzes, kurā tiek pētītas funkciju īpašības, piemēram, funkcijas<br />

vērtības noteiktos punktos, kombinatorikā interese tiek vērsta uz funkcijas Teilora koeficientu<br />

īpašībām. Analīzē Teilora koeficienti tiek izmantoti, lai iegūtu secinājumus par funkciju.<br />

Kombinatorikā informācija par funkciju tiek izmantota, lai iegūtu informāciju par tās Teilora<br />

koeficientiem.<br />

Visu formālu viena vai vairāku argumentu pakāpju rindu kopu ar koeficientiem laukā k<br />

sauksim par pakāpju rindu gredzenu un apzīmēsim ar k[[x 1 , ..., x n ]], kur x 1 , ..., x n ir pakāpju<br />

rindas neatkarīgie argumenti. Zemāk tiks definētas veidotājfunkciju saskaitīšanas un reizināšanas<br />

operācijas, kas apmierina gredzena aksiomas. Lasītājs var pārliecināties, ka pakāpju gredzenos<br />

aditīvais neitrālais elements ir veidotājfunkcija 0 un multiplikatīvais neitrālais elements ir 1,<br />

pakāpju rinda ir invertējama tad un tikai tad, ja tās brīvais loceklis ir atšķirīgs no 0. Pakāpju<br />

rindu gredzenā ir dotas arī n (parciālās) atvasināšanas operācijas D m , 1 ≤ m ≤ n, kas ir lineāras<br />

- apmierina sakarības<br />

D m (k 1 f + k 2 g) = k 1 D m (f) + k 2 D m (g),<br />

kur k i ∈ k un f, g ∈ k[[x 1 , ..., x n ]], un apmierina Leibnica jeb reizinājuma atvasināšanas likumu<br />

D m (fg) = D m (f)g + fD m (g).<br />

Šādus gredzenus sauksim par diferenciāliem gredzeniem.<br />

Veidotājfunkcijas var uzdot arī bezgalīga reizinājuma<br />

∞∏<br />

i=i 0<br />

f i (x)<br />

veidā, kur katra no funkcijām f i (x) ir polinomiāla, racionāla vai elementāra funkcija. Bezgalīga<br />

reizinājuma veidotājfunkcijas pārveidošana standarta (summas) veidā notiek formāli, atverot<br />

iekavas reizinājumā un atrodot koeficientu pie visām argumenta pakāpēm. Strādājot ar bezgalīgiem<br />

reizinājumiem, ir lietderīgi izmantot vienādību<br />

∏<br />

(2.31)<br />

x j ),<br />

i∈I<br />

(1 + x i ) = ∑ J⊆I( ∏ j∈J<br />

kuras pierādījums tiek atstāts lasītāja ziņā.<br />

Veidotājfunkcijas ideju var vispārināt uz virknēm, kas ir atkarīgas no vairākiem indeksiem.<br />

Ja ir dota skaitļu virkne {a i1 ,...,i n<br />

} ij ∈N, kas ir atkarīga no n naturāliem indeksiem, tad formālu<br />

pakāpju rindu<br />

(2.32) A(x 1 , ..., x n ) =<br />

∑<br />

i 1 >0,...,i n>0<br />

a i1 ,...,i n<br />

x i 1<br />

1 ...x i k<br />

n<br />

sauksim par virknei atbilstošo daudzargumentu veidotājfunkciju. Visu daudzargumentu veidotājfunkciju<br />

kopu ar argumentiem x 1 , ..., x n un koeficientiem laukā k apzīmēsim ar k[[x 1 , ..., x n ]]


2.6. VEIDOTĀJFUNKCIJU METODE 45<br />

un sauksim par daudzargumentu pakāpju rindu gredzenu. Divas daudzargumentu veidotājfunkcijas<br />

ir vienādas, ja attiecīgie koeficienti pie vienādiem monomiem ir vienādi. Daudzargumentu<br />

veidotājfunkcijas tiek pielietotas, ja skaitāmie objekti ir atkarīgi no vairākiem diskrētiem parametriem.<br />

Piemērs 2.92. Virknes (1, 1, 1, 1, ...) veidotājfunkcija ir<br />

A(x) = 1 + x + x 2 + ... = 1<br />

1 − x .<br />

Virknes (a, a 2 , a 3 , ...) (ǧeometriskās progresijas) veidotājfunkcija ir<br />

B(x) = a + a 2 + ... = a(1 + a + a 2 + ...) =<br />

a<br />

1 − ax .<br />

Piemērs 2.93. Galīgas virknes (Cn, 0 Cn, 1 ..., Cn) n kā augšējā indeksa funkcijas veidotājfunkcija<br />

ir<br />

(2.33) C n (x) = C 0 n + C 1 nx + C 2 nx 2 + ... + C n nx n = (1 + x) n .<br />

Šo faktu var pierādīt, arī izmantojot formulu (2.31), kurā definēsim x = x 1 = ... = x |I| un<br />

ievērosim, ka labajā pusē koeficients pie x i ir vienāds ar i elementus lielu apakškopu skaitu kopā,<br />

kas satur |I| elementus.<br />

Piemērs 2.94. Atradīsim veidotājfunkciju apakšmultikopu virknei, ja ir dota n-multikopa ar<br />

neierobežotu skaitu elementiem. Pieņemsim, ka ir dota multikopa ar elementu tipiem {1, 2, ..., n},<br />

apzīmēsim ar λ M (i) apakšmultikopas M to elementu skaitu, kas ir vienādi ar i, piemēram, ja<br />

M = {1, 1, 2, 3, 3, 3}, tad λ M (1) = 2, λ M (3) = 3 un λ M (4) = 0. Definēsim<br />

Z n = ∑ n∏<br />

( x λ M (i)<br />

i ),<br />

M i=1<br />

kur summēšana tiek veikta pa visām iespējamām apakšmultikopām M n-multikopā. Var redzēt,<br />

ka koeficients pie katra monoma x α 1<br />

1 ...x α n<br />

n ir vienāds ar 1 un<br />

(2.34) Z n = (1+x 1 +x 2 1 +...)(1+x 2 +x 2 2 +...)...(1+x n +x 2 n +...) =<br />

1<br />

(1 − x 1 )(1 − x 2 )...(1 − x n ) .<br />

Liekot x = x 1 = ... = x n un ievērojot, ka koeficients pie monoma x i veidotājfunkcijā Z n (x, ..., x) ir<br />

vienāds ar dažādu apakšmultikopu skaitu, kas satur i elementus, eleganti iegūsim veidotājfunkciju<br />

virknei ¯Cm n :<br />

(2.35)<br />

1<br />

(1 − x) n = ∑ i≥0<br />

¯C i nx n .<br />

No jau uzdotajām veidotājfunkcijām var konstruēt jaunas veidotājfunkcijas, pielietojot algebriska<br />

vai analītiska rakstura operācijas ar veidotājfunkcijām. Vienkāršākās operācijas ir šādas:<br />

• divu veidotājfunkciju saskaitīšana<br />

∞∑<br />

∞∑<br />

∞∑<br />

( a n x n ) + ( b n x n ) = (a n + b n )x n ;<br />

n=0<br />

n=0<br />

• veidotājfunkcijas reizināšana ar skaitli<br />

∞∑<br />

c( a n x n ) =<br />

n=0<br />

n=0<br />

∞∑<br />

ca n x n ;<br />

n=0<br />

• divu veidotājfunkciju reizināšana<br />

∞∑<br />

∞∑<br />

( a n x n ) · ( b n x n ) =<br />

n=0<br />

n=0<br />

∞∑<br />

c n x n ,<br />

n=0<br />

kur c n = ∑ n<br />

i=0 a ib n−i , speciālgadījums - reizināšana ar x k ;


2.6. VEIDOTĀJFUNKCIJU METODE 46<br />

un<br />

• veidotājfunkcijas koeficientu nobīde<br />

∞∑<br />

a n x n →<br />

vai<br />

n=0<br />

∞∑<br />

a n x n →<br />

n=0<br />

• veidotājfunkcijas atvasināšana<br />

∞∑<br />

( a n x n ) ′ =<br />

n=0<br />

∞∑<br />

a n+k x n<br />

n=0<br />

∞∑<br />

a n−k x n ;<br />

n=k<br />

∞∑<br />

a n nx n−1 ;<br />

n=0<br />

• divu veidotājfunkciju kompozīcija (substitūcija)<br />

(A(x), B(x)) → A(B(x)),<br />

ja b 0 = 0 jeb B(0) = 0, šādā gadījumā izteiksmei<br />

∞∑<br />

A(B(x)) = a n B n (x)<br />

n=0<br />

ir formāla jēga, jo katra izteiksmes A(B(x)) koeficienta aprēķināšanai ir nepieciešams<br />

galīgs skaits soļu, šis nosacījums var neizpildīties, ja b 0 ≠ 0 jeb B(0) ≠ 0.<br />

Piemērs 2.95. Ja A(x) = ∑ ∞<br />

n=0 a nx n , tad<br />

e A(x) = exp(A(x)) =<br />

ln(1 − A(x)) = −<br />

∞∑<br />

n=0<br />

∞∑<br />

n=1<br />

A n (x)<br />

n!<br />

A(x)<br />

n .<br />

Atzīmēsim vēl dažus lietderīgus trikus, kurus izmanto darbā ar veidotājfunkcijām:<br />

• A(x) → A(x) − a n x n - n-tā koeficienta anulēšana, iegūstam virkni<br />

(a 0 , a 1 , ..., a n−1 , 0, a n+1 , ...);<br />

• A(x) → A(x 2 ) koeficientu ”izretināšana”, iegūstam virkni<br />

(a 0 , 0, a 1 , 0, ...);<br />

• A(x) → A(x)−a 0<br />

x<br />

virkni<br />

- koeficientu nobīde negatīvajā virzienā par vienu vienību, iegūstam<br />

(a 1 , a 2 , ...);<br />

• A(x) → A ′ (x) - koeficientu reizināšana ar naturāliem skaitļiem, iegūstam virkni<br />

(a 1 , 2a 2 , 3a 3 , ...);<br />

• A(x) → ∫ x<br />

A(t)dt - koeficientu dalīšana ar naturāliem skaitļiem, iegūstam virkni<br />

0<br />

• A(x) → A(x)<br />

1−x<br />

(0, a 1 /2, a 2 /3, ...);<br />

- koeficientu saskaitīšana, iegūstam virkni<br />

(a 0 , a 0 + a 1 , a 0 + a 1 + a 2 , ...).


2.6. VEIDOTĀJFUNKCIJU METODE 47<br />

Piemērs 2.96. Cik dažādos veidos 8 identiskas monētas var sadalīt 3 daļās tā, ka katrā daļā<br />

ir vismaz 2, bet ne vairāk kā 4 monētas? Apzīmēsim ar a n to veidu skaitu, kādos n konfektes<br />

var sadalīt 3 daļās. Var redzēt, ka a n ir vienāds ar koeficientu pie x n polinomā<br />

(x 2 + x 3 + x 4 ) 3<br />

tāpēc, ka a n ir vienāds ar vienādojuma α 1 + α 2 + α 3 pozitīvo atrisinājumu skaitu, kas apmierina<br />

nosacījumu 2 ≤ α i ≤ 4.<br />

Piemērs 2.97. Par naturāla skaitļa n sadalījumu mēs saucam naturālu skaitļu kopu, kuras<br />

elementu summa ir vienāda ar n. Ja n = 5, tad ir 7 dažādi sadalījumi:<br />

5 = 1 + 1 + 1 + 1 + 1 = 1 + 1 + 1 + 2 = 1 + 1 + 3 = 1 + 2 + 2 = 1 + 4 = 2 + 3 = 5.<br />

Ar p(n) mēs apzīmējam naturāla skaitļa sadalījumu skaitu. Definēsim arī p(0) = 0 kā izņēmumu.<br />

Pierādīsim, ka atbilstošā veidotājfunkcija P (x) = ∑ ∞<br />

n=0 p(n)xn apmierina sakarību<br />

P (x) = ∏ 1<br />

1 − x . j j≥1<br />

Tiešām, redzam, ka<br />

∏ 1<br />

1 − x = (1 + x + j x2 + ...)(1 + x 2 + x 4 ...)...(1 + x n + x 2n + ...)...<br />

j≥1<br />

Formāli atverot iekavas šajā bezgalīgajā reizinājumā, redzam, ka locekli ar x i var iegūt, izvēloties,<br />

piemēram, reizinātāju x n 1<br />

no pirmajām iekavām, reizinātaju x n 2<br />

no otrajām iekavām un tā tālāk.<br />

Kāpinātāji apmierina sakarību<br />

n 1 + 2n 2 + ... = i.<br />

Katra šādas kāpinātāju sistēmas izvēle koeficientam pie x i dod ieguldījumu vienādu ar 1, tātad<br />

šis koeficients ir vienāds ar p(i).<br />

Piemērs 2.98. Apskatīsim daudzargumentu veidotājfunkciju, kas atbilst polinomam<br />

Koeficients pie monoma x i 1<br />

1 x i 2<br />

2 ...x i k<br />

k<br />

elementus lielai kopai (C i 1,i 2 ,...,i k<br />

n ).<br />

(x 1 + x 2 + ... + x k ) n .<br />

ir vienāds ar k apakšvirkņu skaitu, kuru elementi pieder n<br />

2.6.2. Kombinatoriskās klases, operācijas ar tām un veidotājfunkcijas. Šajā nodaļā<br />

mēs apskatīsim vispārīgus saliktus kombinatorikas uzdevumus un to atrisināšanu izmantojot veidotājfunkcijas.<br />

Sekojot F.Flažolē darbiem, aprakstīsim kādu relatīvi jaunu pieeju kombinatorikas<br />

uzdevumu risināšanai, kurā akcents tiek likts uz kombinatorikas uzdevumu strukturālo analīzi.<br />

Par kombinatorisko klasi sauksim galīgu vai sanumurējamu kopu A, kuras elementiem ir<br />

definēta izmēra vai lieluma funkcija l : A → N ∪ {0}. Elementa a ∈ A lielumu apzīmēsim arī ar<br />

|a|. Ar A n mēs apzīmēsim kopas A apakškopu l −1 (n) ⊆ A, citiem vārdiem sakot, to elementu<br />

kopu, kuru izmērs ir vienāds ar n. Parasti katras kopas A n elementiem var uzrādīt to nedalāmas<br />

sastāvdaļas ar izmēru 1, kuras sauksim par atomiem, bieži vien atomu kopu identificē ar A 1 .<br />

Uzskatīsim, ka katra kopa A n ir galīga. Par kombinatoriskās klases A skaitošo virkni sauksim<br />

virkni {a n } = {|A n |}. Divas kombinatoriskas klases A un B sauksim par izomorfām (A ≃ B),<br />

ja to skaitošās virknes ir vienādas - |A n | = |B n |. Par kombinatoriskās klases A veidotājfunkciju<br />

sauksim tās skaitošās virknes veidotājfunkciju A(x) = ∑ n≥0 |A n|x n .<br />

Pieņemsim, ka ir dotas kombinatoriskas klases B, C, ... un kāda kombinatoriska klase A, kas<br />

ir atkarīga no B, C, ... - A = F{B, C, ...}, pieņemsim, ka katra kopa A n ir atkarīga no galīga skaita<br />

kopām B i , C j , .... Teiksim, ka Φ ir pieļaujama konstrukcija, ja klases A skaitošā virkne ir atkarīga<br />

tikai no klašu B, C, ... skaitošajām virknēm, citiem vārdiem sakot A(x) = Ψ(B(x), C(x), ...).<br />

Pieļaujamās konstrukcijas uzdod ar specifikāciju palīdzību. Ar E apzīmēsim neitrālo (vienības)<br />

klasi, kuras veidotājfunkcija ir 1 (tajā ir tikai 1 elements ar izmēru 0) - E = E 0 , |E| = 1. Par<br />

atomāru klasi Z sauksim klasi, kuras veidotājfunkcija ir x - Z = Z 1 , |Z| = 1.<br />

Pārskaitīsim dažas plašāk izplatītas pieļaujamas konstrukcijas:


2.6. VEIDOTĀJFUNKCIJU METODE 48<br />

1) apvienojums - ja B ∩ C = ∅, tad A = B + C = B ∪ C;<br />

2) tiešais reizinājum - A = B × C, definēsim |(β, γ)| = |β| + |γ|;<br />

3) virknes - A = S{B} = E + B + B 2 + ... + B k + ..., klases S{B} elementi ir visas<br />

sakārtotas virknes, kuru elementi pieder klasei B, ieskaitot tukšo virkni, k-virknes -<br />

A = S k {B} = B k , klases S k {B} elementi ir visas sakārtotas virknes, kuru garums ir<br />

vienāds ar k, un kuru elementi pieder klasei B;<br />

4) multikopas - A = M{B} = S{B}/R, kur R ir ekvivalences attiecība, kas saista divas<br />

virknes tad un tikai tad, ja tās atšķiras ar elementu kārtību, klases M{B} elementi ir<br />

visas multikopas, kuru elementi pieder klasei B, ieskaitot tukšo multikopu, k-multikopas<br />

-A = M k {B} = S k {B}/R, klases M k {B} elementi ir visas multikopas, kuru elementu<br />

skaits ir vienāds ar k, un kuru elementi pieder klasei B;<br />

5) kopas - A = P{B} ⊆ M{B}, klases P{B} elementi ir visas galīgas kopas, kuru elementi<br />

pieder klases B, ieskaitot tukšo kopu, k-kopas - kopas, kuru elementu skaits ir vienāds<br />

ar k, un kuru elementi pieder klasei B;<br />

6) cikli - A = C{B} = S{B}/C, kur C ir ekvivalences attiecība, kas saista divas virknes tad<br />

un tikai tad, ja tās atšķiras ar elementu ciklisku pārbīdi, klases C{B} elementi ir visi cikli,<br />

kuru elementi pieder klasei B, ieskaitot tukšo ciklu, k-cikli - A = C k {B} = S k {B}/C;<br />

7) iezīmēšana - A = ΘB = ∑ n≥0 B n × {ɛ 1 , ..., ɛ n }, kur ɛ i ir dažādi objekti ar izmēru 0,<br />

klases ΘB elementi ir jāinterpretē kā klases B elementi, kuros viens atoms ir iezīmēts;<br />

8) substitūcija<br />

∑<br />

jeb kompozīcija - ja ir dotas klases B un C, tad definēsim A = B{C} =<br />

k≥0 B k × S k {C}, klases B{C} elementi tiek iegūti, ievietojot klases B elementu atomu<br />

vietās klases C elementus.<br />

Piemērs 2.99. Ja B = B 1 = {0, 1}, tad S{B} ir visu bināro virkņu kopa. Ja B = B 1 = {a},<br />

tad N = S ≥1 {B} = ∑ k≥1 S k{B} ir (unārajā alfabētā uzdotu) naturālo skaitļu kopa, P = M{N }<br />

ir naturālo skaitļu sadalījumu kopa.<br />

Kombinatoriskas klases specifikāciju un pašu klasi sauksim par iteratīvu, jo to var uzdot<br />

ar neitrālajām un atomārajām klasēm pielietojot (iespējams, vairākkārtīgi) apvienojuma, tiešā<br />

reizinājuma, virknes, multikopas, kopas un cikla operācijas. Kombinatoriskas klases specifikāciju<br />

sauksim par rekursīvu, ja definējamā klase A ir uzdota formā A = F{A}.<br />

Vispārīgā gadījumā kombinatorisko klašu kopas {A 1 , ..., A n } specifikācija ir sistēma<br />

⎧<br />

⎪⎨<br />

⎪⎩<br />

A 1 = F 1 {A 1 , ..., A n }<br />

A 2 = F 2 {A 1 , ..., A n }<br />

...<br />

A n = F n {A 1 , ..., A n }<br />

kur katra specifikācija satur tikai neitrālās un atomārās klases, definējamās klases un vienkāršākās<br />

operācijas.<br />

Teorēma 2.100. 1) Ja A = B + C, kur B ∩ C = ∅, tad A(x) = B(x) + C(x);<br />

2) ja A = B × C, tad A(x) = B(x)C(x);<br />

3) ja A = S{B}, tad A(x) = 1 ; 1−B(x)<br />

4) ja A = M{B}, tad A(x) = ∏ i≥1<br />

= exp( ∑ 1<br />

k≥1 k B(xk ));<br />

1<br />

(1−x i ) |B i |<br />

5) ja A = P{B}, tad ∏ i≥1 (1 + xi ) |Bi| = exp( ∑ k≥1<br />

B(x k ));<br />

k<br />

6) ja A = C{B}, tad A(x) = ∑ ϕ(k) 1<br />

k≥1<br />

ln( ), kur ϕ ir veselo skaitļu teorijas Eilera<br />

k 1−B(x k )<br />

funkcija;<br />

7) ja A = ΘB, tad A(x) = xB ′ (x);<br />

8) ja A = B{C}, tad A(x) = B(C(x)).<br />

Virkņu, kopu un ciklu konstrukcijās tiek pieņemts, ka |B 0 | = 0.<br />

,<br />

(−1) k+1<br />

Pierādījums.<br />

1) Tā kā A n = B n ∪ C n un B n ∩ C n = ∅, tad |A n | = |B n | + |C n | un A(x) = B(x) + C(x).


2.6. VEIDOTĀJFUNKCIJU METODE 49<br />

2) Tā kā A n = ∑ n<br />

i=0 B i × C n−i , tad |A n | = ∑ n<br />

i=0 |B i||C n−i | un A(x) = B(x)C(x).<br />

3) Tā kā A = E + B + B × B + ..., tad A(x) = 1 + B(x) + B 2 (x) + ... = 1 . 1−B(x)<br />

4) Var redzēt, ka A = M{B} ≃ ∏ β∈B<br />

S{B}, jo multikopas elementus var šķirot pēc to<br />

izmēra un noteiktas kārtības katrā klasē B n . Tādējādi<br />

A(x) = ∏ 1<br />

β∈B<br />

= ∏ 1<br />

1−x |β| n≥1<br />

=<br />

(1−x n ) |B n|<br />

= exp(ln( ∏ n≥1 (1 − xn ) |Bn| )) = exp( ∑ n≥1 |B n| ln((1 − x n ) −1 )).<br />

5) Var redzēt, ka A = S{B} ≃ ∏ β∈B<br />

(E +{β}), jo katru galīgu kopu, kuras elementi pieder<br />

klasei B, var iekodēt kā bezgalīgu sakārtotu virkni, kurā ir galīgs skaits elementu ar<br />

pozitīvu izmēru, un pārējie elementi ir ar izmēru 0. Tādējādi<br />

A(x) = ∏ β∈B<br />

(1 + x |β| ) = ∏ n≥1<br />

(1 + x n ) |Bn| = exp( ∑ n≥1<br />

|B n | ln(1 + x n )).<br />

QED<br />

6) Šī apgalvojuma pierādījums ir grūts un netiks dots.<br />

7) Ja A = ΘB, tad saskaņā ar iezīmēšanas definīciju |A n | = n · |B n |, tāpēc A(x) = xB ′ (x).<br />

8) Ja A = B{C}, tad A(x) = ∑ k≥0 |B k|(C(x)) k = B(C(x)).<br />

Piemērs 2.101. Ja B = B 1 un |B| = 1, tad definēsim A = S{B}. Redzam, ka<br />

A(x) =<br />

Esam vēlreiz ieguvuši rezultātu Ān m = m n .<br />

1<br />

1 − B(x) = 1<br />

1 − mx = ∑ m n x n .<br />

n≥0<br />

Piemērs 2.102. Var redzēt, ka ja A = S k {B}, tad A(x) = B(x) k . Izteiksim veidotājfunkcijas<br />

klasēm P 2 {B} un M 2 {B}, ja veidotājfunkcija klasei B ir zināma. Klases A = P 2 {B} elementi ir<br />

nesakārtoti klases B dažādu elementu pāri, katru šādu pāri var identificēt ar divu sakārtotu pāru<br />

(α, β) un (β, α) kopu. Definēsim D = D{B} = ∆(B × B) = {(α, α)|α ∈ B}. Tā kā |D 2n | = |B n |<br />

un |D 2n+1 | = 0, tad D(x) = B(x 2 ). Redzam, ka<br />

tātad 2A(x) + B(x 2 ) = B(x) 2 un<br />

P 2 {B} + P 2 {B} + D ≃ B × B,<br />

A(x) = B(x)2 − B(x 2 )<br />

.<br />

2<br />

Klases A = M 2 {B} elementi ir nesakārtoti klases B ne obligāti dažādu elementu pāri, tāpēc<br />

A ≃ P 2 {B} + D un A(x) = B(x)2 −B(x 2 )<br />

+ B(x 2 ). Iegūstam, ka<br />

2<br />

A(x) = B(x)2 + B(x 2 )<br />

.<br />

2<br />

2.6.3. Racionālās un algebriskās veidotājfunkcijas. Veidotājfunkciju A(x) sauksim par<br />

racionālu veidotājfunkciju, ja to var izteikt ka divu polinomu attiecību:<br />

kur Q(0) ≠ 0.<br />

A(x) = P (x)<br />

Q(x) ,<br />

Teorēma 2.103. (Fundamentālā teorēma par racionālajām veidotājfunkcijām). Pieņemsim,<br />

ka ir doti kompleksi skaitļi q 0 , q 1 , ..., q m−1 , q m un kompleksu skaitļu virkne {a n } n≥0 Zemāk dotie<br />

apgalvojumi ir ekvivalenti:<br />

1) ∑ ∞<br />

n=0 a nx n = P (x)<br />

Q(x) , kur Q(x) = q mx m +q m−1 x m−1 +...+q 1 x+q 0 , P (x) ∈ C(x), deg(P ) <<br />

deg(Q) = m;


2.6. VEIDOTĀJFUNKCIJU METODE 50<br />

2) visiem k ≥ m izpildās lineāra rekurenta sakarība<br />

m∑<br />

a k q 0 + a k−1 q 1 + ... + a k−m q m = a k−j q j = 0;<br />

3) visiem n ≥ 0 izpildās sakarība<br />

a n =<br />

r∑<br />

i=1<br />

P i (n)<br />

,<br />

λ n i<br />

kur dažādie skaitļi λ i tiek definēti saskaņā ar vienādību<br />

r∏<br />

q m x m + q m−1 x m−1 + ... + q 1 x + q 0 = q m (x − λ i ) m i<br />

, deg(P i ) < m i .<br />

Pierādījums. Īsta daļveida racionāla funkcija P (x)<br />

Q(x)<br />

parciāldaļu summas veidā<br />

P (x)<br />

Q(x) =<br />

r∑ ∑m i<br />

i=1<br />

j=1<br />

i=1<br />

j=0<br />

virs komplekso skaitļu lauka ir izsakāma<br />

c ij<br />

(x − λ i ) j ,<br />

kur visi kompleksie skaitļi λ i ir dažādi. Izvirzīsim parciāldaļu<br />

1<br />

(x−λ) k Teilora rindā ap punktu 0:<br />

Redzam, ka<br />

(−1) k<br />

λ(k−1)!<br />

1<br />

(x−λ)<br />

∑<br />

k<br />

n≥0<br />

P (x)<br />

= ∑ r<br />

Q(x)<br />

∑n≥0 xn ∑ r<br />

i=1<br />

= (−1)k−1 ( 1<br />

(k−1)! x−λ )(k−1) = (−1)k−1 (− 1 )(∑ x n<br />

(k−1)! λ n≥0<br />

1<br />

λ n n(n − 1)...(n − k + 2)x n−k+1 = (−1)k<br />

λ(k−1)!<br />

∑ mi c ij<br />

i=1 j=1 (x−λ i )<br />

∑ j<br />

1 mi<br />

λ n i<br />

j=1 c ij (−1)j<br />

λ j i<br />

= ∑ r ∑ mi<br />

i=1 j=1 c ∑<br />

ij (−1)j<br />

λ j n≥0<br />

i<br />

λ n ) (k−1) =<br />

∑<br />

n≥0<br />

A j−1<br />

A j−1<br />

n+j−1 = ∑ n≥0 xn ∑ r<br />

i=1<br />

n+j−1<br />

λ n i<br />

A k−1<br />

n+k−1<br />

λ n x n .<br />

x n =<br />

1<br />

P<br />

λ n i (n),<br />

i<br />

kur visas funkcijas P i (n) ir polinomi un deg(P i ) < m i . Salīdzinot veidotājfunkcijas koeficientus,<br />

redzam, ka šie aprēķini pierāda teorēmas apgalvojumu (1) un (3) ekvivalenci. Pieņemsim, ka ir<br />

spēkā teorēmas apgalvojums (1). Formāli reizinot abas vienādības<br />

∞∑<br />

puses ar saucēju Q(x), iegūsim<br />

Pārveidojot iegūsim<br />

∑<br />

a n x n<br />

n≥0<br />

m<br />

∑<br />

i=0<br />

q i x i = ∑ n≥0<br />

n=0<br />

Q(x)<br />

a n x n = P (x)<br />

Q(x)<br />

∞∑<br />

a n x n = P (x).<br />

n=0<br />

m∑<br />

a n q i x n+i = ∑ n≥m<br />

i=0<br />

x n<br />

m<br />

∑<br />

j=0<br />

Tā kā deg(P ) < m, tad visiem k ≥ m izpildās sakarība<br />

m∑<br />

a k−j q j = 0.<br />

i=0<br />

a n−j q j +<br />

m−1<br />

∑<br />

n=0<br />

x n<br />

n∑<br />

a n−j q j = P (x).<br />

Ja izpildās šāda rekurenta sakarība, tad, izmantojot homogēnu lineāru rekurento sakarību risināšanas<br />

metodi, var parādīt, ka izpildās apgalvojums (3) un teorēma ir pierādīta ar ciklisko metodi.<br />

QED<br />

Fundamentālā teorēma par racionālajām veidotājfunkcijām izsaka to, ka racionālās veidotājfunkcijas<br />

ir tieši tās veidotājfunkcijas, kas atbilst lineāru rekurentu sakarību atrisinājumiem,<br />

j=0


2.6. VEIDOTĀJFUNKCIJU METODE 51<br />

ignorējot galīgu skaitu noviržu no rekurentās sakarības, kuras var rasties, ja racionālā veidotājfunkcija<br />

nav īsta (skaitītāja pakāpe nav mazāka kā saucēja pakāpe) un tai eksistē netriviāls<br />

sadalījums polinoma un īstas daļveida racionālas funkcijas summā.<br />

Piemērs 2.104. Izmantojot racionālās veidotājfunkcijas, atrisināsim nehomogēnu lineāru<br />

pir-mās kārtas rekurentu sakarību<br />

a n = 2a n−1 + 1, a 0 = 0, n ≥ 0.<br />

Reizināsim abas puses ar x n un formāli summēsim no 1 līdz ∞:<br />

∑<br />

x n .<br />

n≥1<br />

a n x n = 2 ∑ n≥1<br />

a n−1 x n + ∑ n≥1<br />

Apzīmējot meklējamās virknes veidotājfunkciju ar A(x), iegūsim sakarību<br />

A(x) = 2xA(x) +<br />

x<br />

1 − x .<br />

Atrisinot šo sakarību attiecībā uz A(x), iegūsim, ka<br />

x<br />

A(x) =<br />

(1 − x)(1 − 2x) .<br />

Šajā gadījumā ir lietderīgi sadalīt atrasto racionālo funkciju parciāldaļu summā un izteikt atbildi<br />

kā parciāldaļu koeficientu summu:<br />

A(x) = 1<br />

1 − 2x − 1<br />

1 − x = ∑ (2x) n − ∑ x n = ∑<br />

n≥0<br />

n≥0 n≥0(2 n − 1)x n ,<br />

tātad a n = 2 n−1 .<br />

Piemērs 2.105. Atcerēsimies, ka Fibonači virkne tiek definēta šādā veidā:<br />

Definēsim<br />

a 0 = 1, a 1 = 1, ..., a n = a n−1 + a n−2 .<br />

F (x) = ∑ n≥0<br />

a n x n .<br />

Salīdzināsim veidotājfunkcijas F (x), xF (x) un x 2 F (x). Var ievērot, ka<br />

F (x) = 1 + xF (x) + x 2 F (x),<br />

atrisinot šo vienādojumu attiecībā uz F (x), iegūstam<br />

1<br />

F (x) =<br />

1 − x − x , 2<br />

tālāk izvirzām Teilora rindā un atrodam atbildi<br />

a n = √ 1 (( 1 + √ 5<br />

) n+1 − ( 1 − √ 5<br />

) n+1 ).<br />

5 2<br />

2<br />

Veidotājfunkciju A(x) = ∑ ∞<br />

n=n 0<br />

a n x n sauksim par algebrisku, ja eksistē divu argumentu<br />

polinoms R(u, v), kurš nav identiski vienāds ar 0 un formāli (koeficientu vienādības nozīmē)<br />

izpildās sakarība<br />

(2.36) R(x, A(x)) = 0.<br />

Viegli redzēt, ka jebkura racionāla veidotājfunkcija ir algebriska, jo veidotājfunkcija A(x) = P (x)<br />

Q(x)<br />

apmierina polinomiālu sakarību<br />

Q(x)A(x) − P (x) = 0.<br />

Teorēma 2.106. Ja veidotājfunkcija A(x) = ∑ ∞<br />

n=n 0<br />

a n x n ir algebriska, tad eksistē naturāls<br />

skaitlis m un polinomi P 0 (x), P 1 (x), ..., P m (x) tādi, ka visiem naturāliem n izpildās sakarība<br />

(2.37) P m (n)a n+m + P m−1 (n)a n+m−1 + ... + P 0 (n)a n = 0.


2.6. VEIDOTĀJFUNKCIJU METODE 52<br />

Pierādījums. Pieņemsim, ka veidotājfunkcija A(x) = ∑ ∞<br />

n=n 0<br />

a n x n apmierina polinomiālu<br />

sakarību R(x, A(x)) = 0. Atvasināsim šīs vienādības abas puses uzskatot R par divu argumentu<br />

funkciju R(x, y):<br />

R x(x, ′ A(x)) + A ′ (x)R y(x, ′ A(x)) = 0.<br />

Iegūstam, ka<br />

A(x) = − R′ x(x, A(x)<br />

R ′ y(x, A(x)<br />

ir racionāla funkcija no x un A(x). Līdzīgā veidā var parādīt, ka visi veidotājfunkcijas A(x)<br />

atvasinājumi ir racionālas funkcijas no x un A(x). Izmantosim faktu no lineārās algebras,<br />

kuru lasītājam ir jāpieņem bez pierādījuma: ja funkcija A(x) apmierina polinomiālu sakarību<br />

R(x, A(x)) = 0, tad visu racionālo funkciju no x un A(x) kopas kā lineāras telpas virs visu<br />

racionālu funkciju lauka ir galīga - dim C(x) C(x, A(x)) < ∞. No šī fakta seko, ka visu A(x)<br />

atvasinājumu kopa {A (k) (x)} k≥0 ir galīgi dimensionāla virs racionālo funkciju lauka un eksistē<br />

lineāra sakarība ar racionālu funkciju koeficientiem, kas saista šīs funkcijas. Reizinot šādu lineāru<br />

sakarību ar kopsaucēju un salīdzinot koeficientus pie vienādām x pakāpēm, iegūsim sakarību<br />

(2.37). QED<br />

Virknes, kas apmierina (2.37) tipa rekurentas sakarības, sauksim par polinomiāli rekursīvām<br />

jeb P-rekursīvām.<br />

Piemērs 2.107. Katalāna skaitļi. Cik veidos var ”pareizi” salikt iekavas virknē, kas satur<br />

n elementus, pielietojot bināru operāciju n − 1 reizi, piemēram, rēķinot skaitļu reizinājumu, ja<br />

iekavas apzīmē divu skaitļu reizināšanu? Ja n = 4, tad ir pieci veidi:<br />

(((xy)z)t), (x(y(zt))), ((xy)(zt)), ((x(yz))t), (x((yz)t)).<br />

Katram n apzīmēsim šo variantu skaitu ar C n . Viegli redzēt, ka<br />

Definēsim<br />

C 2 = 1, C 3 = 2, C 4 = 5.<br />

C 0 = 0, C 1 = 1.<br />

Apskatīsim stāvokli pirms pēdējās reizināšanas - jebkurš reizinājums, kad visas iekavas, izņemot<br />

pēdējo pāri, ir saliktas, ir izsakāma formā R 1 R 2 , kur katrā no reizinājumiem R 1 un R 2 visas<br />

iekavas ir saliktas. Tas nozīmē, ka virkne tiek sadalīta divās daļās:<br />

x 1 ...x } {{ } k x k+1 ...x<br />

} {{ n<br />

}<br />

R 1 R 2<br />

(katrā no daļām kaut kā ir saliktas iekavas). Šai konkrētai k vērtībai kopējais variantu skaits ir<br />

C k C n−k , jo katrā no reizinājumiem var neatkarīgi iekavas salikt C k un C n−k veidos. Skaitot kopā<br />

iespējas visām k vērtībām, iegūstam rekurentu sakarību (ja n ≥ 2):<br />

Apskatīsim atbilstošo veidotājfunkciju<br />

∑n−1<br />

C n = C k C n−k =<br />

k=1<br />

n∑<br />

C k C n−k .<br />

k=0<br />

C(x) = ∑ n≥0<br />

C n x n .<br />

Salīdzināsim veidotājfunkcijas C(x) un C 2 (x). Redzam, ka ja n > 1, tad koeficients pie x n<br />

veidotājfunkcijā C(x) ir vienāds ar to pašu koeficientu veidotājfunkcijā C 2 (x). Lai iegūtu C(x),<br />

pie C 2 (x) ir jāpieskaita lineārais loceklis ar koeficientu 1, jo C 1 = 1. Iegūstam vienādojumu<br />

C(x) = C 2 (x) + x,


kuru, atrisinot attiecībā uz C(x), iegūstam<br />

2.6. VEIDOTĀJFUNKCIJU METODE 53<br />

C(x) = 1 ± √ 1 − 4x<br />

.<br />

2<br />

Tā kā C 0 = 0, tad mums ir jāņem ”mīnus” zīme. Tālāk izvirzām Teilora rindā un iegūstam, ka<br />

C n−1 = 1 n Cn−1 2n−2.<br />

Piezīmēsim, ka veidotājfunkcija C(x) apmierina kvadrātisku polinomiālu sakarību, tāpēc to var<br />

saukt par kvadrātisku veidotājfunkciju.<br />

Var arī ievērot, ka pareizo iekavu salikšanas veidu kombinatoriskā klase C apmierina rekursīvas<br />

specifikācijas C ≃ Z+C 2 vai C ≃ Z×S{C}, no kurām seko kvadrātiska sakarība veidotājfunkcijai.<br />

Piemērs 2.108. Šrēdera skaitļi. Vispārināsim uzdevumu par Katalāna skaitļiem šādā veidā.<br />

Skaitīsim, cik veidos var pareizi salikt iekavas n elementu virknē, ja katrs iekavu pāris nozīmē<br />

operāciju ar patvaļīgu operandu skaitu, lielāku kā 2. Varam uzskatīt, ka visi n elementi ir vienādi<br />

ar a. Formāli varam definēt pareizu iekavu salikšanas veidu kā vārdu alfabētā {a, (, )} šādi:<br />

1) (a) ir pareizs iekavu salikšanas veids (turpmāk iekavas ap a neuzrādīsim);<br />

2) ja vārdi A 1 , ..., A k , k ≥ 2 ir pareizi iekavu salikšanas veidi, tad vārds (A 1 ...A k ) arī ir<br />

pareizs iekavu salikšanas veids.<br />

Ja n = 4, tad eksistē 11 pareizi iekavu salikšanas veidi:<br />

(((aa)a)a), (a(a(aa))), ((a(aa))a), (a((aa)a)), ((aa)(aa)),<br />

((aa)aa), (a(aa)a), (aa(aa)), ((aaa)a), (a(aaa)), (aaaa)<br />

Apzīmēsim pareizu iekavu salikšanas veidu skaitu n elementu virknei ar s n . Definēsim s 0 =<br />

0, s 1 = 1. Definēsim atbilstošo veidotājfunkciju S(x) = ∑ n≥0 s nx n . Spriežot līdzīgi kā Katalāna<br />

skaitļu gadījumā, iegūstam, ka S(x) apmierina vienādojumu<br />

S(x) = x + S 2 (x) + S 3 (x) + ... = x +<br />

S2 (x)<br />

1 − S(x) ,<br />

kuru var pārveidot formā<br />

2S 2 (x) + S(x)(−x − 1) + x = 0,<br />

kas ir kvadrātisks vienādojums attiecībā uz S(x). Iegūstam, ka<br />

S(x) = x + 1 − √ x 2 − 6x + 1<br />

.<br />

4<br />

Citiem vārdiem sakot, visu pareizo iekavu salikšanas veidu kombinatoriskā klase S apmierina<br />

rekursīvu specifikāciju S ≃ Z + S ≥2 {S}, kur Z ir atomāra klase, kas nozīmē vienu simbolu,<br />

no kuras seko kvadrātiska sakarība veidotājfunkcijai. Šrēders bija 19.gs vācu matemātiķis, kas<br />

pirmais atrada formulu šai veidotājfunkcijai. Daži no Šrēdera skaitļiem ir pieminēti seno grieķu<br />

filozofu un matemātiķu darbos 1.gs pirms Kristus. Sengrieķu vēsturnieka Plutarha darbā, kas<br />

publicēts ap 100.g pēc Kristus, ir minēts, ka astronoms un matemātiķis Hiparhs no Rodosas, kas<br />

dzīvoja ap 200.g pirms Kristus, ir atrisinājis divus loǧikas uzdevumu, kuru atbildes ir 103049 un<br />

310952. Līdz pat 20.gs 90.gadu beigām speciālisti šos skaitļus nevarēja izskaidrot. 1996.gadā tika<br />

ievērots, ka 103049 = s 10 un 310952 = s 10+s 11<br />

2<br />

−2 un tika atrastas šo loǧikas uzdevumu iespējamās<br />

interpretācijas. Nenoskaidrots paliek jautājums par metodēm, ar kurām Hiparhs atrisināja šos<br />

uzdevumus. Šis gadījums rāda, ka zināšanu apjoms, kas bija uzkrāts antīkajā pasaulē un kas<br />

gāja bojā kopā ar to, bija dažos virzienos samērojams ar mūsdienu zinātnes sasniegumiem.


2.6. VEIDOTĀJFUNKCIJU METODE 54<br />

2.6.4. Eksponenciālās veidotājfunkcijas. Eksponenciālās veidotājfunkcijas var tikt pielietotas,<br />

ja uzdevums ir saistīts ar permutāciju skaita atrašanu, tas ir, uzdevumos, kur elementu<br />

kārtība virknēs ir svarīga. Viegli ievērot, ka izpildās sakarība<br />

x n<br />

n! · xm<br />

m! = x n+m<br />

Cn n+m<br />

(n + m)! .<br />

Ja ir dotas divas virknes a n un b n , kas skaita A tipa un B tipa objektus, kurus var izveidot no<br />

n elementus lielas kopas, ja šo virkņu eksponenciālās veidotājfunkcijas ir<br />

A exp (x) = ∑ a n<br />

n! xn<br />

n≥0<br />

un<br />

tad to reizinājums<br />

B exp (x) = ∑ n≥0<br />

A exp (x)B exp (x) = ∑ n≥0<br />

b n<br />

n! xn ,<br />

x n<br />

n!<br />

n∑<br />

Cna i i b n−i<br />

ir eksponenciālā veidotājfunkcija sakārtotiem objektu pāriem (A, B). Tiešām, lai konstruētu<br />

pāri (A, B) ar kopējo lielumu n, mums ir jāizvēlas indekss i, i elementus liela apakškopa no<br />

n elementus lielas kopas (to var izdarīt Cn i veidos), A tipa objekts, ko var izveidot no šiem i<br />

elementiem (to var izdarīt a n veidos) un B tipa objekts, ko var izveidot no atlikušajiem n − i<br />

elementiem (to var izdarīt b n−i veidos), ir jāizmanto reizināšanas un summas likumi.<br />

Piemērs 2.109. Eksponenciālā veidotājfunkcija netukšu kopu skaitam kā funkcijai no elementu<br />

skaita ir<br />

∑ x n<br />

n! = ex − 1,<br />

n≥1<br />

jo katram n > 0 atbilst viena kopa, ja ir doti kopas elementi, piemēram, skaitļi no 1 līdz<br />

n. Atradīsim eksponenciālo veidotājfunkciju n elementu kopas sadalījumu skaitam divu netukšu<br />

apakškopu virknē (pārī). Saskaņā ar augstāk aprakstīto novērojumu šī eksponenciālā<br />

veidotājfunkcija ir vienāda ar<br />

(e x − 1) 2 = ∑ n≥2<br />

i=0<br />

(2 n − 2) xn<br />

n! .<br />

Šo rezultātu var pārbaudīt arī neatkarīgi - n elementu kopas sadalījumu divu netukšu apakškopu<br />

virknē pilnīgi nosaka šī sadalījuma pirmais elements, kas ir īsta netukša apakškopa. Šādu<br />

apakškopu skaits ir 2 n − 2 (visas n elementus lielas kopas apakškopas mīnus tukšā apakškopa<br />

un pati kopa). Visu kopas sadalījumu netukšu apakškopu virknēs skaita eksponenciāla veidotājfunkcija<br />

ir<br />

∑<br />

(e x − 1) k 1<br />

=<br />

1 − (e x − 1) = 1<br />

2 − e . x<br />

k≥0<br />

Vispārināsim minēto novērojumu. Zemāk dotajās teorēmās apzīmējumu ērtuma dēļ definēsim<br />

virknes kā funkcijas no nenegatīva vesela argumenta, piemēram, a n = a(n).<br />

Teorēma 2.110. Ir dotas divas virknes a(n), n ≥ 0 un b(n), n ≥ 0, definēsim jaunu virkni<br />

c(n) ar šādu nosacījumu:<br />

(2.38) c(|X|) = ∑<br />

a(|Y |)b(|Z|),<br />

(Y,Z)<br />

kur kopa X ir galīga un summēšana tiek veikta pa visiem kopas X sakārtotiem sadalījumiem<br />

(Y, Z), citiem vārdiem sakot, Y ∪ Z = X, Y ∩ Z = ∅. Tad izpildās sakarība


2.6. VEIDOTĀJFUNKCIJU METODE 55<br />

(2.39) C exp (x) = A exp (x)B exp (x).<br />

Pierādījums. Pieņemsim, ka |X| = n, tad<br />

n∑<br />

c(n) = Cna(i)b(n i − i),<br />

i=0<br />

jo eksistē C i n dažādi pāri (Y, Z), tādi, ka |Y | = i. Redzam, ka c(n) ir koeficients pie xn<br />

n!<br />

pakāpju<br />

rindai A exp (x)B exp (x). QED<br />

Piemērs 2.111. Cik dažādos veidos var izvēlēties n elementus lielas kopas sadalījumu divās<br />

daļās, pirmās daļas apakškopu un sakārtotu dažādu elementu pāri otrajā daļā? Šajā gadījumā<br />

a(n) = 2 n un b(n) = n(n − 1), tāpēc<br />

A exp (x) = ∑ 2 n x n<br />

= e 2x<br />

n!<br />

n≥0<br />

un<br />

B exp (x) = ∑ n(n − 1)x n<br />

= x 2 e x .<br />

n!<br />

n≥0<br />

Saskaņā ar (2.110) iegūstam, ka uzdevuma atrisinājuma eksponenciālā veidotājfunkcija ir vienāda<br />

ar x 2 e 3x , tāpēc atbilde ir vienāda ar n(n − 1)3 n .<br />

Teorēma 2.112. Ir dotas k virknes a 1 (n), ..., a k (n), n ≥ 0, definēsim jaunu virkni c(n) ar<br />

šādu nosacījumu:<br />

(2.40) c(|X|) = ∑<br />

a(|Y 1 |)...a(|Y k |),<br />

(Y 1 ,...,Y k )<br />

kur kopa X ir galīga un netukša, un summēšana tiek veikta pa visiem kopas X sakārtotiem<br />

sadalījumiem (Y 1 , ..., Y k ). Tad izpildās sakarība<br />

k∏<br />

(2.41) C exp (x) = A exp (x).<br />

Pierādījums. Šo faktu var pierādīt, atkārtoti pielietojot (2.110). QED<br />

i=1<br />

Piemērs 2.113. Atrisināsim uzdevumu par variācijam bez atkārtojumiem, izmantojot eksponenciālās<br />

veidotājfunkcijas - cik veidos var izvēlēties m elementus garu virkni no n elementus<br />

lielas kopas? Izmantosim (2.112). Ja virknes a 1 (i), ..., a n (i) tiek definētas ar nosacījumu<br />

0, ja i>1<br />

a j (i) = { 1, ja 0≤i≤1,<br />

tad virkne c(i), kas definēta ar nosacījumu (2.34), kur k = n, izsaka sakārtotu virkņu skaitu ar<br />

garumu i. Saskaņā ar (2.112) iegūstam, ka C exp (x) = (1 + x) n un sakārtotu virkņu skaits ar<br />

garumu m ir vienāds ar C m n · m! = n!<br />

(n−m)! .<br />

Piemērs 2.114. Cik dažādas 5 vienības garas virknes (vārdus) var izveidot no vārda KOM-<br />

BINATORIKA burtiem? Izmantojot (2.112), iegūsim atrisinājumam atbilstošo eksponenciālo<br />

veidotājfunkciju<br />

(1 + x) 5 (1 + x + x2<br />

2! )4<br />

un atrisinājums ir šī polinoma koeficients pie x5 . Burti M,B,N,T un R dotajā vārdā ir vienu<br />

5!<br />

reizi, un katrs no šiem burtiem var būt vai nebūt 5 vienības garajā vārdā, tātad katram no šiem<br />

burtiem veidotājfunkcijā atbildīs viens lineārs reizinātājs formā 1 + x. Burti K,O,I un A dotajā<br />

vārdā ir divas reizes, tātad katrs no šiem burtiem 5 vienības garajā vārdā var būt 0,1 vai 2 reizes,<br />

tāpēc katram no šiem burtiem veidotājfunkcijā atbildīs reizinātājs 1 + x + x2 . 2!


2.6. VEIDOTĀJFUNKCIJU METODE 56<br />

Piemērs 2.115. Cik ir dažādu m vienības garu virkņu alfabētā {0, 1, 2, 3}, kurās neviens<br />

simbols nav tieši 2 reizes? Atbilstošā eksponenciālā veidotājfunkcija ir (e x − x2<br />

2! )4 un atrisinājums<br />

ir koeficients pie xm . m!<br />

Teorēma 2.116. Ir dota virkne a(n), n ≥ 1, definēsim jaunu virkni c(n) ar šādu nosacījumu:<br />

∑<br />

(2.42) c(|X|) = a(|Y 1 |)...a(|Y k |),<br />

π=(Y 1 ,...,Y k )<br />

kur kopa X ir galīga un netukša un summēšana tiek veikta pa visiem kopas X nesakārtotiem<br />

sadalījumiem netukšās apakškopās π = (Y 1 , ..., Y k ). Tad izpildās sakarība<br />

(2.43) C exp (x) = e Aexp(x) .<br />

Pierādījums. Definēsim a(0) = 0. Katram k > 0 definēsim virkni b k (n) ar nosacījumu<br />

b k (|X|) =<br />

∑<br />

a(|Y 1 |)...a(|Y k |),<br />

(Y 1 ,...,Y k )<br />

kur summēšana tiek veikta pa visiem sakārtotiem sadalījumiem ar fiksētu apakškopu skaitu k.<br />

Ievērosim, ka<br />

B k,exp = A k exp(x)<br />

saskaņā ar (2.112). Visi sakārtotie sadalījumi ir dažādi, jo neviena no sadalījuma apakškopām<br />

nav tukša. Katram k > 0 definēsim virkni c k ar nosacījumu<br />

∑<br />

c k (|X|) = a(|Y 1 |)...a(|Y k |),<br />

π=(Y 1 ,...,Y k )<br />

kur summēšana tiek veikta pa visiem nesakārtotiem sadalījumiem ar fiksētu apakškopu skaitu<br />

k. Redzam, ka<br />

tāpēc<br />

QED<br />

C exp (x) = 1 + ∑ k≥1<br />

C exp (x) = B k,exp(x)<br />

k!<br />

C k,exp (x) = ∑ k≥0<br />

= Ak exp(x)<br />

,<br />

k!<br />

A k exp(x)<br />

k!<br />

= e Aexp(x) .<br />

Teorēma 2.117. (Kompozicionālā formula). Ir dotas virknes a(n), n ≥ 1 un b(n), n ≥ 0,<br />

izpildās nosacījums b(0) = 1. Definēsim jaunu virkni c(n) ar šādu nosacījumu:<br />

∑<br />

(2.44) c(|X|) = a(|Y 1 |)...a(|Y k |)b(k),<br />

π=(Y 1 ,...,Y k )<br />

kur kopa X ir galīga un summēšana tiek veikta pa visiem kopas X nesakārtotiem sadalījumiem<br />

netukšās apakškopās. Tad izpildās sakarība<br />

(2.45) C exp (x) = B exp (A exp (x)).<br />

QED<br />

Pierādījums. Pierādījums tiek veikts tāpat kā (2.116). Rezultātā iegūsim<br />

C exp (x) = ∑ k≥0<br />

A k expB(k)<br />

k!<br />

= B exp (A exp (x)).<br />

Piemērs 2.118. Bella skaitļi. Nodaļā par rekurentajām sakarībam mēs ieguvām rekurentu<br />

sakarību, kuru apmierina Bella skaitļi:<br />

n∑<br />

B n+1 = CnB k n−k<br />

k=0


vai, nobīdot indeksu,<br />

2.6. VEIDOTĀJFUNKCIJU METODE 57<br />

B n =<br />

n∑<br />

k=1<br />

C k−1<br />

n−1B n−k .<br />

Atradīsim eksponenciālo veidotājfunkciju, kas atbilst virknei B n (apzīmējumu ērtības dēļ apzīmēsim<br />

to ar B(x)):<br />

B(x) = ∑ B k x k<br />

.<br />

k!<br />

k≥0<br />

Atvasināsim B(x) un atradīsim sakarību, kuru apmierina atvasinājums. Redzam, ka<br />

∑<br />

k≥1<br />

∑ k<br />

i=1<br />

B ′ (x) = ∑ k≥1<br />

x i−1 B k−i x k−i<br />

(i−1)! (k−i)!<br />

B k kx k−1<br />

k!<br />

= ∑ k≥1<br />

= ∑ k−i≥0<br />

B k−i x k−i<br />

(k−i)!<br />

B k x k−1<br />

(k−1)!<br />

( ∑ i−1≥0<br />

= ∑ k≥1 (∑ k<br />

i=1 Ci−1 k−1 B k−i) xk−1<br />

(k−1)! =<br />

x i−1<br />

) = (∑ x j<br />

(i−1)! j≥0<br />

)(∑ B m x m<br />

j! m≥0<br />

) = e x B(x).<br />

m!<br />

Šajos pārveidojumos bija pareizi jāmaina summēšanas kārtība un jāizdara indeksu maiņa.<br />

Tātad B(x) apmierina diferenciālvienādojumu<br />

B ′ (x) = e x B(x)<br />

un, atrisinot šo pirmās kārtas diferenciālvienādojumu ar mainīgo atdalīšanas metodi, iegūstam,<br />

ka<br />

B(x) = ce ex<br />

ar kaut kādu konstanti c, ko atrod no sākuma nosacījumiem. Eleganti uzdevumu par Bella<br />

skaitļiem var atrisināt, izmantojot (2.112). Ja definē a(n) = 1, ∀n ≥ 1, tad<br />

un<br />

A exp (x) = ∑ n≥0<br />

B n = ∑<br />

π∈Π n<br />

1,<br />

kur summēšana tiek veikta pa visu n elementus lielas kopas (nesakārtotu) sadalījumu kopu Π n .<br />

Saskaņā ar (2.112) iegūstam, ka<br />

B(x) = ∑ n≥0<br />

B n x n<br />

Izteiksim B n arī bezgalīgas summas veidā:<br />

n!<br />

= exp( ∑ n≥1<br />

B(x) = exp(exp(x) − 1) = 1 e exp(exp(x)) = 1 e<br />

Iegūstam, ka<br />

B n = 1 e<br />

∑<br />

i≥0<br />

∑<br />

i≥0<br />

x n<br />

n!<br />

x n<br />

) = exp(exp(x) − 1).<br />

n!<br />

e ix<br />

i!<br />

i n<br />

i! .<br />

= 1 e<br />

∑<br />

i≥0<br />

1 ∑ i n x n<br />

i! n!<br />

n≥0<br />

= ∑ ( 1 e<br />

n≥0<br />

∑<br />

i≥0<br />

i n<br />

i! )xn n! .<br />

Piemērs 2.119. Otrā veida Stirlinga skaitļi S(n, k) - cik dažādos veidos var n elementus lielu<br />

kopu sadalīt k netukšās apakškopās. Atradīsim īsu pierakstu šo skaitļu virknes (ar fiksētu k)<br />

eksponenciālajai veidotājfunkcijai. Pirmajā solī pierādīsim sakarību<br />

S(n, k) = 1 k∑<br />

(−1) k−i C i<br />

k!<br />

ki n .<br />

i=1<br />

Katra sirjektīva funkcija no n elementu kopas uz k elementu kopu definē definīcijas apgabala<br />

kopas sadalījumu k netukšās apakškopās. Tā kā mēs varam sanumurēt k elementu kopu k!<br />

dažādos veidos, tad saskaņā ar dalīšanas likumu S(n, k) ir jābūt vienādam ar visu sirjektīvo


2.6. VEIDOTĀJFUNKCIJU METODE 58<br />

funkciju skaitu no n elementu kopas uz k elementu kopu dalītu ar k!. Iepriekš tika parādīts, ka<br />

skaitlis<br />

k∑<br />

(−1) k−i Cki i n<br />

i=1<br />

ir vienāds ar sirjektīvu funkciju skaitu no n elementu kopas uz k elementu kopu, tātad apsolītais<br />

apgalvojums ir pierādīts. Otrajā solī vienkāršosim pašu veidotājfunkciju:<br />

∑<br />

S(n,k)x n<br />

n≥0<br />

= ∑ ∑<br />

1 k ∑<br />

n! n≥0 k! i=1 (−1)k−i Ck i xn<br />

in = ∑ 1 k<br />

n! k! i=1 Ci k (−1)k−i (ix) n<br />

n≥0<br />

=<br />

n!<br />

∑<br />

1 k<br />

k! i=1 Ci k (−1)k−i e ix = 1 k! (ex − 1) k .<br />

Piemērs 2.120. Izmantojot eksponenciālās veidotājfunkcijas, vēlreiz atrisināsim uzdevumu<br />

par sirjektīvo funkciju skaitu. Cik ir sirjektīvu funkciju no n elementus lielas kopas X = {1, ..., n}<br />

uz m elementus lielu kopu Y = {1, ..., m}? Apzīmēsim šo skaitli ar R m n . Katra sirjektīva funkcija<br />

f : X → Y ir viennozīmīgi uzdota ar virkni<br />

(f(1), ..., f(n)),<br />

kurā katrs kopas Y elements ieiet vismaz vienu reizi. Katra kopas Y elementa ieguldījums<br />

eksponenciālajā veidotājfunkcijā R m (x) = ∑ Rn m x n<br />

n≥0<br />

ir reizinātājs<br />

n!<br />

x + x2<br />

2! + ... = ex − 1,<br />

tātad eksponenciālā veidotājfunkcija ir vienāda ar<br />

(e x − 1) m<br />

un atrisinājums ir šīs veidotājfunkcijas koeficients pie xn . Ievērosim, ka šī veidotājfunkcija ir<br />

n!<br />

vienāda ar n elementu kopas m vienības garu netukšu apakškopu virkņu skaita eksponenciālo<br />

veidotājfunkciju. Summējot R m (x) pa m mēs iegūsim eksponenciālo veidotājfunkciju R(x), kuras<br />

koeficients R n pie xn ir vienāds ar visu iespējamo sirjektīvo funkciju skaitu no kopas {1, ..., n}.<br />

n!<br />

Redzam, ka<br />

un<br />

tāpēc<br />

R(x) = ∑ m≥0<br />

R(x) = 1 1<br />

2 1 − 1 = 1 ∑<br />

2 ex 2<br />

R m (x) = ∑ m≥0(e x − 1) m =<br />

i≥0<br />

e ix<br />

= 1 ∑<br />

2 i 2<br />

i≥0<br />

R n = 1 2<br />

∑<br />

i≥0<br />

1<br />

1 − (e x − 1) = 1<br />

2 − e x<br />

1 ∑ i n x n<br />

2 i n!<br />

n≥0<br />

i n<br />

2 i .<br />

= ∑ ( 1 2<br />

n≥0<br />

∑<br />

i≥0<br />

i n<br />

2 i )xn n! ,<br />

Vēl viena lietderīga eksponenciālo veidotājfunkciju īpašība ir saistīta ar to atvasināšanu.<br />

Ievērosim, ka<br />

A ′ exp(x) = ∑ a n nx n−1<br />

= ∑ a n x n−1<br />

n! (n − 1)! .<br />

n≥1<br />

n≥1<br />

Piemērs 2.121. Atrisināsim Fibonači virknes uzdevumu ar eksponenciālajām veidotājfunkcijām.<br />

Fibonači virknes definējošā rekurentā sakarība<br />

f n = f n−1 + f n−2<br />

eksponenciālo funkciju terminos ir ekvivalenta diferenciālvienādojumam<br />

kura vispārīgais atrisinājums ir<br />

F ′′<br />

exp(x) = F ′ exp(x) + F exp (x),<br />

F exp (x) = C 1 e λ1x + C 2 e λ2x , λ 1,2 = 1 ± √ 5<br />

.<br />

2


2.6. VEIDOTĀJFUNKCIJU METODE 59<br />

Fiksējot sākuma nosacījumus, atradīsim konstantes C 1 un C 2 un eksponenciālās veidotājfunkcijas<br />

koeficientus.<br />

2.6.5. Vingrinājumi.<br />

Vingrinājums 2.122. Atrast veidotājfunkcijas šādām virknēm:<br />

1) a n = n + 1, n ≥ 0;<br />

2) a n = 1 , n ≥ 1;<br />

n<br />

3) a n = (−1)n , n ≥ 1;<br />

n<br />

4) a n = 1 , n ≥ 0;<br />

n!<br />

5) a n = n 2 ;<br />

6) a n = sin(ωn), n ≥ 0.<br />

Vingrinājums 2.123. Atrast veidotājfunkciju virknei {b n }, ja veidotājfunkcija virknei {a n }<br />

ir zināma un ir spēkā sakarība b n = a n+1 − a n .<br />

Vingrinājums 2.124. Kādai operācijai ar veidotājfunkcijām atbilst virknes i-tā elementa<br />

izsvītrošana?<br />

Vingrinājums 2.125. Definēsim M = M{B} un P = P{B}, kur B ir dota kombinatoriska<br />

klase. Pierādīt veidotājfunkciju vienādību P (x) = M(x)<br />

M(x 2 ) .<br />

Vingrinājums 2.126. Virknes {a n } eksponenciālā veidotājfunkcija A exp (x) ir zināma. Izteikt<br />

virknes {b n } eksponenciālo veidotājfunkciju B exp (x) ar A exp (x) palīdzību, ja:<br />

1) b n = a n+1 ;<br />

2) b n = na n ;<br />

3) b n = λ n a n ;<br />

4) b n = a n+1 − a n .<br />

Vingrinājums 2.127. Aprakstīt virkni, kuras eksponenciālā veidotājfunkcija ir vienāda ar<br />

e x2 .<br />

Vingrinājums 2.128. Apzīmēsim ar a n visu iespējamo virkņu (bez atkārtojumiem, ieskaitot<br />

tukšo virkni) skaitu, kuras var izveidot no n-kopas elementiem, definēsim a 0 = 1. Pierādiet, ka ir<br />

spēkā rekurentā sakarība a n = na n−1 + 1, atrodiet virknes {a n } eksponenciālo veidotājfunkciju.<br />

Vingrinājums 2.129. Pieņemsim, ka A(x) ir veidotājfunkcija ar konstanto locekli 1. Pierādīt,<br />

ka eksistē A(x) inversā veidotājfunkcija - veidotājfunkcija B(x) tāda, ka A(x)B(x) = 1 un atrast<br />

rekurento sakarību inversās veidotājfunkcijas koeficientiem.<br />

Vingrinājums 2.130. Izsakiet veidotājfunkciju ∑ n≥0 Ck nx n kā elementāru funkciju no x.<br />

Vingrinājums 2.131. Apzīmēsim ar a n visu variantu skaitu, kā skaitli n var izteikt dažādu<br />

naturālu skaitļu summas veidā, un apzīmēsim atbilstošo veidotājfunkciju ar A(x). Pierādīt, ka<br />

A(x) = ∏ i≥1(1 + x i ).<br />

Vingrinājums 2.132. Pierādīt vienādību<br />

1<br />

1 − x = ∏ (x 2i + 1).<br />

i≥0<br />

Pierādīt vienādību<br />

visiem naturāliem m ≥ 2.<br />

1<br />

1 − x = ∏ i≥0<br />

x mi+1 − 1<br />

x mi − 1


2.6. VEIDOTĀJFUNKCIJU METODE 60<br />

Vingrinājums 2.133. Apzīmēsim ar X n visu virkņu x 1 , ..., x k skaitu, kas apmierina nosacījumus<br />

1 ≤ i ≤ n un x i+1 ≥ x i + a, kur a ir fiksēts naturāls skaitlis. Atrast rekurentu sakarību<br />

skaitļiem X n un no tās izrietošo veidotājfunkcijas īpašību.<br />

Vingrinājums 2.134. Pierādīt šādas sakarības Stirlinga skaitļiem:<br />

1) ∏ n−1<br />

i=0 (x + i) = ∑ n<br />

k=1 c(n, k)xk ;<br />

1) A n x = ∏ n−1<br />

i=0 (x − i) = ∑ n<br />

k=1 s(n, k)xk ;<br />

2) ∑ s(n,k)x n<br />

n≥0<br />

= 1 n! k! lnk (1 + x);<br />

3) ∑ n≥0 S(n, k)xn x<br />

= k<br />

∏ k<br />

i=1 (1−ix);<br />

4) x n = ∑ n<br />

i=1 S(n, i) ∏ i−1<br />

j=0<br />

(x − j).<br />

Vingrinājums 2.135. Pierādīt, ka<br />

∑<br />

min(n, m)x n y m =<br />

n≥0,m≥0<br />

xy<br />

(1 − x)(1 − y)(1 − xy) .<br />

Vingrinājums 2.136. Pierādīt, ka veidotājfunkcija A(x) = ∑ n≥0 Cn 3nx n apmierina sakarību<br />

(27x − 4)A 3 (x) + 3A(x) + 1 = 0.<br />

Vingrinājums 2.137. Pierādīt, ka ∑ n≥0 (Cn 2n) 2 x n un ∑ (3n)!<br />

n≥0<br />

x n nav algebriskas veidotājfunkcijas.<br />

(n!) 3<br />

Vingrinājums 2.138. Apzīmēsim ar p m (n) visu to skaitļa n sadalījumu skaitu, kurā ir ne<br />

vairāk kā m locekļu. Pierādīt, ka atbilstošā veidotājfunkcija<br />

ir vienāda ar<br />

P m (x) = ∑ n≥0<br />

m∏<br />

i=1<br />

1<br />

1 − x i .<br />

p m (n)x n<br />

Vingrinājums 2.139. Ar q m (n) apzīmēsim naturāla skaitļa n sadalījumu skaitu tieši m<br />

naturālu skaitļu summā. Pierādīt, ka<br />

Q m (x) = ∑ n≥0<br />

q m (n)x n = x m<br />

m<br />

∏<br />

i=1<br />

1<br />

1 − x i .<br />

Vingrinājums 2.140. Izmantojot veidotājfunkcijas, pierādīt, ka katram naturālam n tā<br />

sadalījumu skaits, kuros visi saskaitāmie ir nepāra skaitļi, ir vienāds ar sadalījumu skaitu, kuros<br />

visi saskaitāmie ir dažādi. Pierādīt šo rezultātu, arī izmantojot vienlieluma likumu.<br />

Vingrinājums 2.141. Definēsim Bernulli skaitļus b n ar šādiem nosacījumiem:<br />

n∑<br />

b 0 = 1, Cn+1b i i = 0.<br />

Pierādīt, ka atbilstošā eksponenciālā veidotājfunkcija ir vienāda ar<br />

x<br />

e x − 1 .<br />

Vingrinājums 2.142. Definēsim harmoniskos skaitļus ar šādiem nosacījumiem:<br />

n∑ 1<br />

h 0 = 0, h n =<br />

i .<br />

Pierādīt, ka harmoniskie skaitļi apmierina šādas rekurentas sakarības visiem n ≥ 1:<br />

1) ∑ n<br />

i=1 h i = (n + 1)(h n+1 − 1);<br />

i=0<br />

i=1


2.7. ǦEOMETRISKI UZDEVUMI UN METODES 61<br />

2) ∑ n<br />

i=1 ih i = Cn+1(h 2 n+1 − 1/2);<br />

3) ∑ n<br />

i=1 Ck i h i = Cn+1(h k+1<br />

n+1 − 1 ). k+1<br />

Pierādīt, ka harmonisko skaitļu virknes veidotājfunkcija ir vienāda ar<br />

1<br />

1 − x ln( 1<br />

1 − x ).<br />

Vingrinājums 2.143. Ja n ir pāra skaitlis, tad apzīmēsim ar a n to kopas {1, ..., n} permutāciju<br />

skaitu, kurās visiem neatkarīgajiem cikliem garums ir pāra skaitlis, ar b n - to permutāciju<br />

skaitu, kurās visiem cikliem garums ir nepāra skaitlis. Apzīmēsim ar u n visu permutāciju<br />

skaitu - u n = n!. Pierādīt, ka atbilstošās eksponenciālās veidotājfunkcijas<br />

apmierina šādas sakarības:<br />

1) U exp (x) = 1 ;<br />

1−x 2<br />

2) A exp (x) = √ 1<br />

1−x 2<br />

;<br />

3) B exp (x) = U exp(x)<br />

A exp(x) .<br />

Pierādīt, ka a n = b n visiem n.<br />

A exp (x), B exp (x), U exp (x)<br />

Vingrinājums 2.144. a n ir to kopas {1, 2, ..., n} permutāciju skaits, kurām visi cikli ir ar<br />

garumu 1 vai 2. Pierādīt, ka<br />

A exp (x) = exp(x + x2<br />

2 ).<br />

Vispārināt šo faktu uz gadījumu, kad permutācijas ciklu garums ir ierobežots ar naturālu skaitli<br />

k.<br />

Vingrinājums 2.145. Bināru attiecību sauksim par priekšsakārtojumu, ja tā ir refleksīva,<br />

transitīva un dihotomiska. Apzīmēsim dažādu priekšsakārtojumu skaitu n elementu kopā ar a n .<br />

Pierādīt, ka<br />

A exp (x) = 1<br />

2 − e x .<br />

Vingrinājums 2.146. Pierādīt, ka Katalāna skaitļi (iespējams, ar indeksa nobīdi) ir atrisinājums<br />

šādiem kombinatorikas uzdevumiem:<br />

1) cik daļās izliektu n-stūri var sadalīt ar n−3 diagonālēm n−2 trijstūros tā, lai diagonāles<br />

nekrustotos daudzstūra iekšienē;<br />

2) cik ir dažādu bināru koku ar n virsotnēm (bināra koka definīciju skatīt šīs grāmatas<br />

atbilstošajā nodaļā);<br />

3) uz riņķa līnijas atzīmēti 2n dažādi punkti, cik ir dažādu veidu, kā uzzīmēt n hordas tā,<br />

lai tās nekur nekrustotos;<br />

4) cik ir dažādu virkņu alfabētā {1, −1} ar garumu n, kurām visas parciālsummas ir<br />

nenegatīvas;<br />

5) cik ir dažādu nedilstošu naturālu skaitļu virkņu (a 1 , ..., a n ) ar garumu n un īpašību<br />

a i ≤ i;<br />

6) cik ir dažādu permutāciju kopā {1, ..., n}, kurās garākā dilstošā apakšvirkne ir ar garumu<br />

2;<br />

7) cik ir dažādu permutāciju kopā {1, ..., n}, kurām neeksistē trīs indeksi i < j < k ar<br />

īpašību a i < a j < a k .<br />

2.7. ǦEOMETRISKI UZDEVUMI UN METODES<br />

Ievērojamai daļai kombinatorikas uzdevumu un rezultātu ir ǧeometriska izcelsme un daba.<br />

Dažus kombinatorikas uzdevumus var reducēt uz ceļu (trajektoriju) skaitīšanu. Šajos uzdevumos<br />

skaitāmie objekti sākotnēji tiek kodēti ǧeometriskā veidā, piemēram, kā lauztas līnijas,


2.7. ǦEOMETRISKI UZDEVUMI UN METODES 62<br />

kas apmierina noteiktus nosacījumus. Uzdevuma risināšanas gaitā parasti rodas nepieciešamība<br />

reducēt sākotnējo uzdevumu uz kādu no pamatuzdevumiem.<br />

Piemērs 2.147. Cik veidos var nokļūt no punkta (0, 0) līdz punktam (n, m), ja vienā solī ir<br />

atļauts pārvietoties par vektoru (1, 0) vai vektoru (0, 1)? Ceļu no (0, 0) līdz (n, m) var domāt kā<br />

bināru virkni ar garumu n + m, kur 0 nozīmē, ka tiek iets pa labi, un 1 nozīmē, ka tiek iets uz<br />

augšu. Tātad kopā ir C n n+m dažādu virkņu vai ceļu.<br />

Piemērs 2.148. Izmantojot trajektoriju metodi, pierādīt identitāti<br />

n∑<br />

(Cn) k 2 = C2n.<br />

n<br />

k=0<br />

Apskatīsim maršrutus no (0, 0) līdz (n, n). Katrs maršruts iet caur vienu un tikai vienu punktu<br />

(k, n − k). Maršrutu skaits, kas iet caur šo punktu, ir vienāds ar CnC k n<br />

n−k = (Cn) k 2 . Atceroties<br />

summas likumu un skaitot pa visām k vērtībam, iegūstam doto formulu.<br />

Piemērs 2.149. (no [3]) ”Pie kino kases stāv rinda, kurā ir m+n cilvēki, pie tam n cilvēkiem<br />

ir tikai 50 kapeiku monētas, bet pārējiem cilvēkiem ir tikai pa 1 rublim. Sākumā kasē nav naudas,<br />

un kino biļete maksā 50 kap. Cik veidos rindā var izvietot cilvēkus tā, lai nevienam pircējam<br />

nebūtu jāgaida uz naudas atlikuma izdošanu (m < n)?” Piekārtosim katram cilvēkam skaitli a i :<br />

1, ja i−tajam ir 50kap.<br />

a i = { −1, ja i−tajam ir 1 rbl. .<br />

Apskatīsim lielumu S k = ∑ k<br />

i=1 a i, ko var interpretēt kā starpību starp 50 kap. monētu un 1 rbl.<br />

monētu skaitu, kurus kasierei pasniedz pirmie k pircēji. Konstruēsim koordinātu plaknē punktus<br />

(k, S k ) un aplūkosim attiecīgo lauzto līniju. Visas šādas lauztās līnijas sākas punktā (0, 0) un<br />

beidzas punktā (n + m, n − m), tātad kopējais šādu līniju skaits ir vienāds ar Cn+m. n Katrai<br />

lauztajai līnijai atbilst kāds ”scenārijs”. Vēlamie scenāriji (kad nevienam cilvēkam nav jāgaida<br />

atlikums) atbilst trajektorijām, kuras nekrusto taisni y = −1. Cik ir trajektoriju, kas krusto šo<br />

taisni (izmantosim principu ”skaitīšana izmantojot papildinājumu”)? Katru šādu trajektoriju<br />

pārveidosim - pēc pirmā krustpunkta atstarosim attiecībā pret asi y = −1. Iegūsim jaunu<br />

trajektoriju, kuras galapunkts ir (n + m, m − n − 2). Ir savstarpēji viennozīmīga atbilstība starp<br />

visām trajektorijām no (0, 0) līdz (n + m, m − n − 2) un ”nevēlamajām” trajektorijām, tāpēc<br />

meklējamais ”nevēlamo” trajektoriju skaits ir Cm+n(izmantosim n+1<br />

vienlieluma likumu). Atbilde ir<br />

vienāda ar Cn+m n − Cn+m.<br />

n+1<br />

Piemērs 2.150. Ar a(n, m) apzīmēsim dažādo maršrutu skaitu no punkta (0, 0) līdz punktam<br />

(n, m), ja atļautie soļi ir šādi: (1, 0), (0, 1), (1, 1). Apskatīsim divu argumentu veidotājfunkciju<br />

A(x, y) =<br />

∑<br />

a(n, m)x n y m .<br />

n≥0,m≥0<br />

Pārveidosim divkāršo summu par vienkāršu summu ar indeksu k, kas ir vienāds ar soļu skaitu<br />

maršrutā. Katrā solī var izvēlēties vienu no trim atļautajiem soļiem, kuriem atbilst veidotājfunkcijas<br />

x, y un xy, tātad veidotājfunkcija maršrutiem, kas satur tieši k soļus, ir vienāda ar<br />

Rezultātā iegūstam, ka<br />

A(x, y) = ∑ k≥0(x + y + xy) k =<br />

(x + y + xy) k .<br />

1<br />

1 − (x + y + xy) = 1<br />

1 − x − y − xy .<br />

Vēl kāda kombinatorikas uzdevumu klase ir saistīta ar plaknes vai telpas apgabalu noklāšanu<br />

ar dotā tipa figūrām. Šo uzdevumu risināšanai ir lietderīgi izmantot ”krāsošanas pierādījumus”<br />

un rekurentās sakarības.


2.7. ǦEOMETRISKI UZDEVUMI UN METODES 63<br />

Piemērs 2.151. Vai ir iespējams noklāt ar 2 × 1 domino kauliņiem 8 × 8 šaha galdu, no kura<br />

ir izgriezti divi pretēji stūra lauciņi? Katrs domino kauliņš aizņem vienu baltu un vienu melnu<br />

lauciņu neatkarīgi no tā, kā tas ir novietots. Pretēji stūra lauciņi ir vienā krāsā, tāpēc uz atlikušā<br />

šaha galda vienas kāsas lauciņu ir par 2 vairāk nekā otras krāsas lauciņu. Šis novērojams rāda,<br />

ka prasītais noklājums nav iespējams.<br />

2.7.1. Vingrinājumi.<br />

Vingrinājums 2.152. Cik ir trajektoriju no punkta (0, 0) līdz punktam (n, m) ar soļiem<br />

(0, 1) un (1, 0), kuras nešķērso punktu (p, q)?<br />

Vingrinājums 2.153. Cik ir trajektoriju no punkta (0, 0) līdz punktam (n, m) ar atļautiem<br />

soļiem (1, 1), (1, 2) un (2, 1)?<br />

Vingrinājums 2.154. Cik ir trajektoriju no punkta (0, 0) līdz punktam (n, m) ar soļiem<br />

(0, 1), (1, 0), (p, q) un (p, q + 1)?<br />

Vingrinājums 2.155. Cik ir trajektoriju no punkta (0, 0) līdz punktam (0, 0) ar garumu n,<br />

ja atļautie soļi ir (1, 0) un (−1, 0)?<br />

Vingrinājums 2.156. Apzīmēsim ar b n trajektoriju skaitu no punkta (0, 0) līdz (0, 0) ar<br />

šādām īpašībām:<br />

1) atļautie soļi ir (1, 1),(1, −1),(−1, 1), (−1, −1);<br />

2) trajektorija neiet caur (0, 0) savos iekšējos punktos.<br />

Pierādīt, ka veidotājfunkcija B(x) = ∑ n≥0 b nx n apmierina vienādību<br />

B(x) = 1 −<br />

1<br />

∑ ∞<br />

i=0 (Ci 2i )2 x 2i .<br />

Vingrinājums 2.157. Pierādīt, ka Katalāna skaitļi (iespējams, ar indeksa nobīdi) ir atrisinājums<br />

šādiem trajektoriju kombinatorikas uzdevumiem:<br />

1) cik ir dažādu trajektoriju no punkta (0, 0) līdz punktam (n, n) ar soļiem (0, 1) vai (1, 0),<br />

kurās nav daļu virs līnijas y = x,<br />

2) cik ir dažādu trajektoriju no punkta (0, 0) līdz punktam (2n, 0) ar soļiem (1, 1) vai<br />

(1, −1), kurās nav daļu zem līnijas y = 0,<br />

3) cik ir dažādu trajektoriju no punkta (0, 0) līdz punktam (2n + 2, 0) ar soļiem (1, 1) vai<br />

(1, −1), kurās jebkura soļu (1, −1) virkne, kas beidzas uz taisnes y = 0, satur nepāra<br />

skaitu soļu,<br />

4) cik dažādu nesakārtotu n soļu garu trajektoriju pāru ar soļiem (1, 0) un (0, 1), kuras<br />

sākas punktā (0, 0), beidzas vienā punktā un krustojas tikai sākumā un beigās,<br />

5) cik dažādu nesakārtotu n soļu garu trajektoriju pāru ar soļiem (1, 0) un (0, 1), kuras<br />

sākas punktā (0, 0), beidzas vienā punktā un viena no šīm trajektorijām nekad nav virs<br />

otras (bet var sakrist dažos punktos vai soļos).<br />

Vingrinājums 2.158. Dots taisnstūris ar izmēriem n × m, kurš sadalīts nm rūtiņās. Par<br />

apakštaisnstūri sauksim figūru, kas sastāv no vienas vai vairākām rūtiņām un ir taisnstūris.<br />

Atbildiet uz šādiem jautājumiem:<br />

1) cik ir dažādu doto izmēru apakštaisnstūru,<br />

2) cik ir dažādu apakštaisnstūru,<br />

3) cik ir dažādu apakštaisnstūru, kas ir kvadrāti.<br />

Vingrinājums 2.159. Kādos gadījumos ir iespējams noklāt ar 2 × 1 domino kauliņiem šaha<br />

galdu, no kura ir izgriezti 2 vai 4 lauciņi?<br />

Vingrinājums 2.160. Pierādīt, ka taisnstūris ar izmēriem a × b var tikt noklāts ar 1 × n<br />

figūrām tad un tikai tad, ja n|a vai n|b.


2.7. ǦEOMETRISKI UZDEVUMI UN METODES 64<br />

Vingrinājums 2.161. Kvadrāts ar izmēriem 7 × 7 ir noklāts ar sešpadsmit 1 × 3 figūrām un<br />

vienu 1 × 1 figūru. Kādās vietās var atrasties 1 × 1 figūra?<br />

Vingrinājums 2.162. Vai ir iespējams aizpildīt taisnstūra paralēlskaldni ar izmēriem 10 ×<br />

10 × 10 ar 1 × 1 × 4 figūrām?<br />

Vingrinājums 2.163. Pierādīt, ka 2 × n taisnstūra dažādu noklāšanas veidu skaits ar 1 × 2<br />

domino figūrām ir vienāds ar Fibonači skaitli F n . Kāda ir atbilde, ja tieši m domino figūras var<br />

būt horizontālā stāvoklī?


2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 65<br />

2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA<br />

2.8.1. Asimptotiskās attiecības. Bieži ir grūti atrast precīzu formulu virknes {a n } n≥n0<br />

vispārīgajam loceklim a n , tāpēc vienīgais, ko var izdarīt - mēǧināt noteikt aptuveno virknes<br />

locekļu ”uzvedību”, kad n tiecas uz bezgalību (asimptotiku). Tas ir svarīgi arī datorprogrammēšanā<br />

- programmu darba laiku un atmiņu var novērtēt tikai aptuveni. Piemēram, pēc pareizas<br />

programmas uzrakstīšanas bieži vien ir aptuveni jānosaka programmas darba laiks T kā funkcija<br />

no izejas datu garuma n - T (n) (funkciju T (n) var domāt kā virkni T n un otrādi).<br />

Lai novērtētu funkciju vai virkņu asimptotiku, var pielietot vismaz divas idejas:<br />

1) salīdzināt doto virkni vai funkciju ar kādu zināmu virkni vai funkciju - piemēram, apskatīt<br />

robežu<br />

a n<br />

lim ,<br />

n→∞ b n<br />

kur {a n } n≥n0 ir pētāmā virkne un {b n } n≥n0 ir kāda zināma virkne, kas parasti ir elementāra<br />

funkcija no argumenta n;<br />

2) virknes loceklis tiek salīdzināts ar šīs pašas virknes iepriekšējo locekli - tiek aprēķināta<br />

robeža<br />

a n+1<br />

lim ,<br />

n→∞ a n<br />

ja galīga robeža eksistē un ir vienāda ar ρ, tad a n aug aptuveni kā cρ n , kur c ir konstante.<br />

Salīdzināšana ar citām virknēm liek domāt par attiecībām virkņu kopā, kurās būtu iekodētas<br />

tās vai citas salīdzināšanas idejas. Zemāk definēsim vairākas attiecības virkņu kopā. Atgādināsim,<br />

ka attiecība vai attieksme starp divu kopu A un B elementiem ir apakškopa Dekarta reizinājumā<br />

A × B, ko devē arī par attiecības grafiku. Novērtēt kādu virkni a n , izmantojot kādu citu virkni<br />

b n , vai salīdzināt šīs virknes savā starpā nozīmē noteikt, ka šīs virknes ir salīdzināmas kādā no<br />

attiecībām.<br />

Virknes a n un b n ir vienādas kārtas (apzīmēsim a n ∼ b n ), ja<br />

a n<br />

lim = 1.<br />

n→∞ b n<br />

Piemērs 2.164. Var redzēt, ka, ja a n = n 3 un b n = (n + 1000) 3 , tad a n ∼ b n .<br />

Piemērs 2.165. Izmantojot matemātisko analīzi, ir pierādīts, ka<br />

kur p(n) ir skaitļa n sadalījumu skaits.<br />

p(n) ∼ 1<br />

4n √ 3 eπ√ 2n/3 ,<br />

Teiksim, ka a n = O(b n ), ja eksistē pozitīva konstante c un vesels skaitlis n 0 tādi, ka<br />

0 ≤ a n ≤ cb n<br />

visiem n > n 0 . Saprotot pierakstu a n = O(b n ) kā faktu, ka virknes a n un b n ir saistītas ar<br />

šo attieksmi, varam atzīmēt, ka pareizāk ir rakstīt a O n = b n . Vēsturisku iemeslu dēļ attiecību<br />

simbolika virkņu asimptotiku teorijā nav izplatīta. Virkni b n sauksim par virknes a n augšējo<br />

asimptotisko robežu. Vēl viens veids, kā saprast pierakstu a n = O(b n ), ir šāds: ar pierakstu<br />

O(b n ) apzīmē visu virkņu kopu, kas ir salīdzināmas ar virkni b n attieksmē = O un tad pieraksts<br />

a n = O(b n ) īstenībā nozīmē a n ∈ O(b n ). Alternatīva definīcija: a n = O(b n ), ja<br />

a n<br />

lim < ∞.<br />

n→∞ b n<br />

Teiksim, ka a n = Θ(b n ), ja eksistē pozitīvas konstantes c 1 , c 2 un vesels skaitlis n 0 tādi, ka<br />

0 ≤ c 1 b n ≤ a n ≤ c 2 b n


2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 66<br />

visiem n > n 0 . Izmantojot attiecību simboliku, pareizāk ir rakstīt a Θ n = b n . Ja a n = Θ(b n ), tad<br />

virkni b b sauksim par virknes a n stingro vai abpusējo asimptotisko robežu. Alternatīva definīcija:<br />

a n = Θ(b n ), ja<br />

a n<br />

0 < ɛ < lim < ∞.<br />

n→∞ b n<br />

y<br />

y= c g(n)<br />

2<br />

y= f(n)<br />

y=cg(n)<br />

1<br />

n0<br />

2.7. attēls. Salīdzināšanas piemērs<br />

Piemērs 2.166. Var pārbaudīt, ka ir spēkā šādas salīdzināšanas:<br />

2n 2 + 3n + 1 = O(n 2 ), 2n 2 + 3n + 1 = O(n 3 ), 2n 2 + 3n + 1 = Θ(n 2 ), 2n 2 + 3n + 1 ≠ O(n).<br />

Teiksim, ka a n = Ω(b n ), ja eksistē pozitīva konstante c un vesels skaitlis n 0 tādi, ka<br />

0 ≤ cb n ≤ a n<br />

visiem n > n 0 . Ja a n = Ω(b n ), tad virkni b n sauksim par virknes a n apakšējo asimptotisko<br />

robežu. Alternatīva definīcija: a n = Ω(b n ), ja<br />

a n<br />

0 < ɛ < lim .<br />

n→∞ b n<br />

Piemērs 2.167. Var pārbaudīt, ka ir spēkā šādas salīdzināšanas:<br />

2n 2 + 3n + 1 = Ω(n), 2n 2 + 3n + 1 = O(n ln n), 2 n = Ω(n k ), ∀k ≥ 1.<br />

Teiksim, ka a n = o(b n ), ja katrai (patvaļīgi mazai) pozitīvai konstantei c eksistē vesels skaitlis<br />

n 0 tāds, ka<br />

0 ≤ a n ≤ cb n<br />

visiem n > n 0 . Alternatīva definīcija ir šāda: a n = o(b n ), ja<br />

lim<br />

n→∞<br />

a n<br />

b n<br />

= 0.<br />

Piemērs 2.168. Var pārbaudīt, ka ir spēkā šādas salīdzināšanas:<br />

2n 2 + 3n + 1 = o(n 3 ), n k = o(n k+1 ), n k = o(2 n ).<br />

Teiksim, ka a n = ω(b n ), ja katrai (patvaļīgi lielai) pozitīvai konstantei c eksistē vesels skaitlis<br />

n 0 tāds, ka<br />

0 ≤ cb n ≤ a n<br />

visiem n > n 0 . Alternatīva definīcija ir šāda: a n = ω(b n ), ja<br />

lim<br />

n→∞<br />

a n<br />

b n<br />

= ∞.<br />

Piemērs 2.169. Var pārbaudīt, ka ir spēkā šādas salīdzināšanas:<br />

2n 2 + 3n + 1 = ω(n), n k = ω(ln n).<br />

Teorēma 2.170. (Par asimptotisko attiecību īpašībām).<br />

1) attiecības ∼, O, Θ, Ω, o, ω ir transitīvas;<br />

2) attiecības ∼, O, Θ, Ω ir refleksīvas;<br />

n


3) attiecības ∼, Θ ir simetriskas;<br />

4) O −1 = Ω, o −1 = ω;<br />

5) Θ = O ⋂ Ω.<br />

2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 67<br />

Pierādījums. Apgalvojumi viegli seko no definīcijam. QED<br />

Teorēma 2.171. Ja f(n) ir k-tās pakāpes polinoms ar pozitīvu vecāko koeficientu, tad<br />

Pierādījums. Pieņemsim, ka<br />

un apskatīsim virkni<br />

Tā kā<br />

visiem naturāliem a, tad summa<br />

f(n)<br />

n k<br />

f(n) = Θ(n k ).<br />

f(n) = a k n k + ... + a 0<br />

= a k + a k−1<br />

n + .. + a 0<br />

n k .<br />

lim<br />

n→∞<br />

a k−1<br />

1<br />

n a = 0<br />

n + .. + a 0<br />

n k<br />

kā funkcija no n ir dilstoša, tātad eksistē n 0 un divi pozitīvi skaitļi c 1 , c 2 tādi, ka<br />

un teorēma ir pierādīta. QED<br />

c 1 ≤ f(n)<br />

n k ≤ c 2 ,<br />

2.8.2. Rekursīvo algoritmu izpildes laika novērtēšanas metodes. Gandrīz vai visi<br />

praktiski pielietojamie netriviālie algoritmi satur vairāk vai mazāk sarežǧītus ciklus (for, while,<br />

until) vai rekursijas. Lai novērtētu šādu algoritmu izpildei nepieciešamo operāciju skaitu, ir<br />

jāprot analizēt vispārīgais gadījums - rekursīvie algoritmi.<br />

Nereti sastopama šāda situācija: ir dots algoritms, kas ar sākuma datiem ar izmēru (garumu)<br />

n rekursīvi izsauc pats sevi a reizes ar sākuma datiem, kuru izmērs ir n . Ja katra rekursija pati<br />

b<br />

patērē f(n) laika vienības, tad mēs varam iegūt rekurentu sakarību algoritma izpildes laika<br />

novērtēšanai. Ja mēs apzīmēsim ar T (n) laiku vai operāciju skaitu, kas nepieciešams algoritma<br />

realizācijai ar sākuma datiem n, tad, ņemot vērā augstāk teikto, var redzēt, ka T (n) apmierina<br />

rekurentu sakarību<br />

(2.46) T (n) = aT ( n b ) + f(n).<br />

Parasti funkciju T (n) tikai novērtē, izmantojot kādu no asimptotiskajām attiecībām.<br />

Piemērs 2.172. Analizējot šķirošanas algoritmu ”mergesort”, kurā masīvs no sākuma tiek<br />

sadalīts divās patvaļīgās, bet vienāda izmēra daļās, kas atkal tiek rekursīvi šķirotas ar tā paša<br />

algoritma palīdzību, var redzēt, ka rekurentā sakarība ir<br />

T (n) = 2T ( n 2 ) + Θ(n),<br />

kur loceklis Θ(n) atbilst algoritma daļai, kas pareizi savieno divas sašķirotas masīva puses.<br />

Jāpiebilst, ka, tā kā virkne ir naturāla argumenta funkcija, mums būtu stingri jāseko, lai tas<br />

tā arī būtu mūsu pierakstos. To var panākt, piemēram, rakstot nevis n, bet [ n], ⌈ n ⌉ vai arī<br />

b b b<br />

savādāk noapaļojot skaitli n . Šo apstākli mēs ievērosim tur, kur tas būs nepieciešams.<br />

b<br />

Asimptotiskai rekurentās sakarības (2.46) atrisinājuma novērtēšanai var izmantot vairākas<br />

metodes, dažas no kurām mēs apskatīsim šajā nodaļā.


2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 68<br />

2.8.2.1. Substitūcijas metode. Ar substitūcijas metodi ir iespējams pierādīt, ka dotā virkne<br />

ir rekurentās sakarības atrisinājuma augšējā vai apakšējā asimptotiskā robeža. Pierādījumā,<br />

ka hipotētiskā virkne ir asimptotiskā robeža tiek izmantota matemātiskās indukcijas versija ar<br />

indukcijas soli n → n. Galvenā grūtība šajā metodē ir izteikt pareizu matemātiskās indukcijas<br />

b<br />

pieņēmumu.<br />

Substitūcijas metode sastāv no šādiem soļiem:<br />

1) uzminēt rekurentās sakarības augšējo vai apakšējo asimptotisko robežu;<br />

2) izdarīt matemātiskās indukcijas pieņēmumu: ievietot iepriekšējā punktā iegūto nevienādību<br />

ar argumentu n rekurentajā sakarībā (2.46);<br />

b<br />

3) pierādīt matemātiskās indukcijas soli: pierādīt, ka rekurentās sakarības atrisinājums ar<br />

argumentu n arī apmierina asimptotisko nevienādību;<br />

4) pārbaudīt, vai izpildās indukcijas bāzes nosacījums.<br />

Piemērs 2.173. Atradīsim augšējo un apakšējo asimptotisko robežu rekurentajai sakarībai<br />

No sākuma izteiksim pieņēmumu, ka<br />

Mums ir jāpierāda, ka<br />

T (n) = 2T ([ n ]) + n.<br />

2<br />

T (n) = O(n ln(n)).<br />

T (n) ≤ cn ln(n)<br />

visiem n > n 0 ar kādu fiksētu c > 0. Matemātiskās indukcijas pieņēmums šajā gadījumā ir šāds:<br />

(2.47) T ([ n 2 ]) ≤ c[n 2 ] ln([n 2 ]).<br />

Ievietojot šo pieņēmuma nevienādību rekurentajā sakarībā, iegūsim<br />

(2.48) T (n) = 2T ([ n 2 ]) + n ≤ c[n 2 ]ln([n 2 ]) ≤ cn ln(n 2<br />

+ n = cn ln(n) − cn ln(2) + n ≤ cn ln(n),<br />

ja c > 1, līdz ar to indukcijas solis ir pierādīts. Beidzot mums ir jāpierāda, ka izpildās indukcijas<br />

bāze. Mums ir pareizi jāizvēlas n 0 . Problēma ir tur, ka mēs nevaram ņemt n 0 = 1, jo tad<br />

nevienādība (2.48) nevar izpildīties. Var redzēt, ka<br />

T (1) = 1, T (2) = 4, T (3) = 5<br />

un T (1) tiek izmantots tikai, lai aprēķinātu T (2) un T (3). Šis apstāklis mums liek izvēlēties c<br />

tā, lai<br />

T (2) ≤ c · 2 ln(2)<br />

un<br />

T (3) ≤ c · 3 ln(3).<br />

Var redzēt, ka jebkurš c > 2.9 apmierina rekurento sakarību un pieņēmumu, tātad augšējā<br />

asimptotiskā robeža ir atrasta. Nedaudz grūtāk ir pierādīt, ka<br />

Mums ir jāpierāda, ka<br />

T (n) = Ω(n ln(n)).<br />

cn ln(n) ≤ T (n)<br />

visiem n ≥ n 0 ar kādu fiksētu c > 0. Matemātiskās indukcijas pieņēmums šajā gadījumā ir šāds:<br />

T ([ n 2 ]) ≥ c[n 2 ] ln([n 2 ]).<br />

Lai pierādītu indukcijas soli, atsevišķi apskatīsim gadījumus, kad n ir pāra vai nepāra skaitlis.<br />

Ja n ir pāra skaitlis, tad [ n] = n un, ievietojot pieņēmuma nevienādību rekurentajā sakarībā,<br />

2 2<br />

iegūsim nevienādību<br />

T (n) ≥ 2c n 2 ln(n ) + n = cn ln(n) + n(1 − c ln(2)) + n.<br />

2


Ja c < 1<br />

ln(2) , tad<br />

2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 69<br />

cn ln(n) + n(1 − c ln(2)) + n ≥ cn ln(2)<br />

un indukcijas solis ir pierādīts. Ja n ir nepāra skaitlis, tad [ n] = n−1 un, ievietojot pieņēmuma<br />

2 2<br />

nevienādību rekurentajā sakarībā, iegūsim nevienādību<br />

T (n) ≥ 2c n − 1 ln( n − 1 ) + n = n(1 − c ln(2) + ln(n − 1)) − c ln(n − 1) + c ln(2).<br />

2 2<br />

Mums ir jāpierāda, ka šīs nevienādības labā puse nav mazāka kā cn ln(n):<br />

n(1 − c ln(2) + ln(n − 1)) − c ln(n − 1) + c ln(2) ? ≥ 0.<br />

Pārnesot visu uz kreiso pusi, iegūsim pierādāmu nevienādību<br />

Tā kā<br />

un<br />

n(1 − c ln(2) + c ln(1 − 1 n )) − c ln(n − 1) + c ln(2) ? ≥ 0.<br />

lim ln(1 − 1<br />

n→∞ n ) = 0<br />

ln(n − 1)<br />

lim = 0,<br />

n→∞ n<br />

tad ar pietiekoši mazu c un pietiekoši lieliem n pierādāmā nevienādība ir spēkā. Indukcijas bāzes<br />

pierādīšana tiek atstāta lasītāja ziņā.<br />

Piemērs 2.174. Apskatīsim rekurentu sakarību<br />

T (n) = 3T ( 3√ n) + 2 ln(n).<br />

Var rasties iespaids, ka šāda veida uzdevumu nav iespējams atrisināt ar substitūcijas metodi,<br />

jo labajā pusē virknes arguments ir formā 3√ n. Tomēr šo uzdevumu var reducēt uz (2.46) tipa<br />

uzdevumu, izdarot pareizu argumenta substitūciju. Izdarīsim šādu argumentu maiņu: pāriesim<br />

uz jaunu argumentu x = ln(n). Attiecībā uz jauno argumentu mēs iegūsim rekurentu sakarību<br />

kur U(x) = T (e x ).<br />

U(x) = 3U( x 3 ) + 2x,<br />

Šo sakarību mēs varam mēǧināt analizēt ar substitūciju metodi.<br />

2.8.2.2. Iterāciju metode. Atgādināsim, ka substitūcijas metodē no sākuma ir jāuzmin atrisinājums<br />

vai tā asimptotiskās robežas. Šis solis var radīt grūtības, tāpēc ir jāmeklē citas metodes<br />

rekurentu sakarību asimptotisko robežu atrašanai, kurās šis trūkums būtu novērsts. Viena no<br />

šādām metodēm ir iterāciju metode, kurā sakarības labajā pusē meklējamā virkne ar dažādiem<br />

argumentiem tiek atkārtoti izteikta, izmantojot pašu sakarību.<br />

Iterāciju metode sastāv no šādiem soļiem:<br />

1) dotās rekurentās sakarības<br />

T (n) = aT ( n b ) + f(n)<br />

labajā pusē atkārtoti (iteratīvi) izteikt funkciju T , izmantojot rekurento sakarību un<br />

arvien mazākus argumentus, pabeigt šī soļa izpildi, kad rekurentās sakarības labajā<br />

pusē visām funkcijām T argumenti ir pietiekoši mazi;<br />

2) vienkāršot iegūtās rekurentās sakarības labo pusi;<br />

3) izdarīt secinājumus attiecībā uz meklējamo funkciju T .<br />

Piemērs 2.175. Apskatīsim rekurentu sakarību<br />

T (n) = 2T ([ n ]) + 3n.<br />

3<br />

Iterēsim šo sakarību:<br />

T (n) = 3n + 2T ([ n]) = 3n + 2(3[ n] + 2T ([ n])) = 3n + 6[ n] + 4(3[ n] + 2T ([ n ])) = ...<br />

3 3 9 3 9 27


2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 70<br />

Lai vienkāršotu labo pusi, tika izmantota viegli pierādāma vienādība<br />

n<br />

a<br />

(2.49) [<br />

b ] = [ n ab ].<br />

Atzīmēsim, ka iterētās sakarības labajā pusē funkcija T ir ar argumentu 1, ja tās arguments<br />

pirms veselās daļas aprēķināšanas apmierina nosacījumu [ n ] = 1 vai i > log<br />

3 i 3 (n). Redzam, ka ir<br />

spēkā nevienādība<br />

tātad<br />

T (n) ≤ 3n + 3 2 3 n + 3(2 3 )2 n + ... + 3( 2 3 )log 3(n) T (1) ≤ 3n ∑ i≥0<br />

( 2 3 )i + Θ(n log 3(2)−1 ),<br />

T (n) = 9n + o(n) = O(n).<br />

Pielietojot iterāciju metodi, ir lietderīgi zīmēt rekursijas koku - ǧeometrisku objektu, kurā<br />

tiek iekodēta rekursīvā algoritma darbības vēsture un laika uzskaite. Ar koku definīciju un<br />

teorijas pamatiem lasītājs var iepazīties šīs grāmatas nodaļā ”Koki”. Šāda koka virsotne atbilst<br />

algoritma kā rekursīvas procedūras izsaukumam, un virsotnes katrs dēls atbilst vienam rekursijas<br />

izsaukumam no tēvam atbilstošās procedūras. Rekursijas koka lapas atbilst pēdējam rekursijas<br />

izsaukumam katrā scenārijā, kad funkcija tiek aprēķināta, neizmantojot rekursiju. Visās virsotnēs,<br />

izņemot lapas, tiek ierakstīta atbilstošā funkcijas f vērtība. Lai noteiktu summāro laiku,<br />

kas ir vajadzīgs algoritma izpildei, ir jāsaskaita izpildes laiks, apskatot visas virsotnes.<br />

Piemērs 2.176. Apskatīsim rekurentu sakarību<br />

un uzzīmēsim atbilstošo rekursijas koku:<br />

T (n) = 2T ( n 3 ) + n3<br />

n 3<br />

n 3<br />

T(n/3) T(n/3)<br />

(n/3) 3 (n/3) 3<br />

T(n/9) T(n/9) T(n/9) T(n/9)<br />

n 3<br />

n 3<br />

(n/3) 3<br />

(n/3) 3<br />

2n 3 /27<br />

(n/9) 3 (n/9) 3 (n/9) 3 (n/9) 3 4n 3 /729<br />

Summa: O (n<br />

3 )


2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 71<br />

2.8. attēls. Rekursijas koka piemērs<br />

2.8.2.3. ”Galvenās teorēmas” (Master Theorem) pielietošana. Pēdējā metode, kuru mēs apskatīsim,<br />

ir kādas gatavas receptes pielietošana. Ja ir dota rekurenta sakarība formā (2.46), tad<br />

ir jānosaka, kuram no zemāk dotās universālās teorēmas gadījumiem tā atbilst.<br />

Teorēma 2.177. (Master Theorem, Bentley, Haken, Saxe, 1980) Ja a ≥ 1, b > 1, f(n) un<br />

T (n) ir naturāla argumenta funkcijas un<br />

(2.50) T (n) = aT ( n b ) + f(n),<br />

kur n ir vai nu [ n] vai arī ⌈ n ⌉, tad<br />

b<br />

b b<br />

1) ja f(n) = O(n log a b−ɛ ), ɛ > 0, tad<br />

2) ja f(n) = Θ(n log a b ), tad<br />

T (n) = Θ(n log a b );<br />

T (n) = Θ(n log a b ln(n));<br />

3) ja f(n) = Ω(n log a b+ɛ ), ɛ > 0, un, ja af( n ) ≤ cf(n), c < 1, n > N kādam N, tad<br />

b<br />

T (n) = Θ(f(n)).<br />

Pierādījums. Šīs teorēmas pierādījums nav viegls un tiek rekomendēts kā fakultatīvs un<br />

patstāvīgs darbs lasītājiem, kas ir pārliecināti par savām spējām. Pierādījums sastāv no divām<br />

daļām. Pirmajā daļā teorēma tiek pierādīta gadījumā, kad n ir naturāla skaitļa pakāpe. Otrajā<br />

daļā, analizējot veselās daļas funkcijas un griestu funkcijas īpašības, iegūtais rezultāts tiek<br />

vispārināts patvaļīgam n.<br />

Teorēmas pirmās daļas pierādījums balstās uz šādām lemmām.<br />

Lemma 2.178. Ja n = b k , k ∈ N, tad rekurentās sakarības (2.50) atrisinājums ir<br />

T (n) = Θ(n log b a ) +<br />

log b n−1<br />

∑<br />

i=0<br />

a i f( n b i ).<br />

Lemma 2.179. Ja g(n) = ∑ log b n−1<br />

i=0<br />

a i f( n b i ), tad funkciju g(n) var novērtēt šādi:<br />

1) ja f(n) = O(n log b a−ɛ ), ɛ > 0, tad<br />

2) ja f(n) = Θ(n log b a ), tad<br />

3) ja af( n ) ≤ cf(n), c < 1, n > N, tad<br />

b<br />

g(n) = O(n log b a );<br />

g(n) = Θ(n log b a ln(n));<br />

g(n) = Θ(f(n)).<br />

Lemma 2.180. Ja a ≥ 1, b > 1, n = b k , f(n) ir nenegatīva funkcija un<br />

tad (2.177) ir spēkā.<br />

T (n) = aT ( n b ) + f(n),<br />

Pierādījuma otrajā daļā speciālgadījumiem iegūtie rezultāti tiek turpināti visiem naturāliem<br />

skaitļiem n. QED


2.8. VIRKŅU UN FUNKCIJU ASIMPTOTIKA 72<br />

2.8.3. Stirlinga formula. Svarīga asimptotiskās novērtēšanas formula ir Stirlinga formula,<br />

ar kuras palīdzību var novērtēt faktoriāla funkcijas vērtību, kas bieži figurē kombinatoriskos<br />

aprēķinos.<br />

Teorēma 2.181. Ja n ir naturāls skaitlis, tad<br />

n n e −n+1 ≤ n! ≤ (n + 1) n+1 e −n+1 2 −2 .<br />

Pierādījums. Apskatīsim nevienādības, kas saista funkcijas y = ln(x) integrāli<br />

∫ n<br />

n∑<br />

∫ n+1<br />

ln(x)dx ≤ ln(i) ≤ ln(x)dx.<br />

Ievērosim, ka<br />

1<br />

i=2<br />

n∑<br />

ln(i) = ln(n!)<br />

i=2<br />

Aprēķinot integrāļus precīzi, mēs iegūstam<br />

n ln(n) − n + 1 ≤ ln(n!) ≤ (n + 1) ln(n + 1) − (n + 1) − 2 ln(2) + 2,<br />

kuru pārveidojot un eksponencējot iegūsim pierādāmo nevienādību. QED<br />

Bez detalizēta pierādījuma minēsim Stirlinga formulu:<br />

(2.51) n! ∼ √ 2πn( n e )n<br />

vai<br />

(2.52) n! = √ 2πn( n e )n (1 + O( 1 n )).<br />

un<br />

2.8.4. Vingrinājumi.<br />

Vingrinājums 2.182. 1. Vai ir spēkā salīdzinājumi<br />

2 n+1 = O(2 n )<br />

2 2n = O(2 n )?<br />

Vingrinājums 2.183. Katram no dotajiem funkciju pāriem noteikt, vai funkcijas pārī ir<br />

saistītas ar kādu no asimptotiskajām attiecībām:<br />

1) ln k (n) un n ɛ , kur k ≥ 1, ɛ > 0;<br />

2) n k un a n , kur k ≥ 1, c > 1;<br />

3) √ n un n sin(n) ;<br />

4) 2 n un 2 √n .<br />

Vingrinājums 2.184. Sakārtot dotās virknes ”augošā” kārtībā, uzskatot, ka virkne a n ir<br />

mazāka kā b n , ja a n = o(b n ):<br />

1, n, n 2 , n 3 , n!, ln(n), ln(ln(n)), ln 2 (n), n ln(n), √ ln(n), ln(n!), ( 4 3 )n , 2 n , 2 2n , n2 n .<br />

Vingrinājums 2.185. Vispārināt asimptotisko attiecību definīcijas uz vairāku indeksu (argumentu)<br />

virkņu gadījumu.<br />

Vingrinājums 2.186. Izmantojot substitūciju metodi, pierādīt, ka<br />

1) rekurentās sakarības<br />

T (n) = 3T (⌈ n 2 ⌉) + 1<br />

atrisinājuma augšējā asimptotiskā robeža ir<br />

ln(n);<br />

2


2) rekurentās sakarības<br />

2.9. KOMBINATORIKAS ALGORITMISKIE JAUTĀJUMI 73<br />

T (n) = 2T ([ n 2 ] + 7) + 1<br />

atrisinājuma augšējā asimptotiskā robeža ir<br />

n ln(n).<br />

Vingrinājums 2.187. Izmantojot substitūciju metodi, atrast rekurentās sakarības<br />

stingro asimptotisko robežu.<br />

T (n) = 2T ( √ n) + 1<br />

Vingrinājums 2.188. Atrast augšējās asimptotiskās robežas divu skaitļu saskaitīšanai un<br />

reizināšanai nepieciešamo operāciju skaitam kā funkcijai no operandu ciparu skaita, uzskatot,<br />

ka elementāras operācijas ir divu viencipara skaitļu saskaitīšana vai reizināšana, viena cipara<br />

ierakstīšana atmic nā un nolasīšana no atmiņas.<br />

2.9. KOMBINATORIKAS ALGORITMISKIE JAUTĀJUMI<br />

Mūsdienās visi kombinatorikas uzdevumi ar praktisku nozīmi tiek risināti ar datoru palīdzību.<br />

Ir radītas gan vispārīgas, gan arī specializētas programmatūras sistēmas kombinatorikas uzdevumu<br />

risināšanai. Ir izstrādāti efektīvi algoritmi praksē bieži izmantotu kombinatorikas uzdevumu<br />

risināšanā, kurus var sadalīt 2 grupās:<br />

• klasisko kombinatorisko skaitļu (C m n ,B n ,p(n) u.c.) vai dotā kombinatorikas uzdevuma<br />

atbildes aprēķināšana;<br />

• visu dotā tipa objektu (kopu, virkņu, sadalījumu, grafu) ǧenerēšana.<br />

Kombinatorisko skaitļu aprēķināšana parasti tiek veikta ar zināmu formulu vai rekurentu sakarību<br />

palīdzību. Kombinatorikas uzdevumu atrisinājumu elegantās formulas bieži vien nav lietderīgi<br />

izmantot praktiski tāpēc, ka aprēķini ar peldošā komata skaitļiem rada būtisku noapaļošanas<br />

kļūdu. Priekšroka tiek dota diskrētām rekurentajām sakarībām, kuru izmantošana noapaļošanas<br />

kļūdu nevar radīt principā.<br />

Piemērs 2.189. Fibonači skaitļus ir ērtāk aprēķināt izmantojot rekurento sakarību<br />

nekā formulu<br />

a n = a n−1 + a n−1<br />

a n = √ 1 (( 1 + √ 5<br />

) n+1 − ( 1 − √ 5<br />

) n+1 ).<br />

5 2<br />

2<br />

Visu dotā tipa objektu ǧenerēšana ir uzdevums, ar kuru ir sastapušies visdažādāko profesiju<br />

pārstāvji. Minēsim piemērus no dažādām nozarēm, kurās tiek pielietots šis uzdevums:<br />

1) zīlēšana (piemēram, Senās Ķīnas traktātā ”Pārmaiņu grāmata” ir pārskaitītas 64 = 2 6<br />

dzīves situācijas, kuras tiek izmantotas nākotnes paredzēšanai);<br />

2) dzejas teorija un prakse (visu iespējamo pantmēru pārskaitīšana);<br />

3) mūzikas teorija un prakse (visu iespējamo ritmu un melodiju pārskaitīšana);<br />

4) psiholoǧija (piemēram, mūsdienās populārā socionikas teorija, kurā tiek aprakstīti 16 =<br />

2 4 psiholoǧiskie tipi, kas atbilst 4 pazīmju pāru virknēm);<br />

5) ķīmija (piemēram, kāda ķīmijas uzdevuma risināšanas gaitā tiek pārskaitīti visi izomēri,<br />

kas atbilst vienai molekulformulai);<br />

6) inženierzinātnes (piemēram, kāda projekta izpildes gaitā tiek pārskaitīti visi risinājumi,<br />

kas atbilst dotajām prasībām).<br />

Visu dotā tipa objektu ǧenerēšana parasti tiek pielietota tā dēvētajos izsmeļošās pārlases jeb<br />

rupja spēka algoritmos, kas tiek izvēlēti tad, ja nav saskatāmi labāki risinājumi.<br />

Visu dotā tipa objektu ǧenerēšana ir grūts uzdevums, jo vispārīgā gadījumā to var atrisināt<br />

tikai ar visu dotā universa objektu apskatīšanu un vajadzīgo objektu atsijāšanu. Šis apstāklis<br />

ir licis izstrādāt efektīvas metodes dažāda veida universu objektu pēctecīgai ǧenerēšanai bez


2.9. KOMBINATORIKAS ALGORITMISKIE JAUTĀJUMI 74<br />

atkārtojumiem. Apskatīsim vienu no šādām metodēm, ko sauc par meklēšanu ar atkāpšanos jeb<br />

bektrekingu.<br />

Vispārīgā gadījumā mēs varam uzdot vajadzīgo objektu ar virkni<br />

(a 1 , ..., a n ),<br />

kur a i ∈ S i . Bektrekinga algoritma realizācijas gaitā šāda virkne tiek pakāpeniski palielināta par<br />

vienu elementu katrā solī - ja ir konstruēta virkne, kas satur m elementus un apmierina uzdevuma<br />

noteikumus, tad tālāk tiek atrasta nākošā elementa kandidātu kopa S m+1 ar uzdotu kārtību tajā<br />

un izvēlēts kārtējais elements kā virknes loceklis a m+1 tā, lai jaunā virkne ar garumu m + 1<br />

arī apmierinātu uzdevuma noteikumus. Šis process turpinās tik ilgi, kamēr virkni ir iespējams<br />

pagarināt. Virkni nevar pagarināt, ja izpildās vismaz viens no diviem apstākļiem - virknes<br />

garums ir sasniedzis noteikto maksimālo vērtību vai atbilstošā kopa S m+1 ir tukša. Šajā brīdī<br />

notiek ”atkāpšanās” - notiek virknes indeksa samazināšana par 1, elements a m tiek aizvietots ar<br />

nākamo elementu no S m . Zemāk ir dota pseidoprogramma bektrekinga algoritma realizācijai.<br />

Meklēšana ar atkāpšanos (bektrekings)<br />

: Atrast pirmā elementa kandidātu kopu S 1 ,<br />

: m := 1,<br />

: while m > 0 do<br />

: while S m≠∅ do /*pavirzīties uz priekšu*/<br />

: a m - nākamais elements no kopas S m , pievienot a m virknes galā,<br />

: S m = S m \{a m },<br />

: if [(a 1 , ..., a m ) ir pieļaujams risinājums] izvadīt to,<br />

: end if,<br />

: m = m + 1,<br />

: atrast m-tā elementa kandidātu kopu S m ,<br />

: end while,<br />

: m := m − 1, atmest virknes pēdējo locekli /*atkāpties*/,<br />

: end while<br />

Realizējot bektrekinga metodi, katrā konkrētajā gadījumā ir vēlams sekot tam, vai konstruētā<br />

virkne, kas ir ”daļējs” risinājums, var būt paplašināta līdz pilnam risinājumam. Ja iegūtā virkne<br />

nevar tikt paplašināta līdz pilnam risinājumam, tas ir jāņem vērā, definējot nākošo kopu S m .<br />

Bektrekinga metodes modifikācijas, kurās tiek realizēta uzdevumam piemērota optimāla nākošā<br />

elementa izvēle, meklēšanas sašaurināšanas un atkāpšanās politika, strādā daudz ātrāk un tiek<br />

pielietotas visos konkurētspējīgos programmatūras produktos. Ir izstrādāti meklēšanas algoritmi,<br />

kuros papildus bektrekingam lielāks akcents tiek likts uz optimālu elementu izvēli.<br />

Piemērs 2.190. Visu dotās galīgās kopas X = {a 1 , ..., a n } apakškopu ǧenerēšana. Apakškopas<br />

reprezentēsim standarta veidā - ar bināru virkņu palīdzību. Šajā gadījumā katram m : 1 ≤ m ≤ n<br />

ir jādefinē S m = {0, 1} un S m = ∅, ja m > n. Jebkura virkne ar garumu ne lielāku kā n<br />

ir pieļaujams risinājums. Var redzēt, ka bektrekinga algoritms trīs elementu kopas {x, y, z}<br />

gadījumā ar elementu kārtību<br />

x < y < z<br />

izvadīs šādu apakškopu virkni (mēs pārtulkosim binārās virknes apakškopu terminos):<br />

{x, y, z}, {x, y}, {x, z}, {x}, {y, z}, {y}, {z}, ∅.<br />

Piemērs 2.191. Visu dotās galīgās kopas X = {a 1 , ..., a n } permutāciju ǧenerēšana. Šajā<br />

gadījumā<br />

S m+1 = X\A m ,<br />

kur A m ir kopa, kas atbilst tekošajai virknei ar garumu m. Jebkura virkne ar garumu n<br />

ir pieļaujams risinājums. Var redzēt, ka bektrekinga algoritms trīs elementu kopas {x, y, z}<br />

gadījumā ar elementu kārtību<br />

x < y < z


izvadīs šādu permutāciju virkni:<br />

2.9. KOMBINATORIKAS ALGORITMISKIE JAUTĀJUMI 75<br />

(x, y, z), (x, z, y), (y, x, z), (y, z, x), (z, x, y), (z, y, x).<br />

Piemērs 2.192. Visu dotā naturālā skaitļa n sadalījumu ǧenerēšana. Atgādināsim, ka par<br />

naturāla skaitļa n sadalījumu sauksim šī skaitļa izteikšanu viena vai vairāku naturālu skaitļu<br />

summā. Pietiek apskatīt tikai dilstošas vai augošas summas, piemēram, skaitlim 5 eksistē 7<br />

dažādi sadalījumi:<br />

5 = 5 = 4 + 1 = 3 + 2 = 3 + 1 + 1 = 2 + 2 + 1 = 2 + 1 + 1 + 1 = 1 + 1 + 1 + 1 + 1.<br />

Šajā gadījumā algoritma izpildes sākumā S 1 = {1, ..., n}, kurā elementi ir sakārtoti augošā<br />

kārtībā. Pieļaujamie risinājumi ir virknes, kuru elementu summa ir vienāda ar n. Ja virkne ar<br />

garumu m ir konstruēta, tad S m+1 ir vienāds ar S m pirms tās pēdējās izmaiņas, ja konstruētās<br />

virknes elementu summa ir mazāka kā n un S m+1 = ∅, ja konstruētās virknes elementu summa<br />

ir vienāda vai lielāka kā n. Var redzēt, ka bektrekinga algoritms skaitļa 5 gadījumā izvadīs šādu<br />

sadalījumu virkni:<br />

(1, 1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 3), (1, 2, 2), (1, 4), (2, 3), (5).<br />

Vairākos svarīgos speciālgadījumos ir atrasti arī citi efektīvi algoritmi visu objektu ǧenerēšanai.<br />

Apskatīsim divus klasiskus piemērus.<br />

Par Greja kodu sauksim visu dotās kopas apakškopu virkni ar īpašību, ka divas blakus esošās<br />

apakškopas atšķiras tikai par vienu elementu. Ja apakškopu reprezentē kā bināru virkni, tad<br />

Greja kods ir fiksēta garuma bināru virkņu virkne, kurā divi blakus esoši elementi atšķiras tikai<br />

vienā vietā. Motivācija šādas virknes konstruēšanai ir saistīta ar nepieciešamību optimizēt analogo<br />

un digitālo ierīču mijiedarbību. Nereti rodas situācija, kad, pārveidojot analogos signālus<br />

digitālajos, ir jāǧenerē vairāki noteiktā kārtībā pēctecīgi diskrēti objekti, piemēram, pēctecīgi<br />

veseli skaitļi, kas uzrāda elektrisko jaudu elektrības skaitītājos vai cita veida patērētos resursus.<br />

Realizējot šo uzdevumu naivi, agri vai vēlu rodas situācija, kad nākamais veselais skaitlis<br />

atšķiras no iepriekšējā vairākos ciparos, piemēram, 39999 atšķiras no 39999 + 1 = 40000 piecos<br />

ciparos. Šāda situācija ir nevēlama un pat bīstama, jo vienlaicīga vairāku ciparu maiņa palielina<br />

kļūdu varbūtību un rezultāta nolasīšanas precizitāti, tā kā ciparu nomaiņa nenotiek vienlaicīgi.<br />

Labāks risinājums ir iekodēt pēctecīgu naturālu skaitļu virkni ar Greja kodam līdzīgu bināru<br />

virkņu palīdzību tā, lai jebkādiem diviem naturāliem skaitļiem n un n + 1 atbilstu šādas bināras<br />

virknes locekli g(n) un g(n + 1), un pārveidot analogos signālus uz šādām binārām virknēm. Šī<br />

risinājuma iespējamā nolasījuma kļūda nepārsniegs 1.<br />

1111<br />

0000<br />

0001<br />

1000<br />

0000<br />

0001<br />

1101<br />

1110<br />

0010<br />

1011<br />

1001<br />

0011<br />

1100<br />

0011<br />

1010<br />

0010<br />

1011<br />

0100<br />

1110<br />

0110<br />

1010<br />

0101<br />

1111<br />

0111<br />

1001<br />

0110<br />

1101<br />

0101<br />

1000<br />

0111<br />

2.9. attēls. Leksikogrāfiskā koda un Greja koda piemērs virknēm ar garumu 4 (pēc D.Knuta)<br />

Pamatuzdevums šajā risinājumā ir atrast Greja kodus visu izmēru kopām (binārām virknēm).<br />

Atradīsim Greja kodus, ja elementu skaits kopā ir 1, 2 vai 3:<br />

n = 1 → 0, 1;<br />

n = 2 → 00, 10, 11, 01;<br />

n = 3 → 000, 100, 110, 010, 011, 111, 101, 001.<br />

1100<br />

0100


2.10. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 76<br />

Apzīmēsim n elementu kopas Greja kodu ar G n . Var pārbaudīt, ka virkni G n var ǧenerēt, izmantojot<br />

rekursiju šādā veidā. G n pirmo pusi veido, pievienojot katram virknes G n−1 elementam<br />

beigās simbolu 0, G n otro pusi veido, apgriežot otrādā kārtībā virkni G n−1 un pievienojot katram<br />

šīs virknes elementam beigās simbolu 1.<br />

Ir jāatzīmē, ka Greja kodu analogi eksistē arī citiem kombinatorikas objektiem, piemēram,<br />

permutācijām. Plašāk par šādiem jautājumiem var lasīt izcilā datorzinātnieka D.Knuta darbos.<br />

Greja kodus izgudroja amerikāņu inženieris F.Grejs 20.gs. 40.gados.<br />

Par (p, n) tipa de Bruina virkni sauksim virkni ar garumu p n alfabētā<br />

{0, 1, ..., p − 1}<br />

ar šādu īpašību: visas n vienības garas nepārtrauktas apakšvirknes<br />

(b i , b i+1 , ..., b i+n−1 )<br />

ir dažādas, indeksi tiek aprēķināti pēc moduļa p. Pēc būtības par de Bruina virkni ir jādomā<br />

kā slēgtu virkni (ciklu). Tādējādi (p, n) de Bruina virkne ir īsākā iespējamā cikliskā virkne<br />

dotajā alfabētā, kas satur katru n vienības garu virkni šajā alfabētā kā nepārtrauktu apakšvirkni.<br />

Atradīsim dažas de Bruina virknes:<br />

(2, 2) → 0110;<br />

(2, 3) → 01110100;<br />

(2, 4) → 0101001101111000;<br />

(3, 2) → 012202110;<br />

(3, 3) → 012001110100022212202112102.<br />

Pārsteidzoši ir tas, ka šādas virknes eksistē visiem p un n.<br />

2.10. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI<br />

Vingrinājums 2.193. Telpas punktu sauksim par veselu punktu, ja visas tā Dekarta koordinātes<br />

ir veseli skaitļi. Cik veselu punktu ir plaknes<br />

apgabalā, ko ierobežo<br />

1) slēgtais oktants x ≥ 0, y ≥ 0, z ≥ 0;<br />

2) vaļējais oktants x > 0, y > 0, z > 0?<br />

x + y + z = n<br />

Vingrinājums 2.194. Cik ir veselu punktu (x, y), 1 ≤ x, y ≤ 1000, kuriem skaitlis<br />

1) x2 +y 2<br />

64<br />

;<br />

2) x2 +y 2<br />

49<br />

ir vesels?<br />

Vingrinājums 2.195. Cik daļās lode tiek sadalīta ar n plaknēm, kas iet caur tās centru<br />

(nekādas trīs plaknes neiet caur vienu diametru)?<br />

Vingrinājums 2.196. Cik daļās plakne tiek sadalīta ar n taisnēm, no kurām nekādas trīs<br />

nekrustojas vienā punktā un nekādas divas nav paralēlas? Cik daļās telpa tiek sadalīta ar n<br />

plaknēm, no kurām nekādas četras nekrustojas vienā punktā, nekādas trīs nekrustojas vienā<br />

taisnē un nekādas divas nav paralēlas?<br />

Vingrinājums 2.197. Cik dažādos veidos izliektu n-stūri var sadalīt trijstūros ar diagonālēm<br />

tā, lai nekādas divas diagonāles nekrustotos daudzstūra iekšienē?<br />

Vingrinājums 2.198. Tiek rādīts šāds kāršu triks, kurā piedalās mags un viņa asistents:<br />

asistents piedāvā pieciem cilvēkiem no auditorijas izvilkt pa vienai kārtij un atdot tās asistentam,<br />

asistents pēc savas izvēles nosauc magam četras kārtis, pēc tam mags, zinot tikai nosaukto četru


2.10. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 77<br />

kāršu kārtību, nekļūdīgi paziņo piekto kārti. Trika izskaidrojums ir šāds: apskatot kārtis, asistents<br />

izvēlas kārti, kuru viņš noklusēs un iekodē šīs kārts vērtību pārējo četru kāršu nosaukšanas<br />

kārtībā. Piedāvājiet praktiski realizējamu veidu, kā to izdarīt.<br />

Vingrinājums 2.199. Atrast rekursīvas sakarības trajektoriju skaitam no punkta (0, 0) līdz<br />

punktam (n, m), ja ir dots atļauto soļu saraksts. Kādiem atļauto soļu sarakstiem trajektoriju<br />

skaits ir galīgs?<br />

Vingrinājums 2.200. Atrast rekurentas sakarības un veidotājfunkcijas 3 × n un 4 × n<br />

taisnstūru noklāšanas veidu skaitam ar 1 × 2 domino figūrām. Mēǧiniet vispārināt uz vispārīgo<br />

(m × n) taisnstūru gadījumu.<br />

Vingrinājums 2.201. Atrast rekurentas sakarības un veidotājfunkcijas 2 × n taisnstūru<br />

noklāšanas veidu skaitam, ja atļautās figūras ir 1 × 1 figūras, 1 × 2 domino figūras un ”stūrīši”,<br />

kas satur 3 lauciņus.<br />

Vingrinājums 2.202. Atrast rekurentas sakarības un veidotājfunkcijas 2 × 2 × n taisnstūra<br />

paralēlskaldņu aizpildīšanas veidu skaitam, ja atļautās figūras ir taisnstūra paralēlskaldņi ar<br />

izmēriem 1 × 1 × 2.<br />

Vingrinājums 2.203. Kāds ir minimālais reizināšanu skaits, kas ir nepieciešams, lai iegūtu<br />

skaitli x 2004 , ja x ir dots?<br />

Vingrinājums 2.204. Apzīmēsim ar t n veidu skaitu, kādos var pareizi salikt iekavas virknē,<br />

kas satur n elementus, pielietojot ternāras operācijas (operācijas ar trīs operandiem). Piemēram,<br />

ja n = 5, tad ir iespējami šādi iekavu salikšanas veidi:<br />

((aaa)aa), (a(aaa)a), (aa(aaa)).<br />

Papildus definēsim t 0 = 0, t 1 = 1, t 2 = 0 (padomājiet, kāpēc tas ir dabiski). Pierādīt, ka<br />

veidotājfunkcija T (x) = ∑ n≥0 t nx n apmierina vienādību<br />

Vingrinājums 2.205. Polinomu<br />

T (x) = x + T 3 (x).<br />

P (x) = p m x m + p m−1 x m−1 + ... + p 0<br />

ar koeficientiem laukā k sauksim par lineāri reducējamu, ja<br />

P (x) = (ax + b)Q(x),<br />

kur a ≠ 0. Polinomu P (x) sauksim par kvadrātiski reducējamu, ja tas nav lineāri reducējams un<br />

P (x) = (ax 2 + bx + c)R(x),<br />

kur a ≠ 0. Fiksēsim koeficientu lauku: k = F 2 = {0, 1}. Cik ir lineāri reducējamu polinomu ar<br />

pakāpi n? Cik ir kvadrātiski reducējamu polinomu ar pakāpi n?<br />

Vingrinājums 2.206. Cik ir tādu n × n matricu ar koeficientiem laukā F 2 = {0, 1}, kuru<br />

determinants nav vienāds ar 0?<br />

Vingrinājums 2.207. Izmantojot skaitīšanu divos dažādos veidos, vienkāršot summas ∑ n<br />

i=1 i2<br />

un ∑ n<br />

i=1 i3 .<br />

Vingrinājums 2.208. Pierādīt vienādību ∑ n<br />

i=0 Ci 2iC n−i<br />

2(n−i) = 4n .<br />

Vingrinājums 2.209. 10 studentu grupa ir nolēmusi izveidot vairākas komisijas. Katrs<br />

students var piedalīties vairāk nekā vienā komisijā (vai nepiedalīties nevienā), un nekāda komisija<br />

nesatur citu komisiju kā apakškopu. Kāds ir vislielākais komisiju skaits, ko var izveidot šajā<br />

grupā?<br />

Vingrinājums 2.210. Cik dažādos veidos n cilvēkus var sadalīt netukšās rindās un rindas<br />

izvietot riņķī?


2.10. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 78<br />

Vingrinājums 2.211. Senātā ir 30 senatori. Jebkuri divi no tiem vai nu draudzējas, vai arī<br />

naidojas. Katrs senators naidojas ar 6 citiem senatoriem. Jebkuri 3 senatori veido komisiju. Cik<br />

ir tādu komisiju, kurās vai nu visi locekļi savā starpā draudzējas, vai arī visi locekļi naidojas?<br />

Vingrinājums 2.212. Studenti sesijā kārto 6 dažādus eksāmenus. Katru eksāmenu pāri<br />

sesijā nokārto vairāk kā 2 studentu. Neviens no studentiem nenokārto visus 6 eksāmenus.<br />

5<br />

Pierādīt, ka eksistē vismaz 2 studenti, kas nokārto tieši 5 eksāmenus.<br />

Vingrinājums 2.213. Apzīmēsim ar γ n tādu 3 × 4 naturālu matricu skaitu, kurās katrā<br />

rindā elementu summa ir 4n un katrā kolonna summa ir 3n. Atrast γ n un vienkāršot<br />

Γ(x) = ∑ n≥0<br />

γ n x n .<br />

Vingrinājums 2.214. Σ n ir visu kopas {1, ..., n} elementu permutāciju kopa.<br />

attālumu starp divām permutācijam f un g ar šādu formulu:<br />

n∑<br />

d(f, g) = |f(i) − g(i)|.<br />

i=1<br />

Kādas vērtības var pieņemt attāluma funkcija d?<br />

Definēsim<br />

Vingrinājums 2.215. Apskatīsim visas m elementus lielas apakškopas kopā {1, ..., n}, kur<br />

1 ≤ m ≤ n. Katrai no šādām apakškopām eksistē minimālais elements, apzīmēsim ar µ(n, m)<br />

visu minimālo elementu vidējo aritmētisko. Pierādīt, ka<br />

µ(n, m) = n + 1<br />

m + 1 .<br />

Vingrinājums 2.216. Datorā ir jāpalaiž uz izpildi n darbi, katram no kuriem ir piešķirts<br />

kārtas numurs no 1 līdz n. Datora operatīvajā atmiņā ir n atmiņas bloki, un katram blokam ir<br />

piešķirts kārtas numurs no 1 līdz n. Katram darbam ar numuru i sākotnēji ir paredzēts atmiņas<br />

bloks ar numuru α i (nav izslēgts, ka vairākiem darbiem ir paredzēts viens un tas pats atmiņas<br />

bloks). Datora operētājsistēma palaiž darbus uz izpildi numuru kārtībā (no 1 līdz n), atmiņa<br />

darbiem tiek piešķirta pēc šāda algoritma:<br />

1) ja atmiņas bloks ar numuru α i ir brīvs, tad darbam ar numuru i tiek piešķirts šis bloks<br />

un tas sāk izpildīties;<br />

2) ja atmiņas bloks ar numuru α i ir aizņemts, tad darbam ar numuru i tiek piešķirts<br />

nākošais brīvais atmiņas bloks (ar lielāku numuru) un tas sāk izpildīties;<br />

3) ja brīvu bloku ar lielāku numuru nav, tad darbam i atmiņa netiek piešķirta un darba<br />

izpilde tiek atlikta.<br />

Cik ir tādu virkņu (α 1 , ..., α n ), ka visi darbi var tikt palaisti uz izpildi?<br />

Vingrinājums 2.217. Apzīmēsim visu to kopas {1, ..., n} permutāciju skaitu, kas fiksē tieši<br />

k elementus ar f k,n . Pierādīt, ka<br />

n∑<br />

if i,n = n!<br />

i=0<br />

Vingrinājums 2.218. Atrast veidotājfunkcijas kombinatoriskajām klasēm P 3 {B} un M 3 {B},<br />

ja veidotājfunkcija kombinatoriskajai klasei B ir zināma.<br />

Vingrinājums 2.219. Definēsim A kā visu galīgu kopu klasi, kuras elementi ir dotas kombinatoriskas<br />

klases B elementi ar dažādiem izmēriem. Pierādīt, ka<br />

A(x) = ∏ n≥1(1 + |B n |x n ).


2.10. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 79<br />

Vingrinājums 2.220. Apzīmēsim ar p m,l (n) tādu skaitļa n sadalījumu skaitu naturālu skaitļu<br />

summā, kuriem ir ne vairāk kā m saskaitāmie un katrs saskaitāmais nav lielāks kā l. Pierādīt,<br />

ka<br />

P m,l (x) = ∑ m∏<br />

p m,l (n)x n 1 − x l+i<br />

=<br />

.<br />

1 − x i n≥0<br />

Vingrinājums 2.221. Apzīmēsim ar r(n, m) tādu skaitļa n sadalījumu skaitu, kuros lielākais<br />

saskaitāmais nav lielāks kā m. Pierādīt, ka<br />

∑<br />

r(n, m)x n 1 − x<br />

=<br />

1 − 2x + x . m+1<br />

n≥0<br />

Vingrinājums 2.222. Atrast veidotājfunkciju pašduālu (vienādu ar savu duālo sadalījumu)<br />

sadalījumu skaita virknei.<br />

Vingrinājums 2.223. Apzīmēsim ar a n visu variantu skaitu, kādos var izvēlēties skaitļa n<br />

sadalījumu p un pēc tam katra p saskaitāmā sadalījumu. Izteikt virknes {a n } veidotājfunkciju<br />

kā bezgalīgu reizinājumu.<br />

Vingrinājums 2.224. Pierādīt, ka P ′ (x) = P (x)·Σ(x), kur P (x) = ∑ n≥0 p(n)xn ir sadalījumu<br />

virknes veidotājfunkcija un Σ(x) = ∑ n≥0 σ(n + 1)xn , kur σ(m) ir naturāla skaitļa m naturālo<br />

dalītāju summa.<br />

Vingrinājums 2.225. Definēsim virkni {w n } šādā veidā: w 0 = 1 un visiem n > 0 izpildās<br />

sakarība<br />

n∑<br />

w n = (−1) i−1 Ci n B i B n−i ,<br />

kur B i ir Bella skaitļi. Pierādīt, ka<br />

∑<br />

n≥0<br />

i=0<br />

i=1<br />

w n<br />

x n<br />

n! = eex +e −x −2 .<br />

Vingrinājums 2.226. Par kopas {1, ..., n} permutācijas (a 1 , ..., a n ) kāpumu vai kritumu<br />

sauksim indeksu i, tādu, ka a i < a i+1 vai a i > a i+1 . Par šīs permutācijas pieaugumu vai vājo<br />

pieaugumu sauksim indeksu i, tādu, ka a i > i vai a i ≥ i. Par Eilera skaitli E(n, k) sauksim kopas<br />

{1, ..., n} permutāciju skaitu, kurās ir tieši k kāpumi. Pierādīt šādus faktus par Eilera skaitļiem:<br />

1) E(n, k) ir vienāds ar kopas {1, ..., n} permutāciju skaitu, kurās ir tieši k kritumi;<br />

2) E(n, k) ir vienāds ar kopas {1, ..., n} permutāciju skaitu, kurās ir tieši k pieaugumi;<br />

3) E(n, k) ir vienāds ar kopas {1, ..., n} permutāciju skaitu, kurās ir tieši k + 1 vājie pieaugumi;<br />

4) E(n, k) = E(n, n − 1 − k);<br />

5) E(n, k) = (k + 1)E(n − 1, k) + (n − k)E(n − 1, k − 1);<br />

6) ∑ n−1<br />

k=0<br />

E(n, k) = n!;<br />

7) E(n, k) = ∑ k<br />

i=0 (−1)i Cn+1(k i + 1 − i) n ;<br />

8) x n = ∑ n−1<br />

k=0 E(n, ∑ k)Cn x+k ;<br />

9) S(n, m) = 1 n−1<br />

m! k=0<br />

10) ∑ n<br />

i=1 ik = ∑ k−1<br />

j=0<br />

E(n, k)Cn−m<br />

k<br />

n+j+1 .<br />

E(k, j)Ck+1<br />

, ja n ≥ m un S(n, m) ir otrā veida Stirlinga skaitļi;<br />

Vingrinājums 2.227. Ar kādām m vērtībām skaitļi S(n, m), c(n, m) (Stirlinga skaitļi) un<br />

E(n, m)(Eilera skaitļi) pieņem maksimālās vērtības, ja n ir fiksēts?<br />

Vingrinājums 2.228. Šajā grāmatā apskatītajām klasisko kombinatorisko skaitļu (vienkāršāko<br />

kombinatorikas uzdevumu atrisinājumu, Stirlinga skaitļu u.c.) virknēm un doto vingrinājumu<br />

atrisinājumu virknēm nosakiet, vai atbilstošās veidotājfunkcijas ir racionālas vai algebriskas.<br />

Mēǧiniet atrast skaitāmo objektu īpašības, kas nodrošina veidotājfunkcijas racionalitāti vai algebriskumu.


2.10. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 80<br />

Vingrinājums 2.229. Vispārināsim uzdevumu par kombinācijām un variācijām šādā veidā.<br />

Fiksēsim bināras attiecības izomorfizma tipu un skaitīsim, cik veidos kopā ar n elementiem vai<br />

n-multikopā var uzdot šī tipa attiecību. Apskatiet piemērus, mēǧiniet atrast rekurentās sakarības<br />

un veidotājfunkcijas. Mēǧiniet noteikt, kādā gadījumā divām attiecībām šie skaitļi ir vienādi.<br />

Vingrinājums 2.230. Vispārināsim uzdevumu par kombinācijām šādā veidā. Fiksēsim<br />

daļēja sakārtojuma izomorfisma tipu un skaitīsim, cik veidos kopā ar n elementiem vai n-<br />

multikopā var uzdot apakškopu vai apakšmultikopu sistēmu, kas kā galīga sakārtota kopa ir<br />

izomorfa dotajam galīgajam sakārtojumam. Apskatiet divus uzdevumus<br />

1) atrast apakškopu sistēmu skaitu, kad elementu skaits katrā apakškopā ir fiksēts un dots;<br />

2) atrast visu iespējamo dotā tipa apakškopu sistēmu skaitu.<br />

Apskatiet piemērus, mēǧiniet atrast rekurentās sakarības un veidotājfunkcijas. Mēǧiniet noteikt,<br />

kādā gadījumā divām daļēji sakārtotām kopām šie skaitļi ir vienādi. Izmantojiet skaitīšanu divos<br />

vai vairāk dažādos veidos un mēǧiniet iegūt kombinatoriskas vienādības.<br />

Vingrinājums 2.231. Pierādīt Eilera vienādību:<br />

∏<br />

i≥1(1 − x i ) = 1 + ∑ n>0(−1) n x (3n2 +n)/2 + ∑ n>0<br />

(−1) n x (3n2 −n)/2 .<br />

Secināt, ka sadalījumu skaita virkne p(n) apmierina ”bezgalīgu” rekurentu sakarību<br />

p(n) = p(n − 1) + p(n − 2) − p(n − 5) − p(n − 7) + ...,<br />

jeb<br />

p(n) = ∑ i≥1<br />

(−1) i+1 (p(n − α i ) + p(n − β i )),<br />

kur α i = 3i2 −i<br />

2<br />

un β i = 3i2 +i<br />

2<br />

(mēs uzskatām, ka p(k) = 0, ja k < 0). Pierādīt, ka šī rekurentā<br />

sakarība ļauj aprēķināt p(n) izmantojot O(n 3/2 ) saskaitīšanas un atņemšanas operācijas.<br />

Vingrinājums 2.232. Apzīmēsim ar a n tādu skaitļa 2n sadalījumu skaitu, kuru Janga diagrammas<br />

∑<br />

var noklāt ar 2 × 1 domino figūrām bez to pārklāšanās. Izteikt veidotājfunkciju<br />

n≥0 a nx n kā bezgalīgu reizinājumu.<br />

Vingrinājums 2.233. Pierādīt Rodžersa-Ramanudžana vienādību<br />

∑<br />

n≥0<br />

x n2<br />

(1 − x)(1 − x 2 )...(1 − x n ) = ∏ i≥0<br />

1<br />

(1 − x 5i+1 )(1 − x 5i+4 ) .<br />

Vingrinājums 2.234. Par vāji dilstošu skaitļu tabulu sauksim tabulu, kuras locekļi ir<br />

naturāli skaitļi, rindās (no kreisās puses uz labo) un kolonnās (no augšas uz leju) elementi ir<br />

nepieaugošā kārtībā. Par nenegatīva skaitļa n divdimensionālu sadalījumu sauksim vāji dilstošu<br />

skaitļu tabulu, kuras skaitļu summa ir vienāda ar n. Citiem vārdiem sakot, skaitļa n divdimensionāls<br />

sadalījums ir divargumentu naturālu skaitļu virkne {a ij }, kuras elementi apmierina šādas<br />

īpašības:<br />

∑<br />

a ij = n,<br />

i,j<br />

kur a i1 j ≥ a i2 j, ja i 1 < i 2 un a ij1 ≥ a ij2 , ja j 1 < j 2 . Apzīmēsim ar q n skaitļa n divdimensionālo<br />

sadalījumu skaitu, uzskatot, ka q 0 = 1 (pārbaudiet, ka q 1 = 1, q 2 = 3, q 3 = 6, q 4 = 13). Pierādīt,<br />

ka<br />

Q(x) = ∑ q n x n = ∏ 1<br />

(1 − x i ) . i n≥0<br />

i≥1


2.11. PROGRAMMĒŠANAS UZDEVUMI 81<br />

2.11. PROGRAMMĒŠANAS UZDEVUMI<br />

Vingrinājums 2.235. Uzrakstīt programmas, kurās tiek realizēta bektrekinga metode šādu<br />

kombinatorikas objektu ǧenerēšanai:<br />

1) visas dotā lieluma apakškopas vai virknes dotā lieluma kopā;<br />

2) visas dotā lieluma apakšmultikopas;<br />

3) visas virknes dotā lieluma multikopā;<br />

4) visi veidi, kādos uz šaha galda var izvietot 8 dāmas tā, lai neviena no tām nebūtu<br />

apdraudēta;<br />

5) visi dotā naturālā skaitļa sadalījumi;<br />

6) visas binārās attiecības dotajā kopā;<br />

7) visi dotās kopas sadalījumi;<br />

8) visi dotā skaitļa divdimensionālie sadalījumi;<br />

9) visi dotā skaitļa n-dimensionālie sadalījumi (sāciet ar to, ka definējiet n-dimensionālu<br />

sadalījumu pēc analoǧijas ar divdimensionālo sadalījumu);<br />

10) visi daļēji sakārtojumi dotajā kopā;<br />

11) visi dotā vienādojuma vai vienādojumu sistēmas atrisinājumi veselos skaitļos ar noteiktiem<br />

ierobežojumiem;<br />

12) visi pareizi iekavu salikšanas veidi skaitļu summas aprēķināšanai;<br />

13) visas ķēdes starp divām dotajām virsotnēm dotajā grafā;<br />

14) visus dotā garuma vienkāršus ciklus dotajā grafā;<br />

15) visus veidus, kā ar zirgu var apiet vienu reizi visus šaha galda lauciņus un atgriezties<br />

sākotnējā lauciņā;<br />

16) visus veidus, kā no punkta (0, 0) var aiziet līdz punktam (n, m), ja ir dots atļauto soļu<br />

saraksts;<br />

17) visus veidus, kā doto plaknes vai telpas apgabalu var noklāt ar dotā tipa figūrām.<br />

Vingrinājums 2.236. Uzrakstīt programmu, kas atrod dotā naturālā skaitļa n sadalījuma<br />

duālo sadalījumu.<br />

Vingrinājums 2.237. Uzrakstīt programmu, kas atrod dotā naturālā skaitļa n sadalījumu<br />

skaitu p(n) izmantojot bezgalīgo rekurento sakarību.<br />

Vingrinājums 2.238. Uzrakstīt programmas, kas aprēķina visas šajā tekstā apskatīto kombinatorikas<br />

uzdevumu atrisinājumu virknes (kombinācijas un variācijas, sadalījumu skaitu, Stirlinga,<br />

Katalāna, Fibonači, Bernulli, harmoniskos, Eilera u.c. skaitļus).<br />

Vingrinājums 2.239. Uzrakstīt programmas Greja koda un de Bruina virkņu ǧenerēšanai.


NODAĻA 3<br />

GRAFU TEORIJA<br />

3.1. IEVADS<br />

Viens no fundamentāliem matemātikas pamatjēdzieniem ir attiecība - īpašība, kas piemīt<br />

vai nepiemīt kopu elementu pāriem. Pareizi vizuāli iekodēta informācija ir vieglāk uztverama<br />

un apstrādājama nekā jebkura cita veida informācija. Uz datorzinātnēm orientēti lasītāji par<br />

vizualizāciju var domāt kā par pētāmās sistēmas pirmapstrādi (preprocesingu), kuras rezultātā<br />

sistēma tiek iekodēta tādā veidā, ka tā var tikt apstrādāta ātrāk un ar mazāk kompleksām programmām<br />

vai automātiem. Tāpat kā risinot uzdevumus par kopām, ir lietderīgi vizualizēt kopas<br />

Eilera-Venna diagrammu veidā, arī uzdevumos par attiecībām ir lietderīgi mēǧināt vizualizēt<br />

attiecības.<br />

Kopu elementus kā elementārus (nedalāmus, atomārus) objektus parasti attēlo kā punktus vai<br />

aplīšus ar tajos ierakstītu informāciju. Tā kā attiecība ir īpašība, kas saista elementu pārus, tad<br />

šo īpašību ir pieņemts attēlot kā elementus saistošas nepārtrauktas līnijas (šķautnes, bultiņas, nogriežņus)<br />

ar tādu papildinformāciju, kas ir nepieciešama pareizai uzdevuma nosacījumu grafiskai<br />

iekodēšanai. Parasti šī papildinformācija ir šķautņu vai virsotņu parametri jeb ”svari”. Šādu<br />

attieksmes vizualizācijas veidu sauksim par tās grafu. Terminam grafs ir grieķu izcelsme, šī<br />

vārda saknes nozīme ir raksts vai rakstu zīme. Attiecības vizualizācija grafa veidā palīdz to<br />

analizēt gan teorētiski, gan arī eksperimentāli, izmantojot informācijas tehnoloǧijas. Termins<br />

grafu teorija mūsdienās ir termina attiecību teorija sinonīms.<br />

Grafu pielietošana matemātikas uzdevumu risināšanā un ar grafiem - attiecībām saistītā<br />

matemātikas revolucionalizēšana sākās 18.gadsimta vidū (1736. gadā) ar matemātiķa L.Eilera<br />

darbiem. Kā relatīvi jaunai un dinamiskai matemātikas nozarei ar plašiem pielietojumiem grafu<br />

teorijai vēl nav pilnībā nostabilizējusies terminoloǧija, kas ir daudzveidīga un atspoguļo pielietojumu<br />

nozaru specifiku. Pat terminam grafs ir vairāki sinonīmi - diagramma, struktūra u.c.<br />

Piemērs 3.1. Vēsturiski viens no pirmajiem publicētajiem grafu pielietošanas piemēriem ir<br />

atrisinājums ”uzdevumam par Kēnigsbergas tiltiem” no izklaidējošās matemātikas, kura autors<br />

ir izcilais 18.gadsimta matemātiķis L.Eilers. Ir dota upe, kurā ir divas salas un vairāki tilti (skatīt<br />

3.1.(a) attēlā).<br />

(a)<br />

3.1. attēls. Uzdevums par Kēnigsbergas tiltiem<br />

(b)<br />

(c)<br />

Vai ir iespējams iziet no kāda punkta, pāriet katru tiltu tieši vienu reizi un atgriezties sākotnējā<br />

punktā? Tā kā uzdevuma risināšanā kritiska loma ir tiltiem, un trajektorijas, pa kurām tiek iets,<br />

nespēlē lielu lomu, tad modelēsim uzdevumu šādā veidā: piekārtosim katram sauszemes gabalam<br />

82


3.1. IEVADS 83<br />

vienu punktu un saistīsim divus punktus ar līniju tad un tikai tad, ja atbilstošie sauszemes<br />

gabali ir saistīti ar tiltu (skatīt 3.1(b) attēlā). Uzmanīgi apskatot zīmējumu un domājot tikai par<br />

uzdevuma vienkāršoto modeli (skatīt 3.1.(c) attēlā), uzdevuma atrisinājums šķiet acīmredzams.<br />

Ja uzdevumam eksistētu atrisinājums, tad iegūtajā grafā eksistētu noslēgts ”ceļš”, kurā tiek iets<br />

pa šķautnēm un kurš saturētu katru šķautni tieši vienu reizi. Ja eksistē tāds ceļš, tad katrai<br />

virsotnei ir jābūt ar pāra skaitu šķautnēm. Bet šajā grafā ir virsotnes, kurām atbilst nepāra<br />

skaits šķautņu, tātad uzdevumam nav atrisinājuma.<br />

Piemērs 3.2. (No skolēnu olimpiāžu krājumiem) Uz 3 × 3 ”šaha galda” ir izvietoti divi balti<br />

un divi melni zirgi tā, kā parādīts 3.2(a) attēlā. Vai ir iespējams tos pārvietot uz stāvokli, kas<br />

parādīts 3.2(b) attēlā, ja divas figūras nevar atrasties vienā lauciņā?<br />

(a)<br />

3.2. attēls. Uzdevums par četriem šaha zirgiem<br />

(b)<br />

Šajā uzdevumā kritiska loma ir rūtiņām un to savstarpējam izvietojumam, precīzāk, tam, vai<br />

rūtiņas saistītas ar zirga gājienu. Modelēsim uzdevumu šādi: piekārtosim katram lauciņam vienu<br />

virsotni un saistīsim divas virsotnes ar līniju, ja atbilstošie lauciņi ir saistīti ar zirga gājienu (skatīt<br />

3.3(a) attēlā).<br />

1 2 3<br />

1<br />

6<br />

4 5 6<br />

8<br />

3<br />

7<br />

2<br />

7 8 9<br />

4<br />

9<br />

(a)<br />

3.3. attēls. Grafs uzdevumam par četriem šaha zirgiem<br />

(b)<br />

Tagad aizmirsīsim par šaha galdu kā fizikālu objektu un pārkārtosim grafa virsotnes tā, lai grafa<br />

struktūra ir labāk redzama (skatīt 3.3(b) attēlā). Viegli redzēt, ka uzdevumam nav atrisinājuma,<br />

jo sākuma stāvoklī starp diviem baltajiem zirgiem nav melnā zirga, bet beigu stāvoklī starp tiem<br />

ir jābūt melnajam zirgam, grafa šķautnes ir izvietotas tā, ka divi blakus esoši zirgi nevar pārlēkt<br />

viens otram pāri.<br />

Piemērs 3.3. Izmantojot grafus, atrisināsim klasisko uzdevumu par vilku, kazu un kāpostu.<br />

Vienā upes krastā ir cilvēks (H), laiva, vilks (W), kaza (G) un kāposts (C). Laivā var atrasties<br />

cilvēks un ne vairāk kā viens no pārējiem objektiem. Cilvēkam ir jāpārved uz otru krastu visi<br />

objekti, ievērojot nosacījumu, ka viņš nevar atstāt bez pieskatīšanas vilku kopā ar kazu vai kazu<br />

kopā ar kāpostu. Šajā uzdevumā kritiska loma ir objektu izvietojumam upes krastos pēc katra<br />

laivas brauciena. Atkal modelēsim šo uzdevumu ar grafu palīdzību. Grafa virsotnes būs<br />

visi iespējamie četru objektu stāvokļi. Katru konfigurāciju attēlosim veidā (A|B), kur A ir objekti,<br />

kas atrodas sākotnējā krastā un B ir objekti, kas atrodas otrā krastā, piemēram, sākuma


3.1. IEVADS 84<br />

stāvoklī atbilstošās virsotnes konfigurācija būs (HW GC|), ja no sākuma stāvokļa cilvēks pārved<br />

uz otru krastu kazu, tad konfigurācija pēc šī soļa izpildes būs (W C|HG), beigu konfigurācija<br />

būs (|HW GC). Uzskatīsim, ka laiva vienmēr ir kopā ar cilvēku. Divas konfigurācijas saistīsim<br />

ar šķautni, ja tās ir saistītas ar vienu laivas braucienu. Atmetīsim visas konfigurācijas, kurās<br />

kādā no krastiem ir kopas W G, GC, W GC, un uzzīmēsim grafu ar atlikušajām virsotnēm (skatīt<br />

3.4.attēlā):<br />

HCGW<br />

HCW<br />

C<br />

HCGW<br />

HCW<br />

G<br />

W<br />

HCG<br />

HCG<br />

W<br />

G<br />

HCW<br />

CW<br />

HG<br />

C<br />

HGW<br />

HG<br />

CW<br />

3.4. attēls. Grafs uzdevumam par vilku, kazu un kāpostu<br />

Pārkārtosim virsotnes tā, lai grafa struktūra ir labāk redzama (skatīt 3.5.attēlā):<br />

W HCG HCG W<br />

HCGW CW HG HCW G<br />

HG CW HCGW<br />

C HGW HGW C<br />

3.5. attēls. Vienkāršots grafs uzdevumam par vilku, kazu un kāpostu<br />

Tā kā eksistē divas dažādas nepārtrauktas ķēdes no virsotnes (HW GC|) uz virsotni (|HW GC),<br />

tad uzdevumam ir divi dažādi atrisinājumi, kurus var viegli nolasīt no grafa.<br />

Piemērs 3.4. Pielietosim grafus vienkāršu matemātikas uzdevumu analīzē un risināšanā.<br />

Atrisināsim šādu uzdevumu: dotas taisnleņķa trijstūra katetes a un b, atrast ievilktās riņķa<br />

līnijas rādiusu r. Atkārtosim vienkāršākās sakarības, kas saista katetes a un b, hipotenūzu c,<br />

šauro lenķi α ar pretkateti a, tā papildinājumu β, trijstūra laukumu S, perimetru P , apvilktās<br />

riņķa līnijas rādiusu R un ievilktās riņķa līnijas rādiusu r:<br />

1) α + β = π;<br />

2<br />

2) tan α = a;<br />

b<br />

3) sin α = a;<br />

c<br />

4) a 2 + b 2 = c 2 ;<br />

5) S = ab;<br />

2<br />

6) P = a + b + c;<br />

7) R = c;<br />

2<br />

8) S = P r.<br />

2<br />

Definēsim grafu, kurā ir divu tipu virsotnes -<br />

a) lielumi a, b, c, α, β, S, P, R, r;<br />

b) sakarības 1)-8).


3.2. PAMATDEFINĪCIJAS 85<br />

Savienosim lielumu x ar sakarību A tad un tikai tad, ja lielums x piedalās sakarībā A. Piemēram,<br />

sakarība 4) ir savienota ar lielumiem a,b un c. Iegūtais grafs parāda dotā ǧeometrijas uzdevuma<br />

lielumu un sakarību savstarpējās attiecības. Izmantojot iespēju piešķirt šķautnēm virzienu,<br />

mēǧināsim parādīt uzdevuma risināšanas gaitā iegūto zināšanu uzkrāšanas procesu un pašu<br />

risinājumu. Uzskatīsim, ka orientēta šķautne no lieluma x uz sakarību A nozīmē to, ka lielums x<br />

tiek ievietots sakarībā A. Uzskatīsim, ka orientēta šķautne no sakarības A uz lielumu x nozīmē,<br />

ka ir iespējams noteikt lielumu x izmantojot sakarību A. Ja kādas sakarības A visas šķautnes,<br />

izņemot vienu, tajā ieiet, tad varam piešķirt atlikušajai šķautnei izejošo virzienu, jo lielumu, kas<br />

atbilst atlikušajai šķautnei, varam atrast, izmantojot sakarību A. Sakarības virsotni sauksim<br />

par pareizu, ja tajā visas šķautnes izņemot vienu ir ieejošas. Risināsim uzdevumu šādā veidā.<br />

Sāksim ar dotajiem lielumiem a un b, katrai šķautnei, kas iziet no šīm virsotnēm uzdosim virzienu<br />

no lieluma uz sakarību. Ja kādai sakarības virsotnei visas šķautnes izņemot vienu ir orientētas<br />

kā ieejošas, tad padarīsim to par pareizu, orientējot atlikušo šķautni kā izejošu. Turpināsim šo<br />

procesu tik ilgi, kamēr ir konstruēts orientēts maršruts līdz virsotnei r.<br />

3.2. PAMATDEFINĪCIJAS<br />

Definēsim plašāk izmantotās grafu klases un grafu teorijas pamatjēdzienus. Par grafu (neorientētu<br />

grafu) sauksim pāri Γ = (V, E), kur V - grafa virsotņu kopa, V ≠ ∅ un E ⊆ V × V ir<br />

grafa šķautņu kopa, kur E apmierina šādus nosacījumus:<br />

1) E = E −1 , ja šķautne (u, v) ∈ E, tad arī (v, u) ∈ E;<br />

2) E ∩ diag(V × V ) = ∅ - nav šķautņu, kurām abi galapunkti ir vienādi (atgādināsim, ka<br />

mēs definējam diag(V × V ) = {(v 1 , v 2 ) ∈ V × V |v 1 = v 2 } un saucam to par kopas V × V<br />

diagonāli).<br />

Šajā tekstā pēc noklusēšanas mēs uzskatīsim, ka virsotņu kopa V ir galīga kopa. Ja vienlaicīgi<br />

tiek strādāts ar grafiem, kuru virsotņu kopas ir gan galīgas, gan bezgalīgas, tad lietosim terminus<br />

galīgs grafs un bezgalīgs grafs.<br />

Neorientētam grafam atbilst simetriska antirefleksīva attiecība. Nosacījums (1) atbilst simetrijai<br />

un nosacījums (2) - antirefleksivitātei. Literatūrā un zinātnieku vai datorspeciālistu sarunvalodā<br />

parasti ar terminu grafs pēc noklusēšanas tiek domāts neorientēts grafs. Arī šajā tekstā<br />

šāda vienošanās tiek pieņemta. Ja Γ = (V, E) ir neorientēts grafs, tad tā virsotņu skaitu standarti<br />

apzīmēsim ar |V | un šķautņu skaitu apzīmēsim ar |E|, kaut arī elementu skaits kopā E ir<br />

divas reizes lielāks nekā |E|.<br />

3.6. attēls. Neorientēta grafa piemērs<br />

Divas neorientēta grafa virsotnes v 1 , v 2 sauksim par blakusvirsotnēm (savienotām virsotnēm), ja<br />

(v 1 , v 2 ) ∈ E, apzīmēsim to ar v 1 ∼ v 2 . Virsotnes v 1 un v 2 sauksim par šķautnes (v 1 , v 2 ) galapunktiem.<br />

Virsotni v un šķautni e sauksim par incidentām, ja viens no šķautnes e galapunktiem<br />

ir virsotne v. Divas šķautnes sauksim par incidentām, ja tām ir kopīga virsotne. Risinot kombinatorikas<br />

uzdevumus par grafiem, parasti ar terminu šķautne saprot divu sakārtotu pāru (v 1 , v 2 )<br />

un (v 2 , v 1 ) identifikāciju. Par grafa Γ šķautņu grafu vai līniju grafu sauksim grafu L(Γ), kur<br />

virsotnes ir Γ šķautnes un divas virsotnes grafā L(Γ) ir savienotas tad un tikai tad, ja atbilstošās<br />

šķautnes ir incidentas.<br />

Par orientētu grafu sauksim pāri Γ = (V, E), kur V - orientēta grafa virsotņu kopa, V ≠ ∅ un<br />

E ⊆ V ×V, E ∩diag(V ×V ) = ∅ - orientētā grafa šķautņu (bultu) kopa. Atšķirība no neorientēta


3.2. PAMATDEFINĪCIJAS 86<br />

grafa ir tāda, ka šajā gadījumā netiek pieprasīta attiecības simetrija, tāpēc uz šķautnēm zīmē<br />

bultiņas, lai šķautnes (u, v) un (v, u) atšķirtu vienu no otras. Šķautni (u, v) parasti sauc par<br />

virsotnes u izejošo šķautni, un šķautni (v, u) - par u ieejošo šķautni. Orientētam grafam atbilst<br />

patvaļīga antirefleksīva attiecība.<br />

3.7. attēls. Orientēta grafa piemērs<br />

No orientēta grafa var iegūt neorientētu grafu, ”aizmirstot” šķautņu orientāciju. Otrādi, no<br />

neorientēta grafa var iegūt orientētu grafu, uzskatot katru neorientētu šķautni par divu pretēju<br />

orientētu šķautņu apvienojumu.<br />

Par orientētu grafu ar cilpām sauksim pāri Γ = (V, E), kur V - grafa virsotņu kopa, V ≠ ∅<br />

un E ⊆ V × V - grafa šķautņu kopa. Orientētam grafam ar cilpām atbilst patvaļīga attiecība.<br />

Orientētus grafus var interpretēt arī kā attēlojumu grafus.<br />

Par neorientētu vai orientētu multigrafu sauksim grafu, kurā var būt vairāk nekā viena neorientēta<br />

vai orientēta šķautne starp divām virsotnēm vienā virzienā, tas var būt ar vai bez<br />

cilpām. Šķautņu skaitu starp divām virsotnēm sauksim arī par šķautnes multiplicitāti. Bieži<br />

vien multigrafiem ir dažādu tipu šķautnes, kuras zīmējumos var attēlot ar dažādām krāsām vai<br />

citiem paņēmieniem. Multigrafu var domāt kā grafu ar papildus struktūru - funkciju no šķautņu<br />

kopas uz naturālu skaitļu kopu, kas katrai šķautnei piekārto tās multiplicitāti.


3.2. PAMATDEFINĪCIJAS 87<br />

3.8. attēls. Orientēta multigrafa piemērs<br />

Par nosvērtu grafu (grafu ar indeksētām virsotnēm un/vai šķautnēm) sauksim grafu, kura katrai<br />

virsotnei vai/un šķautnei var būt piekārtots skaitlis, vairāki skaitļi vai citu kopu elementi.<br />

Formāli runājot, nosvērts grafs ir jebkura tipa grafs ar papildus struktūru - virsotņu ”svaru”<br />

funkciju w : V → A vai/un šķautņu ”svaru” funkciju w : E → A, kas katrai virsotnei/šķautnei<br />

piekārto kādu elementu no kopas A (svaru). Parasti kopa A ir kāda no klasiskajām skaitļu kopām.<br />

2<br />

5<br />

3<br />

2<br />

4<br />

3.9. attēls. Nosvērta grafa piemērs<br />

No nosvērta grafa var iegūt parastu (orientētu vai neorientētu) grafu, ”aizmirstot” par svaru<br />

funkciju.<br />

Grafa jēdzienu var vispārināt šādā veidā. Ja V ir netukša kopa (virsotņu kopa) un E ⊆<br />

P (V ), tad pāri X = (V, E) sauksim par hipergrafu. Tādējādi, hipergrafa ”šķautnes” (kopas E<br />

elementi) atbilst virsotņu kopas V patvaļīgām apakškopām. Šajā tekstā mēs hipergrafus sīkāk<br />

neapskatīsim.<br />

Jebkura tipa divus grafus sauksim par vienādiem, ja to virsotņu un šķautņu kopas ir vienādas.<br />

Par triviālo grafu sauksim grafu ar vienu virsotni un bez šķautnēm.<br />

Ja dots grafs Γ = (V, E), tad grafu Γ 1 = (V 1 , E 1 ) sauksim par Γ apakšgrafu, ja V 1 ⊆<br />

V, E 1 ⊆ E, un katra no kopas E 1 šķautnēm ir incidenta tikai kopas V 1 virsotnēm, apzīmēsim<br />

to ar pierakstu Γ 1 ⊆ Γ. Par virsotņu kopas U inducēto (pilno) apakšgrafu sauksim apakšgrafu,<br />

kura virsotņu kopa ir U un kas satur visas šķautnes, kas ir incidentas tikai kopas U elementiem.<br />

Orientētā grafā Γ par virsotņu kopas U inducēto (pilno) apakšgrafu sauksim apakšgrafu, kura<br />

virsotņu kopa ir U un kas satur visas šķautnes, kuru galapunkti un sākumpunkti ir kopā U. Par<br />

skeletālu apakšgrafu sauksim apakšgrafu, kas satur visas grafas virsotnes. Grafu Γ sauksim par<br />

maksimālu attiecībā uz kādu īpašību P , ja neeksistē grafs Γ ′ tāds, ka Γ ⊆ Γ ′ un grafam Γ ′ piemīt<br />

īpašība P . Grafa apakšgrafu sauksim par kliķi, ja tajā jebkuras divas virsotnes ir savienotas.<br />

Grafa Γ maksimālās kliķes virsotņu skaitu sauksim par grafa kliķes skaitli, to apzīmēsim ar ω(Γ).<br />

Piemērs 3.5. 3.10.attēla grafa (a) apakšgrafa piemērs ir grafs (b) un inducēta apakšgrafa<br />

piemērs - grafs (c).


3.2. PAMATDEFINĪCIJAS 88<br />

2<br />

2<br />

2<br />

1<br />

7<br />

4<br />

1<br />

7<br />

4<br />

1<br />

7<br />

4<br />

5<br />

6<br />

5<br />

6<br />

5<br />

6<br />

(a) (b) (c)<br />

3.10. attēls. Grafa apakšgrafa un inducēta apakšgrafa piemērs<br />

Par grafa virsotnes apkārtni sauksim virsotņu kopas apakškopu, kas satur visas ar to savienotās<br />

virsotnes, virsotnes v apkārtni apzīmēsim ar N Γ (v). Par orientēta grafa virsotnes v pozitīvo/negatīvo<br />

apkārtni sauksim virsotņu kopu, kas satur visas virsotnes u tādas, ka eksistē šķautne<br />

(u, v)/(v, u), šīs kopas apzīmēsim ar N + (v) vai N − (v). Orientētā grafā Γ kopu N − (v) apzīmēsim<br />

arī ar Γ(v) un kopu N + - ar Γ −1 (v). Par grafa virsotnes pakāpi (valenci) sauksim ar to incidento<br />

šķautņu skaitu vai, citiem vārdiem sakot, virsotnes apkārtnes elementu skaitu, virsotnes v<br />

pakāpi apzīmēsim ar d(v). Par grafa pakāpju vektoru sauksim virkni (a 0 , ..., a k ), kur a i ir grafa<br />

virsotņu skaits ar pakāpi i. Naturālu skaitļu virkni sauksim par grafisku, ja eksistē grafs, kura<br />

pakāpju vektors ir vienāds ar doto virkni. Virsotni, kuras pakāpe ir 0, sauksim par izolētu virsotni,<br />

virsotni, kuras pakāpe ir 1, sauksim par brīvu virsotni, virsotni, kas ir savienota ar visām<br />

pārējām virsotnēm, sauksim par dominējošu. Grafa Γ virsotņu minimālo pakāpi apzīmēsim ar<br />

δ(Γ), maksimālo pakāpi - ar ∆(Γ). Par grafa vidējo virsotnes pakāpi sauksim lielumu<br />

d(Γ) = 1 ∑<br />

d(v).<br />

|V |<br />

Definēsim ɛ(Γ) = |E|<br />

|V | .<br />

Par orientēta grafa virsotnes v pozitīvo/negatīvo puspakāpi (valenci) sauksim ar v incidento<br />

ieejošo/izejošo šķautņu skaitu jeb v pozitīvās/negatīvās apkārtnes elementu skaitu, apzīmēsim<br />

ar d + (v)/d − (v). Ja d + (v) = 0, tad virsotni v sauksim par (orientēta grafa) avotu. Ja d − (v) = 0,<br />

tad virsotni v sauksim par noteku. Orientētu grafu, kuram ir tieši viens avots un tieši viena<br />

noteka, sauksim par tīklu.<br />

(3.1)<br />

Teorēma 3.6.<br />

šķautņu skaitu:<br />

v∈V<br />

1. Grafa Γ = (V, E) virsotņu pakāpju summa ir vienāda ar divkāršotu<br />

∑<br />

d(v) = 2|E|.<br />

2. Orientētā grafā Γ = (V, E) ir spēkā formula<br />

∑<br />

(3.2)<br />

d − (v) + ∑ d + (c) = 2|E|.<br />

v∈V<br />

v∈V<br />

v∈V<br />

Pierādījums. Pielietosim kombinatorikas pamatprincipu ”skaitīšana divos dažādos veidos”.<br />

Neorientēta grafa gadījumā skaitīsim katras virsotnes v incidentās šķautnes un summēsim šos<br />

skaitļus pa visām grafa virsotnēm. No vienas puses, mēs iegūsim ∑ v∈V<br />

d(v), no otras puses,<br />

tā kā katrai šķautnei ir divi galapunkti, tad katra šķautne tiks skaitīta divas reizes un summā<br />

iegūsim lielumu 2|E|. Līdzīga sprieduma ceļā iegūsim arī apgalvojumu orientētam grafam. QED<br />

Secinājums 3.1. ɛ(Γ) = 1 2 d(Γ).<br />

Par grafa Γ = (V, E) papildgrafu jeb papildinājumu sauksim grafu<br />

Γ = (V, (V × V )\(E ∪ diag(V × V )).


3.2. PAMATDEFINĪCIJAS 89<br />

Citiem vārdiem sakot, divas virsotnes ir savienotas grafā Γ tad un tikai tad, ja tās nav savienotas<br />

grafā Γ. Grafa papildinājuma maksimālās kliķes virsotņu skaitu sauksim par grafa neatkarības<br />

skaitli un apzīmēsim ar α(Γ).<br />

Piemērs 3.7. 3.11.attēla grafa (a) papildgrafs ir grafs (b).<br />

(a)<br />

(b)<br />

3.11. attēls. Grafa un tā papildgrafa piemērs<br />

Ja mēs domājam par grafu kā par transporta vai sazināšanās tīkla modeli, mums ir jādefinē<br />

vienkāršākie jēdzienu, kas ir saistīti ar pārejām starp virsotnēm:<br />

• par maršrutu grafā sauksim virsotņu un šķautņu virkni<br />

(v 0 , e 1 , ..., e n , v n ),<br />

tādu, ka jebkuras divas kaimiņu virsotnes v i un v i+1 ir savienotas ar šķautni e i+1 . Ja<br />

maršrutā v 0 = v n , tad tādu maršrutu sauksim par noslēgtu, pretējā gadījumā, kad<br />

v 0 ≠ v n - par vaļēju, šķautņu skaitu maršrutā sauksim par tā garumu;<br />

• maršrutu, kurā visas šķautnes ir dažādas, sauksim par ķēdi;<br />

• ķēdi, kurā visas virsotnes izņemot, iespējams, pirmo un pēdējo, ir dažādas, sauksim par<br />

vienkāršu ķēdi;<br />

• noslēgtu ķēdi ar pozitīvu garumu sauksim par ciklu, noslēgtu vienkāršu ķēdi ar pozitīvu<br />

garumu sauksim par vienkāršu ciklu.<br />

Maršrutu (ķēdi, vienkāršu ķēdi), kura pirmā virsotne ir v un pēdējā - w, sauksim par (v, w)<br />

- maršrutu (ķēdi, vienkāršu ķēdi). Par maršruta M apakšmaršrutu sauksim maršrutu M ′ , kura<br />

virsotņu un šķautņu kopas ir maršruta M virsotņu un šķautņu kopu apakškopas. Par divu<br />

maršrutu<br />

M = (v 0 , e 1 , ..., e n , v n )<br />

un<br />

savienojumu sauksim maršrutu<br />

M ′ = (v n , e n+1 , ..., e m , v m )<br />

MM ′ = (v 0 , e 1 , ..., e n , v n , e n+1 , ..., e m , v m ).<br />

Par maršruta M = (v 0 , e 1 , ..., e n , v n ) apvērsto maršrutu sauksim maršrutu<br />

M −1 = (v n , e n , ..., e 1 , v 0 ).<br />

Ja ir doti divi (v, w) - maršruti M 1 un M 2 , tad maršruts M 1 M2 −1 ir cikls.<br />

Divus vaļējus maršrutus M 1 = (u 1 , ..., u n ) un M 2 = (v 1 , ..., v n ) sauksim par vienādiem, ja<br />

u i = v i visiem i vai arī u i = v n−i visiem i, citiem vārdiem sakot, vai nu maršruti ir pilnīgi<br />

identiski vai arī tie atšķiras ar vienu un to pašu šķautņu apiešanas virzienu. Divus slēgtus<br />

maršrutus M 1 = (u 1 , ..., u n ) un M 2 = (v 1 , ..., v n ) sauksim par vienādiem, ja eksistē m tāds, ka<br />

u i = v (m+i) mod n+1 vai u i = v (m−i) mod n+1 visiem i, citiem vārdiem sakot, tiem atbilst viena un<br />

tā pati šķautņu kopa un to apiešanas kārtība ar precizitāti līdz virzienam, bet atšķiras maršruta<br />

pirmā (un pēdējā) virsotne.


3.2. PAMATDEFINĪCIJAS 90<br />

Par vienkāršu ķēdi vai vienkāršu ciklu ir lietderīgi domāt kā par grafa apakšgrafu, kas<br />

satur atbilstošās virsotnes un šķautnes starp virsotnēm. Tos var identificēt arī ar atbilstošajām<br />

šķautņu kopām, jo vienkāršu ķēdi vai vienkāršu ciklu var atjaunot, ja ir zināma tā šķautņu kopa.<br />

Vienkāršu ķēdi var atjaunot arī tad, ja ir zināma tikai tā virsotņu kopa. Par grafa šaurumu sauksim<br />

minimāla vienkārša cikla garumu, par grafa perimetru sauksim maksimāla vienkārša cikla<br />

garumu. Ciklu ar garumu 3 sauksim par trijstūri. Ciklam nepiederošu šķautni, kas savieno divas<br />

cikla virsotnes, sauksim par cikla hordu. Inducēts vienkāršs cikls ir vienkāršs cikls bez hordām.<br />

Viegli redzēt, ka katrs (v, w) - maršruts satur apakšmaršrutu, kas ir vienkārša (v, w) - ķēde un<br />

katrs cikls satur apakšmaršrutu, kas ir vienkāršs cikls.<br />

Zinot grafa minimālo virsotnes pakāpi, var no apakšas novērtēt vienkāršas ķēdes un vienkārša<br />

cikla maksimālo garumu grafā izmantojot šādu teorēmu.<br />

Teorēma 3.8. Ja δ(Γ) ≥ 2, tad grafā Γ eksistē vienkārša ķēde ar garumu δ(Γ) un vienkāršs<br />

cikls ar garumu δ(Γ) + 1.<br />

Pierādījums. Pieņemsim, ka garākās ķēdes garums ir k un tai atbilstošā virsotņu virkne ir<br />

(v 0 , ..., v k ). Visas virsotnes v k blakusvirsotnes pieder šai virknei, tāpēc ka pretējā gadījuma ķēdi<br />

varētu pagarināt. Iegūstam, ka k ≥ δ(Γ) un apgalvojums par ķēdi ir pierādīts. Pieņemsim, ka<br />

indekss i, 0 ≥ i < k, ir minimālais indekss ar īpašību v i v k , var redzēt, ka i ≤ k − δ(Γ). Virsotņu<br />

virkne (v i , v i+1 , ..., v k , v i ) atbilst ciklam ar garumu l = k − i + 1 un l ≥ δ(Γ) + 1. QED<br />

Analoǧiski maršruta, ķēdes un cikla jēdzienus definē orientētiem grafiem. Par virzītu maršrutu<br />

orientētā grafā sauksim virsotņu un šķautņu virkni (v 0 , e 1 , ..., e n , v n ), tādu, ka jebkuras divas virsotnes<br />

v i un v i+1 ir savienotas ar (orientēto) šķautni e i+1 . Ja orientētā maršrutā v 0 = v n , tad<br />

tādu maršrutu sauksim par noslēgtu virzītu maršrutu, pretējā gadījumā - par vaļēju. Līdzīgā<br />

veidā definēsim arī virzītu ķēdi, vienkāršu ķēdi, ciklu un vienkāršu ciklu.<br />

Grafu sauksim par sakarīgu, ja eksistē ķēde starp jebkurām divām virsotnēm. Maksimālu<br />

sakarīgu apakǧrafu sauksim par grafa sakarības komponenti. Viegli redzēt, ka grafs ir sakarīgs<br />

tad un tikai tad, ja eksistē virsotne v, tāda, ka jebkurai citai virsotnei u eksistē maršruts (u, ..., v).<br />

Piemērs 3.9. 3.12.attēla grafs (a) ir sakarīgs un grafs (b) nav sakarīgs un satur 2 komponentes.<br />

(a)<br />

(b)<br />

3.12. attēls. Sakarīga un nesakarīga grafa piemēri<br />

Teorēma 3.10. Grafs ar n virsotnēm un mazāk kā n − 1 šķautni nav sakarīgs.<br />

Pierādījums. Fiksēsim grafā kādu virsotni v. Ja grafs ir sakarīgs, tad eksistē ķēde no v<br />

līdz jebkurai no pārējām n − 1 virsotnēm. Jebkuras divas šādas ķēdes atšķiras ar vismaz vienu<br />

šķautni, tātad grafa ir vismaz n − 1 šķautne. QED<br />

Teorēma 3.11. Ja grafs nav sakarīgs, tad tā papildgrafs ir sakarīgs.<br />

Pierādījums. Pieņemsim, ka grafs Γ nav sakarīgs. Tad tam eksistē vismaz divas komponentes<br />

Γ 1 un Γ 2 . Mums ir jāpierāda, ka jebkuras divas virsotnes var savienot ar ķēdi papildgrafā Γ. Ja


3.2. PAMATDEFINĪCIJAS 91<br />

virsotnes pieder dažādām komponentēm, tad papildgrafā tās var savienot ar vienu šķautni vai,<br />

citiem vārdiem sakot, eksistē šīs virsotnes savienojošā ķēde ar garumu 1 (skatīt 3.13(a) attēlā).<br />

G<br />

1<br />

G<br />

2<br />

G<br />

1<br />

G<br />

2<br />

u<br />

v<br />

u<br />

v<br />

(a)<br />

3.13. attēls. Ilustrācija (3.11) pierādījumam<br />

(b)<br />

Ja abas virsotnes pieder vienai komponentei, tad tās papildgrafā var savienot ar divām<br />

šķautnēm, tātad eksistē šīs virsotnes savienojošā ķēde ar garumu 2 (skatīt 3.13.(b) attēlā). QED<br />

3.2.1. Vingrinājumi.<br />

Vingrinājums 3.12. Cik ir dažādu katra tipa (neorientētu, orientētu, orientētu ar cilpām)<br />

grafu ar n virsotnēm? Cik ir dažādu katra tipa grafu ar n virsotnēm un m šķautnēm?<br />

Vingrinājums 3.13. Ja ir dota dažādu kopu saime {A i } i∈I , tad par tās šķēlumu grafu<br />

sauksim grafu, kura virsotnes ir saimes elementi un divas virsotnes ir savienotas tad un tikai<br />

tad, ja atbilstošo kopu šķēlums nav tukša kopa. Uzzīmēt šķēlumu grafus kopām P (X), kur<br />

|X| = 2, 3, 4.<br />

Vingrinājums 3.14. Pierādīt, ka<br />

1) neeksistē grafs ar piecām virsotnēm, kuru pakāpes ir 2, 4, 4, 4, 4;<br />

2) eksistē grafs ar 2n virsotnēm, kuru pakāpes ir 1, 1, 2, 2, ..., n, n.<br />

Vingrinājums 3.15. Pierādīt, ka grafs Γ ir sakarīgs tad un tikai tad, ja izpildās šāds<br />

nosacījums: katram grafa Γ virsotņu kopas V sadalījumam {V 1 , V 2 } (V 1 ∪ V 2 = V, V 1 ∩ V 2 = ∅)<br />

eksistē divas saistītas virsotnes v 1 ∈ V 1 un v 2 ∈ V 2 .<br />

Vingrinājums 3.16. Grafā Γ ir 2005 virsotnes, tā šķautnes ir nokrāsotas trīs krāsās. Jebkuru<br />

divu krāsu šķautņu veidotais grafs ir sakarīgs. Kāds ir minimālais iespējamais šķautņu skaits<br />

grafā Γ?<br />

Vingrinājums 3.17. Grafa visām virsotnēm pakāpe ir 3. Pierādīt, ka grafā eksistē cikls.<br />

Vingrinājums 3.18. Vai ir iespējams apmainīt vietām šaha zirgus tā, kā tas minēts 3.2.<br />

piemērā uz ”šaha galda” ar izmēriem 4 × 4, 2 × n, 3 × n?<br />

Vingrinājums 3.19. Izmantojot grafus, pierādīt, ka šahā nav iespējams karalim pieteikt<br />

matu ar diviem zirgiem.<br />

Vingrinājums 3.20. Augstskolā ir 50 studenti, katrs students ir pazīstams ar vismaz 25<br />

studentiem. Pierādīt, ka eksistē 4 studenti, kurus var sasēdināt ap apaļu galdu tā, ka katrs<br />

students ir pazīstams ar abiem kaimiņiem.<br />

Vingrinājums 3.21. Tiek apgalvots, ka kādas valsts ezeru un upju sistēma apmierina šādu<br />

nosacījumu: katrā ezerā ietek 4 upes un no katra ezera iztek 3 upes. Pierādīt, ka apgalvojums<br />

nevar būt patiess.<br />

Vingrinājums 3.22. Kādā pilsētā dzīvo zēni un meitenes, kuru savstarpējās pazīšanās apmierina<br />

šādu īpašību: visas meitenes, kas pazīst kādu zēnu, ir pazīstamas savā starpā. Katrai<br />

meitenei ir vairāk pazīstamu zēnu nekā pazīstamu meiteņu. Pierādīt, ka pilsētā zēnu skaits nav<br />

mazāks kā meiteņu skaits.


3.3. SPECIĀLAS GRAFU KLASES 92<br />

Vingrinājums 3.23. Sauksim cilvēku par nekomunikablu, ja tam ir mazāk kā 10 draugi,<br />

sauksim cilvēku par dīvaini, ja tam visi draugi ir nekomunikabli. Pierādīt, ka dīvaiņu skaits nav<br />

lielāks kā nekomunikablo cilvēku skaits.<br />

Vingrinājums 3.24. Kādas konferences dalībnieki apmierina šādu nosacījumu: katrs dalībnieks<br />

ir pazīstams ar vismaz vienu citu dalībnieku un jebkuriem diviem dalībniekiem eksistē<br />

trešais, kas nav ar viņiem abiem pazīstams (ir pazīstams tikai ar vienu no viņiem vai nav<br />

pazīstams ne ar vienu). Pierādīt, ka dalībniekus var sadalīt trīs grupās tā, ka katrs dalībnieks ir<br />

pazīstams ar vismaz vienu citu dalībnieku no savas grupas.<br />

Vingrinājums 3.25. Kādā valstī jebkuras divas pilsētas ir savienotas vai nu ar lielceļu vai<br />

arī ar dzelzceļu. Pierādīt, ka var izvēlēties transporta veidu (automašīnu vai vilcienu) tā, lai no<br />

jebkuras pilsētas varētu aizbraukt uz jebkuru citu pilsētu, izmantojot tikai šo transporta veidu<br />

un pa ceļam iebraucot ne vairāk kā divās citās pilsētās.<br />

Vingrinājums 3.26. Kādā valstī ir 101 pilsēta. Pilsētas ir savienotas ar vienvirziena ceļiem<br />

tā, ka starp jebkurām divām pilsētām ir ne vairāk kā viens ceļš. Ir zināms, ka no jebkuras<br />

pilsētas iziet tieši 40 ceļi un jebkurā pilsētā ieiet tieši 40 ceļi. Pierādīt, ka no jebkuras pilsētas<br />

var aizbraukt uz jebkuru citu, nobraucot pa ne vairāk kā 3 ceļiem.<br />

Vingrinājums 3.27. Grupā ir 30 cilvēki, katrs cilvēks ciena tieši k citus cilvēkus. Kāds ir<br />

mazākais k, kuram var apgalvot, ka eksistē divi cilvēki, kas ciena viens otru.<br />

Vingrinājums 3.28. Kādā valstī ir 2004 pilsētas. No galvaspilsētas iziet 101 aviolīnija, no<br />

pilsētas A iziet 1 aviolīnija, bet no jebkuras citas - 20 aviolīnijas. Pierādīt, ka no galvaspilsētas<br />

var aizlidot uz pilsētu A.<br />

Vingrinājums 3.29. Vienas kārtas volejbola turnīrā piedalās 15 komandas. Katrai komandai<br />

ir tieši 7 uzvaras. Cik ir tādu komandu trijnieku, kuriem iekšējās spēlēs katrai komandai<br />

ir viena uzvara?<br />

Vingrinājums 3.30. Vairākas komandas piedalās vienas kārtas volejbola turnīrā. Ir zināms,<br />

ka, ja komanda x ir uzvarējusi komandu y, tad eksistē komanda z, kas ir zaudējusi x un uzvarējusi<br />

y. Kāds ir mazākais komandu skaits šādā turnīrā?<br />

3.3. SPECIĀLAS GRAFU KLASES<br />

Apskatīsim dažas speciālas grafu klases vai grafus. Grafu speciālgadījumus var izmantot<br />

pieņēmumu pārbaudei vai atspēkošanai.<br />

Pilnais grafs K n - (neorientēts) grafs ar n virsotnēm, visi virsotņu pāri savā starpā ir savienoti.<br />

Bezšķautņu grafs O n - (neorientēts) grafs ar n virsotnēm un 0 šķautnēm.<br />

K 5<br />

O 5<br />

3.14. attēls. Pilna grafa un bezšķautņu grafa piemēri<br />

Ķēde P n - sakarīgs grafs ar n virsotnēm, kur divām virsotnēm pakāpe ir 1 un pārējām pakāpe<br />

ir 2. Cikls C n - sakarīgs grafs ar n virsotnēm, kur katrai virsotnei pakāpe ir 2.


3.3. SPECIĀLAS GRAFU KLASES 93<br />

P 5<br />

C 5<br />

3.15. attēls. Ķēdes un cikla piemēri<br />

Ritenis W n - sakarīgs grafs ar n + 1 virsotni, kur vienai virsotnei ir pakāpe n un pārējām - 3.<br />

W 3<br />

W 5<br />

W 7<br />

3.16. attēls. Riteņu piemēri<br />

Divdaļīgs grafs - grafs, kura virsotņu kopu var sadalīt divās daļās tā, ka jebkuras divas virsotnes,<br />

kas pieder vienai daļai, nav savienotas. Pilns divdaļīgs grafs K n,m - divdaļīgs grafs, kura<br />

virsotņu kopas daļu elementu skaits ir n un m un kurā jebkuras divas virsotnes dažādās daļās<br />

ir savienotas. m-daļīgs grafs - grafs, kura virsotnes var sadalīt m daļās tā, ka jebkuras divas<br />

virsotnes, kas pieder vienai daļai, nav savienotas. Pilns m-daļīgs grafs K n1 ,...,n m<br />

- m daļīgs grafs,<br />

kura virsotņu kopas daļu elementu skaits ir n 1 , ..., n m , jebkuras divas virsotnes dažādās daļās ir<br />

savienotas.<br />

K 3,3<br />

K 2,2,2<br />

3.17. attēls. 2-daļīga un 3-daļīga grafa piemēri<br />

Hiperkubs H n - virsotnes ir visas n vienības garas binārās virknes, divas virsotnes savienotas<br />

ar šķautni tad, ja tās atšķiras vienā vietā.


3.3. SPECIĀLAS GRAFU KLASES 94<br />

H 4<br />

3.18. attēls. Hiperkubs H 4<br />

Koks - sakarīgs grafs bez inducētiem apakšgrafiem, kas ir cikli (sakarīgs aciklisks grafs). Mežs -<br />

grafs bez cikliem (ne obligāti sakarīgs).<br />

3.19. attēls. Mežs<br />

Regulārs grafs - grafs, kura visām virsotnēm ir vienāda pakāpe. Ja regulāra grafa virsotnes<br />

pakāpe ir k, tad to sauksim par k-regulāru grafu. Katram pietiekoši lielam n eksistē vairāki<br />

sakarīgu regulāru grafu tipi, un to skaits pieaug, ja n tiecas uz bezgalību. Katram n atbilstošais<br />

cikls C n un pilnais grafs K n ir regulāri grafi.<br />

3.20. attēls. 3-regulāru un 4-regulāru grafu piemēri ar 6 un 7 virsotnēm<br />

Pierādīsim kādu teorēmu par regulāru grafu eksistenci, kurā tiek izmantota veselo skaitļu<br />

teorija.<br />

Teorēma 3.31. Ja ir doti divi naturāli dažādas paritātes skaitļi n un k, tādi, ka k < n, tad<br />

eksistē k-regulārs grafs ar n virsotnēm.<br />

Pierādījums. Apskatīsim atlikumu kopu pēc moduļa n, kuru mēs identificēsim ar kopu Z n =<br />

{0, 1, ..., n − 1}. Šajā kopā var definēt atlikumu saskaitīšanas operāciju, attiecībā uz kuru kopa<br />

Z n ir komutatīva grupa. Fiksēsim apakškopu S k ⊆ Z n ar šādām īpašībām:<br />

1) ja x ∈ S k , tad ((−x) mod n) ∈ S k ;<br />

2) |S k | = k;


3.3. SPECIĀLAS GRAFU KLASES 95<br />

3) 0 /∈ S k .<br />

Šādas apakškopas eksistē. Tiešām, ja n ir pāra skaitlis un k ir nepāra skaitlis, tad S k var<br />

ņemt vienādu ar kopu {±1, ..., ± k−1,<br />

n}. Ja n ir nepāra skaitlis un k ir pāra skaitlis, tad S 2 2 k<br />

var ņemt vienādu ar kopu {±1, ..., ± k}. Kopas S 2 k definīcijās visur tiek ņemti atlikumu klašu<br />

pārstāvji kopā Z n . Definēsim kopā Z n šādu attiecību ρ: xρy tad un tikai tad, ja x − y ∈ S k . Var<br />

redzēt, ka attiecība ρ ir antirefleksīva un simetriska, tātad tā definē grafu Γ. Tā kā atlikumu<br />

saskaitīšana ir grupas operācija, tad Γ ir regulārs ar virsotņu pakāpi k. QED<br />

Plakans grafs - grafs, kas ir uzzīmēts tā, ka šķautnēm ir kopīgi punkti tikai virsotnēs. Planārs<br />

grafs - grafs, kuru var uzzīmēt kā plakanu grafu (plakanizēt).<br />

2<br />

2<br />

1<br />

3<br />

1<br />

4<br />

3.21. attēls. Planāra grafa plakanizācijas piemērs<br />

4<br />

3<br />

Ir atrasti un pētīti vairāki interesanti grafi, kas ir nosaukti to atklājēju vārdā. Populārakais no<br />

šādiem grafiem ar nelielu virsotņu skaitu ir Petersena grafs, kurš tā ir nosaukts par godu dāņu<br />

matemātiķim Petersenam, kas to atklāja 1898.gadā kā pretpiemēru kādam apgalvojumam (ka<br />

2-sakarīgam 3-regulāram grafam šķautņu hromatiskais skaitlis nepārsniedz 3, ieinteresēts lasītājs<br />

var atrast nepieciešamās definīcijas šajā grāmatā).<br />

3.22. attēls. Petersena grafs<br />

Interesanta simetrisku grafu klase ir grafi, kas atbilst daudzskaldņiem ar regulārām īpašībām.<br />

Regulāro daudzskaldņu grafi tiek iegūti no tā saucamajiem regulārajiem daudzskaldņiem (tetraedrs,<br />

kubs, oktaedrs, dodekaedrs, ikosaedrs), kur katram atbilst grafs, kura virsotnes un šķautnes<br />

atbilst figūras ǧeometriskajām virsotnēm un šķautnēm.


3.3. SPECIĀLAS GRAFU KLASES 96<br />

Tetraedra grafs Kuba grafs Oktaedra grafs<br />

Dodekaedra grafs<br />

Ikosaedra grafs<br />

3.23. attēls. Regulāro daudzskaldņu grafi


3.4. DATU STRUKTŪRAS GRAFU UZDOŠANAI 97<br />

3.4. DATU STRUKTŪRAS GRAFU UZDOŠANAI<br />

Sakarā ar grafu plašo pielietošanu informācijas tehnoloǧijās ir nepieciešams apspriest jautājumu<br />

par grafu uzdošanu datu struktūru veidā. Grafus, tāpat kā jebkurus citus matemātiskus<br />

objektus, ir jāprot pilnvērtīgi un ekonomiski iekodēt ar programmēšanai piemērotu diskrētās<br />

matemātikas objektu palīdzību.<br />

Ir vismaz trīs dažādi datu struktūru veidi, kurus izmanto, lai uzdotu grafus:<br />

• virsotņu blakusattiecības saraksts - katrai virsotnei piekārtosim visas virsotnes, kas<br />

ar to ir savienotas, praktiski blakusattiecības sarakstu realizē divdimensionāla masīva<br />

vai saistītā saraksta veidā, izmantojot rādītājus (pointerus): virsotnes tiek sakārtotas<br />

noteiktā kārtībā, katrai virsotnei v atbilst saistīts saraksts, kura elementi ir visas virsotnes<br />

v 1 , ..., v k , kas ir incidentas ar v un rādītāji no v i uz v i+1 (noteiktajā virsotņu<br />

kārtībā);<br />

1<br />

1 2 3<br />

2 1 3<br />

3 1 2 4<br />

4 3<br />

3<br />

4<br />

1 2 3<br />

2<br />

2 1 3<br />

3 1 2 4<br />

3.24. attēls. Grafa uzdošana ar blakusattiecības sarakstu<br />

4<br />

3<br />

• virsotņu blakusattiecības matrica (kaimiņattiecības matrica, kaimiņmatrica, grafa matrica)<br />

- grafu uzdod ar |V | × |V | bināru matricu, kurā rindas un kolonnas tiek indeksētas<br />

ar grafa virsotnēm noteiktā kārtībā, matricas rūtiņā, kas atbilst rindai u un kolonnai v<br />

tiek ierakstīts 1, ja virsotnes u un v ir savienotas un 0, ja tās nav savienotas.<br />

1<br />

1 2 3 4<br />

1<br />

0 1 1 0<br />

3<br />

4<br />

2<br />

3<br />

1 0 1 0<br />

1 1 0 1<br />

4<br />

0 0 1 0<br />

2<br />

3.25. attēls. Neorientēta grafa uzdošana ar blakusattiecības matricu<br />

Orientēta grafa gadījumā rūtiņā tiek ierakstīts 1 tad un tikai tad, ja eksistē šķautne<br />

(v, u) (no v uz u).


3.5. GRAFU PIELIETOJUMI MODELĒŠANĀ 98<br />

1<br />

1 2 3 4<br />

1<br />

0 0 0 0<br />

3<br />

4<br />

2<br />

3<br />

0 0 0 0<br />

1 1 0 0<br />

4<br />

0 0 1 0<br />

2<br />

3.26. attēls. Orientēta grafa uzdošana ar blakusattiecības matricu<br />

Orientēta nosvērta grafa gadījumā rūtiņā tiek ierakstīts skaitlis w tad un tikai tad, ja<br />

eksistē šķautne (v, u) ar svaru w, pārējās rūtiņās tiek ierakstīta 0 tāpat kā iepriekšējos<br />

gadījumos;<br />

• virsotņu un šķautņu incidences matrica - grafu uzdod ar |V |×|E| bināru matricu, rindas<br />

tiek indeksētas ar virsotnēm un kolonnas tiek indeksētas ar šķautnēm, matricas rūtiņā,<br />

kas atbilst virsotnei v un šķautnei e tiek ierakstīts 1, ja virsotne v ir incidenta ar šķautni<br />

e un 0, ja tās nav incidentas.<br />

Pārskaitīsim blakusattiecības sarakstu un blakusattiecības matricu priekšrocības un trūkumus.<br />

Sarakstu ir vēlams lietot, ja<br />

• virsotņu skaits ir liels;<br />

• grafa šķautņu skaits ir relatīvi mazs;<br />

• grafs tiek veidots pēc modeļa;<br />

• algoritma izpildes laikā grafs ir bieži jāmodificē;<br />

• algoritmā tiek izmantotas virsotņu lokālās īpašības (piemēram, virsotņu apkārtnes).<br />

Matricu ir vēlams lietot, ja<br />

• grafa virsotņu skaits ir neliels;<br />

• grafa šķautņu skaits ir relatīvi liels;<br />

• algoritmā ir bieži jāpārbauda, vai divas virsotnes ir savienotas;<br />

• algoritmā tiek izmantotas grafa globālās īpašības (piemēram, grafa sakarīgums).<br />

Blakusattiecības saraksts praktiski tiek izmantots biežāk. Ja grafā ir relatīvi daudz šķautņu,<br />

tad var lietot arī papildgrafa blakusattiecības sarakstu vai matricu. Praktiski matricas var realizēt<br />

divdimensionālu bināru masīvu veidā. Matricas biežāk izmanto grafu teorētiskos pētījumos,<br />

jo dažas grafu īpašības, piemēram, sakarīgumu, var interpretēt matricas terminos. Uzskatot grafa<br />

matricu par lineāra operatora matricu, var reducēt grafu teorijas uzdevumus uz lineārās algebras,<br />

piemēram, īpašvērtību, uzdevumiem.<br />

Var piedāvāt arī kvazilineāru grafu uzdošanas veidu: grafa blakusattiecības matricas rindas<br />

var savienot vienā rindā un kodēt grafu kā šai rindai atbilstošo bināro skaitli.<br />

3.5. GRAFU PIELIETOJUMI MODELĒŠANĀ<br />

Jebkuras dabas un izcelsmes sistēmas vai parādības uzdošanu matemātisku objektu un sakarību<br />

veidā sauksim par šīs parādības modeli. Modelis ir realitātes vienkāršota un jēdzieniski<br />

noslēgta abstrakta uzdošana. Modeļi tiek veidoti ar mērķi labāk saprast doto sistēmu. Pietiekoši<br />

sarežǧītas sistēmas vispār nav iespējams analizēt bez vienkāršotu modeļu palīdzības. Sistēmas<br />

pētīšanu, pārnesot tās īpašības uz modeli, sauksim par sistēmas modelēšanu. Modelēšanas pamatprincipi<br />

ir šādi:<br />

1) modeļa izvēle būtiski ietekmē uzdevuma atrisinājuma procesu un pašu atrisinājumu;<br />

2) modeļu detalizācijas pakāpes var būt dažādas;<br />

3) sīkāka detalizācijas pakāpe nozīmē lielāku modeļu sarežǧītību;<br />

3) labākie modeļi ir tie, kas labāk atspoguļo realitāti;<br />

4) ir vēlams izmantot vienlaicīgi vairākus modeļus.


3.5. GRAFU PIELIETOJUMI MODELĒŠANĀ 99<br />

Ir neskaitāmi daudz piemēru, kur attiecību-grafu modeļu saskatīšana un ieviešana padara<br />

uzdevuma analīzi un risinājumu uzskatāmu un efektīvu. Parasti tas ir iespējams, ja pētāmajai<br />

sistēmai ir diskrētas īpašības. Galvenie grafu modeļu tipi ir šādi:<br />

• virsotnes un šķautnes ir fiziski objekti, šķautņu objekti fiziski saista virsotņu objektus;<br />

• virsotnes ir fiziski vai nefiziski objekti, šķautnes saista virsotnes atkarībā no to strukturālajām<br />

vai funkcionālajām īpašībām;<br />

• virsotnes ir fiziski vai nefiziski objekti, iespējams, dažādos laika vai attīstības stāvokļos,<br />

šķautnes norāda virsotņu temporālo, evolucionāro vai cēloņsakarisko atkarību.<br />

Lai izveidotu efektīvu dotās sistēmas grafu modeli, ir<br />

1) jānosaka svarīgākās dotās modelējamās sistēmas apakšsistēmas un/vai stāvokļi, kas tiks<br />

definētas kā grafa virsotnes;<br />

2) jānosaka svarīgākās modelējamās attiecības starp virsotņu objektiem.<br />

Salīdzinoši retāk tiek izmantoti modeļi, kuros dominējoša nozīme ir šķautnēm, nevis virsotnēm.<br />

Jāpiebilst, ka ir sistēmas, kuras nav iespējams modelēt grafu veidā. Tādas sistēmas parasti ir<br />

ar izteikti nepārtrauktām īpašībām, piemēram, atmosfēra vai šķidruma plūsma. Nepārtrauktas<br />

sistēmas ērtāk ir modelēt ar matemātiskās fizikas vienādojumu palīdzību. Tiek pielietoti arī<br />

jaukti modeļi, kas satur gan nepārtrauktās, gan diskrētās iezīmes.<br />

Pēc modeļa izveidošanas tiek risināti uzdevumi, kas attiecas uz modelējamo sistēmu. Šie<br />

uzdevumi var būt formulēti gan tīri grafu teorijas terminos, gan arī izmantojot citas matemātikas<br />

teorijas un nozares.<br />

Ja ir definēts kāds grafu modelis M, tad tā grafu apzīmēsim ar Γ(M). Ja ir dots kāds grafu<br />

modelis, tad var konstruēt no tā atvasinātus modeļus. Par dotā grafu modeļa M apakšmodeli<br />

sauksim grafu modeli M ′ , kura grafs atbilst kādam Γ(M) apakšgrafam. Par dotā grafu modeļa M<br />

faktormodeli sauksim grafu modeli M ′′ , kura grafs tiek iegūts no Γ(M) fiksējot kādu tā virsotņu<br />

kopas sadalījumu un identificējot katras sadalījuma klases virsotnes. Apakšmodeļus ir lietderīgi<br />

pētīt, ja ir svarīgi apskatīt kādu dotās sistēmas mazāku daļu. Faktormodeļus izmanto, ja sistēmas<br />

objektus ar līdzīgām īpašībām var sadalīt grupās un definēt jaunu, vienkāršotu modeli.<br />

Zemāk ir pārskaitīti daži konkrēti grafu modeļi:<br />

1) datorprogrammas blokshēma (virsotnes - komandas, šķautnes - pārejas starp komandām,<br />

izmanto datorprogrammu veidošanā un pārbaudē);<br />

2) apakšprogrammu grafs (virsotnes - apakšprogrammas, šķautnes - apakšprogrammu izsaukšanas<br />

kārtība, izmanto datorprogrammu projektēšanā un analīzē);<br />

3) datu struktūras grafs (virsotnes - dati vai vienkāršākie datu tipi, šķautnes - attiecības<br />

starp datiem, izmanto datu struktūru projektēšanā un optimizēšanā);<br />

4) mašīnkoda komandu atkarības grafs (virsotnes - komandas, šķautnes - komandu atkarības,<br />

izmanto optimizējošajā kompilēšanā un procesoru darba konveijerēšanā);<br />

5) operētājsistēmas procesu grafs (virsotnes - operētājsistēmas procesi, šķautnes - procesu<br />

ǧenerēšanas akti, izmanto operētājsistēmu darbības modelēšanā);<br />

6) galīgā automāta grafs (virsotnes - automāta stāvokļi, šķautnes - pārejas, izmanto galīgo<br />

automātu un valodu pētīšanā un programminženierijā);<br />

7) matemātiskas teorijas apgalvojumu grafs (virsotnes - apgalvojumi, šķautnes - loǧiskās<br />

secināšanas attiecības, izmanto matemātisko spriedumu pierādīšanā un matemātisko<br />

teoriju analīzē);<br />

8) funkcionālais grafs (virsotnes - kopas elementi, šķautnes - attēlojuma vai funkcijas<br />

darbība, izmanto matemātikā);<br />

9) lielumu-sakarību grafs (virsotnes - skaitliski lielumu un sakarības starp tiem, šķautnes -<br />

lieluma piedalīšanās sakarībā, izmanto matemātikas uzdevumu risināšanā);<br />

10) metrikas grafs (virsotnes - jebkura veida fiziski vai nefiziski objekti vai to kopas, šķautnes<br />

- objektu ǧeometriskā, strukturālā, funkcionālā vai evolucionārā tuvība, izmanto lielu<br />

kopu analīzē);


3.5. GRAFU PIELIETOJUMI MODELĒŠANĀ 100<br />

11) lēmumu koks (virsotnes - krīzes stāvokļi, šķautnes - lēmumi, izmanto lēmumu pieņemšanā<br />

ekonomikā, vadīšanā, inženierkonstrukciju diagnosticēšanā u.c.);<br />

12) sistēmas grafs (virsotnes - sistēmas komponentes, šķautnes - komponenšu mijiedarbība,<br />

izmanto sistēmu projektēšanā un analīzē);<br />

13) atgriezenisko saišu grafs (virsotnes - kāda procesa parametri, orientētas šķautnes ar<br />

svaru (+) vai (−) - virsotnēm atbilstošo parametru izmaiņu atkarība, izmanto sistēmas<br />

vai procesa sastāvdaļu izmaiņu atkarības, atgriezenisko saišu un to ciklu pētīšanai);<br />

14) cēloņsakarības grafs (virsotnes - kādas sistēmas stāvokļi, orientētas šķautnes - cēloņsakarības,<br />

izmanto lielu sistēmu vai kompleksu procesu pētīšanā);<br />

15) konfliktu grafs (virsotnes - kādas sistēmas stāvokļi, šķautnes - konflikti starp stāvokļiem,<br />

izmanto sistēmu analīzē);<br />

16) spēles grafs (virsotnes - spēles stāvokļi, šķautnes - spēles noteikumu atļautas pārejas<br />

(gājieni) starp stāvokļiem, izmanto spēļu uzvarošo stratēǧiju izstrādāšanā);<br />

17) datortīkls (vispārīgā gadījumā, komunikāciju tīkls) (virsotnes - datori vai komunikāciju<br />

mezgli, šķautnes - sakaru līnijas, izmanto datortīklu projektēšanā un analīzē);<br />

18) sociālais grafs (virsotnes - cilvēki vai to kopas, šķautnes - pazīšanās, ekonomiskas vai<br />

cita veida attiecības, izmanto sabiedrības analīzē un attīstības plānošanā);<br />

19) organizācijas grafs (virsotnes - cilvēki vai to kopas, šķautnes - attiecības, kas raksturo<br />

organizācijas, piemēram, privātas firmas vai militāras vienības, hierarhiju, izmanto organizāciju<br />

veidošanā un vadīšanā);<br />

20) projekta grafs (virsotnes - projekta darbi vai stāvokļi, šķautnes - attiecības starp darbiem<br />

vai darbi, kas saista stāvokļus, izmanto projektu vadīšanā);<br />

21) ǧenealoǧiskais koks (virsotnes - cilvēki, šķautnes - ”vecāku-bērnu” attiecības, izmanto<br />

personīgos pētnieciskos nolūkos);<br />

22) ekonomisko aǧentu grafs (virsotnes - ekonomiskie aǧenti (cilvēki, privātas firmas utt),<br />

šķautnes - ekonomiskās attiecības, izmanto ekonomiskos pētījumos un plānošanā);<br />

23) makroekonomiskais finanšu plūsmas grafs (virsotnes - tautsaimniecības nozares, šķautnes<br />

- finanšu plūsmas starp nozarēm, izmanto ekonomiskos pētījumos un plānošanā);<br />

24) ceļu grafs (virsotnes - pilsētas, šķautnes - ceļi, izmanto transporta tīkla attīstībā);<br />

25) ielu grafs (virsotnes - krustojumi, šķautnes - ielas, izmanto pilsētas transporta plūsmu<br />

analīzē un plānošanā);<br />

26) elektriskās ķēdes grafs (virsotnes - elektromagnētiski aktīvi elementi, šķautnes - vadi vai<br />

kontakti, izmanto elektrisko shēmu pierakstā un analīzē);<br />

27) ”barošanās ķēde” (virsotnes - dzīvnieku sugas, šķautnes - ”barošanās” attiecība, izmanto<br />

biosistēmu analīzē);<br />

28) evolucionārais koks (virsotnes - sugas vai populācijas, šķautnes - evolucionārās izcelsmes<br />

attiecība, izmanto bioloǧijā);<br />

29) ķīmisko reakciju grafs (virsotnes - ķīmisko vielu daudzuma vektori, šķautnes - ķīmiskās<br />

reakcijas, izmanto kīmisko reakciju analīzē),<br />

30) ķīmiskas vielas priekšteču grafs (virsotnes - ķīmiskas vielas, kuras tiek iegūtas kādas<br />

vielas ražošanas procesā (priekšteči), šķautnes - priekšteču izmaiņas ražošanas procesā,<br />

izmanto ķīmiskajā rūpniecībā);<br />

31) ķīmisko vielu reaǧētspējas grafs (virsotnes - ķīmiskas vielas, šķautnes - reaǧēšanas iespējas,<br />

izmanto sarežǧītu ķīmisko reakciju analīzē),<br />

32) sprādzienbīstamības grafs (virsotnes - ķīmiskas vielas, šķautnes - sprādziena reakcijas<br />

iespējamība, ja vielas ir kontaktā, izmanto darba drošības vajadzībām);<br />

33) radiosakaru traucējumu grafs (virsotnes - radiostacijas, šķautnes - radioviļņu joslu savstarpējā<br />

pārklāšanās, izmanto radiosakaru plānošanā);<br />

34) politiskais grafs (virsotnes - valstis, šķautnes - robežas, izmanto ǧeopolitikā);<br />

35) asinsvadu grafs (virsotnes - asinsvadu sazarojumi, šķautnes - asinsvadi, izmanto medicīnā);<br />

36) neironu grafs (virsotnes - neironi, šķautnes - neironu saskares vietas, izmanto medicīnā);


3.6. GRAFU IZOMORFISMS UN INVARIANTI 101<br />

37) kulinārijas izstrādājuma gatavošanas grafs (virsotnes - kulinārijas izstrādājuma stāvokļi<br />

(sākot no pamatkomponentēm), šķautnes - pārejas starp stāvokļiem gatavošanas procesā,<br />

izmanto ēdienu gatavošanā).<br />

3.6. GRAFU IZOMORFISMS UN INVARIANTI<br />

3.6.1. Ievads. Dabiski ir uzdot jautājumu - kad divi grafi ir neatšķirami kā matemātiski objekti<br />

jeb, citiem vārdiem sakot, kad divi grafi ir ”vienādi”, ja mēs ignorējam to virsotņu dabu un<br />

attēlošanas veidu. Tā kā grafs ir struktūra, kas satur informāciju par virsotņu savienojamību vai<br />

nesavienojamību, piemēram, matricas veidā, tad dabiski ir pieprasīt, ka divi grafi ir matemātiski<br />

neatšķirami, ja to virsotņu kopas var sakārtot tā, ka grafu matricas ir vienādas. Atcerēsimies<br />

arī, ka kopu sakārtojumus var interpretēt kā bijektīvas funkcijas.<br />

Divus neorientētus vai orientētus grafus Γ = (V, E) un Γ ′ = (V ′ , E ′ ) sauksim par izomorfiem<br />

(Γ ≃ Γ ′ ), ja eksistē bijektīva funkcija<br />

f : V → V ′<br />

tāda, ka<br />

(v 1 , v 2 ) ∈ E<br />

tad un tikai tad, ja<br />

(f(v 1 ), f(v 2 )) ∈ E ′ .<br />

Citiem vārdiem sakot, funkcija f saglabā virsotnes un šķautnes. Šādā gadījumā funkciju f<br />

sauksim par grafu izomorfismu. Bieži vien izomorfus grafus identificē un neatšķir vienu no otra.<br />

Pētot grafus ar precizitāti līdz izomorfismam, bieži vien nodzēš grafu virsotņu indeksus un strādā<br />

ar grafiem, kuriem virsotnes ir neiezīmētas.<br />

Piemērs 3.32. 3.27.attēlā ir parādīts izomorfisma piemērs<br />

1<br />

f<br />

p<br />

2<br />

f<br />

q<br />

3<br />

f<br />

r<br />

4<br />

f<br />

s<br />

5<br />

6<br />

f<br />

f<br />

u<br />

t<br />

3.27. attēls. Grafu izomorfisma piemērs<br />

Par grafa Γ izomorfisma tipu (klasi) sauksim visu ar Γ izomorfo grafu kopu.<br />

Bijektīvu funkciju f : V → V sauksim par grafa V automorfismu (Γ-automorfismu), ja tā ir<br />

grafa Γ izomorfisms uz sevi, citiem vārdiem sakot, (v 1 , v 2 ) ∈ E tad un tikai tad, ja (f(v 1 ), f(v 2 )) ∈<br />

E. Grafa Γ automorfismu kopu apzīmēsim ar Aut(Γ). Grafa automorfisms ir arī tā papildgrafa<br />

automorfisms.<br />

Funkciju f : V → V ′ sauksim par grafu homomorfismu, ja katrai šķautnei (v 1 , v 2 ) ∈ E<br />

izpildās nosacījums (f(v 1 ), f(v 2 )) ∈ E ′ . Citiem vārdiem sakot, funkcija f nepārrauj šķautnes<br />

(bet var iznīcināt virsotnes un pārveidot nesavienotas virsotnes par savienotām). Homomorfisms<br />

ir saprātīgs izomorfisma vispārinājums uz nebijektīvu funkciju gadījumu.<br />

Katrai grafa virsotnei v kopu<br />

⋃<br />

f(v)<br />

f∈Aut(Γ)


3.6. GRAFU IZOMORFISMS UN INVARIANTI 102<br />

1 2 3<br />

5<br />

4<br />

6<br />

1<br />

3<br />

4 5 6<br />

2<br />

4<br />

0<br />

0 4<br />

9<br />

8<br />

5<br />

9 1<br />

1<br />

6 5<br />

6<br />

8<br />

7<br />

3<br />

2<br />

7<br />

2<br />

3.28. attēls. Izomorfu grafu pāru piemēri<br />

3<br />

3.29. attēls. Neizomorfu grafu pāru piemēri<br />

sauksim par šīs virsotnes orbītu. Var redzēt, ka orbītas veido grafa virsotņu kopas sadalījumu. Ja<br />

šis sadalījums satur vienu elementu, tad teiksim, ka grafs ir virsotņu transitīvs. Citiem vārdiem<br />

sakot, grafs ir virsotņu transitīvs tad un tikai tad, ja jebkurām divām virsotnēm v un w eksistē<br />

grafa automorfisms f tāds, ka f(v) = w. Ja f : V → V ir grafa Γ = (V, E) automorfisms<br />

un Γ ′ = (V ′ , E ′ ) ir inducēts apakšgrafs grafā Γ, tad f(Γ ′ ) tiek definēts kā grafs (f(V ′ ), f(E ′ )),<br />

kur šķautnes e = (v, w) attēls ir (f(v), f(w)). Ievērosim, ka katram inducētam apakšgrafam<br />

Γ ′ ⊆ Γ un katram Γ-automorfismam f ir spēkā apgalvojums f(Γ ′ ) ⊆ Γ. Teiksim, ka inducētie<br />

apakšgrafi Γ ′ un f(Γ ′ ) ir vienādi ar precizitāti līdz grafa automorfismam. Grafu sauksim par<br />

šķautņu transitīvu, ja jebkurām divām šķautnēm e 1 un e 2 eksistē grafa automorfisms f tāds, ka<br />

f(e 1 ) = e 2 .<br />

Teorēma 3.33. Visi grafa automorfismi veido grupu attiecībā uz funkciju kompozīcijas operāciju.<br />

Pierādījums. Var redzēt, ka virsotņu kopas vienības funkcija ir jebkura grafa automorfisms.<br />

Jebkura grafa automorfisma inversā funkcija ir grafa automorfisms un divu grafa automorfismu<br />

kompozīcija ir grafa automorfisms. QED<br />

Var pierādīt, ka katrai galīgai grupai G eksistē galīgs grafs Γ, tāds, ka Aut(Γ) = G (Fruhta<br />

teorēma).<br />

Piemērs 3.34. 3.28.attēlā ir parādīti izomorfu grafu pāri.<br />

Piemērs 3.35. 3.29.attēlā ir parādīti neizomorfu grafu pāri, kuriem pakāpju vektori ir<br />

vienādi.<br />

Piemērs 3.36. 3.30.attēlā ir parādīti visi cikla C 4 automorfismi. Var redzēt, ka |Aut(C 4 )| = 8


3.6. GRAFU IZOMORFISMS UN INVARIANTI 103<br />

1<br />

2<br />

1<br />

2<br />

1<br />

2<br />

1<br />

2<br />

4<br />

3<br />

4<br />

3<br />

4<br />

3<br />

4<br />

3<br />

id a=(24) b=(12)(34) ab<br />

1<br />

2<br />

1<br />

2<br />

1<br />

2<br />

1<br />

2<br />

4<br />

3<br />

4<br />

3<br />

4<br />

3<br />

4<br />

3<br />

ba aba bab abab<br />

3.30. attēls. Visi cikla C 4 automorfismi<br />

(a)<br />

3.31. attēls. Grafi ar triviālu automorfismu grupu<br />

(b)<br />

un par minimālu veidotājsistēmu var izvēlēties divu funkciju kopu, kas atbilst virsotņu permutācijām<br />

a = (24) un b = (12)(34).<br />

Piemērs 3.37. 3.31.attēlā attēloto grafu automorfismu grupas satur tikai vienu elementu -<br />

vienības funkciju.<br />

Grafa automorfismu grupu var uzskatīt par grafa simetrijas mēru - jo lielāka ir attiecība<br />

|Aut(Γ)|<br />

|V (Γ)|<br />

, jo grafs ir simetriskāks.<br />

Naivs veids, kā noteikt, vai divi grafi ir izomorfi, ir fiksēt viena grafa matricu un apskatīt<br />

visas otrā grafa matricas, kas atbilst dažādām virsotņu kopas permutācijām. Acīmredzami, šis<br />

algoritms nav efektīvs, jo virsotņu permutāciju skaits grafam ar n virsotnēm ir n!, tāpēc nosakot,<br />

vai divi grafi ir izomorfi, ir lietderīgi izmantot to (skaitliskās) īpašības, kuras sakrīt izomorfiem<br />

grafiem un var nesakrist neizomorfiem grafiem. Apzīmēsim visu grafu kopu ar G un fiksēsim<br />

kādu kopu S, kas parasti ir skaitļu kopa, skaitļu virkņu kopa vai viena vai vairāku argumentu<br />

funkciju kopa. Funkciju<br />

φ : G → S<br />

sauksim par grafu invariantu, ja no tā, ka<br />

seko, ka<br />

Ekvivalenta definīcija: ja<br />

Γ ≃ Γ ′ ,<br />

φ(Γ) = φ(Γ ′ ).<br />

φ(Γ) ≠ φ(Γ ′ ),


3.6. GRAFU IZOMORFISMS UN INVARIANTI 104<br />

tad<br />

Γ ≄ Γ ′ .<br />

Invariantu sistēmu {φ i } i∈I sauksim par pilnu, ja no tā, ka φ i (Γ) = φ i (Γ ′ ) visiem i ∈ I seko, ka<br />

Γ ≃ Γ ′ .<br />

Invariantus izmanto, lai atšķirtu neizomorfus grafus: ja uz diviem grafiem invariants pieņem<br />

dažādas vērtības, tad uzreiz var secināt, ka grafi nav izomorfi. Biežāk izmantotos grafu invariantus<br />

pēc to izcelsmes var iedalīt šādās grupās:<br />

• elementārie invarianti, kas ir saistīti ar grafa apakšgrafiem, piemēram, virsotņu skaits,<br />

šķautņu skaits, maksimālā virsotnes pakāpe, minimālā virsotnes pakāpe, pakāpju vektors,<br />

komponenšu skaits, fiksēta garuma ķēžu un ciklu skaits, fiksēta izomorfisma tipa<br />

apakšgrafu skaits u.c.;<br />

• metriskie invarianti, kas saistīti ar ”attālumu” starp grafa virsotnēm;<br />

• strukturālie invarianti, kas saistīti ar sakarīgumu (skatīt nodaļu ”Grafu sakarīgums”);<br />

• topoloǧiskie invarianti, kas ir saistīti ar grafa ievietošanu plaknē vai uz slēgtas divdimensionālas<br />

virsmas);<br />

• hromatiskie invarianti, kas ir saistīti ar virsotņu un šķautņu kopu ”neatkarību” (skatīt<br />

atbilstošo nodaļu šajā tekstā);<br />

• algebriskie invarianti, kas ir saistīti ar algebras jēdzieniem - grafa matricas īpašvērtības<br />

un raksturīgais polinoms, grafa automorfismu grupa u.c;<br />

• grafiski iterētie invarianti, kas atbilst grafiem, kas atvasināti no dotajiem grafiem.<br />

Grafu invariantus var klasificēt arī pēc to aprēķināšanai nepieciešamajiem laika un telpas<br />

resursiem asimptotiku nozīmē kā arī pēc to aprēķinošo algoritmu kompleksitātes automātu teorijas<br />

nozīmē.<br />

Grafu invariantus var arī apvienot sistēmās un apskatīt objektus, kas atgādina kombinatorikā<br />

izmantotās veidotājfunkcijas.<br />

Piemērs 3.38. Definēsim šādus invariantus-veidotājfunkcijas:<br />

• A(x, Γ) = ∑ ∞<br />

n=0 a nx n , kur a n ir grafa Γ inducēto apakšgrafu skaits ar n šķautnēm;<br />

• B(x, y, Γ) = ∑ ∞<br />

m=0,n=0 a mnx m y n , kur a mn ir grafa Γ inducēto apakšgrafu skaits ar m<br />

virsotnēm un n šķautnēm;<br />

• C(x, y, z, Γ) = ∑ ∞<br />

m=0,n=0,p=0 a mnpx m y n z p , kur a mnp ir grafa Γ inducēto apakšgrafu skaits<br />

ar m virsotnēm un n šķautnēm skaits, kuri ir savienoti ar pārējo grafa daļu ar p šķautņu<br />

palīdzību.<br />

Uz šo brīdi nav zināma pilna un viegli aprēķināma invariantu sistēma - vai nu invariants ir<br />

pilns un aprēķināms tikpat lēni kā izomorfisms (piemēram, minimālais binārais skaitlis, ko iegūst,<br />

pārrakstot matricu bināras virknes veidā) vai arī tas nav pilns un ātri aprēķināms (piemēram,<br />

virsotņu un šķautņu skaits). Nākamajā nodaļā sīkāk apskatīsim grafu metriskos invariantus.<br />

3.6.2. Vingrinājumi.<br />

Vingrinājums 3.39. Atrast visas izomorfisma klases grafiem, kuriem ir ne vairāk kā 5 virsotnes.<br />

Vingrinājums 3.40. Atrast visas izomorfisma klases kokiem, kuriem ir ne vairāk kā 7 virsotnes<br />

un atrast katras klases pārstāvju automorfisma grupas.<br />

Vingrinājums 3.41. Atrast visas 3-regulāru grafu izomorfisma klases ar 8 virsotnēm.<br />

Vingrinājums 3.42. Atrast norādīto grafu automorfismus ar norādītajām kārtām (funkcijas<br />

f : A → A kārta ir mazākais naturālais skaitlis k tāds, ka f k = id A ):<br />

1) grafs H 3 (kuba grafs), kārta - 2, 3, 4, 6;<br />

2) grafs H 4 , kārta - 2, 3, 4, 6, 8;<br />

3) oktaedra grafs, kārta - 2, 3, 4, 6;<br />

4) dodekaedra grafs, kārta - 2, 3, 5, 6, 10;


5) ikosaedra grafs, kārta - 2, 3, 5, 6, 10;<br />

6) Petersena grafs, kārta - 2, 3, 4, 5, 6.<br />

3.6. GRAFU IZOMORFISMS UN INVARIANTI 105<br />

Vingrinājums 3.43. Konstruēt piemērus grafiem, kuriem automorfismu grupa ir Z n (atlikumu<br />

kopa pēc moduļa n ar atlikumu saskaitīšanas operāciju),Σ n (visu n elementus lielas kopas permutāciju<br />

kopa ar funkciju kompozīcijas operāciju),Z 2 × Z 2 .<br />

Vingrinājums 3.44. Pierādīt, ka neeksistē<br />

1) grafi ar triviālu automorfismu grupu, kuriem virsotņu skaits ir mazāks kā 6;<br />

2) 3-regulāri grafi ar triviālu automorfisma grupu, kuriem virsotņu skaits ir mazāks kā 12.<br />

Vingrinājums 3.45. Pierādīt, ka, ja grafs ir izomorfs savam papildgrafam, tad, grafa virsotņu<br />

skaitu dalot ar 4, atlikumā iegūst 0 vai 1.<br />

Vingrinājums 3.46. Sakarīga grafa četrām virsotnēm pakāpe ir 3, un pārējām virsotnēm<br />

pakāpe ir 4. Pierādīt, ka nav iespējams izdzēst vienu šķautni tā, lai grafs sadalītos divās izomorfās<br />

komponentēs.<br />

3.6.3. Grafu metriskie invarianti. Svarīga invariantu klase ir invarianti, kas ir saistīti ar<br />

virsotnes savienojošo ķēžu īpašībām. Izrādās, ka grafu teorijā var definēt ǧeometriskā attāluma<br />

analogu, kas rada vairākus netriviālus un praktiski svarīgus grafu invariantus.<br />

Par attālumu starp divām virsotnēm v un w sauksim (v, w) - ķēžu garumu minimumu,<br />

attālumu starp virsotnēm v un w apzīmēsim ar dist(v, w), tā ir divu argumentu funkcija<br />

dist : V × V → N ∪ 0.<br />

Papildus tam attālumu starp divām virsotnēm dažādās komponentēs definēsim vienādu ar bezgalību.<br />

Par sakarīga grafa diametru sauksim maksimālo attālumu starp divām virsotnēm grafā,<br />

jeb, citiem vārdiem sakot, attāluma funkcijas maksimālo vērtību grafā, šo lielumu grafam Γ<br />

apzīmēsim ar D(Γ). Par virsotnes ekscentritāti sauksim maksimālo attālumu no šīs virsotnes<br />

līdz kādai citai virsotnei dotajā grafā, virsotnes v ekscentritāti apzīmēsim ar ɛ(v). Par grafa<br />

centru sauksim grafa virsotņu kopu ar minimālo ekscentritāti, to apzīmēsim ar Z(Γ). Centra<br />

virsotņu ekscent-ritāti sauksim par grafa rādiusu, to apzīmēsim ar r(Γ). Virsotnes, kuru ekscentritāte<br />

ir vienāda ar grafa diametru, sauksim par perifērijas virsotnēm. Par grafa ekscentritāšu<br />

vektoru sauksim virkni (a 1 , ..., a k ), kur a i ir virsotņu skaits ar ekscentritāti i. Par grafa attālumu<br />

vektoru sauksim virkni (b 1 , ..., b m ), kur b i ir virsotņu pāru skaits ar attālumu i. Ir skaidrs, ka<br />

diametrs, rādiuss, centra virsotņu skaits, ekscentritāšu vektors un attālumu vektors ir grafa invarianti.<br />

Virsotni, kuras attālums līdz jebkurai citai virsotnei ir 1, sauksim par dominējošu<br />

virsotni. Grafa virsotni, kuras attālums līdz jebkurai citai virsotnei nepārsniedz 2, sauksim par<br />

karali. Ķēdi, kuras garums ir vienāds ar grafa diametru, sauksim par diametrālu ķēdi.<br />

Ja ir dots grafs Γ, tad par tā k-to pakāpi sauksim grafu Γ k , kuram V (Γ k ) = V (Γ) un kurā<br />

divas virsotnes v un w ir savienotas tad un tikai tad, ja dist(v, w) ≤ k. Lai skaitītu maršrutus,<br />

kas savieno dažādas virsotnes, ir lietderīgi izmantot grafa blakusattiecības matricu. Izmantojot<br />

lineāro algebru, var pierādīt šādu apgalvojumu: ja grafa matrica ir A, tad matricas A k elements<br />

A k ij ir vienāds ar (j, i)-maršrutu skaitu.<br />

Piemērs 3.47. Kombinatorikas uzdevumus var mēǧināt interpretēt kā maršrutu skaitīšanu<br />

grafos. Pieņemsim, ka ir dots orientēts nosvērts grafs Γ = (V, E) ar blakusattiecības matricu<br />

A. Kā tika minēts, var redzēt, ka matricas A k elements (A k ) ij ir vienāds ar visu (j, i)-maršrutu<br />

svaru summu. Vispārinot veidotājfunkcijas ideju, redzam, ka<br />

∑<br />

A n = (E − A) −1<br />

n≥0<br />

ir matrica, kuras elementi ir formāli vienādi ar maršrutu svaru summu starp atbilstošajām virsotnēm<br />

(E ir vienības matrica). Var redzēt, piemēram, ka matricas (E − A) −1 treiss (diagonāles<br />

elementu summa) ir vienāds ar noslēgtu maršrutu skaitu. Parasti pirms aprēķiniem matricu A


3.6. GRAFU IZOMORFISMS UN INVARIANTI 106<br />

00<br />

x<br />

01<br />

x<br />

x<br />

x<br />

x<br />

10<br />

x<br />

11<br />

3.32. attēls. Grafs Γ piemēram 3.43<br />

modificē, definējot šķautņu svarus tā, lai atvieglotu dotā uzdevuma atrisināšanu. Šo metodi sauc<br />

par transfermatricas metodi. Transfermatricas metodi izmanto arī, lai pierādītu veidotājfunkciju<br />

racionalitāti vai algebriskumu. Izmantojot transfermatricas metodi, atrisināsim šādu uzdevumu:<br />

cik ir n simbolus garu vārdu binārajā alfabētā {0, 1}, kas sākas ar 0 un beidzas ar 1, ja tiek<br />

”aizliegtas” apakšvirknes 000 un 111? Modelēsim šādu virkņu veidošanu ar grafu palīdzību šādā<br />

veidā. Definēsim nosvērtu orientētu grafu Γ, kura virsotnes ir visi iespējamie sakārtotie pāri<br />

binārajā alfabēta (00,01,10,11) un starp divām virsotnēm v un w eksistē šķautne v → x w, ja,<br />

pievienojot pārim v kādu no binārajiem simboliem, iegūst atļautu virkni, kuras divu pēdējo simbolu<br />

apkšvirkne ir w. 3.32.attēlā ir parādīts grafs Γ.<br />

Grafa Γ blakusattiecības matrica A ir vienāda ar<br />

⎡<br />

un iegūstam, ka<br />

kur<br />

(E − A) −1 =<br />

⎡<br />

1<br />

⎢<br />

det(E − A) ⎣<br />

⎢<br />

⎣<br />

0 0 x 0<br />

x 0 x 0<br />

0 x 0 x<br />

0 x 0 0<br />

⎤<br />

⎥<br />

⎦<br />

−x 3 − x 2 + 1 x 3 + x 2 x x 2<br />

x 1 x 2 + x x 3 + x 2<br />

x 3 + x 2 x 2 + x 1 x<br />

x 2 x x 3 + x 2 −x 3 − x 2 + 1<br />

det(E − A) = −(x 4 + 2x 3 + 2x 2 − 1).<br />

Ja virkne sākas ar 0, tad tā sākas ar 00 vai 01, ja virkne beidzas ar 1, tad tā beidzas ar 01 vai<br />

11. Ievērosim, ka maršruti ar garumu m atbilst virknēm ar garumu m − 2. Tātad, lai atrastu<br />

meklējamās skaitļu virknes veidotājfunkciju, mums ir jāsummē matricas X = (E −A) −1 elementi<br />

x 21 , x 22 , x 41 , x 42 . Ja mēs apzīmēsim meklējamo skaitļu virkni ar {a n } n≥2 , tad<br />

A(x) = ∑ a n x n−2 (x + 1) 2<br />

= −<br />

(x 2 + x + 1)(x 2 + x − 1)<br />

n≥2<br />

un, sadalot šo funkciju parciāldaļās, iegūsim, ka<br />

A(x) =<br />

x<br />

2(x 2 + x + 1) − 1<br />

x 2 + x − 1 − x<br />

2(x 2 + x − 1) .<br />

Var pārbaudīt, ka daži pirmie virknes locekļi ir šādi:<br />

A(x) = 1 + 2x + 2x 2 + 4x 3 + 7x 4 + 10x 5 + ...<br />

⎤<br />

⎥<br />

⎦ ,


3.7. NEATRISINĀTAS GRAFU TEORIJAS PROBLĒMAS PIEMĒRS - LIELAIS MŪRA GRAFS 107<br />

Orientētu grafu gadījumā attālumu starp divām virsotnēm definēsim kā minimālo šķautņu<br />

skaitu virzītā ķēdē, kas savieno šīs virsotnes.<br />

Teorēma 3.48. Attāluma funkcija apmierina šādas īpašības:<br />

1) jebkurām virsotnēm v un w izpildās<br />

dist(v, w) = dist(w, v)<br />

(simetrija);<br />

2) dist(v, w) = 0 tad un tikai tad, ja v = w (nedeǧenerētība);<br />

3) jebkurām virsotnēm v,w un u izpildās<br />

(trijstūra nevienādība).<br />

dist(v, w) ≤ dist(v, u) + dist(u, w)<br />

Pierādījums. Pirmie divi apgalvojumi ir acīmredzami.<br />

pieņemsim pretējo. Ja eksistē virsotne u tāda, ka<br />

dist(v, w) > dist(v, u) + dist(u, w),<br />

Lai pierādītu trešo apgalvojumu,<br />

tad tā ir pretruna, jo tad eksistē maršruts no v uz w caur u, kura garums ir mazāks kā dist(v, w).<br />

QED<br />

Piemērs 3.49.<br />

3.33. attēls. Grafs ar diametru 7, rādiusu 4 un trīs centra virsotnēm<br />

3.7. NEATRISINĀTAS GRAFU TEORIJAS PROBLĒMAS PIEMĒRS - LIELAIS<br />

MŪRA GRAFS<br />

50.gados sākās pētījumi par daudzprocesoru datoriem - datoriem, kuros ir vairāki procesori,<br />

kas ir savā starpā savienoti ar sakaru līnijām. Tos var modelēt kā neorientētus grafus (virsotnes<br />

- procesori, šķautnes - sakaru līnijas). Starpprocesoru sakaru līnijas ir dārgas, un tās ir grūti<br />

apkalpot, liels sakaru līniju skaits vai sakaru līniju/procesoru skaitu attiecība samazina datora<br />

efektivitāti. Galvenā prasība daudzprocesoru sistēmu projektēšanā ir minimizēt sakaru līniju un<br />

procesoru skaita attiecību. Papildus prasības ir šādas:<br />

• procesoru-sakaru līniju grafam jābūt ar pēc iespējas mazāku diametru (lai jebkuri divi<br />

procesori varētu ātri apmainīties ar informāciju);<br />

• procesoru-sakaru līniju grafam jābūt pēc iespējas simetriskam, lai atvieglotu tā darba<br />

vadīšanu (lai programmatūra tā darba vadīšanai būtu pēc iespējas vienkāršāka) - metrisko<br />

invariantu terminos šo prasību var formulēt šādi: kā minimums grafam vēlams būt<br />

regulāram un visu virsotņu ekscentritātēm vēlams būt vienādām;


3.8. OPERĀCIJAS AR GRAFIEM 108<br />

• vēlams arī, lai grafa automorfismu grupa būtu pēc iespējas lielāka un tās struktūra būtu<br />

vienkārša.<br />

Ja grafa diametrs ir 1, tad grafs ir pilns - šķautņu un virsotņu skaitu attiecība ir<br />

n(n−1)<br />

2<br />

= n − 1 ,<br />

n 2<br />

kur n ir virsotņu skaits. Nākamais gadījums - diametrs ir 2. Ja grafs ir k-regulārs ar diametru<br />

2, tad maksimāli iespējamais virsotņu skaits ir<br />

1 + k + k(k − 1) = k 2 + 1,<br />

šķautņu un virsotņu skaitu attiecība ir<br />

n √ n−1<br />

√<br />

2 n − 1<br />

= ,<br />

n 2<br />

kur n ir virsotņu skaits - šī attiecība ir mazāka nekā gadījumā, kad diametrs ir 1. Regulāru grafu,<br />

kura virsotņu pakāpe ir k, diametrs ir 2 un virsotņu skaits ir k 2 + 1, sauksim par Mūra grafu<br />

ar diametru 2 (var definēt arī Mūra grafu ar jebkuru diametru). Izmantojot lineāro algebru,<br />

precīzāk, grafa matricas īpašvērtību analīzi, ir atrasts, ka Mūra grafi ar diametru 2 ir iespējami<br />

tikai dažām virsotņu pakāpes vērtībām:<br />

k ∈ {2, 3, 7, 57}.<br />

Apskatīsim šos gadījumus:<br />

1) k = 2 - cikls ar garumu 5;<br />

2) k = 3 - Petersena grafs, pierādīt šo faktu nav grūti, pietiek paskatīties uz Petersena<br />

grafu;<br />

3) k = 7 - ir konstruēts atbilstošais Mūra grafs (ar 50 virsotnēm, virsotņu pakāpi 7 un<br />

diametru 2) (Hofmana-Singltona grafs, 1960), atrast šādu grafu ir grūts uzdevums<br />

patstāvīgam darbam, kuru var atrisināt ar meklēšanas algoritmu palīdzību;<br />

4) k = 57 - neatrisināta matemātiska problēma (uz 2004.gada jūliju), nav zināms, vai tāds<br />

grafs eksistē vai nē!<br />

Lasītājam mēs piedāvājam risināt šo problēmu - atrast regulāru grafu ar virsotņu pakāpi 57,<br />

virsotņu skaitu 3250 un diametru 2 (Lielo Mūra Grafu) vai pierādīt, ka tāds neeksistē. Viegli<br />

redzēt, ka šim grafam piemīt šādas papildus īpašības - tajā nav ciklu ar garumu 3 un 4 (tad<br />

virsotņu skaits nebūtu maksimāls), tātad minimāls cikls ir ar garumu 5. Ir izteiktas hipotēzes, ka<br />

Lielais Mūra Grafs satur apakšgrafus, kas ir izomorfi Petersena un Hofmana-Singltona grafiem.<br />

Ja Lielais Mūra Grafs eksistē, to varētu meklēt ar bektrekinga metodes palīdzību, maksimāli<br />

optimizējot atkāpšanās un elementu izvēles politiku un izmantojot saprātīgus pieņēmumus. Otrs<br />

ceļš meklēšanā varētu būt saistīts ar heiristisko metožu izmantošanu.<br />

3.8. OPERĀCIJAS AR GRAFIEM<br />

Tāpat kā kopu teorijā, arī grafu teorijā bieži rodas nepieciešamība veidot jaunus grafus no<br />

jau uzdotiem. Apskatīsim dažas operācijas ar grafiem.<br />

3.8.0.1. Papildināšana. Šī operācija jau tika definēta.<br />

3.8.0.2. Apvienošana. Ja doti 2 grafi Γ = (V, E) un Γ ′ = (V ′ , E ′ ), tad par to apvienojumu<br />

sauksim grafu<br />

Γ ∪ Γ ′ = (V ∪ V ′ , E ∪ E ′ ).<br />

Piemēram, var redzēt, ka katrs grafs ir tā komponenšu apvienojums.<br />

3.8.0.3. Savienošana. Ja doti 2 grafi Γ = (V, E) un Γ ′ = (V ′ , E ′ ), tad par to savienojumu<br />

sauksim grafu<br />

Γ + Γ ′ = (V ∪ V ′ , E ∪ E ′ ∪ E ∗ ),<br />

kur E ∗ = (V × V ′ ) ∪ (V ′ × V ).


3.9. GRAFU SAKARĪGUMS 109<br />

3.8.0.4. Virsotnes (virsotņu kopas) izdzēšana. Grafā tiek izdzēsta virsotne (virsotņu kopa)<br />

un visas tai incidentās šķautnes, virsotņu kopas U izdzēšanu grafā Γ = (V, E) apzīmēsim ar<br />

Γ − U, tādējādi<br />

Γ − U = (V \U, E\{(u, v) ∪ (v, u)|u ∈ U, v ∈ V }).<br />

3.8.0.5. Šķautnes (šķautņu kopas) izdzēšana. Grafā tiek izdzēsta šķautne vai šķautņu kopa,<br />

šķautņu kopas S izdzēšanu grafā Γ = (V, E) apzīmēsim ar Γ − S, tādējādi<br />

Γ − S = (V, E\S).<br />

3.8.0.6. Šķautnes savilkšana. Virsotnes, kas incidentas ar doto šķautni, tiek apvienotas vienā<br />

virsotnē, šķautnes e savilkšanu grafā Γ apzīmēsim ar Γ/e.<br />

3.8.0.7. Virsotnes pievienošana. Tiek pievienota viena jauna virsotne un šķautnes, kas to<br />

savieno ar visām iepriekš eksistējošām virsotnēm.<br />

3.8.0.8. Šķautnes pievienošana. Tiek pievienota šķautne, kas savieno divas izvēlētas nesavienotas<br />

virsotnes, šķautnes e pievienošanu grafā Γ apzīmēsim ar Γ + e.<br />

3.8.0.9. Inducēta apakšgrafa savilkšana. Dotā inducētā apakšgrafa vietā pievienojam jaunu<br />

virsotni, kas ir savienota ar tām virsotnēm (ārpus) savilktā apakšgrafa virsotņu kopas, ar kurām ir<br />

bijusi savienota vismaz viena no savilktā apakšgrafa virsotnēm. Speciālgadījums - divu virsotņu<br />

identifikācija.<br />

Teiksim, ka grafu Γ var savilkt uz grafu Γ ′ , ja Γ ′ var iegūt no Γ, veicot vairākas šķautņu savilkšanas<br />

operācijas. Par grafa Γ minoru sauksim jebkuru grafu, ko var iegūt no Γ, vairākkārt pielietojot<br />

šķautņu izdzēšanas un savilkšanas operācijas kā arī izolētu virsotņu izdzēšanas operācijas.<br />

Minēsim vienu no svarīgākiem neseniem grafu teorijas rezultātiem (Seimors-Robertsons,<br />

80.gadi) - jebkurā bezgalīgā grafu kopā eksistē divi grafi, tādi, ka viens no tiem ir otra grafa<br />

minors (šajā bezgalīgajā grafu kopā eksistē divi grafi Γ 1 un Γ 2 tādi, ka vai nu grafs Γ 1 ir izomorfs<br />

kādam grafa Γ 2 minoram, vai arī Γ 2 ir izomorfs kādam grafa Γ 1 minoram).<br />

Minēsim arī vēl vienu no mūsdienu grafu teorijas neatrisinātajām problēmām, kas ir saistīta<br />

ar tikko definētajām operācijām. Uzdosim šādu jautājumu - vai grafa izmorfisma tipu var noteikt<br />

(rekonstruēt), ja ir zināms viss to grafu izomorfismu tipu saraksts, kurus iegūst, izmetot vienu<br />

virsotni (ja grafam ir n virsotnes, tad iegūst n grafus (katrs no tiem ar n−1 virsotni)? Ir izteikta<br />

hipotēze (rekonstrukcijas hipotēze), ka atbilde uz šo jautājumu ir pozitīva.<br />

3.9. GRAFU SAKARĪGUMS<br />

3.9.1. Ievads. Atgādināsim, ka grafs ir sakarīgs, ja tā jebkuras divas virsotnes var savienot<br />

ar ķēdi. Sakarības komponentes ir maksimālie sakarīgie apakšgrafi. Virsotni sauksim par šarnīru,<br />

ja tās izdzēšana palielina grafa komponenšu skaitu. Šķautni sauksim par tiltu, ja tās izdzēšana<br />

palielina grafa komponenšu skaitu. Grafu sauksim par bloku, ja tas ir sakarīgs grafs bez<br />

šarnīriem. Šķautņu kopas apakškopu sauksim par griezumu, ja tās izdzēšana palielina grafa<br />

komponenšu skaitu. Grafa inducētu apakšgrafu arī sauksim par bloku, ja tas ir maksimāls bloks<br />

(jebkurš apakšgrafs, kas to satur, nav bloks). Grafa Γ bloku grafs - grafs, kur virsotnes ir grafa<br />

Γ bloki, divas virsotnes ir savienotas ar šķautni tad un tikai tad, ja attiecīgie bloki ir savienoti<br />

ar šarnīru. Grafa bloku grafs ir tā grafiski iterētais invariants.<br />

Piemērs 3.50. 3.34.(a) attēlā ir parādīts grafs ar diviem šarnīriem un vienu tiltu. 3.34.(b)<br />

attēlā ir parādīts grafs ar trīs blokiem.<br />

(a)<br />

(b)


3.9. GRAFU SAKARĪGUMS 110<br />

3.34. attēls. (a) Grafs ar diviem šarnīriem un vienu tiltu, (b) grafs ar diviem šarnīriem, trīs<br />

blokiem un bez tiltiem<br />

Teorēma 3.51. Jebkurā sakarīgā grafā ar vismaz divām virsotnēm ir vismaz divas virsotnes,<br />

kas nav šarnīri.<br />

Pierādījums. Jebkuras diametrālas ķēdes gali nevar būt šarnīri. QED<br />

Teorēma 3.52. Ja ir dots grafs Γ = (V, E), |E| ir grafa šķautņu skaits un C ir grafa<br />

komponenšu skaits, tad ir spēkā divkārša nevienādība<br />

(3.3) |V | − C ≤ |E| ≤<br />

Pierādījums. No sākuma pierādīsim, ka<br />

(|V | − C)(|V | − C + 1)<br />

.<br />

2<br />

|V | − C ≤ |E|.<br />

Izmantosim matemātisko indukciju pēc virsotņu skaita |V |. Pieņemsim, ka apgalvojums ir<br />

pierādīts visiem |V | < k. Apskatīsim jebkuru grafu Γ ar virsotņu skaitu |V | = k. Izdzēsīsim<br />

jebkuru virsotni v grafā Γ, kas nav šarnīrs. Ja d(v) = 0, tad jaunajā grafā Γ ′ = (V ′ , E ′ ) iegūsim<br />

sakarības<br />

|V ′ | = |V | − 1, C ′ = C − 1, |E ′ | = |E|.<br />

Nevienādība<br />

|V ′ | − C ′ ≤ |E ′ |<br />

ir spēkā, jo tas ir indukcijas pieņēmums, tāpēc nevienādība<br />

ir spēkā grafam Γ. Ja d(v) > 0, tad<br />

No indukcijas pieņēmuma seko, ka<br />

|V | − C ≤ |E|<br />

|V ′ | = |V | − 1, C ′ = C, |E ′ | = |E| − d(v).<br />

|V | − C ≤ |E| − d(v) + 1<br />

un arī šajā gadījumā nevienādība<br />

|V | − C ≤ |E|<br />

ir spēkā.<br />

Tagad pierādīsim, ka<br />

(|V | − C)(|V | − C + 1)<br />

|E| ≤ .<br />

2<br />

Uzskatīsim grafa virsotņu un komponenšu skaitu par fiksētu un apskatīsim tikai grafus, kuru<br />

visas komponentes ir pilni grafi, jo citiem grafiem ar fiksētu virsotņu un komponenšu skaitu<br />

šķautņu skaits ir tikai mazāks. Ja mēs pierādīsim apgalvojumu pilno grafu apvienojumiem, tad<br />

tas būs pierādīts visiem grafiem, jo citos gadījumos nevienādības kreisā puse būs vēl mazāka.<br />

Pierādīsim, ka vislielākais šķautņu skaits ir grafam, kas satur C − 1 K 1 tipa grafus un vienu<br />

K |V |−C+1 tipa grafu. Pieņemsim, ka grafā ir divas komponentes Γ 1 ≃ K |V1 | un Γ 2 ≃ K |V2 |,<br />

1 < |V 1 | ≤ |V 2 |. ”Pārnesot” vienu virsotni no Γ 1 uz Γ 2 kopējais šķautņu skaits izmainīsies par<br />

lielumu<br />

|V 2 | − (|V 1 | − 1) = |V 2 | − |V 1 | + 1 > 0,<br />

tātad, vairākkārtīgi veicot šādas operācijas, mēs palielināsim šķautņu skaitu, pēdējā solī iegūsim<br />

grafu, kas satur vienu netriviālu pilnu grafu un vairākas izolētas virsotnes. Grafam K |V |−C+1 ∪<br />

( ⋃ C−1<br />

i=1 K 1) šķautņu skaits ir vienāds ar<br />

(|V | − C)(|V | − C + 1)<br />

,<br />

2


3.9. GRAFU SAKARĪGUMS 111<br />

un līdz ar to teorēma ir pierādīta. QED<br />

Analizējot pierādīto nevienādību, var iegūt secinājumu, kas raksturo sakarīga grafa virsotņu,<br />

šķautņu un komponenšu skaitu.<br />

Secinājums 3.2. Ja grafā izpildās nevienādība<br />

tad grafs ir sakarīgs.<br />

|E| ><br />

Pierādījums. Pierādīsim, ka funkcija<br />

(|V | − 2)(|V | − 1)<br />

,<br />

2<br />

(|V | − C)(|V | − C + 1)<br />

f(|V |, C) = = 1 2<br />

2 (|V |2 + |V |(1 − 2C) + C 2 − C)<br />

ir dilstoša kā funkcija no C, ja virsotņu skaits |V | ir fiksēts un C > 1. Pierādīsim, ka visiem<br />

grafiem<br />

f(|V |, C) > f(|V |, C + 1).<br />

Tiešām,<br />

f(|V |, C) − f(|V |, C + 1) = 1 (2|V | − C)(C − 1) > 0,<br />

2<br />

tāpēc ka katra grafa komponente satur vismaz vienu virsotni un<br />

2|V | − C > 0.<br />

Ja C > 1 un<br />

(|V | − 2)(|V | − 1)<br />

|E| > ,<br />

2<br />

tad<br />

(|V | − C)(|V | − C + 1)<br />

|E| > ,<br />

2<br />

kas ir pretrunā ar teorēmu (3.52). QED<br />

Formulēsim trīs vienkāršas teorēmas, kas raksturo šarnīru, tiltu un bloku īpašības.<br />

Teorēma 3.53. (Teorēma par šarnīriem) Γ = (V, E) - sakarīgs grafs, v ∈ Γ. Nākamie<br />

apgalvojumi ir ekvivalenti:<br />

1) v ir šarnīrs;<br />

2) eksistē divas virsotnes u un w, atšķirīgas no v, tādas, ka v pieder jebkurai (u, w)-ķēdei;<br />

3) eksistē kopas V \{v} sadalījums divās apakškopās U un W , tāds, ka jebkurām virsotnēm<br />

u ∈ U, w ∈ W virsotne v pieder jebkurai (u, w)-ķēdei.<br />

Pierādījums. Teorēmas pierādījums ar cikla palīdzību nav grūts un tiek atstāts lasītāja ziņā.<br />

QED<br />

Teorēma 3.54. (Teorēma par tiltiem) Γ = (V, E) - sakarīgs grafs, e ∈ E. Nākamie apgalvojumi<br />

ir ekvivalenti:<br />

1) e ir tilts;<br />

2) e nepieder nekādam ciklam grafā Γ;<br />

3) eksistē divas virsotnes u un w, tādas, ka e pieder jebkurai (u, w)-ķēdei;<br />

4) eksistē kopas V sadalījums divās apakškopās U un W , tāds, ka jebkurām virsotnēm<br />

u ∈ U, w ∈ W šķautne e pieder jebkurai (u, w)-ķēdei.<br />

Pierādījums. Teorēmas pierādījums ar cikla palīdzību nav grūts un tiek atstāts lasītāja ziņā.<br />

QED<br />

Teorēma 3.55. (Teorēma par blokiem) Γ = (V, E) - sakarīgs grafs ar vismaz 3 virsotnēm.<br />

Nākamie apgalvojumi ir ekvivalenti:<br />

1) Γ ir bloks;<br />

2) caur jebkurām divām virsotnēm grafā Γ var novilkt ciklu;


3.9. GRAFU SAKARĪGUMS 112<br />

3) caur jebkuru virsotni un jebkuru šķautni grafā Γ var novilkt ciklu;<br />

Pierādījums. Teorēmas pierādījums ar cikla palīdzību nav grūts un tiek atstāts lasītāja ziņā.<br />

QED<br />

3.9.2. Augstāku kārtu sakarīgums. Apzīmēsim ar κ(Γ) mazāko virsotņu skaitu, kuru<br />

iznīcināšana padara grafu par nesakarīgu vai triviālu (triviāls grafs - grafs, kas satur vienu virsotni),<br />

ar λ(Γ) - mazāko šķautņu skaitu, kuru iznīcināšana padara grafu par nesakarīgu. Skaitli<br />

κ(Γ) sauksim par grafa Γ virsotņu sakarīguma skaitli un λ(Γ) - par šķautņu sakarīguma skaitli.<br />

Grafu Γ sauksim par k-sakarīgu grafu, ja κ(Γ) ≥ k. Grafa k-sakarīgā komponente - maksimāls<br />

k-sakarīgs apakšgrafs.<br />

Var redzēt, ka nesakarīgi grafi ir 0-sakarīgi. Ja grafs Γ ir sakarīgs, tad κ(Γ) > 0. Bloks ir<br />

grafs, kuram κ > 1.<br />

(a)<br />

3.35. attēls. 2-sakarīga un 3-sakarīga grafa piemēri<br />

(b)<br />

Teorēma 3.56. κ(Γ) ≤ λ(Γ) ≤ δ(Γ)<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

No otras puses, liela minimālā virsotnes pakāpe nenodrošina lielu virsotņu sakarīguma skaitli.<br />

Zemāk bez pierādījuma minēsim kādu apgalvojumu, kas saista grafa vidējo aritmētisko pakāpi<br />

un tā apakšgrafu virsotņu sakarīguma skaitli.<br />

Teorēma 3.57. (Madera teorēma) Ja grafa Γ = (V, E) vidējā aritmētiskā virsotņu pakāpe<br />

apmierina nevienādību<br />

1 ∑<br />

d(v) ≥ 4k,<br />

|V |<br />

v∈V<br />

tad grafam Γ eksistē apakšgrafs Γ ′ tāds, ka κ(Γ ′ ) = k.<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

Pieņemsim, ka Γ - sakarīgs grafs, u un v - divas nesavienotas virsotnes. Divas (u, v)-ķēdes<br />

sauksim par virsotņu šķirtām, ja tām nav kopīgu virsotņu, izņemot u un v. Ja v ir virsotne<br />

un W ir virsotņu kopas apakškopa, tad visu virsotņu šķirtu (u, W )-ķēžu kopu sauksim par<br />

(v, W )-vēdekli. Ja ir dotas divas virsotņu kopas apakškopas U un V , tad par virsotņu šķirtu<br />

(U, V )-ķēdi sauksim virsotņu šķirtu ķēdi, kurai viens galapunkts ir kopā U, bet otrs - kopā V .<br />

Divas (u, v)-ķēdes sauksim par šķautņu šķirtām, ja tām nav kopīgu šķautņu.<br />

U<br />

V<br />

3.36. attēls. Piemērs grafam, kurā virsotnes u un v savieno divas virsotņu šķirtas ķēdes


3.9. GRAFU SAKARĪGUMS 113<br />

Teiksim, ka virsotņu kopa S ⊂ V atdala virsotnes u un v, ja u un v pieder dažādām grafa<br />

Γ − S komponentēm, šajā gadījumā kopu S sauksim par atdalošo kopu attiecībā uz dotajām<br />

virsotnēm u un v jeb par (u, v)-atdalošo kopu.<br />

Teorēma 3.58. (Mengera teorēma). Pieņemsim, ka u un v ir nesavienotas virsotnes grafā.<br />

Minimālās (u, v)-atdalošas kopas elementu skaits ir vienāds ar maksimālu virsotņu šķirto (u, v)-<br />

ķēžu skaitu.<br />

Pierādījums. Pieņemsim, ka Γ - sakarīgs grafs, u un v - divas nesavienotas virsotnes. Pielietosim<br />

pastiprināto divparametru matemātisko indukciju pēc virsotņu un šķautņu skaita. Indukcijas<br />

bāze ir apgalvojums grafam, kas satur 3 virsotnes un 2 šķautnes, šajā gadījumā teorēma<br />

acīmredzami ir spēkā. Pieņemsim, ka teorēma ir spēkā visiem grafiem, kuriem vai nu virsotņu<br />

skaits ir mazāks kā |V |, vai arī šķautņu skaits ir mazāks kā |E|. Apskatīsim grafu Γ, kuram ir<br />

|V | virsotnes un |E| šķautnes, un pieņemsim, ka minimālais elementu skaits (u, v)-atdalošā kopā<br />

S ir n = |S|. Ir iespējami 3 gadījumi, katru no kuriem apskatīsim atsevišķi.<br />

1. Kopā S ir virsotnes, kas nav savienotas ne ar u, ne ar v. Grafs Γ − S sastāv no 2<br />

netriviāliem grafiem Γ 1 un Γ 2 , katrā no kuriem ir vismaz divas virsotnes. Konstruēsim<br />

2 jaunus grafus Γ u un Γ v , savelkot grafus Γ 1 un Γ 2 uz virsotnēm u un v. S ir minimāla<br />

atdaloša kopa virsotnēm u un v abos grafos Γ u un Γ v . Tā kā grafi Γ 1 un Γ 2 ir netriviāli,<br />

tad grafiem Γ u un Γ v ir mazāks virsotņu skaits un, saskaņā ar indukcijas pieņēmumu,<br />

grafos Γ u un Γ v ir n virsotņu-šķirtu ķēžu. Apvienojot šīs ķēdes ar ķēdēm no S uz v un<br />

no u uz S, iegūsim n virsotņu-šķirtas ķēdes grafā Γ.<br />

2. Visas virsotnes kopā ir savienotas ar u vai ar v, skaidrības dēļ pieņemsim, ka tās ir<br />

savienotas ar u) un eksistē virsotne w ∈ S, kas ir savienota arī ar v. Apskatīsim grafu<br />

Γ ′ = Γ − w. Šajā grafā S\{w} ir minimāla atdaloša kopa virsotnēm u un v. Saskaņā<br />

ar indukcijas pieņēmumu grafā Γ ′ ir n − 1 virsotņu-šķirtas ķēdes. Apskatīsim vēl ķēdi<br />

(u, w, v), tā ir ķēde, kurai nav kopīgu virsotņu ar pārējām ķēdēm. Kopsummā iegūstam<br />

n virsotņu-šķirtas ķēdes grafā Γ.<br />

3. Visas virsotnes kopā S ir savienotas ar u vai ar v, skaidrības dēļ pieņemsim, ka tās<br />

ir savienotas ar u un neeksistē virsotne kopā S, kas ir savienota arī ar v. Apskatīsim<br />

visīsāko ķēdi, kas savieno u ar v:(u, s, w, ..., v), kur s ∈ S, w ≠ v. Redzam, ka w ∉ S,<br />

jo pretējā gadījumā minimālā ķēde būtu vēl īsāka. Apskatīsim grafu Γ ′ = Γ/(s, w), ko<br />

iegūst, identificējot virsotnes s un w ar virsotni s. Grafā Γ ′ kopa S joprojām ir minimāla<br />

atdaloša kopa virsotnēm u un v. Tā kā grafā Γ ′ ir par vismaz vienu ¯v sķautni mazāk,<br />

tad tajā ir n virsotņu šķirtas ķēdes. Ķēdēm, kurām nav kopīgu virsotņu grafā Γ ′ , nav<br />

kopīgu virsotņu arī grafā Γ. Tātad grafā Γ ir n virsotņu šķirtas ķēdes.<br />

QED<br />

Analizējot Mengera teorēmu, iegūsim grafa augstāku kārtu sakarīguma īpašību.<br />

Secinājums 3.3. Ja grafs ir k-sakarīgs, tad jebkurām divām virsotnēm eksistē k virsotņu<br />

šķirtas ķēdes.<br />

Var pierādīt arī šādu Mengera teorēmas vispārinājumu.<br />

Teorēma 3.59. Jebkurām divām grafa virsotņu apakškopām U un V minimālais virsotņu<br />

skaits (U, V )-atdalošā kopā ir vienāds ar maksimālu virsotņu šķirtu (U, V )-ķēžu skaitu.<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

3.9.3. Sakarīgums orientētos grafos. Γ = (V, E) - orientēts grafs. Virsotnes v un w<br />

sauksim par stingri sakarīgām, ja eksistē virzītas ķēdes, kas saista v un w (abos virzienos), v<br />

un w sauksim par vienpusīgi sakarīgām, ja eksistē virzīta ķēde, kas saista v un w vismaz vienā<br />

virzienā. Orientētu grafu sauksim par stingri sakarīgu, ja jebkuras divas virsotnes ir stingri


3.9. GRAFU SAKARĪGUMS 114<br />

3.37. attēls. Stingri sakarīga grafa piemērs<br />

3.38. attēls. Vienpusīgi sakarīga grafa piemērs<br />

sakarīgas.<br />

Orientētu grafu sauksim par vienpusīgi sakarīgu, ja jebkuras divas virsotnes ir vienpusīgi sakarīgas.<br />

Orientētu grafu sauksim par vāji sakarīgu (sakarīgu), ja tam atbilstošais neorientētais grafs ir<br />

sakarīgs. Par orientēta grafa stingri sakarīgu komponenti sauksim maksimālu stingri sakarīgu<br />

apakšgrafu. Orientētu grafu sauksim par reducējamu, ja tam ir vismaz divas stingri sakarīgas<br />

komponentes. Par orientēta grafa vājās sakarības komponentēm sauksim sakarības komponentes<br />

grafā, ko iegūst no dotā orientētā grafa, aizmirstot par šķautņu orientāciju.<br />

Piemērs 3.60. Izmantojot sakarīgumu orientētos grafos, aprakstīsim kādu kombinatorikas<br />

metodi, ko sauc par involūcijas principu un ko var uzskatīt par vienlieluma principa vispārinājumu.<br />

Pieņemsim, ka ir dotas divas bijekcijas:f : A → B un g : C → D, kur C ⊆ A, D ⊆ B un visas<br />

kopas ir galīgas. Uzdevums ir atrast ”dabisku” bijekciju no A\C uz B\D. Uzzīmēsim funkcionālo<br />

grafu, kas atbilst abām definētajām funkcijām, šajā grafā ir orientētas šķautnes a f → f(a) un<br />

c g → g(c) ar svariem f un g. Šī grafa vāji sakarīgās komponentes ir izomorfas grafiem R n ar<br />

n ≥ 1 vai S n ar n ≥ 2, kas tiek definēti šādi:<br />

1) V (R n ) = {u 1 , ..., u n , v 1 , ..., v n }, f-šķautnes ir formā u i<br />

f<br />

→ vi , g-šķautnes ir formā u i<br />

g<br />

→<br />

v i−1 , ja i > 1 (ja n = 1, tad g-šķautņu nav);<br />

2) V (S n ) = {u 1 , ..., u n , v 1 , ..., v n }, f-šķautnes ir formā u i<br />

f<br />

→ vi , g-šķautnes ir formā u i<br />

g<br />

→<br />

v i−1 , ja i > 1, un u 1<br />

f<br />

→ vn .


3.9. GRAFU SAKARĪGUMS 115<br />

C 1<br />

C 3<br />

C 4<br />

C 1<br />

C C<br />

2 3<br />

C 4<br />

C 2<br />

(a)<br />

(b)<br />

3.40. attēls. Orientēta grafa (a) un tā kondensācijas (b) piemērs<br />

u1<br />

f<br />

v<br />

1<br />

u1<br />

f<br />

v<br />

1<br />

g<br />

g<br />

u<br />

1<br />

f<br />

v<br />

1<br />

u2<br />

f<br />

v2<br />

u2<br />

f<br />

v2<br />

g<br />

g<br />

g<br />

u3<br />

f<br />

v<br />

3<br />

u3<br />

f<br />

v3<br />

R<br />

1<br />

R<br />

3<br />

3.39. attēls. Komponenšu piemēri<br />

Var redzēt, ka A\C ir to virsotņu kopa, no kurām neiziet g-šķautnes un B\D ir to virsotņu<br />

kopa, kurās neieiet g-šķautnes. Citiem vārdiem sakot, kopu A\C veido R n tipa komponenšu virsotnes<br />

u 1 un kopu B\D veido R n tipa komponenšu virsotnes v n . Bijekciju konstruēsim šādā veidā.<br />

Ja A\C virsotne pieder R 1 tipa komponentei, tad piekārtosim tai otro tās pašas komponentes<br />

virsotni (virsotnei u 1 piekārtosim virsotni v 1 ). Ja A\C virsotne pieder R n tipa komponentei ar<br />

n > 1, tad piekārtosim tai otro tās pašas komponentes galapunktu (virsotnei u 1 piekārtosim<br />

virsotni v n ).<br />

Par orientēta grafa Γ = (V, E) kondensāciju (Herca grafu) sauksim grafu<br />

H(Γ) = (H(V ), H(E)),<br />

ko iegūst, savelkot uz vienu virsotni katru stingri sakarīgo komponenti. Citiem vārdiem sakot,<br />

H(V ) ir visu stingri sakarīgo komponenšu kopa, eksistē šķautne h 1 → h 2 , tad un tikai tad, ja<br />

eksistē šķautne no vismaz vienas virsotnes komponentē, kas atbilst h 1 , uz vismaz vienu virsotni<br />

komponentē, kas atbilst h 2 . Orientēta grafa kondensācija ir tā grafiski iterētais invariants.<br />

Orientēts grafs ir vienpusīgi sakarīgs tad un tikai tad, ja tā kondensācijas grafs ir virzīta ķēde.<br />

Orientētu grafu sauksim par aciklisku orientētu grafu (AOG), ja tajā nav virzītu ciklu. Var<br />

redzēt, ka jebkura orientēta grafa kondensācijas grafs ir AOG. Orientēta grafa virsotni sauksim<br />

par avotu, ja tās pozitīvā puspakāpe ir 0. Orientēta grafa virsotni sauksim par noteku, ja<br />

tās negatīvā puspakāpe ir 0. Teiksim, ka orientēta grafa virsotnes ir lineārajā sakārtojumā<br />

(v 1 , ..., v n ), ja izpildās šāds nosacījums: ja eksistē šķautne v i → v j , tad i < j. AOG ir svarīga<br />

orientētu grafu klase, kuras pārstāvji bieži tiek izmantoti modelēšanā. Katrai daļēji sakārtotai<br />

kopai var viennozīmīgi piekārtot AOG, kas sakrīt ar tās Hasses grafu. Katram AOG eksistē<br />

daļēji sakārtota kopa, kuras Hasses grafs sakrīt ar šo AOG.<br />

S3


3.9. GRAFU SAKARĪGUMS 116<br />

Par orientēta grafa Γ bāzi sauksim minimālu virsotņu kopu B ar īpašību, ka jebkurai virsotnei<br />

v grafā eksistē virsotne b ∈ B, no kuras ir virzīta ķēde līdz v. Orientēta grafa Γ = (V, E) virsotņu<br />

kopas V apakškopu U sauksim par iekšēji stabilu, ja katrai virsotnei u ∈ U izpildās nosacījums<br />

Γ(u) ⋂ U = ∅, virsotņu kopas V apakškopu W sauksim par ārēji stabilu, ja katrai virsotnei<br />

w ∈ V \W izpildās nosacījums Γ(w) ⋂ W ≠ ∅, virsotņu kopas apakškopu sauksim par kodolu, ja<br />

tā ir gan iekšēji, gan ārēji stabila.<br />

Grafu kodoli tiek pētīti spēļu teorijā šāda iemesla dēļ. Modelēsim spēli ar orientētu grafu<br />

Γ = (V, E), kuram virsotnes ir spēles stāvokļi un orientētas šķautnes norāda atļautos gājienus.<br />

Divi spēlētāji izdara gājienus pēc kārtas: pirmais spēlētājs izvēlas virsotni v 0 no kādas sākotnējo<br />

stāvokļu kopas, pēc tam otrais izvēlas virsotni v 1 ∈ Γ(v 0 ) un tā tālāk. Ja kāds no spēlētājiem ir<br />

spējīgs izvēlēties virsotni, kas ir kodolā, tad šim spēlētājam ir uzvarošā vai vismaz nezaudējošā<br />

stratēǧija, jo viņa pretiniekam katrā gājienā obligāti ir jāizvēlas virsotne ārpus kodola.<br />

3.9.4. Vingrinājumi.<br />

Vingrinājums 3.61. Kāds var būt maksimāli iespējamais šarnīru skaits grafam ar n virsotnēm?<br />

Vingrinājums 3.62. Pierādīt, ka 3-regulāram grafam eksistē šarnīrs tad un tikai tad, ja tam<br />

eksistē tilts. Konstruēt 3-regulāru grafu, kuram virsotņu sakarīgums ir vienāds ar 1.<br />

Vingrinājums 3.63. Pierādiet, ka grafa centra virsotnes pieder vienam grafa blokam.<br />

Vingrinājums 3.64. Pierādīt, ka grafa šarnīrs nevar būt šarnīrs tā papildgrafam.<br />

Vingrinājums 3.65. Pierādīt, ka katra netriviāla sakarīga grafa Γ kvadrāts Γ 2 ir 2-sakarīgs.<br />

Vingrinājums 3.66. Atrast virsotņu un šķautņu sakarīguma skaitļus grafiem, kas ir doti<br />

nodaļā ”Speciālas grafu klases”.<br />

Vingrinājums 3.67. Atrodiet visu vāji sakarīgu AOG izomorfisma klašu pārstāvjus ar ne<br />

vairāk kā 7 virsotnēm.<br />

Vingrinājums 3.68. Kādā valstī ir 100 pilsētas un divvirzienu ceļu sistēma, kurā izpildās<br />

šāds nosacījums: izvēloties patvaļīgu pilsētu P un slēdzot visus ceļus, kas iziet no P , no jebkuras<br />

pilsētas (izņemot P ) var aizbraukt uz jebkuru citu pilsētu. Pierādīt, ka valsti var sadalīt 2<br />

neatkarīgos reǧionos tā, ka katrā no reǧioniem no jebkuras pilsētas var aizbraukt uz jebkuru<br />

citu.<br />

Vingrinājums 3.69. Kādā valstī ir n pilsētas, kas ir savienotas ar 2n − 1 vienvirziena<br />

ceļiem. Ir zināms, ka no jebkuras pilsētas var aizbraukt uz jebkuru citu, virzoties tikai atļautajos<br />

virzienos. Pierādīt, ka eksistē ceļš, kuru slēdzot minētā īpašība saglabāsies.<br />

Vingrinājums 3.70. Pierādīt, ka katru neorientētu sakarīgu grafu, kuram katras virsotnes<br />

pakāpe ir pāra skaitlis, var orientēt tā, lai tam būtu viena stipri sakarīga komponente.<br />

Vingrinājums 3.71. Kādā valstī jebkuras divas pilsētas ir savienotas ar vienvirziena ceļu.<br />

Pierādīt, ka<br />

1) eksistē pilsēta, ko kuras var aizbraukt uz jebkuru citu pilsētu;<br />

2) eksistē ceļš, kurā, nomainot atļauto virzienu uz pretējo, var panākt, ka no jebkuras<br />

pilsētas var aizbraukt uz jebkuru citu pilsētu.


3.10. KOKI 117<br />

3.10. KOKI<br />

3.10.1. Ievads. Par aciklisku grafu jeb mežu sauksim grafu, kurā nav inducētu apakšgrafu,<br />

kas ir izomorfi cikliem. Par koku sauksim sakarīgu aciklisku grafu. Grafa apakšgrafu, kas satur<br />

visas virsotnes un ir koks, sauksim par grafa skeletu jeb pārklājošo koku. Viegli redzēt, ka kokam<br />

katra virsotne, kuras pakāpe ir lielāka nekā 1, ir šarnīrs, tādējādi kokiem κ = 1. Par aciklisku<br />

orientētu grafu (AOG) sauksim orientētu grafu bez virzītiem cikliem.<br />

3.41. attēls. Visi koku izomorfisma tipi ar 7 virsotnēm<br />

Teorēma 3.72. Γ = (V, E) - grafs ar |V | virsotnēm un |E| šķautnēm. Šādi apgalvojumi ir<br />

ekvivalenti:<br />

1) Γ - koks;<br />

2) Γ - sakarīgs grafs un |E| = |V | − 1;<br />

3) Γ - aciklisks grafs un |E| = |V | − 1;<br />

4) grafā Γ jebkuras divas dažādas virsotnes savieno tieši viena ķēde;<br />

5) Γ - aciklisks grafs, kuram pievienojot vienu jaunu šķautni iegūst grafu ar tieši vienu<br />

ciklu.<br />

Pierādījums. Pierādīsim teorēmu, izmantojot ciklisko pierādīšanas tehniku. Ir jāpierāda, ka<br />

(1) → (2) → (3) → (4) → (5) → (1).<br />

(1) → (2): izmantosim matemātisko indukciju ar argumentu |V |. Indukcijas bāze: ja<br />

|V | = 1, tad izteikums ir acīmredzams. Ja |V | > 1, tad jebkurai šķautnei e grafs<br />

Γ − e satur 2 komponentes - kokus (grafā Γ nav ciklu) T 1 un T 2 . Pieņemsim, ka šajās<br />

komponentēs ir |V 1 | vai |V 2 | virsotnes un |E 1 | vai |E 2 | šķautnes, kas saskaņā ar induktīvo<br />

pieņēmumu apmierina nosacījumus |E i | = |V i | − 1. Iegūstam, ka<br />

|E| = |E 1 | + |E 2 | + 1 = (|V 1 | − 1) + (|V 2 | − 1) + 1 = (|V 1 | + |V 2 |) − 1 = |V | − 1.<br />

(2) → (3): Γ ir sakarīgs grafs un |E| = |V |−1. Jāpierāda, ka grafā nav ciklu. Pieņemsim,<br />

ka eksistē cikls, kas satur šķautni e. Grafs Γ − e ir sakarīgs un satur |V | − 2 šķautnes.<br />

Tāds grafs nevar būt sakarīgs, jo tam šķautņu skaits ir par 2 mazāks nekā virsotņu<br />

skaits.<br />

(3) → (4): pieņemsim, ka Γ ir aciklisks un |E| = |V | − 1. Pieņemsim, ka grafa komponenšu<br />

skaits ir C un i-tās komponentes virsotņu un šķautņu skaits ir |V i | un |E i |. Tā<br />

kā katra komponente ir koks, tad |E i | = |V i | − 1 un<br />

C∑<br />

|E| = (|V i | − 1) = |V | − C.<br />

i=1


QED<br />

3.10. KOKI 118<br />

Redzam, ka C = 1 un grafs ir sakarīgs. Ja eksistētu 2 virsotnes, kuras saista 2 dažādas<br />

ķēdes, tad eksistētu cikls.<br />

(4) → (5): ja grafā Γ būtu cikls, tad eksistētu divas dažādas ķēdes, kas savienotu divas<br />

virsotnes. Ja, pievienojot vienu šķautni, iegūtu divus dažādus ciklus, tad sākotnējā<br />

grafā starp attiecīgajām virsotnēm eksistētu divas dažādas ķēdes.<br />

(5) → (1): pierādīsim, ka grafs Γ ir sakarīgs. Ja virsotnes u un v piederētu 2 dažādām<br />

komponentēm, tad, pievienojot šķautni (u, v), mēs neiegūtu ciklu.<br />

Secinājums 3.4. Ja sakarīgam grafam ar n virsotnēm ir vismaz n šķautnes, tad tas satur<br />

ciklu.<br />

Teorēma 3.73. Kokā ir vismaz 2 virsotnes ar pakāpi 1.<br />

Pierādījums. Pieņemsim, ka kokā T ir |V | virsotnes. Tā kā<br />

∑<br />

d(v) = 2(|V | − 1),<br />

v∈V (T )<br />

tad vismaz 2 saskaitāmie kreisajā pusē ir vienādi ar 1. QED<br />

Kokam, tāpat kā vispārīgam grafam, ir definēts centrs, diametrs un rādiuss. Par koka virsotnes<br />

apakšzaru sauksim jebkuru koka maksimālu apakšgrafu, kas ir koks un satur doto virsotni<br />

kā virsotni ar pakāpi 1 (tādējādi katras virsotnes dažādo apakšzaru skaits ir vienāds ar<br />

tās pakāpi). Par virsotnes svaru sauksim maksimālo šķautņu skaitu tās apakšzaros. Par koka<br />

centroīdu sauksim virsotņu kopu, kuru svars ir minimāls.<br />

Teorēma 3.74. Koka centrs un centroīds satur 1 vai 2 virsotnes.<br />

Pierādījums. Pierādīsim tikai apgalvojumu par centru, apgalvojums par centroīdu ir patstāvīgs<br />

darbs lasītājam. Pieņemsim, ka grafs satur vismaz 3 virsotnes. Sāksim izdzēst virsotnes ar pakāpi<br />

1 šādā veidā. Sākotnējā grafā Γ atzīmēsim visas virsotnes ar pakāpi 1 un izdzēsīsim tās. Iegūsim<br />

jaunu grafu Γ 1 , kura centrs sakrīt ar sākotnējā grafa Γ centru. Atkārtosim šo operāciju vairākas<br />

reizes, kamēr iegūsim triviālo grafu vai K 2 , kuriem centrs satur vienu vai divas virsotnes. QED<br />

1<br />

2<br />

8<br />

3<br />

8<br />

7<br />

11<br />

12<br />

9<br />

4<br />

11<br />

12<br />

9<br />

11<br />

12<br />

10<br />

10<br />

6<br />

5<br />

3.42. attēls. Ilustrācija teorēmas (3.74) pierādījumam<br />

Piebildīsim, ka, ja grafs nav koks, tad tā centrs var saturēt arī vairāk kā 2 virsotnes.<br />

Piemēram, pilnajam grafam vai ciklam centrs sakrīt ar visu virsotņu kopu.<br />

Teorēma 3.75. Katram sakarīgam grafam eksistē skelets (pārklājošais koks).<br />

Pierādījums. Ja grafs sākotnēji nav koks, tad pakāpeniski pa vienai izdzēsīsim šķautnes,<br />

kas ieiet ciklos, katrā solī izdzēšot jebkuru no šķautnēm, kas piedalās kādā no cikliem. Tā kā<br />

neviena šāda šķautne nevar būt tilts, tad tās izdzēšana nepadara grafu par nesakarīgu. Katrā<br />

šādā šķautnes izdzēšanas operācijā virsotņu skaits nemainās, bet šķautņu skaits samazinās par<br />

1. Pēc galīga skaita soļu mēs iegūsim sakarīgu grafu, kuram izpildās nosacījums |E| = |V | − 1,


3.10. KOKI 119<br />

tādējādi šis jauniegūtais grafs ir sākotnējā grafa apakšgrafs, kas satur visas virsotnes un ir koks.<br />

QED<br />

Teorēma 3.76. Katram sakarīga grafa acikliskam skeletālam apakšgrafam eksistē pārklājošais<br />

koks, kas satur šo skeletālo apakšgrafu.<br />

Pierādījums. Ja acikliskais skeletālais apakšgrafs sākotnēji nav koks, tad eksistē vismaz viena<br />

šķautne, kas nepieder šim apakšgrafam un kas neveido ar to ciklus. Pievienojot sākotnējam<br />

apakšgrafam šādas šķautnes, pēc galīga soļu skaita pārveidosim to par pārklājošo koku. QED<br />

Grafa dažādo pārklājošo koku skaits ir tā invariants, ko sauksim par grafa kompleksitāti.<br />

Teorēma 3.77. Katrs koks ir divdaļīgs grafs.<br />

Pierādījums. Patstāvīgs darbs lasītājam.<br />

QED<br />

3.10.2. Orientēti, sakārtoti un bināri koki. Orientētu grafu sauksim par orientētu koku<br />

(orientētu sakņotu koku), ja izpildās šādi nosacījumi:<br />

1) eksistē viena virsotne (sakne), kuras pozitīvā puspakāpe ir vienāda ar 0;<br />

2) visu pārējo virsotņu pozitīvā puspakāpe ir vienāda ar 1;<br />

3) eksistē tieši viena virzīta ķēde no saknes uz jebkuru citu virsotni.<br />

Piemērs 3.78. 3.43.attēlā ir doti orientētu koku piemēri.<br />

(a)<br />

(b)<br />

3.43. attēls. Orientētu koku piemēri<br />

Teorēma 3.79. Orientētiem kokiem piemīt šādas īpašības:<br />

1) aizmirstot šķautņu orientāciju orientētajā kokā, iegūst koku;<br />

2) inducētais apakšgrafs, kura virsotņu kopa ir vienāda ar to virsotņu kopu, kuras ir sasniedzamas<br />

no kādas fiksētas virsotnes v, ir orientēts koks ar sakni v;<br />

3) ja ir dots (neorientēts) koks, tad, izvēloties jebkuru virsotni par sakni, var viennozīmīgi<br />

konstruēt orientētu koku.<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

Orientēto koku teorijā tradicionāli tiek pielietota botāniskas vai ǧenealoǧiskas izcelsmes terminoloǧija.<br />

Orientēta koka virsotni ar negatīvo puspakāpi 0 sauksim par lapu. Ķēdi no saknes<br />

līdz lapai sauksim par zaru. Par orientēta koka augstumu sauksim maksimāla zara garumu<br />

(šķautņu skaitu). Par virsotnes līmeni sauksim šo virsotni un sakni savienojošas ķēdes garumu.<br />

Viena līmeņa virsotņu kopu sauksim par paaudzi. Virsotņu kopu, uz kurām iet ķēdes (šķautnes)<br />

no kādas fiksētas virsotnes v, sauksim par v pēctečiem (dēliem) un sauksim v par šīs kopas senci<br />

(tēvu). Virsotni, kas nav lapa, sauksim par iekšēju virsotni.<br />

Piemērs 3.80. Orientētos kokus izmanto, lai vizualizētu summas likumu kombinatorikā. Ja<br />

A = A 1 ∪ A 2 ∪ ... ∪ A n un A i ∩ A j visiem i ≠ j, tad uzskatīsim A par tēvu un apakškopas A i par<br />

tā dēliem.<br />

Orientētu koku sauksim par sakārtotu koku, ja katras virsotnes dēlu kopā ir definēts pilns<br />

sakārtojums.


3.10. KOKI 120<br />

(a)<br />

(b)<br />

3.46. attēls. Bināru koku piemēri<br />

V 0<br />

V 1<br />

< V 2 < V 3<br />

V 4<br />

< V 5<br />

< V 6<br />

V 7<br />

< V 8<br />

3.44. attēls. Sakārtota koka piemērs<br />

Var redzēt, ka pilns sakārtojums katras virsotnes dēlu kopā inducē pilnu sakārtojumu viena<br />

līmeņa virsotņu kopā.<br />

Par m-āru koku sauksim sakārtotu koku, kurā katrai virsotnei ir ne vairāk kā m dēli.<br />

3.45. attēls. 3-āra koka piemērs<br />

Binārs koks ir orientēts koks, kurā katrai virsotnei ir ne vairāk kā 2 dēli un katras virsotnes dēlu<br />

kopā ir dota funkcija uz divu elementu kopu {kreisais (jaunākais), labais (vecākais)} (citiem<br />

vārdiem sakot, ir noteikts, kāds dēls ir kreisais (jaunākais) un kāds - labais (vecākais)). Par<br />

bināra koka virsotnes apakškoku sauksim visu tās pēcteču veidoto koku (ieskaitot pašu virsotni).<br />

Par bināra koka virsotnes kreiso (labo) apakškoku sauksim tās kreisā (labā) dēla apakškoku. Par<br />

balancētu koku ar augstumu h sauksim koku, kura visām virsotnēm augstums ir h vai h − 1.<br />

Par pilnu bināru koku sauksim bināru koku, kura katrai virsotnei ir nulle vai divi dēli. Parasti<br />

binārus kokus attēlo ar neorientētām šķautnēm un pēc noklusēšanas uzskata, ka šķautnes ir<br />

orientētas no augšas uz apakšu.<br />

Binārus kokus var definēt arī rekursīvā veidā. No sākuma definēsim, ka jebkurš orientēts<br />

koks ar vienu virsotni ir binārs koks. Tālāk definēsim, ka katrs binārs koks satur sakni, kreiso<br />

apakšzaru un labo apakšzaru, katrs no kuriem ir binārs koks.


3.10. KOKI 121<br />

V 7 V 8<br />

V V 5<br />

3<br />

V 2<br />

V 1<br />

V 6 V 4<br />

V 12<br />

V 7 V 8<br />

V V 5<br />

3<br />

V V 1<br />

2<br />

V 6 V 4<br />

V 12<br />

V 9<br />

V 10<br />

V 11<br />

V 9<br />

V 10<br />

V 11<br />

V 5 V 3<br />

V 6 V 7 V 4<br />

V 11 V V 12 11 V<br />

V 10<br />

12 l<br />

V 1<br />

V 1<br />

k<br />

V 1<br />

l<br />

l<br />

V 2 V 3 V 4<br />

V 2 V 3<br />

k k k<br />

V 4<br />

V 2<br />

V 5 V 6 V 7 V 8 V 9<br />

V 10<br />

l<br />

V 5<br />

V 6 V 7<br />

l V 8 V 9<br />

l V 10<br />

V 8<br />

V 9<br />

k<br />

V 11<br />

3.47. attēls. Koka pārveidošana bināra koka veidā<br />

3.10.3. Datu struktūras koku uzdošanai. Kokus var reprezentēt kā vispārīgus grafus.<br />

Tomēr praktiskajā programmēšanā ir vēlams reprezentēt kokus kā binārus kokus. Šī kodēšana<br />

tiek veikta ar šādiem soļiem:<br />

1) (neorientētu) koku var pārveidot par orientētu koku (orientēt), patvaļīgi izvēloties saknes<br />

virsotni;<br />

2) orientētu koku var pārveidot par sakārtotu koku (sakārtot), patvaļīgi izvēloties pilnu<br />

sakārtojumu katras virsotnes dēlu kopā;<br />

3) katru sakārtotu koku var pārveidot par bināru koku, ja no katras virsotnes vilkt labo<br />

izejošo šķautni uz nākošo vecāko brāli un kreiso izejošo šķautni uz jaunāko dēlu;<br />

4) binārus kokus no programmēšanas viedokļa ir ērti uzdot, izmantojot rādītājus.<br />

Piemērs 3.81. Attēlā 3.47. ir parādīta koka pārveidošana bināra koka veidā.<br />

V 12<br />

Svarīgākie bināru koku reprezentācijas veidi ir šādi:<br />

1) katrai virsotnei piekārto rādītājus uz tās labo un kreiso dēliem;<br />

2) virsotnes tiek sakārtotas masīvā, visi dotās virsotnes pēcteči atrodas pa labi no šīs<br />

virsotnes, katrai virsotnei tiek piekārtots indekss, kas ir vienāds ar pēdējā (pa labi) šīs<br />

virsotnes pēcteča numuru.


3.10. KOKI 122<br />

Piemērs 3.82.<br />

V 1<br />

V 1<br />

V 2<br />

V V 3<br />

2<br />

V 3<br />

V 4<br />

V 5<br />

V 6<br />

V 4<br />

V 5<br />

V 6<br />

3.48. attēls. Bināra koka reprezentācija ar rādītāju palīdzību<br />

3.10.4. Koku skaitīšana. Šajā nodaļā apskatīsim vienkāršākos kombinatorikas uzdevumus,<br />

kas ir saistīti ar dažādām koku klasēm. Lasītājam ir nepieciešams pārvaldīt kombinatorisko<br />

klašu teoriju. Risinot koku skaitīšanas uzdevumus, katrā gadījumā ir jāsaprot, ko nozīmē termins<br />

”dažādi koki”. Parasti kokus identificē, izmantojot kādu izomorfisma paveidu. Strādājot ar<br />

orientētiem kokiem, ir atbilstoši jāmaina izomorfisma jēdziens: ja orientētam kokam tiek papildus<br />

definētas kādas struktūras (piemēram, virsotnes dēlu kopas pilns sakārtojums), tad pareizs<br />

šādu koku izomorfisms ir tāda bijektīva virsotņu kopas funkcija sevī, kas saglabā visas papildstruktūras.<br />

Atslēgas frāze, ar kura palīdzību bieži vien iekodē koku izomorfisma klašu skaitīšanu,<br />

ir termins ”koki ar neiezīmētām virsotnēm”.<br />

Piemērs 3.83. Apskatīsim orientētus sakārtotus kokus ar neiezīmētām virsotnēm bez virsotņu<br />

pakāpju ierobežojumiem. Tā kā katras virsotnes dēlu kopā ir dots pilns sakārtojums, tad<br />

katru šādu koku nosaka sakne un tās dēlu apakšzaru virkne, tāpēc šādu koku kombinatoriskajai<br />

klasei T ir spēkā rekursīva specifikācija<br />

T ≃ Z × S{T },<br />

kur Z ir atomāra klase, kuras vienīgais elements ar svaru 1 ir koka virsotne. Šī specifikācija ļauj<br />

atrast atbilstošo veidotājfunkciju T (x):<br />

un<br />

no kurienes iegūstam, ka<br />

(Katalāna skaitlis).<br />

T (x) = x ·<br />

1<br />

1 − T (x)<br />

T (x) = 1 − √ 1 − 4x<br />

,<br />

2<br />

|T n | = 1<br />

n + 1 Cn 2n = C n<br />

Piemērs 3.84. Apskatīsim orientētus sakārtotus kokus ar neiezīmētām virsotnēm, kuriem<br />

virsotņu negatīvās pakāpes tiek pakļautas ierobežojumiem. Pieņemsim, ka Ω ir veselu nenegatīvu<br />

skaitļu kopa, kas satur 0. Apzīmēsim ar T Ω visu to orientēto sakārtoto koku klasi ar neiezīmētām<br />

virsotnēm, kuriem virsotņu izejošo šķautņu skaits pieder kopai Ω. Piemēram, kopai Ω = {0, 2}<br />

atbilst pilnie binārie koki. Definēsim ϕ Ω (t) = ∑ ω∈Ω tω . Definēsim A = S Ω {B} kā visu to<br />

kombinatoriskās klases B elementu virkņu kopu, kurām garums pieder kopai Ω, ievērosim, ka<br />

veidotājfunkcijas apmierina sakarību A(x) = ϕ Ω (B(x)). Var redzēt, ka kombinatoriskā klase T Ω<br />

apmierina rekursīvu specifikāciju<br />

T Ω ≃ Z × S Ω {T Ω },<br />

tāpēc tās veidotājfunkcija apmierina vienādojumu<br />

T Ω (x) = x · ϕ Ω (T Ω (x)).


3.10. KOKI 123<br />

Piemērs 3.85. Apskatīsim orientētus (nesakārtotus) kokus ar neiezīmētām virsotnēm. Orientēts<br />

koks sastāv no tā saknes un tās dēlu apakšzaru kopas, katrs apakšzars atkal ir orientēts koks.<br />

Var redzēt, ka visu orientēto koku kombinatoriskā klase U apmierina rekursīvu specifikāciju<br />

U ≃ Z × M{U}.<br />

Pārtulkojot šo specifikāciju veidotājfunkciju terminos, iegūstam, ka atbilstošā veidotājfunkcija<br />

U(x) apmierina sakarību<br />

U(x) = x ∏ 1<br />

= x · exp( ∑ (1 − x i ) |U i|<br />

i≥1<br />

j≥1<br />

U(x j )<br />

).<br />

j<br />

Minēsim arī dažus klasiskus rezultātus par koku skaitīšanu ar iezīmētām virsotnēm, šajos<br />

gadījumos tiek skaitīti visi iespējamie (ne obligāti savstarpēji neizomorfie) grafi ar fiksētu virsotņu<br />

kopu.<br />

Teorēma 3.86. (Neorientētu) koku ar n iezīmētām virsotnēm skaits ir vienāds ar n n−2 .<br />

Pierādījums. Teorēmas pierādījuma ideja balstās uz funkcijas pierakstu orientēta grafa veidāfunkcionālo<br />

grafu . Katrai galīgai kopai eksistē savstarpēji viennozīmīga atbilstība starp šīs kopas<br />

permutāciju kopu un uz kopas elementiem kā virsotnēm definē¯tu virzītu ciklu apvienojumu kopu<br />

sakarā ar to, ka katru permutāciju var savstarpēji viennozīmīgi sadalīt tās neatkarīgajos ciklos,<br />

katru no kuriem var domāt kā virzītu ciklu grafu teorijas nozīmē. Fiksēsim skaitāmo koku<br />

virsotņu kopu V = {1, ..., n}. Apskatīsim V endofunkcijas (funkcijas sevī). Šādu funkciju skaits<br />

ir vienāds ar n n , un katrai funkcijai f : V → V var piekārtot orientētu grafu Γ(f) ar virsotņu kopu<br />

V , kuram šķautnes ir formā i → f(i). Katrai orientētā grafa Γ(f) vājās sakarības komponentei<br />

var piekārtot virzītu ciklu, kura virsotnes ir orientēti koki. Tātad saskaņā ar viennozīmīgo<br />

atbilstību starp kopas permutācijām un virzītu ciklu apvienojumiem, kopas V kā virsotņu kopas<br />

veidotu orientētu koku permutāciju skaits ir vienāds ar n n . Apzīmēsim visu kopas V kā virsotņu<br />

kopas veidotu orientētu koku permutāciju kopu ar Z(V ) un apzīmēsim visu kopas V kā virsotņu<br />

kopas veidotu koku kopu ar T (V ). Definēsim funkciju<br />

ϕ : V × V × T (V ) → Z(V )<br />

šādā veidā. Katram trijniekam (v, w, t) ∈ V × V × T (V ) apskatīsim vienkāršo ķēdi p kokā t, kas<br />

savieno virsotnes v un w, izdzēsīsim ķēdes p šķautnes, katru atlikušo koku orientēsim, uzskatot p<br />

virsotnes par saknēm. Šādas operācijas rezultātā trijniekam (v, w, t) piekārtosim orientētu koku<br />

virkni ϕ(v, w, t). Funkcija ϕ ir bijektīva, tāpēc<br />

|V × V × T (V )| = |Z(T )|<br />

un<br />

n 2 |T (V )| = n n .<br />

Iegūstam, ka visu koku skaits ar n virsotnēm |T (V )| ir vienāds ar n n−2 . QED<br />

Teorēma 3.87. Ja c n ir sakarīgo grafu skaits ar n iezīmētām virsotnēm, tad atbilstošā<br />

eksponenciālā veidotājfunkcija C exp (x) ir izsakāma šādā veidā:<br />

C exp (x) = ln ∑ 2 C2 n x<br />

n<br />

.<br />

n!<br />

n≥0<br />

Pierādījums. Apzīmēsim ar a n visu grafu skaitu ar n virsotnēm, viegli redzēt, ka a n = 2 C2 n .<br />

Tā kā katrs grafs ir tā komponenšu, sakarīgu grafu, apvienojums, tad<br />

A exp (x) = ∑ a n x n<br />

= exp( ∑ c n x n<br />

) = exp(C exp (x))<br />

n!<br />

n!<br />

n≥0<br />

n≥0<br />

un<br />

C exp (x) = ln A exp (x)<br />

saskaņā ar eksponenciālo veidotājfunkciju teoriju. QED


3.10. KOKI 124<br />

Teorēma 3.88. Ja s n ir orientēto koku skaits ar n iezīmētām virsotnēm, tad atbilstošā<br />

eksponenciālā veidotājfunkcija S exp (x) apmierina vienādojumu<br />

S exp (x) = x exp(S exp (x)).<br />

Pierādījums. Ja<br />

S exp (x) = ∑ s n x n<br />

,<br />

n!<br />

n≥0<br />

tad exp(S exp (x)) ir veidotājfunkcija orientētu mežu skaita virknei. Saskaņā ar eksponenciālo<br />

veidotājfunkciju teoriju x exp(S exp (x)) ir eksponenciālā veidotājfunkcija virknei, kas skaita, cik<br />

veidos var izvēlēties vienu kopas elementu un atlikušajā kopas daļā izvēlēties orientētu mežu.<br />

Šāda struktūra (viena virsotne un mežs) savstarpēji viennozīmīgi nosaka orientētu koku, tāpēc<br />

QED<br />

3.10.5. Vingrinājumi.<br />

S exp (x) = x exp(S exp (x)).<br />

Vingrinājums 3.89. Vispāriniet izomorfisma jēdzienu, ja nepieciešams, un uzzīmējiet visus<br />

izomorfisma tipu pārstāvjus ar ne vairāk kā 9 virsotnēm šādām koku klasēm:<br />

1) (neorientētiem) kokiem,<br />

2) orientētiem kokiem,<br />

3) sakārtotiem kokiem,<br />

4) bināriem kokiem.<br />

Atrast visu šo koku automorfisma grupas.<br />

Vingrinājums 3.90. Pierādīt, ka kokam virsotņu skaits ar pakāpi 1 nav mazāks kā virsotnes<br />

maksimālā pakāpe šajā kokā.<br />

Vingrinājums 3.91. Atrast kompleksitāti visām iepriekš minētajām speciālajām grafu klasēm.<br />

Vingrinājums 3.92. Pierādīt, ka katram AOG eksistē vismaz viens avots un vismaz viena<br />

noteka.<br />

Vingrinājums 3.93. Konstruēt koku, kuram centrs un centroīds satur pa vienai virsotnei<br />

un ir dažādi.<br />

Vingrinājums 3.94. Pierādīt, ka ja Γ ir koks ar vismaz 5 virsotnēm, tad ¯Γ nav koks.<br />

Vingrinājums 3.95. Pierādīt, ka ja Γ ir koks, kura diametrs ir vismaz 3, tad ¯Γ ir sakarīgs.<br />

Vingrinājums 3.96. Cik ir bināru koku ar n virsotnēm, kuriem visām virsotnēm, izņemot<br />

lapu, ir viens dēls?<br />

Vingrinājums 3.97. Katrai bināra koka Γ = (V, E) virsotnei x, kuras līmenis ir d, piekārtosim<br />

”svaru” f(x) = 2 −d . Pierādīt, ka<br />

∑<br />

f(x) ≤ 1.<br />

Vingrinājums 3.98. Pierādīt, ka mežu skaits ar n virsotnēm M n<br />

sakarību<br />

n∑<br />

M n = Cn−1i i−1 i−2 M n−i .<br />

x∈V<br />

i=1<br />

apmierina rekurentu


3.11. CIKLI 125<br />

3.11. CIKLI<br />

3.11.1. Ievads. Vispārīgā gadījumā grafs var stipri atšķirties no koka - tajā var būt inducēti<br />

apakšgafi, kas ir izomorfi cikliem. Tātad ciklu skaits un izvietojums raksturo to, cik stipri grafs<br />

atšķiras no koka. Var pierādīt, piemēram, ka grafs ir 2-sakarīgs tad un tikai tad, ja to var iegūt<br />

no cikla, pēctecīgi pievienojot jau izveidotajam grafam ķēdes, kas savieno dažādas virsotnes.<br />

Šajā nodaļā apskatīsim tikai sakarīgus grafus. Atgādināsim, ka mēs definējām ciklu kā ķēdi,<br />

kuras pirmā virsotne sakrīt ar pēdējo un vienkāršu ciklu kā ciklu, kura visas virsotnes, izņemot<br />

pirmo un pēdējo, ir dažādas. Sakarā ar to, ka mūs galvenokārt interesēs grafa apakšgrafi, kas<br />

ir izomorfi cikliem, tad par ciklu šajā nodaļā mēs domāsim kā par tā šķautņu kopu. Ievērosim,<br />

ka šī atbilstība nav savstarpēji viennozīmīga - vairākiem cikliem un pat vairākiem vienkāršiem<br />

cikliem atbilst viena šķautņu kopa. Tādējādi ir lietderīgi modificēt cikla jēdzienu tā, lai tas<br />

atbilstu prasībai, ka tā katra virsotne var būt cikliska maršruta sastāvdaļa. Grafa Γ = (V, E)<br />

apakšgrafu Γ ′ šajā nodaļā sauksim par ciklu, ja tā katras virsotnes pakāpe ir pāra skaitlis.<br />

Par grafa ciklu matricu sauksim bināru matricu, kuras rindas tiek indeksētas ar grafa vienkāršajiem<br />

cikliem (grafa apakšgrafiem, kas ir izomorfi cikliem C n ), kolonnas tiek indeksētas ar<br />

šķautnēm un tās elementi ir vienādi ar 1 tad un tikai tad, ja elementam atbilstošā šķautne pieder<br />

elementam atbilstošajam ciklam. Jāpiezīmē, ka grafa ciklu matrica nenosaka viennozīmīgi grafa<br />

izomorfisma tipu (piemēram, tāpēc ka grafā var būt tilti).<br />

Šķautņu kopas apakškopu sauksim par griezumu, ja tās izdzēšana padara grafu par nesakarīgu.<br />

Griezumu sauksim par minimālu griezumu, ja nekāda tā apakškopa nav griezums.<br />

Minimālu griezumu sauksim arī par kociklu. Grafa griezumu matricu definē analoǧiski ciklu<br />

matricai.<br />

Piemērs 3.99.<br />

3.49. attēls. Minimāls griezums kuba grafā<br />

Analizējot grafa ciklu īpašības, ir lietderīgi pielietot lineāro algebru virs galīgā lauka F 2 . Ja ir<br />

dots (neorientēts) grafs Γ = (V, E), tad par tā virsotņu telpu Φ(Γ) sauksim lineāru telpu virs<br />

lauka F 2 , kuras elementi ir virsotņu kopas apakškopas, par šķautņu telpu Ψ(Γ) sauksim lineāru<br />

telpu virs lauka F 2 , kuras elementi ir šķautņu kopas apakškopas. Par divu virsotņu vai šķautņu<br />

kopu S 1 un S 2 summu šajās lineārajās telpās (summu pēc moduļa 2) sauksim to simetrisko<br />

starpību, tādējādi S 1 + S 2 = S 1 △S 2 .


3.11. CIKLI 126<br />

Piemērs 3.100.<br />

1<br />

2<br />

2<br />

6<br />

1 2 6<br />

3<br />

3<br />

+ =<br />

5<br />

4<br />

4<br />

7<br />

5<br />

4<br />

7<br />

3.50. attēls. Ciklu summas piemērs<br />

Virsotņu vai šķautņu kopu S sauksim par atkarīgu/neatkarīgu, ja tā ir atkarīga/ neatkarīga kā<br />

atbilstošās lineārās telpas elementu kopa. Nākamajās divās teorēmās mēs domāsim par cikliem<br />

vienkārši kā par slēgtu maršrutu šķautņu kopu apvienojumiem pēc moduļa 2. Cikli un kocikli ir<br />

elementi šajās lineārajās telpās, tāpēc ir jēga interpretēt to kopu atkarīgumu vai neatkarīgumu<br />

un apskatīt šo kopu lineārās čaulas. Ciklu (kociklu) kopu {Z i } i∈I sauksim par neatkarīgu, ja tā<br />

ir lineāri neatkarīga kopa atbilstošajā lineārajā telpā. Tukšu šķautņu kopu uzskatīsim gan par<br />

ciklu, gan par kociklu.<br />

Teorēma 3.101. Visu ciklu kopa ir lineāra apakštelpa telpā Ψ(Γ).<br />

Pierādījums. Ir jāpierāda, ka divu ciklu šķautņu kopu simetriskā starpība ir kāda cikla<br />

šķautņu kopa. Šis apgalvojums ir acīmredzams, ja diviem dotajiem grafiem nav kopīgu šķautņu.<br />

Ja tiem ir kopīgas šķautnes, tad simetriskās starpības rezultātā kopīgās šķautnes anulējas un<br />

rezultējošā šķautņu kopa veido jaunu ciklu. QED<br />

Analoǧisks apgalvojums ir spēkā arī attiecībā uz kocikliem.<br />

Maksimālu neatkarīgu ciklu kopu (vai minimālo ciklu kopu, no kuras ir atkarīgi visi pārējie<br />

cikli) sauksim par fundamentālu ciklu sistēmu tā ir bāze ciklu telpā. Fundamentālas ciklu<br />

sistēmas elementus sauksim par fundamentāliem cikliem, tās elementu skaitu - par grafa ciklisko<br />

rangu vai ciklomātisko skaitli m(Γ).<br />

Piemērs 3.102.<br />

2<br />

2<br />

2<br />

4<br />

4<br />

4<br />

4<br />

1<br />

3<br />

1<br />

3<br />

3.51. attēls. Fundamentālu ciklu sistēmas piemērs<br />

Maksimālu neatkarīgu kociklu kopu (vai minimālo kociklu kopu, no kuriem ir atkarīgi visi<br />

pārējie kocikli) sauksim par fundamentālu kociklu sistēmu (tā ir bāze kociklu telpā), tās elementus<br />

- par fundamentāliem kocikliem, tās elementu skaitu- par grafa kociklisko rangu vai<br />

kociklomātisko skaitli m ∗ (Γ).<br />

Pieņemsim, ka S = (V, E S ) ir grafa Γ skelets. Par šim skeletam atbilstošo koskeletu sauksim<br />

grafu S ∗ = (V, E\E S ). Koskeleta šķautnes sauksim par hordām.<br />

un<br />

Teorēma 3.103. Ja Γ = (V, E) ir sakarīgs grafs, tad<br />

m(Γ) = |E| − |V | + 1<br />

m ∗ (Γ) = |V | − 1.<br />

1<br />

3


3.11. CIKLI 127<br />

Pierādījums. Apskatīsim jebkuru grafa Γ skeletu S. Katra koskeleta horda e rada tieši vienu<br />

ciklu Z e , ko iegūst, apvienojot e ar vienīgo ķēdi kokā S, kas savieno e galapunktus. Koskeleta<br />

šķautņu skaits ir vienāds ar<br />

|E| − |V | + 1.<br />

Visi cikli Z e ir neatkarīgi, jo katrs satur savu hordu. Pierādīsim, ka katrs cikls grafā Γ ir atkarīgs<br />

no ciklu sistēmas {Z e } e∈E(S ∗ ), citiem vārdiem sakot, tas var tikt izteikts kā šo ciklu lineāra<br />

kombinācija. Apskatīsim kādu ciklu Z grafā Γ. Pieņemsim, ka Z satur šķautnes e 1 , ..., e k no<br />

kopas E(S ∗ ). Tādas šķautnes obligāti eksistē, jo pretējā gadījumā Z ir koka T apakšgrafs, kas<br />

nevar saturēt ciklus. Izmantosim pastiprināto matemātisko indukciju ar argumentu k. Indukcijas<br />

bāze: ja k = 1, tad Z ir kopā {Z e } e∈E(S ∗ ). Pieņemsim, ka apgalvojums ir patiess visiem m < k:<br />

Z = Z e1 + ... + Z ek ,<br />

visiem Z ar hordu skaitu m < k. Apskatīsim ciklu ar hordām e 1 , ..., e k . Konstruēsim ciklu<br />

Z ′ = (Z\{e k }) ∪ (Z ek \{e k })<br />

(tas var iet pa kādu šķautni vairākas reizes). Z ′ satur k − 1 hordu, tāpēc Z ′ = Z e1 + ... + Z ek−1 .<br />

Iegūstam, ka<br />

Z ′ + Z ek = (Z\{e k }) + (Z ek \{e k }) + Z ek = Z,<br />

tātad indukcijas pāreja ir pierādīta. Otru teorēmas daļu pierāda līdzīgi. QED<br />

Praktiski fundamentālos ciklus var atrast šādā veidā. No sākuma konstruēsim kādu grafa<br />

skeletu (pārklājošo koku). Tā kā katra horda kopā ar skeletu nosaka tieši vienu fundamentālu<br />

ciklu, tad pievienosim skeletam pa vienai hordai un savilksim tās šķautnes, kas nepiedalās hordas<br />

veidotajā vienīgajā ciklā. Katrai hordai šādā veidā konstruēsim vienu fundamentālu ciklu.<br />

Teorēma 3.104. (Kēniga teorēma) Grafs ir divdaļīgs tad un tikai tad, ja tas nesatur ciklus,<br />

kuru garums ir nepāra skaitlis.<br />

Pierādījums. Neierobežojot vispārību, uzskatīsim, ka grafs ir sakarīgs. Pieņemsim, ka grafs ir<br />

divdaļīgs un satur nepāra garuma ciklu. Fiksēsim kādu grafa virsotņu sadalījumu, kas apmierina<br />

divdaļības īpašību un ievērosim, ka nepāra garuma ciklā vismaz divām virsotnēm ir jāpieder<br />

vienai virsotņu sadalījuma kopai, tātad ir iegūta pretruna. Otrādi, pieņemsim, ka grafs nesatur<br />

nepāra garuma ciklus, un pierādīsim, ka grafs ir divdaļīgs. Fiksēsim kādu grafa virsotni v un<br />

definēsim virsotņu kopas sadalījumu V (Γ) = A ∪ B šādā veidā: kopā A liksim virsotnes, kurām<br />

attālums līdz v ir pāra skaitlis (ieskaitot arī v), un kopā B liksim virsotnes, kurām attālums līdz<br />

v ir nepāra skaitlis. Pierādīsim, ka nav šķautņu starp vienas apakškopas virsotnēm. Pieņemsim<br />

pretējo: eksistē divas virsotnes u un w, kas atrodas vienā kopā (A vai B) un ir savienotas.<br />

Neviena no šīm virsotnēm nevar būt vienāda ar v. Pieņemsim, ka P u ir īsākā (v, u) - ķēde un<br />

P w ir īsākā (w, v) - ķēde. Ievērosim, ka šo ķēžu garumu summa ir pāra skaitlis. Savienojot P u ,<br />

šķautni (u, w) un P w , iegūsim ciklu, kura garums ir nepāra skaitlis, kas ir pretruna. QED<br />

Piemērs 3.105. Ciklomātisko skaitli izmanto programmatūras kompleksitātes mērīšanai šādā<br />

veidā. Uzzīmēsim programmas blokshēmu un noteiksim tās ciklomātisko skaitli. Šis skaitlis<br />

nosaka programmas izpildes gaitas grafa neatkarīgo ciklu skaitu. Programmas blokshēmas ciklomātiskais<br />

skaitlis norāda, piemēram, to, kādai ir jābūt tās testēšanas programmai - šai programmai<br />

ir jābūt tādai, lai testēšanas laikā tiktu apieti visi testējamās programmas blokshēmas<br />

cikli.<br />

3.11.2. Eilera un Hamiltona cikli. Apskatīsim divus ciklu speciālgadījumus. Par grafa<br />

Eilera ciklu sauksim ciklu, kas satur katru šķautni tieši vienu reizi. Par grafa Eilera ķēdi sauksim<br />

ķēdi, kas satur katru šķautni tieši vienu reizi. Ja grafā eksistē Eilera cikls, tad to sauksim par<br />

Eilera grafu. Par orientēta grafa virzītu Eilera ciklu sauksim virzītu ciklu, kas satur katru šķautni<br />

tieši vienu reizi. 18.gs vidū, pateicoties L. Eilera darbiem matemātikas popularizēšanā (skatīt<br />

uzdevumu par Kēnigsbergas tiltiem), matemātiķu vidū radās interese par Eilera cikliem.


3.11. CIKLI 128<br />

Piemērs 3.106.<br />

1<br />

4<br />

6<br />

3<br />

5<br />

2<br />

3.52. attēls. Eilera cikla piemērs<br />

Teorēma 3.107. Ja grafs Γ = (V, E) ir sakarīgs un netriviāls, tad šādi apgalvojumi ir<br />

ekvivalenti:<br />

1) Γ ir Eilera grafs;<br />

2) grafā Γ katras virsotnes pakāpe ir pāra skaitlis;<br />

3) grafa Γ šķautņu kopu var sadalīt ciklu apvienojumā.<br />

Pierādījums. Pierādīsim šo teorēmu ar cikla palīdzību.<br />

(1) → (2) katrā virsotnē Eilera cikls ieiet un iziet vienādu skaitu reižu, tāpēc katras<br />

virsotnes pakāpe ir pāra skaitlis.<br />

(2) → (3) Γ ir sakarīgs un netriviāls grafs, tāpēc katras virsotnes pakāpe ir pozitīva un<br />

2|E| = ∑ v∈V<br />

d(v) ≥ 2|V |,<br />

tātad<br />

|E| > |V | − 1<br />

un Γ satur vismaz vienu ciklu Z 1 . Γ − Z 1 ir skeletāls apakšgrafs, kura visu virsotņu<br />

pakāpes ir pāra skaitļi (ignorējam izolētās virsotnes). Γ − Z 1 apmierina tos pašus<br />

nosacījumus, kurus apmierina Γ, tāpēc tajā eksistē cikls, kuru izmetam ārā utt. Beigās<br />

pec galīga soļu skaita iegūsim bezšķautņu grafu.<br />

(3) → (1) No dotajiem cikliem pakāpeniski konstruējam lielo Eilera ciklu, izmantojot<br />

faktu, ka divu ciklu šķautņu kopu simetriskā starpība ir cikls.<br />

QED<br />

Apzīmēsim ar G(n) - dažādu grafu kopu ar n virsotnēm, ar E(n) - Eilera grafu kopu ar n<br />

virsotnēm.<br />

Teorēma 3.108.<br />

(Eilera grafu ”gandrīz nav”).<br />

|E(n)|<br />

lim<br />

n→∞ |G(n)| = 0<br />

Pierādījums. Šajā pierādījumā uzskatīsim, ka grafam ar n virsotnēm virsotņu kopa ir {1, ..., n}.<br />

Tā kā grafu ar n virsotnēm pilnībā nosaka tā šķautņu kopa, kas ir apakškopa šķautņu kopas<br />

universā ar Cn 2 elementiem, tad<br />

|G(n)| = 2 C2 n = 2<br />

n(n−1)<br />

2 .<br />

Apzīmēsim ar F (n) visu tādu grafu kopu ar n virsotnēm, kuriem katras virsotnes pakāpe ir pāra<br />

skaitlis. Redzam, ka E(n) ⊆ F (n), tātad |E(n) ≤ |F (n)|. Definēsim funkciju<br />

ϕ : G(n − 1) → F (n)<br />

šādā veidā. Katram grafam Γ ar n − 1 virsotni piekārtosim grafu no kopas F (n), kur atšķiras no<br />

Γ ar vienu (n-to) virsotni, kura ir savienota ar tām Γ virsotnēm, kurām ir nepāra pakāpe. Tā


3.11. CIKLI 129<br />

3.53. attēls. Hamiltona cikls dodekaedra grafā<br />

3.54. attēls. Hamiltona cikls kuba grafā<br />

kā katram grafam virsotņu skaits ar nepāra pakāpēm ir pāra skaitlis, tad funkcija ϕ ir korekti<br />

definēta. Var redzēt, ka funkcija ϕ ir sirjektīva, tāpēc |F (n)| ≤ |G(n − 1)|. Aprēķināsim robežu:<br />

tātad<br />

QED<br />

|E(n)|<br />

lim<br />

n→∞ |G(n)| ≤ lim |G(n − 1)|<br />

n→∞ |G(n)|<br />

|E(n)|<br />

lim<br />

n→∞ |G(n)| = 0.<br />

= lim<br />

n→∞<br />

2 −(n−1) = 0,<br />

Piemērs 3.109. De Bruijna kodu var interpretēt kā Eilera ciklu. Definēsim orientētu grafu<br />

D(p, n), kura virsotnes ir visas virknes ar garumu n − 1 alfabētā {0, 1, ..., p − 1} un no katras<br />

virsotnes, kas atbilst virknei (a 1 , ..., a n−1 ), iziet p orientētas šķautnes uz virsotnēm (a 2 , ..., a n−1 , b).<br />

Var parādīt, ka ar visām parametru vērtībām grafs D(p, n) ir virzīts Eilera grafs.<br />

Par grafa Hamiltona ciklu sauksim ciklu, kas satur katru virsotni tieši vienu reizi. Par<br />

grafa Hamiltona ķēdi sauksim ķēdi, kas satur katru virsotni tieši vienu reizi. Ja grafā eksistē<br />

Hamiltona cikls, tad to sauksim par Hamiltona grafu. Par virzītu Hamiltona ciklu sauksim<br />

virzītu ciklu, kas satur katru virsotni tieši vienu reizi. Par Hamiltona ciklu teorijas sākumu<br />

tiek uzskatīts matemātiķa V.Hamiltona uzdevums par dodekaedra grafa virsotņu apiešanu tā,<br />

lai katra virsotne tiek atzīmēta tieši vienu reizi. Var pierādīt, ka Hamiltona uzdevumam ir viens<br />

atrisinājums ar precizitāti līdz grafa automorfismam.<br />

Piemērs 3.110. Kuba grafam H 3 arī ir viens Hamiltona cikls ar precizitāti līdz automorfismam.<br />

Piemērs 3.111.<br />

Hiperkubam H 4 ir 9 Hamiltona ciklu klases.<br />

Viegli redzēt, ka Hamiltona grafam nevar būt šarnīri, tātad Hamiltona grafs ir 2-sakarīgs.<br />

Šim vienkāršajam novērojumam ir vispārinājums: ja Γ = (V, E) ir Hamiltona grafs un U ⊆ V ,<br />

tad grafam Γ − U ir ne vairāk kā |U| komponentes. Grafu, kas apmierina šādu nosacījumu,<br />

sauksim par stingru grafu.<br />

Nākamā teorēma rāda, ka grafs ir Hamiltona grafs, ja virsotņu pakāpes ir pietiekoši lielas.


3.11. CIKLI 130<br />

3.55. attēls. Grafa H 4 Hamiltona ciklu klases<br />

V 0<br />

... V j<br />

V j + 1<br />

... V k<br />

3.56. attēls. Ilustrācija teorēmas 3.112. pierādījumam<br />

Teorēma 3.112. Ja grafam Γ = (V, E) izpildās nosacījumi |V | ≥ 3 un δ(Γ) ≥ |V | , tad Γ ir<br />

2<br />

Hamiltona grafs.<br />

Pierādījums. Γ ir sakarīgs, jo pretējā gadījuma mazākajā komponentē virsotņu pakāpes būtu<br />

lielākas nekā komponentes virsotņu skaits. Pieņemsim, ka virsotņu virkne K = (v 0 , ..., v k ) ir<br />

garākā ķēde grafā Γ. No ķēdes K maksimalitātes seko, ka visas virsotnes, kas ir savienotas ar<br />

v 0 vai v k , pieder virknei K, tātad vismaz |V | no virsotnēm {v<br />

2 0 , ..., v k−1 } ir savienotas ar v k un<br />

vismaz |V | virsotnēm v<br />

2 i ∈ {v 1 , ..., v k−1 } piemīt šāda īpašība: v i+1 un v 0 ir savienotas. No Dirihlē<br />

principa seko, ka eksistē virsotne v j , kas apmierina abus nosacījumus: Var redzēt, ka virsotņu


3.11. CIKLI 131<br />

V<br />

V<br />

V 0<br />

... V j<br />

V j + 1<br />

... V l<br />

... V k<br />

V 0<br />

... V j<br />

V j + 1<br />

V l<br />

...<br />

V k<br />

(a)<br />

3.57. attēls. Ilustrācija teorēmas 3.112. pierādījumam<br />

(b)<br />

V<br />

V<br />

V i<br />

V i<br />

V i+1<br />

V i+1<br />

3.58. attēls. Ilustrācija teorēmas 3.113. pierādījumam<br />

virkne<br />

H = (v 0 , v j+1 , v j+2 , ..., v k , v j , v j−1 , ..., v 0 )<br />

ir Hamiltona cikls, tāpēc ka pretējā gadījumā šis cikls varētu tikt pārveidots par ķēdi, kuras<br />

garums ir lielāks nekā ķēdes K garums, pievienojot šim ciklam ar vienas šķautnes palīdzību<br />

kādu no kopas V \{v 0 , ..., v k } virsotnēm, vismaz viena šāda šķautne eksistē, tā kā grafs Γ ir<br />

sakarīgs (skatīt 3.57.(b) attēlā) QED<br />

Eksistē arī kritērijs, kas raksturo grafu, izmantojot tā sakarīgumu κ un neatkarības skaitli α.<br />

Teorēma 3.113. Ja grafam Γ = (V, E) izpildās nosacījumi |V | ≥ 3 un κ(Γ) ≥ α(Γ), tad Γ<br />

ir Hamiltona grafs.<br />

Pierādījums. Apzīmēsim κ(Γ) ar k un pieņemsim, ka virsotņu virkne<br />

Z = (v 0 , ..., v n−1 , v 0 )<br />

atbilst garākajai ķēdei grafā Γ. Pieņemsim, ka Z nav Hamiltona cikls un eksistē virsotne v ∉ Z.<br />

Apskatīsim (v, Z)-vēdekļus, citiem vārdiem sakot, virsotņu šķirtu ķēžu kopas, kuras savieno<br />

virsotni v ar Z virsotnēm. No visiem šādiem vēdekļiem izvēlēsimies to, kuram galapunktu kopa<br />

(Z apakškopa) ir ar maksimālu elementu skaitu. Apzīmēsim šādu vēdekli ar F un tā ķēžu<br />

galapunktu kopu ar W ⊆ Z. Ievērosim, ka v nav savienota ne ar kādu Z virsotni, kas nav<br />

kopā W un |W | ≥ min(k, |Z|) saskaņā ar Mengera teorēmu. Tālāk uzskatīsim, ka C virsotnes ir<br />

cikliski sanumurētas ar kopas {0, ..., n} elementiem, kurus mēs uzskatīsim par atlikumu klasēm.<br />

Ievērosim, ka divas savienotas cikla virsotnes v i un v i+1 nevar abas piederēt kopai W , tāpēc, ka<br />

pretējā gadījumā mēs iegūtu garāku ciklu nekā Z.<br />

Tātad |W | < |Z| un |W | ≥ k. Ievērosim, ka, ja ir dotas divas virsotnes v i un v j kopā W , tad<br />

virsotnes v i+1 un v j+1 nav savienotas tāpēc, ka pretējā gadījuma mēs iegūsim garāku ciklu nekā<br />

Z.<br />

Tātad virsotņu kopas<br />

W ′ = {v i+1 |v i ∈ W } ⋃ v<br />

inducētais apakšgrafs ir bezšķautņu grafs ar vismaz k + 1 virsotni, kas ir pretrunā ar doto<br />

nosacījumu k ≥ α. Tātad cikls Z ir Hamiltona cikls. QED<br />

Grafu sauksim par teta grafu, ja to var iegūt no grafa K 2,3 , pielietojot dažas šķautņu<br />

sadalīšanas operācijas, nosaukums ir saistīts ar to, ka teta grafs izskatās, kā grieķu alfabēta<br />

burts θ.


3.11. CIKLI 132<br />

V i+1<br />

V j+1<br />

V j<br />

V i<br />

V i+1<br />

V j+1<br />

V j<br />

V i<br />

3.59. attēls. Ilustrācija teorēmas 3.113. pierādījumam<br />

3.60. attēls. Teta grafs<br />

Var pierādīt, ka, ja grafs nav Hamiltona grafs un ir ”pietiekoši” sakarīgs, tad tas satur apakšgrafu,<br />

kas ir teta grafs.<br />

Teorēma 3.114. Ja grafs Γ = (V, E) ir 2-sakarīgs un nav Hamiltona grafs, tad tas satur<br />

apakšgrafu, kas ir teta grafs.<br />

Pierādījums. Pieņemsim, ka Z ir maksimāls vienkāršs cikls, pēc pieņēmuma Z nesatur visas<br />

grafa virsotnes. Var pārbaudīt, ka visi 2-sakarīgi grafi ar ne vairāk kā 4 virsotnēm ir Hamiltona<br />

grafi, tātad V ≥ 5. Ja grafs ir 2-sakarīgs un satur vismaz 5 virsotnes, tad tā maksimālais cikls<br />

nevar saturēt 3 virsotnes. Tā kā grafs ir 2-sakarīgs, tad eksistē virsotne v ārpus C un divas<br />

virsotņu šķirtas ķēdes no v līdz Z. Šo divu ķēžu galapunkti nevar būt savienoti ciklā Z, jo tādā<br />

gadījumā mēs iegūtu garāku ķēdi. Apvienojot Z un šīs divas ķēdes, iegūsim teta grafu. QED<br />

Hamiltona cikla meklēšanu var reducēt uz kliķes skaitļa atrašanu šādā veidā. Definēsim<br />

divu grafu Vizinga reizinājumu. Ja doti divi grafi Γ = (V, E) un Γ ′ = (V ′ , E ′ ) ar nosacījumu<br />

|V | ≥ |V ′ |, tad to Vizinga reizinājums ir grafs Γ♦Γ ′ = (V × V ′ , F ), kur šķautņu kopa F tiek<br />

definēta šādi:<br />

• divas virsotnes (v 1 , v 1) ′ un (v 2 , v 2) ′ netiek savienotas, ja v 1 = v 2 vai v 1 = v 2 ;<br />

• ja v 1 ≠ v 2 un v 1 ′ ≠ v 2, ′ tad virsotnes (v 1 , v 1) ′ un (v 2 , v 2) ′ tiek savienotas tad un tikai tad,<br />

ja (v 1 , v 2 ) ∈ E un (v 1, ′ v 2) ′ ∈ E ′ , vai arī (v 1 , v 2 ) /∈ E un (v 1, ′ v 2) ′ /∈ E ′ .<br />

Var redzēt, ka<br />

α(Γ♦Γ ′ ) ≤ min(|V |, |V ′ |) = |V ′ |,<br />

tāpēc ka nekāda kliķe nevar saturēt divas virsotnes ar vienādu pirmo vai otro koordināti. Pierādīsim<br />

arī stiprāku apgalvojumu.<br />

Teorēma 3.115. α(Γ♦Γ ′ ) = |V ′ | tad un tikai tad, ja Γ satur apakšgrafu, kas ir izomorfs<br />

grafam Γ ′ .<br />

Pierādījums. Vienkāršības dēļ pieņemsim, ka V = {1, ..., n} un V ′ = {1, ..., m}. Pieņemsim,<br />

ka Γ satur apakšgrafu Γ ′′ = (V ′′ , E ′′ ), kas ir izomorfs grafam Γ ′ , un šis izomorfisms f : V ′ → V ′′<br />

ir tāds, ka f(1) = i 1 , ..., f(m) = i m . Pierādīsim, ka grafa Γ♦Γ ′ inducētais apakšgrafs ar virsotņu


3.12. NEATKARĪGUMS 133<br />

kopu U = {(i 1 , 1), (i 2 , 2), ..., (i m , m)} ir pilns. Ja (u ′ , v ′ ) ∈ E ′ , tad (i u ′, i v ′) ∈ E un, otrādi, ja<br />

(u ′ , v ′ ) /∈ E ′ , tad (i u ′, i v ′) /∈ E. Tādējādi redzam, ka jebkuras divas virsotnes no kopas U ir<br />

savienotas.<br />

Pierādīsim otro implikāciju. Pieņemsim, ka grafs Γ♦Γ ′ satur kliķi (pilnu inducētu apakšgrafu)<br />

ar virsotņu kopu W = {(j 1 , 1), (j 2 , 2), ..., (j m , m)}. Tad funkcija f : V ′ → V ′′ , kas definēta ar<br />

nosacījumu f(k) = j k ir grafu izomorfisms. QED<br />

Hamiltona cikla meklēšana ir grūts uzdevums, nav zināmi algoritmi, izņemot visu variantu<br />

pārmeklēšanu. Praktiski Hamiltona ciklus meklē, izmantojot meklēšanu ar atkāpšanos (bektrekingu)<br />

un heiristiskus algoritmus. Metodi vai algoritmu sauksim par heiristisku, ja tā pareizība<br />

nav stingri pierādīta.<br />

Piemērs 3.116. Greja kodu var interpretēt kā Hamiltona ciklu hiperkuba H n grafā.<br />

Apzīmēsim ar H(n) visu Hamiltona grafu kopu ar n virsotnēm. Var pierādīt, ka<br />

(”gandrīz visi” grafi ir Hamiltona grafi).<br />

|H(n)|<br />

lim<br />

n→∞ |G(n)| = 1<br />

3.12. NEATKARĪGUMS<br />

Sekojot tradīcijām, teiksim, ka virsotne sedz tai incidentās šķautnes un šķautne sedz tai<br />

incidentās virsotnes. Virsotņu kopu, kas sedz visas grafa šķautnes, sauksim par grafa virsotņu<br />

segumu. Elementu skaitu minimālā virsotņu segumā sauksim par grafa virsotņu seguma skaitli,<br />

apzīmēsim to ar α 0 (Γ). Šķautņu kopu, kas sedz visas grafa virsotnes, sauksim par grafa šķautņu<br />

segumu. Elementu skaitu minimālā šķautņu segumā sauksim par grafa šķautņu seguma skaitli,<br />

apzīmēsim to ar α 1 (Γ).<br />

Virsotņu kopu sauksim par neatkarīgu, ja nekādas divas no tām nav savienotas. Elementu<br />

skaitu maksimālā neatkarīgā virsotņu kopā sauksim par grafa virsotņu neatkarības skaitli, β 0 (Γ).<br />

Maksimālu neatkarīgu virsotņu kopu sauksim arī par kodolu. Šķautņu kopu sauksim par neatkarīgu,<br />

ja nekādas divas no tām nav incidentas. Elementu skaitu maksimālā neatkarīgā šķautņu<br />

kopā sauksim par grafa šķautņu neatkarības skaitli, β 1 (Γ). Neatkarīgu šķautņu kopu sauksim<br />

par perfektu, ja tā sedz visas grafa virsotnes. Perfekta neatkarīga šķautņu kopa var eksistēt tikai<br />

tad, ja grafa virsotņu skaits ir pāra skaitlis.<br />

Teorēma 3.117. Katram grafam Γ = (V, E) ir spēkā sakarība<br />

α 0 (Γ) ≥ ∑ 1<br />

1 + d(v) .<br />

v∈V<br />

Pierādījums. Pilniem grafiem ir spēkā vienādība, tāpēc uzskatīsim, ka grafs nav pilns. Izmantosim<br />

pastiprināto matemātisko indukciju ar virsotņu skaitu kā indukcijas argumentu. Indukcijas<br />

bāze ir patiesa, jo nevienādību var viegli pārbaudīt uz grafiem, kuru virsotņu skaits<br />

nepārsniedz 2. Izdarīsim indukcijas pieņēmumu: pieņemsim, ka nevienādība ir patiesa visiem<br />

grafiem, kuru virsotņu skaits ir mazāks nekā k. Fiksēsim grafu Γ = (V, E), kuram |V | = k.<br />

Apskatīsim virsotni t, kuras pakāpe ir minimāla. Tā kā grafs Γ nav pilns, tad t ∪ N(t) ≠ V .<br />

Definēsim Γ ′ = Γ−(t∪N(t)) (izdzēsīsim grafā Γ kopas t∪N(t) virsotnes). Saskaņā ar indukcijas<br />

pieņēmumu, grafā Γ ′ izpildās pierādāmā nevienādība. Pieņemsim, ka U ir neatkarīga virsotņu<br />

kopa grafā Γ ′ ar maksimālu virsotņu skaitu. Kopa t ∪ U ir neatkarīga grafā Γ, tāpēc mums ir<br />

jāpierāda, ka summa<br />

S 1 = ∑ 1<br />

1 + d Γ (v)<br />

v∈V<br />

nepārsniedz summu<br />

S 2 =<br />

∑<br />

v∈V (Γ ′ )<br />

1<br />

1 + d Γ ′(v) .


3.12. NEATKARĪGUMS 134<br />

Apzīmēsim ar W to virsotņu kopas V apakškopu, kuras ir savienotas ar kādu no kopas N(t)<br />

virsotnēm. Locekļi summās S 1 un S 2 , kas atbilst virsotnēm no kopas V (Γ ′ )\W , ir vienādi, bet<br />

locekļi summā S 1 , kas atbilst virsotnēm no kopas W , ir mazāki nekā atbilstošie locekļi summā<br />

S 2 . Tādējādi mums ir jāpierāda, ka pārējo summas S 1 locekļu summa nepārsniedz 1:<br />

1<br />

1 + d Γ (t) + ∑<br />

u∈N(t)<br />

1<br />

1 + d Γ (u)<br />

?<br />

≤ 1.<br />

Tā kā virsotnes t pakāpe ir minimāla, tad d Γ (t) ≤ d Γ (u) visiem u ∈ N(t), tāpēc<br />

1<br />

1 + d Γ (t) + ∑ 1<br />

1 + d Γ (u) ≤ 1<br />

1 + d Γ (t) + d 1<br />

Γ(t) ·<br />

1 + d Γ (t) = 1.<br />

QED<br />

kur<br />

u∈N(t)<br />

Secinājums 3.5. Katram grafam Γ = (V, E) ir spēkā sakarība<br />

(vidējā aritmētiskā pakāpe).<br />

α 0 (Γ) ≥ |V |<br />

1 + d ,<br />

d = 1<br />

|V |<br />

∑<br />

d(v)<br />

Pierādījums. Izmantosim Košī-Buņakovska nevienādību<br />

n∑<br />

n∑<br />

n∑<br />

x i y i ≤ ( x 2 i ) 1/2 ( yi 2 ) 1/2 .<br />

Redzam, ka<br />

tāpēc<br />

Beidzot iegūstam, ka<br />

QED<br />

( ∑ v∈V<br />

|V | 2 ≤ ∑ v∈V<br />

i=1<br />

i=1<br />

v∈V<br />

i=1<br />

(1 + d(v)) 1/2<br />

(1 + d(v)) 1/2 )2 ≤ ∑ (1 + d(v)) ∑<br />

v∈V<br />

v∈V<br />

(1 + d(v)) ∑ v∈V<br />

α 0 (Γ) ≥<br />

1<br />

1 + d(v) ≤ α 0(Γ) ∑ v∈V<br />

|V | 2<br />

|V | + |V |d = |V |<br />

1 + d .<br />

1<br />

1 + d(v) ,<br />

(1 + d(v)).<br />

Teorēma 3.118. Jebkuram netriviālam sakarīgam grafam Γ = (V, E) ar |V | virsotnēm un<br />

|E| šķautnēm ir spēkā vienādība<br />

α 0 (Γ) + β 0 (Γ) = α 1 (Γ) + β 1 (Γ) = V.<br />

Pierādījums. Ja U ir minimāls virsotņu segums, tad V \U ir neatkarīga virsotņu kopa, tāpēc<br />

|V \U| ≤ β 0<br />

un<br />

α 0 + β 0 ≥ |V |.<br />

Ja W ir maksimāla neatkarīga virsotņu kopa, tad V \W ir virsotņu segums un<br />

α 0 + β 0 ≤ |V |.<br />

Ja U ′ ir minimāls šķautņu segums, tad ievērosim, ka U ′ nesatur ķēdes ar garumu lielāku kā 3,<br />

tātad U’ ir m koku ar diametru 1 un 2 apvienojums. Redzam, ka<br />

m∑<br />

|U ′ | = n i ,<br />

i=1


3.12. NEATKARĪGUMS 135<br />

kur n i ir šķautņu skaits i-tajā kokā. Tā kā i-tajā kokā ir n i + 1 virsotne, tad<br />

m∑<br />

|V | = (n i + 1) = m + α 1 .<br />

i=1<br />

Maksimālā neatkarīgā šķautņu kopā elementu skaits ir lielāks kā m, tā kā dažādu koku šķautnes<br />

ir neatkarīgas, tātad<br />

α 1 + β 1 ≥ α 1 + m = |V |.<br />

Beidzot pieņemsim, ka W ′ ir maksimāla neatkarīga šķautņu kopa. Ievērosim, ka kopa W ′ nosedz<br />

2β 1 virsotnes un nenosegtas paliek |V | − 2β 1 virsotnes. Konstruēsim šķautņu segumu W ′ ∪ T ,<br />

kur T satur |V | − 2β 1 šķautnes, katra no kurām nosedz vismaz vienu no kopas W ′ nenosegtajām<br />

virsotnēm. Tātad<br />

|W ′ ∪ T | = β 1 + |V | − 2β 1 ≤ α 1<br />

un<br />

α 1 + β 1 ≤ |V |.<br />

QED<br />

Pieņemsim, ka Γ = (V, E) - orientēts grafs. Virsotņu kopu S ⊆ V sauksim par dominējošu,<br />

ja<br />

S ⋃ Γ(S) = V,<br />

citiem vārdiem sakot, jebkurai virsotnei v ∈ V vai nu v ∈ S, vai arī eksistē virsotne s ∈ S<br />

un šķautne (v, s) ∈ E. Atcerēsimies, ka neorientētos grafus var uzskatīt par orientēto grafu<br />

speciālgadījumu, un tāpēc dotā dominējošās kopas definīcija der arī neorientētiem grafiem.<br />

Teorēma 3.119. Neatkarīga virsotņu kopa ir maksimāla tad un tikai tad, ja tā ir dominējoša.<br />

Pierādījums. Pieņemsim, ka grafa Γ = (V, E) virsotņu kopas apakškopa S ir maksimāla<br />

neatkarīga virsotņu kopa. Pieņemsim, ka tā nav dominējoša. Tad eksistē virsotne v, kas atrodas<br />

attālumā lielākā kā 1 no visām kopas S virsotnēm. Šo virsotni var pievienot kopai S, saglabājot<br />

neatkarību, kas ir pretruna. Pieņemsim, ka S ir neatkarīga dominējoša kopa, kas nav maksimāla<br />

neatkarīga virsotņu kopa. Tad eksistē virsotne w, kas nav savienota ne ar vienu kopas S virsotni,<br />

tas ir, atrodas attālumā lielākā kā 1 no visām S virsotnēm. Tas ir pretrunā ar pieņēmumu, ka<br />

S ir dominējoša kopa. QED<br />

Pielietojumos svarīgs uzdevums ir atrast dominējošo kopu ar minimālo virsotņu skaitu dotajā<br />

grafā.<br />

Piemērs 3.120. Izmantojot neatkarīgas šķautņu kopas jēdzienu, var iekodēt šāda ǧeometriska<br />

kombinatorikas uzdevuma objektus. Pieņemsim, ka mums ir dots taisnstūris ar izmēriem n × m,<br />

kur vismaz viens no n vai m ir pāra skaitlis, uzskatīsim ka taisnstūris ir sadalīts 1 × 1 rūtiņās.<br />

Mēǧināsim noklāt šādu taisnstūri ar 1 × 2 domino figūrām. Iekodēsim taisnstūri kā grafu, kura<br />

virsotnes ir tā rūtiņu ǧeometriskie centri un šķautnes savieno divas virsotnes tad un tikai tad, ja<br />

atbilstošajām rūtiņām ir kopīga ǧeometriskā šķautne. Var redzēt, ka katrai perfektai neatkarīgai<br />

šķautņu kopai grafā savstarpēji viennozīmīgi atbilst taisnstūra noklājums ar domino figūrām.<br />

Piemērs 3.121. Iepriekšējā piemēra kombinatorikas uzdevuma atrisinājumus var iekodēt arī<br />

izmantojot neatkarīgas virsotņu kopas jēdzienu. Tāpat kā iepriekšējā piemērā pieņemsim, ka<br />

mums ir dots taisnstūris ar izmēriem n × m, kur vismaz viens no n vai m ir pāra skaitlis,<br />

uzskatīsim ka tas ir sadalīts 1 × 1 rūtiņās. Atkal mēǧināsim noklāt šādu taisnstūri ar 1 × 2<br />

domino figūrām. Konstruēsim grafu Γ, kura virsotnes ir visi sakārtoti trijnieki (x, y, p), kur x un<br />

y ir rūtiņas centra koordinātes, ja taisnstūrī var ievietot domino figūru tā, ka tās kreisās augšējās<br />

rūtiņas centram ir koordinātes (x, y), p = 0, ja var ievietot domino figūru vertikāli un p = 1, ja<br />

var ievietot domino figūru horizontāli. Savienosim virsotnes (x 1 , y 1 , p 1 ) un (x 2 , y 2 , p 2 ) ar šķautni,<br />

ja domino kauliņiem, kas atbilst šiem kodiem, ir kopīga rūtiņa. Var redzēt, ka pareizs taisnstūra<br />

noklājums ar domino kauliņiem savstarpēji viennozīmīgi atbilst neatkarīgai virsotņu kopai grafā<br />

Γ, kas satur nm 2<br />

elementus.


3.13. PLANARITĀTE 136<br />

Grafa virsotņu kopu var mēǧināt sadalīt apakškopu apvienojumā tā, lai katrā apakškopā<br />

virsotnes būtu neatkarīgas. Tradicionāli šādu procedūru sauc par grafu krāsošanu. Par grafa<br />

virsotņu krāsojumu (krāsojumu) sauksim funkciju no grafa virsotņu kopas uz krāsu kopu, tādu,<br />

ka nekādām divām savienotām virsotnēm nav piekārtota viena krāsa. Mazāko krāsu skaitu,<br />

ar kuru dotajam grafam eksistē krāsojums, sauksim par grafa virsotņu hromatisko skaitli, to<br />

apzīmēsim ar χ(Γ). Grafu Γ sauksim par k-krāsojamu, ja k ≥ χ(Γ). Grafu sauksim par k-<br />

hromatisku, ja k = χ(Γ). Par grafa hromatisko polinomu sauksim funkciju π Γ : V → N,<br />

kur π Γ (i) ir dažādo grafa krāsojumu skaits ar i krāsām. Grafu Γ sauksim par perfektu, ja tā<br />

katram inducētam apakšgrafam γ ′ ⊆ Γ izpildās nosacījums χ(Γ ′ ) = ω(Γ ′ ). Līdzīgi var definēt<br />

grafa šķautņu krāsojumu un ar to saistītās īpašības. Par grafa šķautņu krāsojumu sauksim<br />

funkciju no grafa šķautņu kopas uz krāsu kopu, tādu, ka nekādām divām incidentām šķautnēm<br />

nav piekārtota viena krāsa. Mazāko krāsu skaitu, ar kuru dotajam grafam Γ eksistē šķautņu<br />

krāsojums, sauksim par grafa šķautņu hromatisko skaitli, apzīmēsim to ar χ 1 (Γ).<br />

Teorēma 3.122. 1) χ ≤ 1 + ∆;<br />

2) |V |<br />

β 0<br />

≤ χ ≤ |V | − β 0 + 1;<br />

3) 2 √ |V | ≤ χ(Γ) + χ(Γ) ≤ |V | + 1;<br />

|V |+1<br />

4) |V | ≤ χ(Γ)χ(Γ) ≤ ( ) 2 .<br />

|V |<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

Piemērs 3.123. Augstskolā tiek organizētas vairākas nodarbības tā, lai katrs students var<br />

piedalīties vienā nodarbībā. Katram studentam obligāti ir jāpiedalās katrā viņam/viņai paredzētā<br />

nodarbībā. Katra nodarbība ilgst fiksētu laika intervālu. Kāds ir minimāli iespējamais laiks, kas<br />

ir nepieciešams, lai notiktu visas nodarbības, kas ir nepieciešamas studentiem? Modelēsim šo<br />

uzdevumu ar grafu Γ, kura virsotnes ir nodarbības un šķautnes savieno divas nodarbības tad un<br />

tikai tad, ja vismaz viens students piedalās abās nodarbībās. Var redzet, ka minimālais laiks ir<br />

vienāds ar χ(Γ).<br />

3.13. PLANARITĀTE<br />

Grafu sauksim par plakanu, ja tas ir uzzīmēts plaknē tā, ka šķautnes nekur nekrustojas,<br />

izņemot virsotnes. Grafu sauksim par planāru, ja to var uzzīmēt plaknē tā, ka šķautnes krustojas<br />

tikai galapunktos. Planāra grafa pārveidošanu par plakanu grafu sauksim par plakanizāciju.<br />

Viegli redzēt, ka katrs planāra grafa apakšgrafs ir planārs. Sakarīgs grafs ir planārs tad un tikai<br />

tad, ja katrs tā bloks ir planārs.<br />

Piemērs 3.124. Pierādīsim, ka grafs K 5 nav planārs. Jebkurš tā inducētais apakšgrafs, kas<br />

satur četras virsotnes, ir planārs, tāpēc to var attēlot plaknē kā plakanu grafu. Pēdējā piektā<br />

virsotne var atrasties vai nu ārējā skaldnē, vai arī vienā no iekšējām skaldnēm. Šī virsotne ir<br />

jāsavieno ar katru no pārējām četrām virsotnēm, un katrā no šiem diviem gadījumiem eksistē<br />

viena virsotne, kuru nevar savienot ar piekto virsotni tā, lai nekrustotu pilnā grafa K 4 šķautnes.<br />

Piemērs 3.125. Pierādīsim, ka grafs K 3,3 nav planārs. Jebkurš tā apakšgrafs, kas satur visas<br />

virsotnes un visas šķautnes, izņemot vienu, ir planārs, tāpēc to var attēlot plaknē kā plakanu<br />

grafu. Pēdējā šķautne savieno divas pretējās virsotnes, un tā var atrasties vai nu ārējā skaldnē,<br />

vai divās iekšējās skaldnēs. Katrā no šiem diviem gadījumiem pēdējā šķautne krusto vismaz<br />

vienu no pārējām šķautnēm.<br />

Par grafa biezumu sauksim tā minimālu planāru apakšgrafu skaitu, kuru apvienojums ir<br />

vienāds ar doto grafu. Par plakana grafa skaldni sauksim plaknes apgabalu, ko norobežo šķautnes<br />

un kurš nesatur virsotnes vai šķautnes (ieskaitot ārējo apgabalu), planāra grafa Γ skaldņu skaitu<br />

apzīmēsim ar r(Γ). Var redzēt, ka katram plakanam grafam ir tieši viena neierobežota skaldne,<br />

kuru sauksim par ārējo skaldni, pārējās skaldnes sauksim par iekšējām. Var redzēt arī, ka planāru


3.13. PLANARITĀTE 137<br />

6<br />

7<br />

6<br />

7<br />

5<br />

8<br />

2<br />

3<br />

2<br />

3<br />

1<br />

4<br />

1<br />

4<br />

(a)<br />

5<br />

8<br />

2<br />

4<br />

5<br />

2<br />

1<br />

3<br />

4<br />

5<br />

1<br />

3<br />

6<br />

6<br />

(b)<br />

3.61. attēls. Planāru grafu plakanizācijas piemēri<br />

V 1<br />

V 2<br />

V 3<br />

V 5<br />

V 4<br />

V 5<br />

V 5<br />

V 1<br />

V 2<br />

V 3<br />

V 1<br />

V 2<br />

V 3<br />

V 4<br />

3.62. attēls. Ilustrācija grafa K 5 neplanaritātes pierādījumam<br />

V 4


3.13. PLANARITĀTE 138<br />

V 1<br />

V 5<br />

V 1<br />

V 6<br />

V 2<br />

V 5<br />

V 2<br />

V 3<br />

V 3<br />

V 4<br />

V 6<br />

V 4<br />

3.63. attēls. Ilustrācija grafa K 3,3 neplanaritātes pierādījumam<br />

grafu var uzzīmēt plaknē tā, ka izvēlēta virsotne piederēs ārējai skaldnei. Par plakana grafa<br />

duālo multigrafu sauksim multigrafu Γ ∗ , kas tiek konstruēts šādā veidā. Katrā grafa Γ skaldnē<br />

izvēlēsimies vienu punktu, visi šie punkti veidos duālā multigrafa Γ ∗ virsotņu kopu. Katrai grafa<br />

Γ šķautnei piekārtosim vienu multigrafa Γ ∗ šķautni, savienojot tās virsotnes, kurām atbilstošās<br />

skaldnes ierobežo dotā šķautne. Ievērosim, ka multigrafā Γ ∗ tiešām var būt vairākas šķautnes<br />

starp divām virsotnēm un var būt arī cilpas.<br />

3.64. attēls. Plakana grafa un tā duālā multigrafa piemērs<br />

Planāru grafu sauksim par ārēji planāru, ja to var uzzīmēt plaknē tā, ka visas tā virsotnes pieder<br />

vienai skaldnei.<br />

Planāro grafu teorija tiek pielietota tādās inženierzinātnēs kā autoceļu projektēšana, mikroshēmu<br />

projektēšana u.c.<br />

Teorēma 3.126. (Eilera formula). Sakarīgam plakanam grafam Γ = (V, E) ar |V | virsotnēm<br />

un |E| šķautnēm ir spēka formula<br />

(3.4) |V | − |E| + r(Γ) = 2.<br />

Pierādījums. Pielietosim matemātisko indukciju ar indukcijas argumentu |E|. Bāze: ja |E| =<br />

1, tad |V | = 1, r = 1 un apgalvojums acīmredzami ir patiess. Pieņemsim, ka formula ir pareiza<br />

visiem grafiem ar |E| šķautnēm (|V | virsotnēm un r skaldnēm). Pievienosim vēl vienu šķautni,<br />

iegūsim grafu ar |E ′ | = |E| + 1 šķautnēm, |V ′ | virsotnēm un r ′ skaldnēm un pierādīsim, ka<br />

formula paliek spēkā. Ja pievienotā šķautne savieno jau eksistējošas virsotnes, tad<br />

tātad<br />

|E ′ | = |E| + 1, |V ′ | = |V |, r ′ = r + 1,<br />

|V ′ | − |E ′ | + r ′ = 2.<br />

Ja pievienotā šķautne savieno jau eksistējošu virsotni ar jaunu virsotni, tad<br />

|E ′ | = |E| + 1, |V ′ | = |V | + 1, r ′ = r


un atkal izpildās vienādība<br />

QED<br />

3.13. PLANARITĀTE 139<br />

|V ′ | − |E ′ | + r ′ = 2.<br />

Secinājums 3.6. Ja Γ = (V, E) - sakarīgs planārs grafs ar vismaz 3 virsotnēm, tad<br />

|E| ≤ 3|V | − 6.<br />

Pierādījums. Katru skaldni ierobežo vismaz 3 šķautnes, katra šķautne ierobežo ne vairāk kā<br />

2 skaldnes. Apiesim katru skaldni un skaitīsim šķautnes. Pieņemsim, ka šis skaitlis ir vienāds ar<br />

N. No vienas puses,<br />

N ≥ 3r,<br />

jo katras skaldnes ieguldījums ir ne mazāks par 3. No otras puses,<br />

N ≤ 2|E|,<br />

jo katras šķautnes ieguldījums ir ne lielāks kā 2. Iegūstam, ka<br />

tātad<br />

3r ≤ 2|E|,<br />

2 = |V | − |E| + r ≤ |V | − |E| + 2|E|<br />

3<br />

un<br />

|E| ≤ 3|V | − 6.<br />

QED<br />

Grafus Γ 1 un Γ 2 sauksim par homeomorfiem, ja tos var iegūt no kāda grafa Γ ′ , veicot galīgu<br />

skaitu šķautņu sadalīšanas operāciju.<br />

Teorēma 3.127. (Kuratovska planaritātes kritērijs). Grafs ir planārs tad un tikai tad, ja<br />

tas nesatur apakšgrafu homeomorfu ar K 5 vai K 3,3 .<br />

Pierādījums. Pierādījums ir sarežǧīts un netiks dots šajā tekstā. QED<br />

80.gados izmantojot datorus, tika pierādīta šāda teorēma (teorēma par četrām krāsām) -<br />

jebkuram planāram grafam eksistē krāsojums ar četrām krāsām - ja grafs Γ ir planārs, tad<br />

χ(Γ) ≤ 4.<br />

Šīs teorēmas pierādījums tika iegūts, apskatot lielu skaitu grafu speciālgadījumu.


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 140<br />

3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI<br />

Attiecību jeb grafu plašā izmantošana praktiski visās zinātnēs un inženierpielietojumos ir<br />

radījusi nepieciešamību sistematizēt un attīstīt to algoritmu teorijas daļu, kas apkalpo grafu<br />

teorijas uzdevumus. Šajā nodaļā mēs īsi apskatīsim plašāk pielietotos grafu uzdevumus un algoritmus<br />

to risināšanai. Lai novērtētu algoritmu izpildei nepieciešamos resursus, grafu algoritmu<br />

teorijā par sākuma datu izmēriem parasti uzskata grafa virsotņu skaitu |V | un šķautņu skaitu<br />

|E|.<br />

3.14.1. Plašummeklēšana un dziļummeklēšana. Bieži risinot teorētiskus vai praktiskus<br />

uzdevumus, ir nepieciešams apiet (pārmeklēt, pārlasīt, iezīmēt) grafa virsotnes noteiktā, algoritmiskā<br />

kārtībā, izmantojot grafa šķautnes. Ir skaidrs, ka algoritms ir vajadzīgs, lai apiešanu<br />

varētu realizēt ar datora palīdzību. Šāda algoritma efektivitātes dēļ ir lietderīgi minimizēt katras<br />

virsotnes iezīmēšanas reižu skaitu, piemēram, pieprasīt, ka katra virsotne tiek iezīmēta ne vairāk<br />

kā vienu reizi. Kāda varētu būt grafu virsotņu apiešanas dabiskā kārtība? Šo uzdevumu var<br />

viegli atrisināt, ja grafs ir, piemēram, ķēde vai cikls (skatīt 3.65.attēlā).<br />

1<br />

2<br />

1 2 3 4<br />

5<br />

3<br />

3.65. attēls. Ķēdes un cikla apiešanas veidi<br />

4<br />

Ko darīt patvaļīga sakarīga grafa gadījumā? Ir vismaz divi dabiski grafu apiešanas veidi -<br />

plašummeklēšana un dziļummeklēšana. Abos algoritmos tiek pakāpeniski konstruēts orientēts<br />

koks, kuram atbilstošais neorientētais koks ir dotā grafa skelets.<br />

Plašummeklēšanu (pārlasi plašumā, breadth-first search) var aprakstīt šādā veidā. Sākam ar<br />

fiksētu virsotni v 0 , atzīmējam visas ar to savienotās virsotnes {v 1 01, v 1 02, ..., v 1 0n 1<br />

}, pilnīgi sakārtojam<br />

tās veidā v 1 01 < v 1 02 < ... < v 1 0n 1<br />

, konstruē¯jam sakārtotu koku B 1 .<br />

V 1<br />

1<br />

V 0<br />

V 1<br />

V 6<br />

V 6<br />

V 0 V V 5<br />

2<br />

V 0 V V 5<br />

2<br />

1 1 1<br />

V 7<br />

1<br />

V 7<br />

1<br />

V 9<br />

V 9<br />

V 8<br />

V 8<br />

V1 < V 4<br />

<<br />

V 5<br />

V 4<br />

V 3<br />

V 4<br />

3.66. attēls. Pirmais solis plašummeklēšanas algoritmā Petersena grafā<br />

Nākošajā solī konstruējam sakārtotu koku B 2 šādā veidā: apejam pilnīgi sakārtoto virkni<br />

{v01, 1 v02, 1 ..., v0n 1 1<br />

} tās elementu pieaugošajā kārtībā un katrai virsotnei v0i 1 atzīmējam un piekārtojam<br />

kā dēlu kopu visas virsotnes {vi1, 2 vi2, 2 ..., vin 2 1<br />

}, kas ir savienotas ar v0i 1 un vēl nav atzīmētas<br />

(skatīt 3.67.attēlā). Turpinām šo procesu, konstruējot sakārtotu koku virkni B 1 , B 2 , ..., kuras<br />

pēdējais loceklis tiek saukts par plašummeklēšanas koku. Plašummeklēšanas algoritms beidz<br />

darbu, kad ir atzīmētas visas virsotnes. Piezīmēsim, ka šis koks nav noteikts viennozīmīgi, tas<br />

ir atkarīgs no pirmās virsotnes v 0 un no katras iekšējās virsotnes dēlu sakārtojuma.<br />

V 3


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 141<br />

V 0<br />

V 1<br />

1<br />

2<br />

2<br />

1 1 1<br />

V 6<br />

V 0 V 5<br />

1<br />

V 7<br />

1<br />

V 4<br />

V 9<br />

2<br />

2<br />

2<br />

2<br />

V 8<br />

V 3<br />

V 2<br />

V 4<br />

V 1<br />

< <<br />

V 2<br />

< V 0<br />

V 3<br />

V 9<br />

V 5<br />

2 2<br />

2 2 2 2<br />

< <<br />

3.67. attēls. Pirmie divi soļi plašummeklēšanas algoritmā Petersena grafā<br />

V 7<br />

V 8<br />

Novērtēsim operāciju skaitu, kas ir nepieciešams plašummeklēšanas algoritmam. Pieņemsim,<br />

ka ir dots grafs ar |V | virsotnēm un |E| šķautnēm, kas ir uzdots ar blakusattiecības sarakstu.<br />

Plašummeklēšanas procesā katra virsotne tiek ievietota kokā vienu reizi, tātad summārais<br />

operāciju skaits ir O(|V |). Katras virsotnes blakusattiecības saraksts tiek apskatīts vienu reizi,<br />

tātad summārais operāciju skaits šajā algoritma daļā ir O(|E|). Papildus operāciju skaits grafa<br />

inicializācijai ir O(|V |). Var redzēt, ka kopējais algoritma darba laiks ir O(|V | + |E|).<br />

Izmantojot plašummeklēšanu, var atrisināt šādus uzdevumus:<br />

• noteikt, vai grafs ir sakarīgs, un atrast grafa komponenšu skaitu - to var izdarīt, veicot<br />

plašummeklēšanu no jebkuras virsotnes, grafs ir sakarīgs tad un tikai tad, ja tiek apietas<br />

visas grafa virsotnes, komponenšu skaits ir vienāds ar plašummeklēšanu skaitu, kas ir<br />

nepieciešamas, lai apietu visas virsotnes;<br />

• noteikt attālumu starp divām virsotnēm - to var izdarīt, veicot plašummeklēšanu no<br />

vienas virsotnes, attālums starp virsotnēm ir vienāds ar attālumu no sākotnējās virsotnes<br />

līdz otrai virsotnei plašummeklēšanas kokā;<br />

• nokrāsot grafa virsotnes divās krāsās, ja ir zināms, ka tas ir divdaļīgs.<br />

Vēsturiski plašummeklēšanas algoritms tika atklāts, risinot izklaidējošās matemātikas uzdevumus<br />

par ceļu meklēšanu labirintos.<br />

Vēl viens efektīvs plašummeklēšanas algoritma pielietošanas piemērs nesenā vēsturē arī ir<br />

saistīts ar izklaidējošo matemātiku. Viens no pēdējo gadu aizraujošākajiem notikumiem matemātikā<br />

ir tā saucamās ”Eternity Puzzle” spēles atrisināšana. 1999.gadā kāda britu rotaļlietu firma<br />

laida pārdošanā spēli, kuras uzdevums ir noteiktā veidā savietot 209 plakanas figūras. Par šī<br />

uzdevuma atrisināšanu gada laikā pirmā iesūtītā risinājuma autoram tika apsolīta vienu miljonu<br />

britu mārciņu liela balva. Uzdevuma autori bija nepareizi novērtējuši šī uzdevuma grūtības<br />

pakāpi un acīmredzot bija pārliecināti, ka uzdevumu nav iespējams atrisināt gada laikā, pat<br />

izmantojot jaudīgus datorus. Tas tomēr tika atrisināts septiņu mēnešu laikā, veicot meklēšanu<br />

ar divu personālo datoru palīdzību. Spriežot pēc risinājuma autoru publikācijām, uzdevums<br />

tika modelēts, izmantojot grafus (virsotnes - figūras, šķautnes savieno divas virsotnes, ja atbilstošās<br />

figūras var savietot ar kopīgu robežas daļu) un meklēšana pamatojās uz bektrekingu,<br />

plašummeklēšanas algoritmu un diskrēto varbutību teoriju, kas tika izmantota nākošā elementa<br />

optimālai izvēlei. Pirmie uzdevumu atrisināja divi profesionāli matemātiķi.<br />

Otrs grafu teorijā un grafu pielietojumos populārs meklēšanas veids ir dziļummeklēšana<br />

(pārlase dziļumā, depth-first search). Tāpat kā plašummeklēšanas algoritms, tas tika atklāts<br />

risinot uzdevumus par labirintiem. Sākam ar fiksētu virsotni v 0 kā topošā dziļummeklēšanas koka<br />

sakni, atzīmējam jebkuru vēl neatzīmētu virsotni v 1 , kas ir savienota ar v 0 , dziļummeklēšanas<br />

kokā zīmējam šķautni v 0 → v 1 un pārvietojamies uz virsotni v 1 . Vispārīgā gadījumā rīkojamies


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 142<br />

šādi: ja mēs atrodamies virsotnē v un eksistē vēl neatzīmēta virsotne w, kas ir savienota ar v,<br />

tad<br />

1) atzīmējam virsotni w,<br />

2) dziļummeklēšanas kokā zīmējam šķautni v → w,<br />

3) pārvietojamies uz virsotni w.<br />

Pretējā gadījumā (ja visas virsotnes, kas ir savienotas ar v, jau ir atzīmētas) pārejam (atkāpjamies)<br />

uz virsotnes v tēvu dziļummeklēšanas kokā. Turpinām dziļummeklēšanas algoritmu tik ilgi,<br />

kamēr atgriežamies atpakaļ virsotnē v 0 . Rezultātā iegūsim dziļummeklēšanas koku. Bieži vien<br />

ir lietderīgi papildus atzīmēt arī ”atkāpšanās” šķautnes.<br />

Piemērs 3.128.<br />

V 0<br />

2<br />

V 2<br />

V 7<br />

V 1<br />

1<br />

V 0<br />

7<br />

4<br />

6<br />

V 6<br />

V 4<br />

V<br />

5 5<br />

3<br />

V 3<br />

V 2<br />

2<br />

V 1<br />

1<br />

3<br />

6<br />

V 6<br />

V 3<br />

V 4<br />

V 5<br />

4<br />

7<br />

V 7<br />

5<br />

3.68. attēls. Dziļummeklēšanas algoritma realizācijas piemērs<br />

Orientētiem grafiem var izmantot abas meklēšanas metodes ar divām atšķirībām:<br />

1) virzīšanās pa šķautni ir atļauta tikai tās norādītajā virzienā;<br />

2) meklēšana var tikt veikta vairākas reizes pat vāji sakarīgam grafam, kamēr tiek atzīmētas<br />

visas virsotnes.<br />

Orientētu grafu gadījumā dziļummeklēšanas algoritma darba rezultāts ir dziļummeklēšanas<br />

mežs.<br />

Var pierādīt, ka dziļummeklēšanas algoritma darba laiks ir O(|V | + |E|).<br />

Izrādās, ka abas aprakstītās meklēšanas metodes var realizēt ar viena algoritma palīdzību, izmantojot<br />

dažādas datu struktūras - rindu plašummeklēšanai vai steku dziļummeklēšanai. Rinda<br />

ir viendimensionāla datu struktūra, kurā elementi tiek ievietoti tikai vienā galā un ņemti ārā tikai<br />

no otra gala. Steks ir viendimensionāla datu struktūra, kurā elementi tiek ievietoti un ņemti<br />

ārā no viena gala. Rindas un stekus var realizēt, izmantojot saistības sarakstus vai masīvus<br />

ar mainīgām robežām. Elementa x ievietošanu datu struktūrā D apzīmēsim ar x → D un<br />

izņemšanu - ar x ← D. Definēsim virsotnes stāvokļa funkciju s : V → {0, 1} šādā veidā:<br />

s(v) = 0, ja virsotne v nav atzīmēta un s(v) = 1, ja virsotne v ir atzīmēta.<br />

Meklēšana grafā<br />

: Uzdot grafu Γ = (V, E), definēt T = ∅,<br />

: for v ∈ V do /* definējam visas virsotnes kā neiezīmētas*/<br />

: s(v) := 0<br />

: end for,<br />

: izvēlēties sākotnējo virsotni v ∈ V<br />

: T ← v, s(v) := 1,<br />

: while T ≠ ∅ do


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 143<br />

: w ← T ,<br />

: output w /*izvadām w kā kārtējo virsotni*/<br />

: for u ∈ N − (w) do<br />

: if s(u) = 0 then<br />

: T ← u,s(u) := 1,<br />

: end if;<br />

: end for;<br />

: end while<br />

Analizējot dziļummeklēšanas algoritmu, var iegūt papildus lietderīgu informāciju par grafa<br />

struktūru. Uzskatīsim, ka dziļummeklēšanas algoritms tiek realizēts ar kādas skaitļošanas sistēmas<br />

palīdzību, un katrai grafa virsotnei v piekārtosim divus skaitļus - d(v) (laika moments, kad<br />

virsotne v ir atzīmēta) un f(v) (laika moments, kad ir atzīmēti visi virsotnes v kaimiņi). Viegli<br />

redzēt, ka d(v) < f(v).<br />

Teorēma 3.129. Ja ir dots grafs Γ un divas tā virsotnes u un v, tad ir spēkā tieši viens no<br />

šādiem trīs gadījumiem:<br />

1) intervāli [d(u), f(u)] un [d(v), f(v)] ir šķirti;<br />

2) [d(u), f(u)] ⊂ [d(v), f(v)] un u ir virsotnes v pēctecis dziļummeklēšanas kokā;<br />

3) [d(v), f(v)] ⊂ [d(u), f(u)] un v ir virsotnes u pēctecis dziļummeklēšanas kokā.<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

Ja grafā Γ ir veikta dziļummeklēšana, tad sadalīsim visas grafa šķautnes četrās grupās.<br />

Uzskatīsim, ka neorientēta šķautne ir divu pretēju šķautņu apvienojums, vai, citiem vārdiem<br />

sakot, pa neorientētu šķautni var iet abos virzienos. Šķautni sauksim par koka šķautni, ja tā<br />

pieder dziļummeklēšanas kokam, šķautni u → v sauksim par atpakaļejošo šķautni, ja virsotne u<br />

ir virsotnes v pēctecis dziļummeklēšanas kokā, šķautni u → v sauksim par tiešo šķautni, ja tā<br />

nav dziļummeklēšanas kokā un virsotne v ir virsotnes u pēctecis dziļummeklēšanas kokā, šķautni<br />

sauksim par šķērsšķautni, ja tā nav nevienā no iepriekš definētajām kopām.<br />

Teorēma 3.130. Neorientētā grafā katra šķautne ir vai nu koka šķautne, vai arī atpakaļejoša<br />

šķautne.<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

Viens no neacīmredzamiem dziļummeklēšanas pielietojumiem ir šarnīru noteikšana, patērējot<br />

mazāk laika, nekā tas ir iespējams ar kādu no naivajām metodēm.<br />

Teorēma 3.131. Ja ir dots neorientēts grafs Γ = (V, E) un ir veikta dziļummeklēšana, tad<br />

1) dziļummeklēšanas koka sakne ir šarnīrs tad un tikai tad, ja tai ir vismaz divi dēli;<br />

2) dziļummeklēšanas koka virsotne u, kas nav sakne, ir šarnīrs tad un tikai tad, ja neeksistē<br />

atpakaļejoša šķautne v → w tāda, ka v ir u pēctecis un u ir w pēctecis dziļummeklēšanas<br />

kokā.<br />

Pierādījums. Patstāvīgs darbs lasītājam. QED<br />

Dziļummeklēšanu tāpat kā plašummeklēšanu pielieto grafa komponenšu un stingri sakarīgo<br />

komponenšu noteikšanā, metrisko invariantu (diametra, ekscentritātes, centra) noteikšanā, divdaļīga<br />

grafa sadalīšanā daļās. Dziļummeklēšanu pielieto arī algoritmos, kuros tiek risināti uzdevumi<br />

par augstāku kārtu sakarīgumu (šarnīru un bloku noteikšana, fiksētas kārtas sakarīgo komponenšu<br />

noteikšana) un planaritāti.<br />

3.14.2. Stingri sakarīgo komponenšu meklēšana. Praktiski svarīgs uzdevums orientētu<br />

grafu analīzē ir to stingri sakarīgo komponenšu atrašana. Stingri sakarīgās komponentes parāda,<br />

kā orientētais grafs ir sadalīts mazākās daļās, katrā no kurām jebkuras divas virsotnes ir savstarpēji<br />

sasniedzamas ar virzītu ķēžu palīdzību.<br />

Naivs algoritms šī uzdevuma atrisināšanai varētu būt šāds: veiksim plašummeklēšanu no<br />

katras virsotnes un aizpildīsim virsotņu savstarpējās sasniedzamības matricu (rūtiņā, kas atbilst


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 144<br />

virsotnes u rindai un v kolonnai rakstām 1, ja eksistē virzīta ķēde no u uz v un 0, ja tāda ķēde<br />

neeksistē), šai matricai atbilstošās ekvivalences attiecības klases ir stingri sakarīgās komponentes.<br />

Var piedāvāt arī ātrāku algoritmu, kurā tikai divas reizes tiek veikta pilna dziļummeklēšana<br />

orientētajā grafā. Ja ir dots orientēts grafs Γ = (V, E), tad definēsim jaunu grafu Γ op = (V, E op ),<br />

kur E op = {(u, v)|(v, u) ∈ E}, citiem vārdiem sakot, grafu Γ op iegūst no grafa Γ mainot visām<br />

šķautnēm virzienu uz pretējo.<br />

Tardžana algoritms:<br />

1) veiksim dotajā orientētajā grafā Γ pilnu dziļummeklēšanu, kamēr ir atzīmētas visas<br />

virsotnes, fiksēsim katras virsotnes v visu kaimiņu atzīmēšanas laiku f(v);<br />

2) konstruēsim Γ op ;<br />

3) veiksim grafā Γ op pilnu dziļummeklēšanu, izvēloties pirmās dziļummeklēšanas virsotnes<br />

parametra f samazināšanās kārtībā, katra šajā solī iegūtā dziļummeklēšanas koka virsotnes<br />

ir vienas stingri sakarīgas komponentes virsotnes.<br />

3.14.3. Bināro koku algoritmi. Binārie koki ir tā grafu klase, kas relatīvi visbiežāk tiek<br />

izmantota pielietojumos un praktiskajā programmēšanā. Šajā nodaļā apskatīsim vienkāršākos<br />

bināro koku algoritmus un bināro koku pielietojumus.<br />

Bināru koku virsotņu apiešanai var izmantot plašummeklēšanu vai dziļummeklēšanu tāpat<br />

kā vispārīgiem grafiem. Tomēr bieži vien ērtāk ir izmantot koku struktūras specifiku un apiet<br />

koka virsotnes citos veidos. Apskatīsim populārākos no tiem - preorder, postoder un inorder<br />

apiešanu.<br />

Ja ir dots binārs koks T , tad apzīmēsim ar s(T ) tā sakni (domātu kā bināru koku ar vienu<br />

virsotni), ar k(T ) - tā kreisā dēla apakškoku un ar L(T ) - tā labā dēla apakškoku. Definēsim<br />

virsotņu virkni (virsotņu apiešanas kārtību) preorder(T ) šādā rekursīva veidā:<br />

(3.5) preorder(T ) = (s(T ), preorder(K(T )), preorder(L(T ))).<br />

Citiem vārdiem sakot, no sākuma tiek apieta koka virsotne, pēc tam rekursīvā veidā kreisais un<br />

labais zars. Līdzīgi definē vēl divus koku apiešanas veidus postorder(T ) un inorder(T ):<br />

(3.6) postorder(T ) = (postorder(K(T )), postorder(L(T )), s(T ))<br />

un<br />

(3.7) inorder(T ) = (inorder(K(T )), s(T ), inorder(L(T ))).<br />

Papildus tam definēsim<br />

(3.8) preorder(T ) = postorder(T ) = inorder(T ) = (s(T )),<br />

ja T satur vienu virsotni.<br />

Piemērs 3.132. 3.69.attēlā ir parādīti trīs bināru koku apiešanas veidi vienam kokam.<br />

Šie koku virsotņu apiešanas veidi no programmēšanas viedokļa ir vieglāk realizējami nekā<br />

plašummeklēšana un dziļummeklēšana. Tie arī ir dabiskāki darbā ar kokiem nekā vispārīgie<br />

meklēšanas veidi.<br />

Apskatīsim divus bināro koku pielietošanas gadījumus - šķirošanas un meklēšanas uzdevumos.<br />

Viens no ”ātrajiem” (O(n ln n)) šķirošanas algoritmiem ir tā saucamais ”heapsort” algoritms.<br />

Šis algoritms sastāv no diviem soļiem. Pirmajā solī nesakārtota virkne tiek pārveidota noteikta<br />

bināra koka - hīpa (heap) veidā. Hīps ir binārs koks ar virsotnēm piekārtotiem skaitliskiem<br />

indeksiem, kura katras virsotnes indekss nav mazāks par tās dēlu indeksiem. Papildus tam hīps<br />

ir balansēts koks, kura iepriekšpēdējā līmenī virsotņu skaits ir maksimāli iespējamais, un zemāka<br />

līmeņa lapas ir pievienotas nepārtrauktā veidā, sākot no kreisās malas. Ievērosim, ka hīpam var<br />

dabiski definēt nākamās lapas jēdzienu: ja visām lapām ir vienāds līmenis, tad nākamā lapa tiek<br />

pievienota kā kreisais dēls kreisajā malā, ja nē, tad lapa tiek pievienota tā, lai zemākajā līmenī<br />

saglabātos virsotņu virknes nepārtrauktības īpašība. Ja ir dota nesakārtota virkne, tad hīpu var<br />

konstruēt šādā veidā: pēctecīgi ņemam ārā no virknes elementus, definējam tos kā nākamās lapas


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 145<br />

1<br />

2<br />

3<br />

4 5 6<br />

preorder (1,2,4,5,3,6) postorder (4,5,2,6,3,1) inorder (4,2,5,1,3,6)<br />

1<br />

1<br />

1<br />

2<br />

3<br />

2<br />

3<br />

2<br />

3<br />

4 5 6<br />

4 5 6<br />

4 5 6<br />

3.69. attēls. Trīs bināra koka apiešanas veidi<br />

kokā. Ja tiek pārkāpts hīpa nosacījums, tad virsotnes tiek pārvietotas uz augšu, mainot virsotni<br />

vietām ar savu tēvu, tik ilgi, kamēr ir tiek apmierināts hīpa nosacījums. Šo procesu varētu<br />

salīdzināt ar dabiskās hierarhijas veidošanos cilvēku kolektīvā, kuram pakāpeniski pievienojas<br />

jauni locekļi - cilvēki ar līderu īpašībam laika gaitā paaugstina savu sociālo statusu, kamēr<br />

sasniedz tādu līmeni un sociālos kaimiņus, kas aptur viņu sociālo kustību. Otrajā algoritma solī<br />

hīps tiek pārveidots par sakārtotu virkni šādā veidā: pēctecīgi no hīpa izņem saknes virsotnes,<br />

ievieto tās kā nākamos elementus sašķirotajā virknē un pārvieto nākamo lapu uz augšu līdz<br />

saknei, mainot to vietām ar tās lielāko dēlu, kamēr nav apmierināts hīpa nosacījums, saknes<br />

virsotnes izņemšanas procedūru atkārto tik ilgi, kamēr hīps nav tukšs.<br />

Populārs meklēšanas algoritms ir bināra koka meklēšanas algoritms. Šis algoritms tāpat kā<br />

hīpsorta algoritms arī sastāv no diviem soļiem: pirmajā solī kopa, kurā tiks veikta meklēšana,<br />

tiek pārveidota noteiktā bināra koka (meklēšanas koka) veidā, otrajā solī meklējamais objekts<br />

tiek meklēts binārajā kokā saskaņā ar noteiktu algoritmu. Par binārās meklēšanas koku sauksim<br />

bināru koku ar virsotnēm piekārtotiem skaitliskiem indeksiem, kurā katras virsotnes indekss nav<br />

mazāks par tās kreisā apakškoka virsotņu indeksiem un nav lielāks par tās labā apakškoka virsotņu<br />

indeksiem. Ja ir dots binārās meklēšanas koks, tad elementa meklēšanu var veikt, salīdzinot<br />

meklējamo elementu no sākuma ar sakni un tālāk virzoties uz leju atkarībā no salīdzināšanas<br />

rezultātiem. Ja ir dots nesakārtots masīvs, tad no tā var pakāpeniski izveidot binārās meklēšanas<br />

koku šādā veidā: kārtējais elements no masīva tiek meklēts jau konstruētajā kokā un pievienots<br />

kā lapa tajā vietā, kur tam ir jābūt, lai pēc pievienošanas atkal izveidotos binārās meklēšanas<br />

koks.<br />

3.14.4. Minimālā svara skeleta meklēšana. Pieņemsim, ka ir dots nosvērts (neorientēts)<br />

sakarīgs grafs Γ = (V, E), atgādināsim, ka katrai šķautnei e ir piekārtots pozitīvs skaitlis w(e)<br />

jeb, citiem vārdiem sakot, ir dota funkcija w : E → R + (R + ir visu pozitīvo skaitļu kopa).<br />

Apskatīsim šādu uzdevumu: konstruēt Γ skeletu (apakšgrafu, kas ir koks un kura virsotņu kopa<br />

ir vienāda ar visu grafa virsotņu kopu), kura šķautņu svaru summa ir minimāla. Šādu skeletu<br />

sauksim par minimāla svara skeletu. Šī tipa uzdevumi bieži gadās pielietojumos, pieminēsim<br />

dažus no tiem:<br />

• inženiertehniska (ceļu tīkla), elektrotehniska vai datortehniska tīkla sakaru līniju kopējā<br />

garuma minimizēšana;<br />

• daudzparametru objektu klasterizēšana (katram objektam tiek piekārtots punkts daudzdimensiju<br />

telpā, tiek definēts attālums starp punktiem un pilnais grafs, kura šķautņu


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 146<br />

svars ir attālums, minimāla svara koka virsotnes var tikt interpretētas kā objektu kopas<br />

”raksturīgāko” objektu kopums jeb klasters);<br />

• informācijas pārraides optimizēšana (piemēram, ir dots spiegu tīkls kādā valstī, rezidentam<br />

ir jānodod kāda ziņa visiem aǧentiem tā, lai minimizētu kopējo risku, definēsim<br />

grafu, kura virsotnes ir aǧenti, šķautnes ir aǧentu pazīšanās un šķautnes svars ir sakaru<br />

līnijas riska pakāpe, minimāla svara skeletā ir iekodēts riska ziņā optimāls ziņas nodošanas<br />

algoritms).<br />

Minimāla svara skeleta meklēšanai tiek izmantoti ”rijīgie” algoritmi. Algoritmu sauksim<br />

par rijīgu (alkatīgu, greedy), ja katrā solī tiek izdarīta lokāli (šajā laika momentā vai situācijā)<br />

optimāla izvēle. Nebūt nav acīmredzami, ka lokāli optimāla izvēle ir arī globāli optimāla, bet<br />

minimāla svara skeleta uzdevumā tas tā ir. Ir divi populāri algoritmi - Kraskala algoritms un<br />

Prima algoritms, kuros tiek pakāpeniski būvēts mežs vai koks, pievienojot šķautnes ar minimāli<br />

iespējamu svaru.<br />

Kraskala algoritms sakarīgam grafam Γ = (V, E), kuram |V | = n:<br />

1) konstruējam grafu T 1 = O n + e 1 , pievienojam bezšķautņu grafam ar virsotņu kopu V<br />

šķautni e 1 , kuras svars ir minimāls;<br />

2) ja grafs T i jau ir konstruēts un i < n − 1, tad konstruējam grafu T i+1 = T i + e i+1 , kur<br />

e i+1 ir grafa Γ šķautne, kurai ir minimāls svars starp visām tām šķautnēm, kas neieiet<br />

grafā T i un neveido ciklus ar grafa T i šķautnēm.<br />

Teorēma 3.133. Ja i < n − 1, tad grafu T i+1 ir iespējams konstruēt saskaņā ar Kraskala<br />

algoritma aprakstu. Grafs T n−1 ir minimāla svara skelets.<br />

Pierādījums. Grafā T i ir i šķautnes, tāpēc tas ir nesakarīgs, ja i < n − 1. Tā kā grafs Γ ir<br />

sakarīgs, tad tajā ir vēl vismaz viena šķautne, kas neveido ciklus ar grafa T i šķautnēm. Tātad<br />

meklējamā šķautne e i+1 eksistē un ir iespējams konstruēt grafu T i+1 . Apskatīsim grafu T n−1 . Tā<br />

kā grafs T n−1 ir grafs ar n virsotnēm un n − 1 šķautnēm bez cikliem, tad tas ir koks (saskaņā ar<br />

teorēmu par kokiem). Atliek pierādīt, ka koka T n−1 svars ir minimāls. Pieņemsim, ka koka T n−1<br />

svars nav minimāls, un no visiem grafa Γ skeletiem izvēlēsimies vienu skeletu T ar minimālu<br />

svaru, kuram kopējo šķautņu skaits ar T n−1 ir maksimāls. Pieņemsim, ka šķautne e i = (v, w) ir<br />

šķautne ar minimālu numuru kokā T n−1 , kas nav kokā T . Kokā T eksistē ķēde, kas savieno v<br />

un w. Pievienojot šai ķēdei šķautni e 1 , iegūsim ciklu. Šajā ciklā ir vismaz viena šķautne e, kas<br />

neieiet kokā T n−1 . Aizvietojot kokā T šķautni e ar e i iegūsim jaunu skeletu T ′ = T − e + e i . Tā<br />

kā T ir minimāla svara skelets, tad<br />

w(T ′ ) = w(T ) − w(e) + w(e i ) ≥ w(T ),<br />

un tātad w(e i ) ≥ w(e). No otras puses, pievienojot šķautni e kokam T n−1 , mēs neiegūsim ciklu,<br />

jo šķautnes e 1 , ..., e i−1 ieiet kokā T . Ja w(e i ) > w(e), tad koka T i konstruēšanai mēs nebūtu<br />

izvēlējušies šķautni e i . Tātad w(e i ) = w(e) un w(T ′ ) = w(T ). Esam ieguvuši, ka T ′ ir minimāla<br />

svara skelets. Kopēju šķautņu skaits kokos T ′ un T n−1 ir stingri lielāks nekā kokiem T un T n−1 ,<br />

kas ir pretruna. QED<br />

Kraskala algoritma rezultātā tiek iegūts koks, ko sauksim par Kraskala koku. Prima algoritms<br />

atšķiras no Kraskala algoritma ar to, ka katrā solī tiek konstruēts koks, kam pievieno<br />

minimāla svara šķautnes, kas neveido ciklus ar jau esošo koku, koka pirmā virsotne var tikt<br />

izvēlēta patvaļīgi. Koks, kas tiek iegūts šāda algoritma rezultātā, tiek saukts par Prima koku.<br />

Var pierādīt, ka Kraskala algoritma patērēto operāciju skaits ir O(|E| ln |E|) un Prima algoritma<br />

operāciju skaits ir O(|E| ln |V |), jo lielākā daļa no darba ir šķautņu šķirošana, kas var tikt<br />

veikta ar norādīto operāciju skaitu.<br />

3.14.5. Īsākā ceļa meklēšana. Pieņemsim, ka ir dots nosvērts (neorientēts vai orientēts)<br />

sakarīgs grafs ar nenegatīviem šķautņu svariem w, apzīmēsim škautnes svaru ar w(e) un (v, w)-<br />

ķēdes summāro svaru ar dist(v, w). Apskatīsim šādu uzdevumu: atrast minimāla svara ķēdi, kas<br />

savieno divas dotās virsotnes. Šādu ķēdi sauksim par īsāko ceļu starp divām dotajām virsotnēm.


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 147<br />

Par dotā orientētā grafa īsāko ceķu koku sākot no virsotnes v sauksim pārklājošu orientētu koku,<br />

kura sakne ir v un kurĀ maršruti līdz virsotnēm realizē īsākos ceļus.<br />

Var redzēt, ka ja virsotņu virkne (v, v 1 , ..., v n−1 , t) ir īsākais ceļš no v līdz t, tad jebkurām<br />

divām virsotnēm v i un v j , kur i < j, v 0 = v, v n = t, virkne v i , v i+1 , ..., v j ir īsākais ceļš no v i līdz<br />

v j . Var redzēt, ka īsāko ceļu garumi apmierina šādu nevienādību:<br />

dist(v, t) ≤ dist(v, u) + w(u, t),<br />

kur w(u, t) ir šķautnes u, t svars.<br />

Tipiski īsākā ceļa pielietošanas piemēri ir saistīti ar optimāla maršruta noteikšanu transporta<br />

sistēmās.<br />

Ja visu šķautņu svari ir vienādi, tad šis uzdevums var tikt atrisināts ar plašummeklēšanas<br />

palīdzību. Vispārīgā gadījumā var izmantot Dijkstras algoritmu, kas pēc būtības ir līdzvērtīgs<br />

Prima algoritmam ar nelielu modifikāciju. Dijkstras algoritms balstās uz šādu teorēmu.<br />

Teorēma 3.134. Ja ir dotas minimāla svara ķēdes no virsotnes u līdz katrai virsotnei<br />

no kopas {v 0 , ..., v k }, kur v 0 = u, tad eksistē virsotne v, tāda, ka īsākā ķēde no u līdz v ir<br />

formā (u, ..., t, v), kur ķēde (u, ..., t) ir viena no dotajām ķēdēm vai kāda no to nepārtrauktajām<br />

apakšķēdēm, kas sākas ar u.<br />

Pierādījums. Ievērosim, ka, ja ķēde (u, ..., t) ir īsākā ķēde, tad jebkura tās nepārtraukta<br />

apakšķēde, kas sākas ar u, ir īsākā ķēde līdz tās galapunktam. Apskatīsim virsotni v tādu, kas<br />

minimizē lielumu dist(u, t k ) + w(t k , v), kur t k var būt jebkura no doto īsāko ķēžu virsotnēm. Var<br />

redzēt, ka virsotne v ir meklējamā virsotne. QED<br />

Tātad, lai atrastu īsāko ceļu starp divām virsotnēm nosvērtā grafā, mums ir jākonstruē<br />

Prima koks ar papildus nosacījumiem: ir jāsāk ar vienu no divām dotajām virsotnēm, katrā<br />

solī ir jāpievieno šķautne (u i , t), kas neveido ciklus un minimizē lielumu dist(u, u i ) + w(u i , t),<br />

minimizēšana tiek veikta, pārskatot visas jau uzbūvētā koka virsotnes u i un visas virsotnes t<br />

grafā. Pēc galīga skaita soļu tiks konstruēts koks, kas satur abas no dotajām virsotnēm, attālums<br />

starp tām ir vienāds ar attālumu konstruētajā kokā.<br />

Oriǧinālais Dijkstras algoritms tiek uzdots šādas pseidoprogrammas veidā.<br />

Klasiskais Dijkstras algoritms.<br />

: Uzdot nosvērtu grafu Γ = (V, E) ar nenegatīvu šķautņu svaru funkciju w,<br />

: izvēlēties sākuma virsotni v, definēt dist(v) = 0, definēt pred(v) = 0,<br />

: visiem u ∈ V definēt dist(u) = ∞, ja u ≠ v,<br />

: definēt LIST := V , definēt T - tukšais grafs,<br />

: while LIST ≠ ∅<br />

: atrast s ∈ LIST , kurai dist(s) =,<br />

: izmest s no LIST ,<br />

: for t ∈ Γ(s) do<br />

: if dist(t) > dist(s) + w(s, t then<br />

: dist(t) = dist(s) + w(s, t), pred(t) = s,<br />

: end if;<br />

: end for,<br />

: end while,<br />

: pievienot grafam T visas šķautnes formā (pred(s), s),<br />

: izvadīt T (īsāko ceļu koku sākot no v).<br />

Var pierādīt, ka Dijkstras algoritma operāciju skaits ir O(|V | 2 ).<br />

Otrs klasisks īsākā ceļa meklēšanas algoritms ir Bellmana-Forda algoritms.<br />

Bellmana-Forda algoritms.<br />

: Uzdot nosvērtu grafu Γ = (V, E) ar nenegatīvu šķautņu svaru funkciju w,<br />

: izvēlēties sākuma virsotni v, definēt dist(v) = 0, definēt pred(v) = 0,<br />

: visiem u ∈ V definēt dist(u) = ∞, ja u ≠ v,<br />

: definēt LIST := {v}, definēt T - tukšais grafs,


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 148<br />

: while LIST ≠ ∅<br />

: izmest jebkuru virsotni s no LIST ,<br />

: for t ∈ Γ(s) do<br />

: if dist(t) > dist(s) + w(s, t then<br />

: dist(t) = dist(s) + w(s, t), pred(t) = s,<br />

: if t /∈ LIST then<br />

: pievienot t kopai LIST ,<br />

: end if,<br />

: end if;<br />

: end for,<br />

: end while,<br />

: pievienot grafam T visas šķautnes formā (pred(s), s),<br />

: izvadīt T (īsāko ceļu koku sākot no v).<br />

Būtu jāpierāda, ka Bellmana-Forda algoritms apstājas, tas ir patstāvīgs darbs lasītājam.<br />

Izmantojot īsākā ceļa atrašanas uzdevumu, var aizpildīt grafa virsotņu attālumu matricu,<br />

kuras rūtiņās tiek ierakstīti grafu teorētiskie attālumi starp rindai un kolonnai atbilstošajām<br />

virsotnēm. Attālumu matricu izmanto grafa metrisko invariantu aprēķināšanai.<br />

3.14.6. Plūsmas maksimizācija. Inženierzinātnēs ir izplatīti uzdevumi, kas ir saistīti<br />

ar fizikālu vai cita veida plūsmu vadīšanu to transportēšanas tīklos. Piemēram, uzdevums<br />

varētu būt saistīts ar maksimālās caurlaides spējas noteikšanu autoceļu tīklā, naftas vadu tīklā,<br />

datortīklā, loǧistikas vai ražošanas tīklā, asinsvadu vai nervu tīklā. Viens no svarīgākajiem<br />

jautājumiem, kas var būt uzdots šādā situācijā, ir jautājums par maksimālo pieļaujamo plūsmu<br />

tīklā.<br />

Dots tīkls Γ = (V, E) ar avotu s un noteku t. Par tīkla griezumu mēs sauksim šķautņu kopu,<br />

kas atdala avotu no notekas. Katrai šķautnei piekārtosim svaru, definēsim funkciju c : E → R +<br />

- šķautņu caurlaides funkciju. Šajā nodaļā mēs bieži izmantosim funkcijas, kuru argumenti ir<br />

šķautnes, tāpēc pieraksta ērtības dēļ funkcijas f vērtību ar argumentu e = (u, v) apzīmēsim ar<br />

f(e) vai f(u, v). Ja ir dota funkcija f : E → R + , tad par virsotnes v diverǧenci (plūsmu caur<br />

virsotni) attiecībā uz f sauksim lielumu<br />

div(v) =<br />

∑<br />

f(u, v) −<br />

∑<br />

f(v, w).<br />

u:(u,v)∈E<br />

w:(v,w)∈E<br />

Funkciju f sauksim par plūsmu (pieļaujamu plūsmu) tīklā Γ, ja tā apmierina šādus nosacījumus:<br />

1) katrai šķautnei (u, v) izpildās nosacījums 0 ≤ f(u, v) ≤ c(u, v) (plūsma pa jebkuru<br />

šķautni nepārsniedz šķautnes caurlaides spēju);<br />

2) katrai virsotnei v, izņemot avotu un noteku, izpildās nosacījums div(v) = 0 (plūsma<br />

nekur neuzkrājas).<br />

Skaitli div(t) sauksim par plūsmas lielumu, apzīmēsim ar |f|. Plūsmas maksimizācijas uzdevums<br />

ir šāds: dotajam tīklam ar uzdotām caurlaides spējām katrai šķautnei atrast plūsmu ar<br />

maksimālu lielumu.<br />

Pieņemsim, ka f ir pieļaujamā plūsma tīklā. Šķautni e sauksim par tukšu, ja plūsma pa to<br />

ir vienāda ar nulli: f(e) = 0. Šķautni e sauksim par piesātinātu, ja plūsma pa to ir vienāda<br />

ar caurlaides spēju: f(e) = c(e). Plūsmu sauksim par pilnu, ja katrs maršruts no avota uz<br />

noteku satur vismaz vienu piesātinātu šķautni. Plūsmu sauksim par maksimālu, ja tās lielums<br />

ir maksimāls starp visām pieļaujamām plūsmām.<br />

Pirmajā tuvinājumā mēs varētu konstruēt pieļaujamo plūsmu, kas ir pilna. Aprakstīsim<br />

pilnas plūsmas konstruēšanas algoritmu.<br />

1) sākuma brīdī definēsim nulles plūsmu f(e) = 0 katrai šķautnei e, konstruējam palīggrafu<br />

Γ ′ = Γ;<br />

2) izdzēsīsim grafā Γ ′ visas piesātinātās šķautnes, konstruējam šī soļa rezultātā jaunu grafu<br />

Γ ′ ;


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 149<br />

3) meklējam grafā Γ ′ virzītu ķēdi p no avota uz tīklu. Ja tāda ķēde neeksistē, tad ir iegūta<br />

pilna plūsma, ja tāda ķēde eksistē, tad ejam uz soli (4);<br />

4) palielinām plūsmu katrā ķēdes p posmā par lielumu f p , kas ir vienāds ar minimālo<br />

caurlaides spēju ķēdes p šķautnēs (tā, lai vismaz viena šķautne būtu piesātināta). Kopējā<br />

plūsma palielināsies par f p , plūsma joprojām ir pieļaujama, pārejam uz soli (2).<br />

Šāda tipa metodi sauksim par uzlabojošo ķēžu metodi.<br />

Diemžēl pilna plūsma var arī nebūt maksimāla, tāpēc uzdevums par maksimālo plūsmu vēl<br />

nav atrisināts.<br />

V 1<br />

1<br />

V 2<br />

V 2<br />

1 V 4<br />

V 1 1<br />

1<br />

1<br />

1<br />

V 4<br />

1<br />

1<br />

1<br />

1<br />

V 3<br />

V 3<br />

(a)<br />

3.70. attēls. (a) Tīkla piemērs, (b) pilnas un nemaksimālas plūsmas piemērs<br />

Pilnas plūsmas konstruēšanas algoritmā mēs apskatījām tikai virzītas ķēdes, kas ir virzītas no<br />

avota uz noteku. Izrādās, ka ir lietderīgi apskatīt visas iespējamās, ne obligāti virzītās ķēdes no<br />

avota uz noteku. Var redzēt, ka plūsmu var palielināt, ja eksistē ķēde no avota uz noteku ar šādu<br />

īpašību: katra šķautne, kas ir vērsta no avota uz noteku, nav piesātināta un katra šķautne, kas ir<br />

vērsta no notekas uz avotu, nav tukša (”no full forward or empty backward edges”). Var pierādīt,<br />

ka algoritms, kurā tiek pakāpeniski palielināta plūsma tik ilgi, kamēr nav ķēžu ar šo īpašību,<br />

tiešām atrod maksimālo plūsmu. Šāda tipa algoritmi balstās uz Forda-Falkersona jeb max-flow<br />

min-cut teorēmu: maksimālas plūsmas lielums ir vienāds ar minimālu griezuma kapacitāti.<br />

Gan pilnas, gan arī maksimālas plūsmas meklēšana ar uzlabojošo ķēžu metodi tiek realizēta,<br />

konstruējot un uzturot mainīgu palīgtīklu, kura šķautņu caurlaides spējas tiek modificētas algoritma<br />

darba laikā, lai atspoguļotu konstruētās plūsmas ietekmi uz tīkla atlikušo kapacitāti.<br />

Virzītie maršruti šajā palīgtīklā tiek noteikti izmantojot īsākā ceļa meklēšanas algoritmus.<br />

Var pierādīt, ka plūsmas maksimizāciju var realizēt ar algoritmu, kas patērē O(|V ||E| 2 )<br />

operācijas.<br />

Papildus tiešajiem pielietojumiem transporta tīklos šim uzdevumam ir arī daži neacīmredzami<br />

pielietojumi. Izmantojot Mengera teoremu, var piedāvāt algoritmu, kas atrod grafa sakarīguma<br />

skaitli, pielietojot plūsmas maksimizāciju: maksimālais virsotņu šķirtu ķēžu skaits, kas savieno<br />

divas virsotnes, ir vienāds ar maksimālas plūsmas lielumu grafam atbilstošajā tīklā, ja katrai<br />

neorientētai šķautnei atbilst divas orientētas šķautnes ar caurlaides spēju 1.<br />

Bieži vien sākotnējais grafs ir jāmodificē tā, lai uzdevumu varētu atrisināt ar plūsmas maksimizācijas<br />

metodi, piemēram, grafam ir jāpievieno fiktīvas virsotnes un šķautnes.<br />

Apskatīsim arī tā dēvēto pāru sakārtojumu uzdevumu jeb ”stabilo laulību uzdevumu”. Ir<br />

dota zēnu kopa Z un meiteņu kopa M. Starp dažiem zēniem un meitenēm eksistē savstarpējas<br />

simpātijas, kuras mēs vienkāršoti modelēsim ar šķautni, ja starp divām virsotnēm eksistē šķautne,<br />

tad uzskatīsim, ka atbilstošie cilvēki var veidot stabilu laulību. Uzdevums ir šāds: noteikt, kāds<br />

ir maksimālais stabilo laulību skaits, kas ir iespējams dotajam kopu pārim (M, Z) ar uzdotu<br />

savstarpējo simpātiju sarakstu. Šo uzdevumu var atrisināt, izmantojot plūsmas maksimizācijas<br />

pieeju. Pievienosim vēl divas virsotnes M 0 un Z 0 , savienosim virsotni M 0 ar visām kopas M<br />

virsotnēm un savienosim Z 0 ar visām kopas Z virsotnēm, uzskatīsim M 0 par avotu un Z 0 - par<br />

noteku, katru šķautni orientēsim virzienā no avota uz noteku un piešķirsim katrai orientētajai<br />

šķautnei caurlaides spēju 1. Var redzēt, ka maksimālā plūsma šādā tīklā definē maksimālu pāru<br />

skaitu.<br />

(b)


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 150<br />

Z<br />

M<br />

Z<br />

M<br />

Z0<br />

M0<br />

3.71. attēls. Stabilo laulību uzdevuma risināšana ar plūsmas maksimizācijas metodi<br />

Apskatīsim uzdevumu par kopas apakškopu sistēmas pārstāvju izvēli. Ir dota kopa A un tās<br />

apakškopu kopa {A i } i∈I . Uzdevums ir atrast apakškopu sistēmas dažādo pārstāvju kopu - kopu<br />

R = {a i } i∈I , kas apmierina īpašībus a i ∈ A i un |R| = |I|. Definēsim tīklu šādā veidā:<br />

⋃ ⋃<br />

1) virsotņu kopa ir {A i } i∈I A {x, y}, kur x un y ir divas jaunas virsotnes;<br />

2) savienosim katru kopas A virsotni ar x;<br />

3) savienosim katru kopas {A i } i∈I virsotni ar y;<br />

4) savienosim katru elementu a ar visām virsotnēm A i , kurām izpildas nosacī-jums a ∈ A i .<br />

Uzskatīsim x par avotu un y par noteku, orientēsim šķautnes virzienā no avota uz noteku<br />

un piekārtosim katrai šķautnei caurlaides spēju 1. Var redzēt, ka apakškopu sistēmai eksistē<br />

pārstāvju kopa tad un tikai tad, ja maksimāla plūsma šādā tīklā ir vienāda ar apakškopu skaitu<br />

(elementu skaitu kopā {A i } i∈I jeb |I|).<br />

Minēsim arī klasisku rezultātu, kas bieži tiek izmantots uzdevumos, kas ir saistīti ar apakškopu<br />

pārstāvju sistēmas meklēšanu. Ievērosim, ka iepriekšējā rindkopā konstruētais grafs bez virsotnēm<br />

x un y ir divdaļīgs grafs. Virsotņu kopas apakškopai U definēsim N(U) = ⋃ u∈U N(u).<br />

Teorēma 3.135. (Holla teorēma) Ir dots divdaļīgs grafs ar tādu virsotņu kopas sadalījumu<br />

{U, V }, ka šķautnes savieno tikai virsotnes dažādās sadalījuma daļās. Maksimāla neatkarīga<br />

šķautņu kopa satur |U| elementus tad un tikai tad, ja katrai U ′ ⊆ U izpildās nosacījums<br />

|U ′ | ≤ |N(U ′ )|.<br />

Pierādījums. Ja maksimāla neatkarīgu šķautņu kopa satur |U| elementus, tad nosacījums<br />

|U ′ | ≤ |N(U ′ )| izpildās.<br />

Otrādi, pieņemsim, ka maksimāla neatkarīga šķautņu kopa S nav incidenta kādai kopas<br />

U virsotnei u 0 . Konstruēsim maksimāli garu dažādu virsotņu virkni M = (u 0 , v 1 , u 1 , ...), kas<br />

apmierina šādu nosacījumu: u i ∼ v i ∼ u ϕ(i) , kur 0 ≤ ϕ(i) < i. Šāda virkne nevar beigties<br />

ar kopas U virsotni, jo apakškopai {u 0 , ..., u i−1 } apkārtne satur vismaz i elementus, un eksistē<br />

virsotne v i /∈ {v 1 , ..., v i−1 }, kas apmierina nosacījumu v i ∼ u ϕ(i) . Pieņemsim, ka konstruētās<br />

virsotņu virknes pēdējais elements ir virsotne v n . Apskatīsim virsotņu virkni<br />

M ′ = (v n , u ϕ(n) , v ϕ(n) , u ϕ 2 (n), v ϕ 2 (n), ..., u 0 ).<br />

Šai virsotņu virknei atbilstošās ķēdes pāra šķautnes (skaitot no v n ) pieder kopai S. Virsotne<br />

v n nav incidenta ne ar vienu kopas S šķautni, jo pretējā gadījumā mēs varētu pagarināt virkni<br />

M vai iegūtu pretrunu. Virknei M ′ atbilstošās ķēdes nepāra šķautnes veido neatkarīgu šķautņu<br />

kopu, kurā ir par vienu elementu vairāk nekā kopā S, kas ir pretruna. Ir pierādīts, ka maksimāla<br />

neatkarīga virsotņu kopa satur |U| elementus. QED<br />

3.14.7. Maksimālu neatkarīgu kopu meklēšana. Dots nosvērts (neorientēts) grafs. Meklēsim<br />

neatkarīgu virsotņu vai šķautņu kopu ar maksimālu svaru. Šo uzdevumu ir iespējams<br />

atrisināt, tikai apskatot visas iespējamās virsotņu vai šķautņu apakškopas, tātad, ja grafam ir n<br />

virsotnes, tad ir jāapskata visas 2 n apakškopas, un algoritma darba laiks ir Ω(2 n ). To ir iespējams<br />

izdarīt, piemēram, ar bektrekinga algoritma palīdzību - tiek pēctecīgi ǧenerētas visas apakškopas<br />

un uzglabāta apakškopa ar maksimālo svaru starp visām jau ǧenerētajām apakškopām.


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 151<br />

Var piedāvāt arī heiristisku maksimālas neatkarīgu virsotņu kopas meklēšanas algoritmu,<br />

kurš konstruē neatkarīgu virsotņu kopu šādā veidā:<br />

1) izvēlēties grafā Γ virsotni t ar minimālu pakāpi un ievietot to kopā U (sākumā kopa U<br />

ir tukša),<br />

2) ja Γ − (t ∪ N Γ (t)) ir tukšs grafs (ja tā virsotņu kopa ir tukša), tad apstāties, ja Γ − (t ∪<br />

N Γ (t)) nav tukšs, tad pārveidot grafu Γ par Γ − (t ∪ N Γ (t)) (iznīcināt kopas t ∪ N Γ (t)<br />

virsotnes) un iet uz soli 1).<br />

3.14.8. Grafu krāsošana. Ir dots grafs Γ. Apskatīsim tā virsotņu krāsošanas uzdevumu,<br />

ja ir dots krāsu skaits. Tā kā virsotņu krāsošana ir tas pats, kas virsotņu kopas sadalīšana<br />

neatkarīgu apakškopu apvienojumā, mēs varam piedāvāt šādu ”rijīgu” krāsošanas algoritmu:<br />

1) izvēlēties grafā Γ maksimālu neatkarīgu virsotņu kopu S;<br />

2) nokrāsot kopas S virsotnes kārtējā krāsā;<br />

3) ja Γ−S ir tukšs grafs, tad apstāties, ja Γ−S nav tukšs, tad pārveidot grafu Γ par Γ−S<br />

(izdzēst kopas S virsotnes) un iet uz soli (1).<br />

Var pierādīt, ka šis algoritms atrod krāsojumu ar k krāsām, ja χ(Γ) ≤ k.<br />

3.14.9. ”Topoloǧiskā šķirošana”. Ir dots AOG. Uzdevums ir sakārtot grafa virsotnes<br />

virknē tā, lai katras orientētas šķautnes beigu virsotne virknē būtu pa labi no sākuma virsotnes.<br />

V 1<br />

V 2<br />

V 3 V 4<br />

V 5<br />

V 6<br />

V 7<br />

V 8<br />

V 9<br />

V 10<br />

V 1 V 2 V 3 V 4 V 5 V 6 V 7 V 8 V 9 V 10<br />

3.72. attēls. Topoloǧiskās šķirošanas piemērs<br />

Šo uzdevumu sauksim par AOG topoloǧiskās šķirošanas uzdevumu. Var redzēt, ka pēc virsotņu<br />

topoloǧiskās šķirošanas AOG blakusattiecības matricai visi vieninieki ir zem galvenās<br />

diagonāles. Viens no tā pielietojumiem ir šāds: pieņemsim, ka ir liels projekts, kas sastāv no<br />

vairākiem darbiem, darbi var būt atkarīgi viens no otra to izpildes nozīmē (piemēram, darbs B<br />

nevar būt iesākts, pirms nav pabeigts darbs A), modelēsim projektu ar orientētu grafu, kura virsotnes<br />

ir darbi un šķautnes savieno atkarīgus darbus to izpildes kārtībā. Topoloǧiskās šķirošanas<br />

uzdevuma atrisinājumu šajā gadījumā var interpretēt kā darbu virkni, kas apmierina atkarības<br />

nosacījumus.<br />

Ja AOG tiek interpretēts kā kādas daļēji sakārtotas kopas Hasses grafs, tad topoloǧiskās<br />

šķirošanas uzdevums ir ekvivalents dotā daļējā sakārtojuma paplašināšanai līdz pilnam (lineāram)<br />

sakārtojumam. Daļēji sakārtoto kopu teorijā ir pierādīts, ka tas ir iespējams visos gadījumos.<br />

Šis uzdevums var tikt atrisināts, izmantojot šādu algoritmu:<br />

1) dotajā grafā atradīsim visu avotu kopu (pārskatot grafa matricu vai izmantojot dziļummeklēšanu);<br />

2) pievienosim kopu S konstruējamās virknes labajā galā jebkurā kārtībā;<br />

3) pārveidosim Γ par Γ − S;<br />

4) ja V (Γ) = ∅, tad apstājamies, ja nē, tad ejam uz soli 1).


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 152<br />

3.14.10. Darbu plānošanas problēmas. Plānojot darbu projektā, kas satur vairākus<br />

savstarpēji atkarīgus darbus, var būt nepieciešams modelēt šādu projektu ar grafu palīdzību,<br />

atrisināt radušos grafu teorijas uzdevumus un izstrādāt atbilstošus algoritmus. Projekti var tikt<br />

modelēti ar grafiem vismaz šādos veidos:<br />

1) grafa virsotnes ir projekta darbi, orientētas šķautnes savieno darbus, kas ir savstarpēji<br />

atkarīgi, šādu modeli angļu valodā apzīmē ar AoN (”activity on node”);<br />

2) grafa virsotnes ir projekta izpildes stāvokļi, orientētas nosvērtas šķautnes ir darbi,<br />

šķautnes svars nozīmē izpildes laiku, izmaksas vai citus lielumus, šādu modeli angļu<br />

valodā apzīmē ar AoA (”activity on arc”);<br />

3) grafa virsotnes ir projekta izpildes stāvokļi un darbi, orientētas šķautnes savieno savstarpēji<br />

atkarīgus stāvokļus vai stāvokļus un tiem sekojošos vai priekštecējošus darbus;<br />

4) grafa virsotnes ir projekta darbi un izpildītāji, virsotnes savieno izpildītājus ar darbiem,<br />

kurus tie var izpildīt.<br />

Vienkāršākie darbu plānošanas uzdevumi var būt šādi:<br />

1) noteikt darbu izpildes secību, ievērojot darbu savstarpējo atkarību, izmantojot topoloǧisko<br />

šķirošanu;<br />

2) noteikt vairāku darbu vienlaicīgas izpildes grafiku, izmantojot neatkarīgu virsotņu un<br />

šķautņu kopu meklēšanu un grafu krāsošanu;<br />

3) piekārtot maksimāli lielu skaitu darbu pieļaujamajiem izpildītājiem, izmantojot tīkla<br />

plūsmas maksimizāciju;<br />

4) minimizēt projekta izpildes laiku, resursu izlietošanu vai citus parametrus ar neierobežotu<br />

vai ierobežotu izpildītāju skaitu (projekta kompresijas problēma);<br />

5) minimizēt projekta kopējās izmaksas.<br />

3.14.11. Eilera cikla konstruēšanas problēma. Ir dots sakarīgs grafs Γ, kuram visu virsotņu<br />

pakāpes ir pāra skaitļi. Uzdevums ir atrast Eilera ciklu. Grafu (ne obligāti sakarīgu), kura<br />

visu virsotņu pakāpes ir pāra skaitļi, sauksim par kvazi-Eilera grafu. Šī uzdevuma atrisinājums<br />

balstās uz to apstākli, ka, izdzēšot no kvazi-Eilera grafa kāda cikla šķautņu kopu, atkal iegūsim<br />

kvazi-Eilera grafu. Uzdevuma risināšanai var piedāvāt šādu algoritmu:<br />

1) izvēlēties grafa Γ virsotni, kuras pakāpe nav 0 un konstruēt jebkuru ciklu Z sākot ar šo<br />

virsotni, ierakstīt Z ciklu masīvā;<br />

2) ja Γ − Z ir bezšķautņu grafs, tad iet uz soli 4), ja nē, tad uz soli 3);<br />

3) definēt Γ := Γ − Z un iet uz soli 1);<br />

4) konstruēt iegūto ciklu sakarības grafu - virsotnes ir cikli, šķautne savieno divas virsotnes,<br />

ja atbilstošajiem cikliem ir kopīga virsotne;<br />

5) ciklu sakarības grafa katras virsotnes z kaimiņus sakārtot tādā kārtībā, kādā šie cikli<br />

krusto z;<br />

6) ciklu sakarības grafā veikt dziļummeklēšanu, izvēloties virsotņu atzīmēšanas kārtību<br />

saskaņā ar solī 5) noteikto kārtību;<br />

7) apiet ciklus tādā kārtībā, kādā tie ir atzīmēti veicot solī 6) aprakstīto dziļummeklēšanu,<br />

sekojot tam, lai pēc atkāpšanās no virsotnes visas atbilstošā cikla šķautnes ir apietas.<br />

Klasisks Eilera cikla konstruēšanas algoritms ir Flerī algoritms: sākot no jebkuras virsotnes<br />

izvēlamies incidentas šķautnes, kuras uzreiz pēc izvēlēšanas tiek nodzēstas, tā lai kārtējā izvēlētā<br />

šķautne nav tilts atlikušajā grafā (ja nav citas izvēles). Var redzēt, ka šajā procesā tiek konstruēts<br />

cikls, kas satur visas šķautnes, tātad Eilera cikls. Tiešām, tā kā sākotnēji katras virsotnes<br />

pakāpe ir pāra skaitlis, tad algoritms beigs darbu tajā virsotnē, kurā sāka, tātad algoritms<br />

konstruē kaut kādu ciklu. Jāpierāda, ka šis cikls satur visas šķautnes. Pieņemsim pretējo -<br />

algoritms konstruē ciklu Z, kas nav Eilera cikls. Izdzēsīsim no sākotnējā grafa cikla Z šķautnes<br />

un apskatīsim jebkuru atlikušā grafa sakarības komponenti C, kas nav triviāla. Apskatīsim<br />

cikla Z šķautnes, kas ir incidentas ar C virsotnēm un sanumurēsim tās to apiešanas kārtībā.<br />

Šķautne e ar vislielāko numuru pirms tās apiešanas bija tilts, vienlaicīgi eksistēja komponentes


3.14. GRAFU TEORIJAS ALGORITMISKIE JAUTĀJUMI 153<br />

C šķautnes, kas nebija tilti un kuras varēja izvēlēties šķautnes e vietā. Iegūtā pretruna pierāda<br />

to, ka algoritmā konstruētais cikls satur visas šķautnes.<br />

Eilera cikla konstruēšanas uzdevums var būt svarīgs pilsētu ielu apkopes speciālistiem - ja<br />

pilsēta tiek modelēta kā grafs, kura virsotnes ir krustojumi un šķautnes ir ielas, tad Eilera cikls<br />

norāda minimāla garuma maršrutu, kas ir jāveic sniega tīrīšanas mašīnai, lai attīrītu no sniega<br />

visas ielas.<br />

3.14.12. Hamiltona cikla un ”ceļojošā tirgoņa problēma”. Ir dots nosvērts grafs.<br />

Uzdevums ir atrast šajā grafā Hamiltona ciklu, kura šķautņu svaru summa ir minimāla, šādu<br />

uzdevumu sauksim par ”ceļojošā tirgoņa problēmu”, jo tas ir cēlies no uzdevuma par tirgoni,<br />

kam ir jāapmeklē visas pilsētas valstī un jāatgriežas sākotnējā pilsētā, ceļojot pēc iespējas īsāku<br />

maršrutu. Speciālgadījumā, ja visu šķautņu svari ir vienādi, iegūsim uzdevumu par Hamiltona<br />

cikla atrašanu. Vispārīgā gadījumā šim uzdevumam nav atrasts algoritms, kas patērē mazāk<br />

laika nekā to, kas ir nepieciešams visu virsotņu permutāciju apskatīšanai. Tātad, ja grafam ir n<br />

virsotnes, tad algoritma darbības laiks ir Ω(n!). Speciālu grafu klasēm šī uzdevuma risināšanai<br />

ir izstrādātas efektīvas heiristiskās metodes.<br />

3.14.13. Grafu izomorfisms. Ir doti divi viena tipa (neorientēti, orientēti u.c.) grafi<br />

Γ 1 = (V, E 1 ) un Γ 2 = (V, E 2 ). Uzdevums ir noteikt, vai šie grafi ir izomorfi. Naivs veids,<br />

kā atrisināt šo uzdevumu ir šāds: ar bektrekinga palīdzību ǧenerēt visas iespējamās virsotņu<br />

kopas V permutācijas f : V → V un pārbaudīt, vai grafa f(Γ 1 ) matrica ir vienāda ar grafa Γ 2<br />

matricu. Redzam, ka šis algoritms patērē laiku Ω(n!), jo permutāciju skaits kopai ar n elementiem<br />

ir vienāds ar n!. Šādu bektrekingu var būtiski paātrināt, ja abu grafu virsotņu kopas sadala<br />

apakškopās ar vienādām īpašībām, piemēram, vienādām virsotņu pakāpēm.<br />

3.14.14. Grafu zīmēšana. Praktiski svarīgs uzdevums ir efektīva grafu attēlošana jeb<br />

zīmēšana plaknē. Parasti nepietiek ar to, ka dotais uzdevums tiek modelēts un risināts ar<br />

grafu teorijas metodēm, grafi vēl ir jāattēlo tā, lai to struktūra un īpašības ir viegli uztveramas.<br />

Zīmējot grafus, parasti ir liela izvēle, piemēram, virsotņu koordinātes var būt veseli skaitli vai<br />

patvaļīgi skaitļi, šķautnes var zīmēt taisnas vai lokveida, šķautnes var būt vērstas tikai horizontālā<br />

vai vertikālā virzienā, vai arī leņķi starp šķautnēm var būt patvaļīgi. Dažādos veidos var<br />

attēlot virsotņu un šķautņu indeksus utt. Lai saprastu, kā grafs ir jāzīmē, ir jānosaka, kādas<br />

grafa īpašības un invarianti ir svarīgi uzdevuma risināšanā. Pārskaitīsim dažus populārākos grafu<br />

zīmēšanas veidus un atbilstošos grafu invariantus:<br />

1) grafs tiek zīmēts tā, lai minimizētu šķautņu krustošanos skaitu, šajā gadījumā ir jāizmanto<br />

planāru grafu plakanizācijas algoritmi;<br />

2) grafs tiek zīmēts tā, lai minimizētu tā laukumu, vienlaicīgi nodrošinot noteiktu attāluma<br />

minimumu starp jebkurām divām virsotnēm;<br />

3) grafs tiek zīmēts tā, lai minimizētu garākās šķautnes garumu;<br />

4) grafs tiek zīmēts tā, lai tiktu skaidri parādītas tā sakarīguma un augstāku kārtu sakarīguma<br />

komponentes, šajā gadījumā no sākuma ir jāatrod šīs komponentes, piemēram, ir<br />

jāatrod visi šarnīri, tilti, bloki, jāizmanto bloku grafs utt.;<br />

5) orientēts grafs tiek zīmēts tā, lai tiktu skaidri parādītas tā stingri sakarīgās komponentes,<br />

šajā gadījumā no sākuma ir jāatrod šīs komponentes, jāizmanto Herca grafs;<br />

6) grafs tiek zīmēts tā, lai tiktu skaidri parādītas tā kliķes, šajā gadījumā no sākuma ir<br />

jāatrod visas grafa kliķes;<br />

7) grafs tiek zīmēts tā, ka visas virsotnes tiek izvietotas pa riņķi un iespējami vairāk blakusesošas<br />

virsotnes ir savienotas ar šķautnēm, šajā gadījumā grafā ir jāatrod cikls ar maksimālu<br />

šķautņu skaitu, vislabākais gadījums ir tad, ja grafs ir Hamiltona grafs;<br />

8) grafs tiek zīmēts tā, lai tiktu skaidri parādītas grafa orbītas (attiecībā uz automorfisma<br />

grupas darbību) un pati automorfisma grupas darbība, šajā gadījumā no sākuma ir<br />

jāatrod grafa automorfisma grupa un tās darbības orbītas;


3.15. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 154<br />

9) grafs tiek zīmēts tā, lai tiktu parādītas tā metriskās īpašības (centrs, diametrs, rādiuss<br />

utt.), šajā gadījumā no sākuma tiek atrasti nepieciešamie metriskie invarianti, bieži<br />

šādā gadījumā grafa centra virsotnes tiek zīmētas zīmējuma centrā un pārējās virsotnes<br />

mēǧina zīmēt tā, lai to attālums līdz centra virsotnēm aptuveni sakristu ar to grafu<br />

teorētisko attālumu (radiālais attēlojums);<br />

10) grafs tiek zīmēts tā, lai tiktu skaidri parādīts kāds virsotņu kopas sadalījums vai pārklājums<br />

(grafs tiek zīmēts kā m-daļīgs grafs, grafs tiek zīmēts ar noteiktu krāsojumu u.c.);<br />

11) grafs tiek zīmēts tā, lai akcentētu kādu tā noteiktu apakšgrafu, piemēram, tā skeletu;<br />

12) grafs tiek zīmēts tā, lai tiktu pēc iespējas skaidrāk parādīts sākotnējais uzdevuma modelis<br />

pirms grafa definēšanas, šajā gadījumā grafu teorija nav jāpielieto;<br />

13) orientēts koks tiek zīmēts ar sakni zīmējuma augšā un ar lejupejošām šķautnēm tā,<br />

lai virsotnes, kuru attālums līdz saknei ir vienāds, atrodas vienā horizontālajā līmenī<br />

(rangu attēlojums).<br />

Grafu zīmēšanā var izmantot dažādas fizikālas izcelsmes heiristiskas metodes. Piemēram,<br />

var uzskatīt, ka katra virsotne ir elektrisks lādiņš un katra šķautne ir atspere, kas saista divas<br />

virsotnes, uzskatīsim, ka virsotnes atgrūžas viena no otras ar spēku, kas ir atkarīgs no to grafu<br />

teorētiskā attāluma, un uzskatīsim, ka atspere darbojas uz virsotnēm saskaņā ar Huka likumu,<br />

zīmēsim grafu kā definētās fizikālās sistēmas līdzsvara stāvokli. Šis grafu zīmēšanas veids tiek<br />

mūsdienās plaši pielietots, piemēram, matemātiskajā bioloǧijā, kur ir uzskatāmi jāattēlo grafi,<br />

kas satur vairākus simtus virsotņu.<br />

Visbiežāk grafu zīmēšanas algoritmi sevī iekļauj ǧeometriskas vai grafu teorētiskas optimizēšanas<br />

algoritmus, kas ir eksponenciāli vai faktoriāli atkarīgi no virsotņu skaita pat speciālām<br />

grafu klasēm, piemēram, kokiem.<br />

Grafu zīmēšanas algoritmi tiek plaši pielietoti tādās jomās kā elektrisko ķēžu projektēšana,<br />

matemātiskā bioloǧija, programminženierija un algoritmu animācija.<br />

3.15. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI<br />

Vingrinājums 3.136. Pierādīt, ka 6 cilvēku kopā vai nu ir 3 cilvēki, kas pazīst viens otru, vai<br />

arī ir 3 cilvēki, kas nepazīst viens otru. Pierādīt, ka 18 cilvēku kopā vai nu ir 4 cilvēki, kas pazīst<br />

viens otru, vai arī ir 4 cilvēki, kas nepazīst viens otru. Pierādīt, ka katram naturālam skaitlim n<br />

eksistē tāds naturāls skaitlis R(n), ka izpildās šāds nosacījums: ja grafa virsotņu skaits ir lielāks<br />

nekā R(n), tad vai nu grafs, vai arī tā papildinājums satur K n kā apakšgrafu.<br />

Vingrinājums 3.137. Pierādīt, ka sakarīgā grafā<br />

1) jebkurām divām maksimāla garuma vienkāršām ķēdēm ir kopīga virsotne;<br />

2) nav tiesa, ka visām maksimāla garuma vienkāršām ķēdēm ir kopīga virsotne.<br />

Vingrinājums 3.138. Pierādīt, ka katra netriviāla pašpapildinoša (izomorfa savam papildgrafam)<br />

grafa diametrs var būt vienāds tikai ar 2 vai 3.<br />

Vingrinājums 3.139. Atrodiet visus sakarīgos 3-regulāros grafus, kuru virsotņu skaits nepārsniedz<br />

10.<br />

Vingrinājums 3.140. Pierādīt, ka dažādu k-regulāru grafu skaits ar iezīmētu virsotņu kopu<br />

{1, ..., n} ir vienāds ar koeficientu pie monoma x k 1x k 2 · ... · x k n reizinājuma<br />

∏<br />

(1 + x i x j )<br />

izvirzījumā.<br />

1≤i


3.15. PAAUGSTINĀTAS GRŪTĪBAS UN PĒTNIECISKI VINGRINĀJUMI 155<br />

Vingrinājums 3.143. a n ir visu bināru virkņu skaits ar garumu n, kurām nav apakšvirkņu<br />

formā 0101. Atrast a n , izmantojot transfermatricas metodi.<br />

Vingrinājums 3.144. Dots galīga deterministiska automāta A grafs. Virkne {a n } n≥0 ir A<br />

atbilstošās regulārās valodas vārdu skaits ar garumu n. Izmantojot transfermatricas metodi,<br />

atrast šīs virknes veidotājfunkciju.<br />

Vingrinājums 3.145. Kādā valstī visi ceļi ir vienvirziena ceļi un no jebkuras pilsētas var<br />

aizbraukt uz jebkuru citu pilsētu, nobraucot pa ne vairāk kā 2 ceļiem. Viens ceļš tika slēgts uz<br />

remontu, bet joprojām no jebkuras pilsētas var aizbraukt uz jebkuru citu. Pierādīt, ka tagad no<br />

jebkuras pilsētas var aizbraukt uz jebkuru citu, nobraucot pa ne vairāk kā 3 ceļiem.<br />

Vingrinājums 3.146. Valstī ir 2005 pilsētas. Valdība vēlas būvēt vienvirziena ceļu sistēmu<br />

ar šādu īpašību: ja eksistē ceļš no pilsētas X uz pilsētu Y un ceļš no pilsētas Y uz pilsētu Z, tad<br />

neeksistē ceļš no X uz Z. Kāds ir maksimālais iespējamais ceļu skaits?<br />

Vingrinājums 3.147. Grafa virsotnes ir nokrāsotas divās krāsās. Katru sekundi katra virsotne<br />

maina savu krāsu uz to, kādā ir nokrāsots tās blakusvirsotņu vairākums. Pierādīt, ka<br />

katrai virsotnei eksistē laika moments, sākot ar kuru tā vairs nekad nemaina savu krāsu vai arī<br />

maina savu krāsu uz citu katru sekundi.<br />

Vingrinājums 3.148. Apzīmēsim ar τ(Γ) dažādo grafa skeletu skaitu. Pierādīt šādus apgalvojumus:<br />

1) τ(Γ) = τ(Γ − e) + τ(Γ/e), kur e ir patvaļīga šķautne;<br />

2) τ(K n,m ) = n m−1 m n−1 ;<br />

3) τ(W n ) = ( 3+√ 5) n + ( 3−√ 5) n − 2.<br />

2 2<br />

Vingrinājums 3.149. Atrodiet eksponenciālās veidotājfunkcijas šādām virknēm:<br />

1) a n - visu grafu skaits ar virsotņu kopu {1, ..., n}, kuriem virsotņu pakāpe nepārsniedz 2;<br />

2) b n - visu grafu skaits ar virsotņu kopu {1, ..., n}, kuriem ciklomātiskais skaitlis ir vienāds<br />

ar 1.<br />

Vingrinājums 3.150. Ir dotas jebkuras divas (preorder, postorder vai inorder) kāda bināra<br />

koka apiešanas virsotņu virknes. Vai ir iespējams pēc šīm virknēm atjaunot koka struktūru?<br />

Vingrinājums 3.151. Cik ir dažādu bināru koku ar 2n + 1 virsotni, kuriem katrai virsotnei<br />

var būt 0 vai 2 dēli?<br />

Vingrinājums 3.152. Noteikt, kuri no grafiem, kas minēti nodaļā ”Speciālas grafu klases”<br />

ir Eilera vai Hamiltona grafi!<br />

Vingrinājums 3.153. Pierādīt, ka eksistē tieši divas Hamiltona ciklu klases (ar precizitāti<br />

līdz automorfismam) oktaedra grafā un atrast tās.<br />

Vingrinājums 3.154. Pierādīt, ka neorientētam pilnam grafam var orientēt šķautnes tā, lai<br />

iegūtajā orientētajā grafā eksistētu virzīts Hamiltona cikls!<br />

Vingrinājums 3.155. Atrast hromatiskos skaitļus un hromatiskos polinomus grafiem, kas<br />

minēti nodaļā ”Speciālas grafu klases”!<br />

Vingrinājums 3.156. Atrast skaitļus α 0 , α 1 , β 0 , β 1 grafiem, kas minēti nodaļā ”Speciālas<br />

grafu klases”!<br />

Vingrinājums 3.157. Atrast dažādu neatkarīgu šķautņu kopu skaitu ķēdei un ciklam ar<br />

garumu n.<br />

Vingrinājums 3.158. A 1 un A 2 ir divas perfektas neatkarīgas virsotņu kopas dotajā grafā.<br />

Pierādīt, ka A 1 ∪ A 2 ir atsevišķu šķautņu un pāra garuma ciklu apvienojums.


3.16. PROGRAMMĒŠANAS UZDEVUMI 156<br />

Vingrinājums 3.159. Kādas valsts parlamentā ir 100 deputāti. Jebkuru 10 deputātu kopā<br />

eksistē 3 deputāti, kas pazīst viens otru. Pierādīt, ka parlamentā eksistē 8 deputātu kopa A<br />

ar šādu īpašību: katrs deputāts vai nu pieder kopai A, vai arī ir pazīstams ar kādu kopas A<br />

deputātu.<br />

Vingrinājums 3.160. Olimpiādē piedalās 21 zēns un 21 meitene. Katrs dalībnieks atrisina<br />

ne vairāk kā 6 uzdevumus. Katram dalībnieku pārim (zēns, meitene) eksistē vismaz viens uzdevums,<br />

kuru ir atrisinājuši abi pāra dalībnieki. Pierādīt, ka eksistē uzdevumus, kuru ir atrisinājuši<br />

vismaz 3 zēni un vismaz 3 meitenes.<br />

Vingrinājums 3.161. Izmantojot grafus nosakiet, vai ir iespējams apiet šaha dēli ar zirgu<br />

tā, lai katrs lauciņš būtu apmeklēts tieši vienu reizi, ja pēc visu lauciņu apiešanas zirgam ir<br />

jāatgriežas sākotnējā lauciņā.<br />

Vingrinājums 3.162. Pierādīt, ka jebkuru grafu var uzzīmēt telpā tā, lai tā šķautnes krustotos<br />

tikai virsotnēs!<br />

Vingrinājums 3.163. Noteikt, kuru no grafiem, kas minēti nodaļā ”Speciālas grafu klases”,<br />

ir planāri!<br />

Vingrinājums 3.164. Γ ir sakarīgs divdaļīgs grafs ar vismaz vienu ciklu. Pierādīt, ka, ja Γ<br />

ir planārs, tad<br />

|E| ≤ 2|V | − 4.<br />

Vingrinājums 3.165. Izmantojot planāro grafu teoriju pierādīt, ka eksistē ne vairāk kā pieci<br />

regulāri daudzskaldņi.<br />

Vingrinājums 3.166. Sauksim grafu par Knesera grafu K(n, m), ja tā virsotnes ir visas<br />

kopas {1, ..., n} apakškopas, kas satur m elementus ar nosacījumu n > 2m. Divas virsotnes<br />

ir savienotas tad un tikai tad, ja atbilstošo kopu šķēlums ir tukša kopa. Atrast grafu K(n, m)<br />

sakarīguma skaitļus, metriskos invariantus, ciklomātisko skaitli, seguma un neatkarīguma skaitļus.<br />

Nosakiet, vai grafi K(n, m) ir Eilera un Hamiltona grafi, vai tie ir planāri. Atrast Knesera grafu<br />

automorfisma grupas.<br />

Vingrinājums 3.167. Ir doti divi galīgas kopas X sadalījumi:<br />

X = A 1 ∪ ... ∪ A n = B 1 ∪ ... ∪ B n ,<br />

kur A i ∩ A j = ∅,B i ∩ B j = ∅. Izmantojot Holla teorēmu pierādīt šādu apgalvojumu: ja katram<br />

i ≤ n un jebkurām i kopām no sistēmas {A 1 , ..., A n } to apvienojums satur ne vairāk kā i kopas no<br />

sistēmas {B 1 , ..., B n }, tad eksistē n elementu kopa {x 1 , ..., x n } ⊆ X, kas ir apakškopu pārstāvju<br />

sistēma vienlaicīgi attiecībā uz {A 1 , ..., A n } un {B 1 , ..., B n }.<br />

3.16. PROGRAMMĒŠANAS UZDEVUMI<br />

Vingrinājums 3.168. Uzrakstīt programmu, kas veic grāmatā minēto grafu datu struktūru<br />

savstarpējo pārveidošanu.<br />

Vingrinājums 3.169. Uzrakstīt programmu, kas veic grāmatā definētas operācijas ar grafiem.<br />

Vingrinājums 3.170. Uzrakstīt programmu, kas aprēķina grāmatā definētos grafu invariantus.<br />

Vingrinājums 3.171. Piedāvāt algoritmu un uzrakstīt programmu, ar kuras palīdzību var<br />

atrast neorientēta sakarīga grafa diametru un centru, izmantojot tikai plašummeklēšanu. Uzrakstīt<br />

programmu, kas<br />

1) realizē plašummeklēšanu (konstruē meklēšanas koku);<br />

2) realizē diametra un centra noteikšanu ar plašummeklēšanas palīdzību.<br />

Vingrinājums 3.172. Piedāvāt efektīvu algoritmu un uzrakstīt programmu, kas nosaka, vai<br />

divi grafi ir izomorfi.


3.16. PROGRAMMĒŠANAS UZDEVUMI 157<br />

Vingrinājums 3.173. Uzrakstīt programmas, kas ar bektrekinga palīdzību grafā atrod<br />

1) visus dotā garuma ciklus;<br />

2) maksimālu neatkarīgu virsotņu kopu;<br />

3) virsotņu krāsojumu ar doto krāsu skaitu;<br />

4) visus regulārus grafus ar dotu virsotņu skaitu un pakāpi.<br />

Vingrinājums 3.174. Kādā mājā ir vairākas istabas, katrā istabā ir lampa un viens vai<br />

vairāki lampu slēdži (kas var kontrolēt jebkuru, bet fiksētu lampu mājā). Mājas saimnieks<br />

sākotnēji atrodas priekštelpā, kurā ir ieslēgta lampa un var pārvietoties tikai uz apgaismotām<br />

istabām, viņa mērķis ir nokļūt kādā dotajā istabā. Uzrakstīt programmu, kas atrod īsāko<br />

maršrutu no priekštelpas uz šo istabu, ja ir dota mājas karte un slēdžu saraksts katrā istabā.<br />

Vingrinājums 3.175. Kāda pilsēta ir sadalīta kvartālos, un katra ēka aizņem vairākus<br />

kvartālus tā, ka katram ēkas kvartālam ar kādu citu ēkas kvartālu ir kopīga robežšķautne. Pilsētā<br />

var būvēt tuneļus, katrs no kuriem var savienot divas ēkas un apmierina šādas prasības: tuneļi<br />

var iet tikai pa kvartālu robežām, tuneļi var būt tikai taisni. Ir dota pilsētas ēku karte. Uzrakstīt<br />

programmu, kas atrod īsāko tuneļu sistēmu, kas nodrošina to, ka no jebkuras ēkas pa tuneļiem<br />

var pāriet uz jebkuru citu ēku.<br />

Vingrinājums 3.176. Ir dota cilvēku grupa, kurā daži cilvēki pazīst viens otru. Uzrakstīt<br />

programmu, kas sadala cilvēku grupu komandās tā, lai būtu ievēroti šādi nosacījumi:<br />

1) katrs cilvēks pieder tieši vienai komandai;<br />

2) katrā komandā ir vismaz viens cilvēks;<br />

3) katrs cilvēks pazīst visus savas komandas locekļus;<br />

4) starpība starp maksimālo un minimālo cilvēku skaitu komandās ir minimāla.


Literatūra<br />

[1] Ambainis A. Uzdevumi kombinatorikā. - http://www.liis.lv/kombuzd/. - 33 lpp.<br />

[2] Andžāns A., Bērziņš A., Stupāne M. Matemātikas olimpiāžu un konkursu uzdevumi. - R.: Zvaigzne, 1992.<br />

- 235 lpp.<br />

[3] Andžāns A., Zariņš P. Matemātiskās indukcijas metode un varbūtību teorijas elementi. - R.: Zvaigzne,<br />

1983. - 186 lpp.<br />

[4] Dambītis J. Modernā grafu teorija. Mācību līdzeklis. - R.: Datorzinību Centrs, 2002. - 160 lpp.<br />

[5] <strong>Daugulis</strong> P. Diskrētā matemātika. - Rēzekne: RA izdevniecība, 2001. - 117 lpp.<br />

[6] Riekstiņš E., Andžāns A. Atrisini pats! - R.: Zvaigzne, 1984. - 271 lpp.<br />

[7] Strazdiņš I. Diskrētās matemātikas pamati. - R.: Zvaigzne, 1980. - 309 lpp.<br />

[8] Strazdiņš I. Diskrētā matemātika. - R.: Apgāds Zvaigzne ABC, 2001. - 146 lpp.<br />

[9]<br />

Šteiners K Augstākā matemātika IV, lekciju konspekts inženierzinātņu un dabaszinātņu studentiem. - R.:<br />

Apgāds Zvaigzne ABC, 1999. - 167.lpp.<br />

[10] Rosen K.H.(editor in chief). Handbook of discrete and combinatorial mathematics. - Boca Raton: CRC<br />

Press, 2000. - 1232 lpp. 17.<br />

[11] Ivanov B.N. Diskretnaja matematika. Algoritmi i programmi - M.: Laboratorija bazovih znanii, 2001. - 288<br />

lpp.<br />

[12] Nefedov V.N., Osipov V.A. Kurs diskretnoi matematiki. - M.: MAI, 1992. - 264 lpp.<br />

[13] Novikov F.A. Diskretnaja matematika dlja programmistov. - SPb.: Piter, 2001. - 304 lpp.<br />

158

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!