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
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