Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
OILERIO GRAFAI
1
Grafas yra figūra, sudaryta iš taškų (vadinamų
viršūn÷mis) ir atkarpų (vadinamų briaunomis).
Briauna nebūtinai turi būti tiesi linija (gali būti lenkta,
banguota ir t.t.), tačiau ji visada jungia dvi viršūnes. Kai
briauna jungia viršūnę su ja pačia (tai irgi leidžiama), ji
vadinama kilpa.
2
1 pavyzdys . Šis grafas turi 5 viršūnes (A, B, C, D ir E) ir 7
briaunas, kurias žym÷sime a, b, c, d, e, f ir g.
Pastabos: pirma, briaunų e ir f susikirtimo taškas n÷ra viršūn÷
(galima įsivaizduoti, kad jos prasilenkia, pvz., viena yra
aukščiau už kitą). Be to, n÷ra jokių apribojimų, draudžiančių
kelioms briaunoms jungti tas pačias dvi viršūnes, - tai
matome viršūnių D ir C atveju.
A
a
B
e
b
f
d
C
E
g
D
c
3
2 pavyzdys. Tai - grafas, turintis 8 viršūnes (A, B, C, D, E, F,
G ir H) ir 11 nepažym÷tų briaunų (nebūtina kaip nors žym÷ti
briaunas). Briauną galima nusakyti tiesiog nurodant dvi
viršūnes, kurios ją jungia. Pavyzdžiui, mes galime kalb÷ti
apie briauną AH arba briauną BD ir t.t. Beje, šis grafas turi
kilpą - tai briauna GG.
C
B
D
H
A
G
E
F
4
3 pavyzdys. Tai - grafas, turintis 4 viršūnes ir neturintis n÷
vienos briaunos. Nors ir visai neįdomus, grafas be briaunų
yra leistinas.
A
B
C
D
5
4 pavyzdys. Šis grafas turi 8 viršūnes ir 9 briaunas.
Šis grafas sudarytas iš dviejų atskirų nesujungtų dalių.
Tokie grafai vadinami nejungiaisiais, o atskiri jo „gabalai"
- grafo komponent÷mis.
A
B
C
G
D E F H
6
5pavyzdys. Čia grafas turi 4 viršūnes (A, B, K ir D) ir 7
briaunas (AK, AK, AB, AD, AD, KB ir DB}.
D
A
B
K
7
5 pavyzdys išryškina vieną labai svarbų bruožą: grafą
galima nubraižyti įvairiausiais būdais, tačiau svarbu
ne jo išvaizda, o tik tai, kokios viršūn÷s su kuriomis
yra sujungtos.
Taigi, grafas yra sąsajų struktūra: jis pasako, kad yra
objektų grup÷ (viršūn÷s) ir kad šie objektai yra
tarpusavyje susiję (arba nesusiję). Kaip šie objektai yra
tarpusavyje susiję, nurodo briaunos. Tai ir yra visa
informacija, kurią suteikia grafas - nei daugiau, nei
mažiau.
8
6 pavyzdys. Paskutinę krepšinio sezono savaitę (kai
varžybos karščiausios) Lietuvos miestų krepšinio
čempionato tvarkaraštis yra toks:
• Pirmadienis: Vilnius - Šiauliai, Panev÷žys - Alytus,
Klaip÷da - Kaunas.
• Antradienis: Vilnius - Šiauliai.
• Trečiadienis: Panev÷žys - Kaunas, Alytus - Klaip÷da.
• Ketvirtadienis: Vilnius - Kaunas, Panev÷žys - Šiauliai,
Alytus - Klaip÷da.
• Penktadienis: Alytus - Šiauliai, Klaip÷da - Vilnius.
• Šeštadienis: Alytus - Vilnius, Panev÷žys - Klaip÷da,
Šiauliai - Kaunas.
9
Visa informacija, kas su kuo žaidžia, yra sąsajos
(kiekvienos rungtyn÷s sieja dvi skirtingas komandas) ir gali
būti patogiai pavaizduota šiuo grafu.
Vilnius
Kaunas
Panev÷žys
Klaip÷da
Šiauliai
Alytus
10
Kiekviena matematikos šaka turi savitą terminiją, ir tai
ypač būdinga grafų teorijai. Apibr÷šime keletą būtinų
sąvokų ir sutartinių žym÷jimų.
• Dvi viršūn÷s vadinamos gretimomis, jei jas jungia
bent viena briauna.
A
B
F
C
E
D
11
Šiame grafe viršūn÷s A ir B yra gretimos, o viršūn÷s C ir D
- ne. Viršūn÷ E yra gretima pati sau, nes ji turi kilpą.
Viršūn÷s laipsnis yra briaunų, išeinančių iš tos viršūn÷s,
skaičius (kilpos „įnašas" į laipsnį lygus dviem).
Grafe, parodytame paskutiniame pavyzdyje, viršūn÷s A
laipsnis lygus 4 (trumpai deg(A) = 4), viršūn÷s B laipsnis
lygus 3 (deg(B) = 3). deg(C) = 3, deg(D)= 2, deg(E) = 4
(kilpos d÷ka), ir deg(F) = O (viršūn÷, kurios laipsnis yra
O, vadinama izoliuota).
12
Grafo keliu vadinama gretimų viršūnių seka. Kelyje ta
pati viršūn÷ gali būti kelis kartus, tačiau ta pati
briauna gali pasitaikyti kelyje tik vieną kartą.
13
Kelias vadinamas ciklu, jei jis prasideda ir baigiasi ta
pačia viršūne.
Grafas yra jungusis, jei bet kurias dvi viršūnes galima
sujungti keliu. Iš esm÷s tai reiškia, kad galima nukeliauti
iš vienos viršūn÷s į bet kurią kitą grafo briaunomis.
Priešingu atveju jis vadinamas nejungiuoju grafu.
Nejungusis grafas yra sudarytas iš jungiųjų dalių,
vadinamų grafo komponent÷mis.
14
A
B
D
C
E
F
G
a)
15
A
B
A
B
D
E
C
F
D
E
C
F
G
b)
G
c)
16
Kartais jungtajame grafe yra tokia briauna, kurią
ištrynus, grafas tampa nejungusis. Tokia briauna vadinama
tiltu (“sudeginęs tiltą, nebegal÷si grįžti”).
Jei kelią sudaro visos jungiojo grafo briaunos
(lygiai po vieną kartą), jis vadinamas Oilerio keliu.
Oilerio kelias, kuris prasideda ir baigiasi toje
pačioje viršūn÷je, vadinamas Oilerio ciklu.
17
Pirmoji Oilerio teorema
Jei grafas turi nelyginio laipsnio viršūnę, tai jis
neturi Oilerio ciklų.
Jei jungtojo grafo visos viršūn÷s yra lyginių
laipsnių, tai jis turi bent vieną Oilerio ciklą (paprastai
daugiau kaip vieną).
Beje, nejungusis grafas negali tur÷ti Oilerio ciklų, net
jei visos jo viršūn÷s yra lyginių laipsnių
Pvz.:
18
Antroji Oilerio teorema
Jei grafas turi daugiau kaip dvi nelyginio laipsnio
viršūnes, tai jis neturi n÷ vieno Oilerio kelio.
Jei jungusis grafas turi lygiai dvi nelyginio laipsnio
viršūnes, tai jis turi bent vieną Oilerio kelią (paprastai
daugiau). Kiekvienas toks kelias prasideda vienoje
nelyginio laipsnio viršūn÷je ir baigiasi kitoje.
19
A
B
E
A
B
D
C
D
C
a)
b)
E
A
B
D
C
c)
F
20
Iš Oilerio teoremos žinome, kad:
a) pav. parodyto grafo apeiti negalima (jis neturi nei
Oilerio ciklo, nei Oilerio kelio);
b) pav. grafą galima apeiti tik tada, jei prad÷sime
viršūn÷je D ir baigsime viršūn÷je C arba atvirkščiai (jis
turi Oilerio kelią, bet neturi Oilerio ciklo);
c) pav. grafą galima apeiti taip, kad pradžia ir pabaiga
būtų toje pačioje vietoje (jis turi Oilerio ciklą).
21
Pirmojoje ir Antrojoje Oilerio teoremose kai ko
trūksta.
KO?????????????????????????????????????
22
Teoremos apima atvejus, kai grafas neturi nelyginio
laipsnio viršūnių (Pirmoji teorema), kai turi dvi nelyginio
laipsnio viršūnes (Antroji teorema) ir daugiau kaip dvi
nelyginio laipsnio viršūnes (Antroji teorema). Oileris
nustat÷, kad grafas negali tur÷ti lygiai vienos nelyginio
laipsnio viršūn÷s.
Oileris pasteb÷jo, kad visų grafo viršūnių laipsnių
bendra suma yra lygi dvigubam grafo briaunų skaičiui. Iš
tikrųjų, briauna XY priskaičiuojama į laipsnių sumą du
kartus: vieną kartą - į viršūn÷s X laipsnį ir vieną kartą - į
viršūn÷s Y laipsnį. Iš Oilerio teiginio išplaukia, jog visų
grafo viršūnių laipsnių suma yra lyginis skaičius, o tai
reiškia, kad joks grafas negali tur÷ti vienintel÷s nelyginio
laipsnio viršūn÷s.
23
Trečioji Oilerio teorema
• Visų grafo viršūnių laipsnių suma yra lyginis
skaičius (lygus dvigubam briaunų skaičiui).
• Bet kurio grafo nelyginio laipsnio viršūnių
skaičius yra lyginis.
Oilerio teoremos yra labai patogios -jos nurodo
lengvą būdą (vos pažvelgus į viršūnių laipsnius)
nustatyti, ar grafas turi Oilerio ciklą arba Oilerio kelią.
Deja, jos nepadeda rasti konkretaus Oilerio ciklo ar kelio
(kai jų yra).
24
Flerio algoritmai
25
Flerio algoritmas Oilerio ciklui rasti
1. Nustatyti ar grafas yra jungusis ir ar visų viršūnių
laipsniai yra lyginiai.
2. Prad÷ti nuo bet kurios viršūn÷s.
3. Keliaujama briauna, jei:
a) Ji n÷ra nekeliautos dalies tiltas arba
b) N÷ra kito pasirinkimo.
4. Sunumeruoti briaunas per÷jimo eil÷s tvarka.
5. Jei nebegalima toliau keliauti, tai algoritmas
baigiamas.
Jei jungusis grafas turi lygiai dvi nelyginio laipsnio
viršūnes, tai jis negali tur÷ti Oilerio ciklo, tačiau turi
Oilerio kelią.
26
Flerio algoritmas Oilerio keliui rasti
1. Įsitikinti ar grafas jungusis ir ar yra tik dvi
nelyginio laipsnio viršūn÷s.
2. Prad÷ti nuo bet kurios nelyginio laipsnio viršūn÷s.
3. Keliauti briauna, jei
a) ji n÷ra nekeliautos dalies tiltas arba
b) n÷ra kito pasirinkimo.
4. Numeruoti briaunas jų per÷jimo eil÷s tvarka.
5. Algoritmas baigiamas, kai nebegalima daugiau
keliauti.
27
Flerio algoritmai nurodo būdą, kaip rasti efektyvų visų grafo
briaunų ap÷jimo kelią, kai grafas neturi nelyginio laipsnio
viršūnių arba turi dvi.
Kitais atvejais prie grafo prijungiamos papildomos briaunos
(kurios vadinamos fiktyviomis) taip, kad nelyginio laipsnio
viršūn÷s taptų lyginio laipsnio viršūn÷mis. Tokia grafo
perdarymo procedūra, kai viršūnių laipsnių nelyginumas
pašalinamas, prijungiant papildomas briaunas, vadinama
grafo oilerizavimu.
Atliekant grafo oilerizavimą, reikia steb÷ti, kad prijungiamos
briaunos būtų tik esančių grafo briaunų dublikatai.
Matematin÷s struktūros naudojimas aprašant realaus
gyvenimo uždavinius, yra vadinamas pradinio uždavinio
matematiniu modeliu.
28
Apsukrus ledų pardav÷jas. Miesto ledų pardav÷jas turi
apeiti nedidelio rajono gatves, parodytas a) pav.,
prad÷damas ir baigdamas kelionę prie ledų kiosko,
esančio Minijos ir Akmenos gatvių kampe (taškas P a)
pav.). Karšta vasaros diena, bet kaip tyčia sugedo
šaldytuvas ledų vežim÷lyje, tod÷l pardav÷jui ypač rūpi
kuo greičiau atlikti savo darbą.
Šio uždavinio optimizavimui, reikia pritaikyti Oilerio
ciklus, t.y. pirmiausia turi nedidelį rajoną pavaizduoti
grafu. Pardavin÷jant ledus, užtenka vieną kartą eiti gatve,
tod÷l kiekvieną rajono gatvę galima pavaizduoti briauna,
o kiekvieną sankryžą - viršūne, kaip parodyta b) pav.
Dabar pradinis uždavinys tolygus optimalaus maršruto
grafo briaunomis radimui (a) pav.).
29
Pav. a)
30
Pav. b)
31
Pav. c)
32
Prekybos agento maršrutas. Prekybos agentas turi
aplankyti savo klientus, gyvenančius penkiuose
skirtinguose miestuose (A, B, C, D ir E). Šalia
kiekvienos parodyto grafo briaunos nurodytos kelion÷s
išlaidos (benzinas, draudimas, automobilio
susid÷v÷jimas ir t.t.) tarp bet kurių dviejų miestų.
Kelion÷ turi prasid÷ti ir baigtis mieste A, kuriame
gyvena prekybos agentas. Koks gal÷tų būti pigiausias
prekybos agento kelion÷s maršrutas (į visus miestus
nuvažiuojame lygiai po vieną kartą)?
33
E
A
B
Kur: AB=500
BC=305
CD=320
DE=302
AE=205
AC=200
AD=185
BE=340
BD=360
CE=165.
C
D
34
Tie skaičiai reiškia kelion÷s atitinkama briauna išlaidas - jie
lygiai taip pat gal÷tų reikšti atstumą, laiką, pakel÷s medžių
skaičių ir t.t. Apskritai, jei grafo briaunoms skirti kokie nors
skaičiai, juos vadinsime briaunų svoriais, o patį grafą
vadinsime svoriniu grafu. Taigi, grafas yra svorinis grafas;
briaunos AD svoris yra 185, briaunos BC - 305 ir t.t. Beje,
n÷ra reikalaujama, kad briaunų ilgiai būtų proporcingi jų
svoriams. Kaip ir įprastiniuose grafuose, svorinio grafo
briaunų ilgis ir pavidalas yra visiškai nesvarbu.
Jei briaunų svoriai reikštų ne išlaidas, o kitus kintamuosius
(pavyzdžiui, atstumą ar laiką), tai uždavinys irgi būtų
atitinkamai pakeistas (rasti trumpiausią arba „greičiausią"
maršrutą). Kalb÷dami apie pigiausią, trumpiausią,
greičiausią ir t.t. maršrutą, vartojama bendra sąvoka
optimalus maršrutas.
35
Uždavinio formulavimas bendru atveju. Duotas svorinis
grafas. Reikia rasti optimalų maršrutą, kuris prasideda ir
baigiasi nurodytoje viršūn÷je ir eina per kiekvieną viršūnę
lygiai vieną kartą.
Ciklas, kuris prasideda kurioje nors grafo viršūn÷je ir,
patekęs į kiekvieną kitą grafo viršūnę lygiai vieną kartą, v÷l
grįžta į pradinę viršūnę, vadinamas Hamiltono ciklu.
36
Skirtumas tarp Oilerio ciklo ir Hamiltono ciklo gali
pasirodyti visai nedidelis (tereikia žodį „briauna"
pakeisti žodžiu „viršūn÷"). Tačiau matematiniu požiūriu
skirtumas yra nepaprastai didelis. Pavyzdžiui, du grafai.
1 pav. 2 pav.
37
Grafas 1 pav. Oilerio ciklo neturi (per daug nelyginio
laipsnio viršūnių), tačiau jis turi daugybę Hamiltono ciklų
(A, B, D, C, E, F, G, A IR A, D, C, E, B, G, F, A ir t.t.).
2 pav. grafe yra Oilerio ciklas, nes visos viršūn÷s yra
lyginio laipsnio, tačiau n÷ra Hamiltono ciklų.
N÷ra universalaus būdo atsakyti į klausimą, ar grafas
turi Hamiltono ciklų.
38
Dirako teorema: Tarkime, kad jungusis grafas turi ne
mažiau kaip tris viršūnes. Jei kiekviena grafo viršūn÷ yra
gretima bent pusei viršūnių, tai grafas turi Hamiltono
ciklą.
PVZ.: Šis grafas turi šešias trečiojo laipsnio viršūnes. Pagal
Dirako teoremą, jis turi Hamiltono ciklą.
39
Apibr÷žimas. Grafai, kurių kiekviena viršūn÷ yra gretima
visoms likusioms viršūn÷ms, vadinami pilnaisiais grafais.
Pilnieji grafai turi daugybę Hamiltono ciklų.
Formul÷ pilnojo grafo Hamiltono ciklų skaičiui rasti:
Pilnasis N-viršūnių grafas turi (N-1)! Hamiltono ciklų.
Pusę jų pakartoja kitą pusę atvirkščia tvarka.
Pilnojo svorinio grafo optimalaus Hamiltono ciklo radimo
uždavinys daug kur taikomas, ir vadinamas keliaujančio
pirklio uždaviniu (KPU).
40
• Siuntinių paskirstymas. Pašto tarnautojas turi
siuntinius pristatyti į nurodytas vietas. Tarnautojo
tikslas yra išvežioti siuntinius į paskirties vietas ir
grįžti į pradinį tašką (pašto sand÷lį), sugaištant kuo
mažiau laiko. Aišku, kad tai - KPU pavyzdys.
Vidutiniškai per dieną pašto mašina užsuka į 100-200
vietų, taigi turime KPU tiek viršūnių turinčiam grafui.
41
• Elektroninių mikroschemų gamyba. Gaminant
integralinę mikroschemą, specialioje plokšt÷je reikia
išgręžti dešimtis tūkstančių plonų skylučių. Tai daroma
sukiojant plokštę po stacionariu lazerio spinduliu. Darbo
našumo sumetimais eil÷s tvarka, kuria gręžiamos
skylut÷s, turi būti tokia, kad visa gręžimo procedūra būtų
atlikta per trumpiausią laiką. Tai yra KPU pavyzdys,
kuriame grafo viršūn÷s yra skylut÷s mikroschemoje, o
viršūnes X ir Y jungiančios briaunos svoris yra trukm÷,
per kurią plokšt÷ patraukiama iš gręžimo vietos X į
gręžimo vietą Y.
42
Staklių darbo grafikas. Daugelyje pramon÷s šakų
naudojamos stakl÷s, atliekančios įvairias operacijas
(operacijos bus grafo viršūn÷s). Atlikus darbą X, stakl÷s
turi būti paruoštos naujam darbui. Trukm÷, reikalinga
stakl÷ms po operacijos X pertvarkyti operacijai Y (arba
atvirkščiai), yra viršūnes X ir Y jungiančios briaunos
svoris. Reikia sudaryti staklių darbo grafiką, pagal kurį
visos operacijos būtų cikliškai atliekamos per trumpiausią
laiką.
43
• Reikalai mieste. Tur÷dami daug reikalų mieste,
norime organizuoti kelionę taip, kad nueitume į visas
reikalingas vietas optimaliu maršrutu ir grįžtume namo - tai
v÷l KPU pavyzdys.
Taigi tarkime, kad turime realų uždavinį, ir, atidžiau
pažiūr÷jus, paaišk÷ja, kad tai KPU. Kaip rasti optimalų
Hamiltono ciklą?
Prad÷kime nuo natūralaus bandymų ir klaidų metodo, kurį
mokslininkai dažnai vadina j÷gos algoritmu.
44
KPU sprendimo j÷gos algoritmas
• Surašomi visi svorinio grafo Hamiltono ciklai.
• Sudedami kiekvieno Hamiltono ciklo visų briaunų
svoriai (jų suma vadinama ciklo svoriu).
• Iš visų ciklų išrenkamas mažiausio svorio ciklas –
jis yra uždavinio sprendinys.
Pritaikykime j÷gos algoritmą prekybos agento KPU
sprendimui:
45
46
Taigi, prekybos agento optimalus maršrutas aprašomas
Hamiltono ciklu A, D, B, C, E, A (arba atvirkščiu ciklu
A, E, C, B, D, A). Optimalios išlaidos yra 1220 Lt.
47
Algoritmai
Efektyvūs (geri)
Flerio algoritmai
Neefektyvūs (blogi)
J÷gos algoritmas
KPU efektyvūs sprendimo algoritmai:
• Artimiausio kaimyno algoritmas;
• Pigiausiosios jungties algoritmas.
48
Artimiausiojo kaimyno algoritmas
Artimiausiojo kaimyno algoritmą beveik visiškai
apibūdina jo pavadinimas.
Artimiausiojo kaimyno algoritmas:
• Kelionę prad÷ti iš namų.
• Kad ir kuriame mieste esama, kitą dar neaplankytą
miestą rinkis tą, į kurį nuvykti pigiausia (t.y. artimiausią
kaimyną). Jei tokių artimiausių miestų (iki kurių
atstumai vienodi) yra keli, rinkis bet kurį. Taip elgtis, kol
bus aplankyti visi miestai.
• Iš paskutinio miesto grįžti namo.
49
Pavyzdys. Pritaikykime artimiausiojo kaimyno
algoritmą mūsų pirmajam KPU. Prekybos agentas tur÷tų
keliauti taip: jis pradeda iš taško A (namai). Iš A
pigiausia (trumpiausia) kelion÷ yra į D, tod÷l jis vyksta
ten. Iš D pigiausiai galima nuvykti (išskyrus A) į E. Iš E
pigiausia kelion÷ - į C. Iš C pigiausiai pasiekiamas kitas
miestas yra B (prekybos agentas neketina grįžti nei į E,
nei į A). Miestas B yra paskutinis iš visų aplankytinų
miestų, tod÷l jis grįžta atgal į A. Taigi, artimiausiojo
kaimyno algoritmas duoda Hamiltono ciklą A, D, E, C,
B, A, kurio išlaidos (svoris) - 1457 Lt.
Palyginę šį algoritmą (ir juo gautą atsakymą) su j÷gos
algoritmu (ir jo atsakymu), pasteb÷sime du dalykus:
50
Hamiltono ciklas, gautas artimiausiojo kaimyno
algoritmu, yra brangesnis už optimalų sprendinį (1457 Lt
vietoje 1220 Lt). Žinodami optimalaus sprendinio kainą
(1220 Lt), galime apskaičiuoti santykinę paklaidą: (1457
- 1220)/l220 = 237/1220 =0,194, kuri rodo, kad rastasis
sprendinys skiriasi nuo optimalaus sprendinio apie
19,4%.
51
KARTOTINIS ARTIMIAUSIO KAIMYNO
ALGORITMAS
1 žingsnis. Pasirinkti bet kokią viršūnę ir taikyti
artimiausio kaimyno algoritmą su pradiniu tašku
pasirinktoje viršūn÷je.
2 žingsnis. Pakartoti 1 žingsnį su visomis grafo
viršūn÷mis.
3 žingsnis. Iš visų 2 žingsnyje gautų Hamiltono ciklų
išrinkti geriausią (mažiausios kainos ar mažiausio svorio)
sprendinį.
4 žingsnis. Perrašyti 3 žingsnyje gautą sprendinį,
pradiniu tašku imant namų viršūnę.
52
Pavyzdys.: Pigiausia grafo briauna, yra 165 Lt vert÷s
briauna EC. Patogumo d÷lei ją pažymime raudonai. Kita
pigiausia briauna yra 185 Lt vert÷s briauna DA. Taip pat
ją pažymime raudonai. Dabar pigiausia briauna yra AC -
jos svoris 200 Lt. Ji taip pat tinka, ją pažymime raudonai.
A
A
E
B
E
B
D
C
D
C
53
Pigiausia briauna iš nepažym÷tų yra EA - 205 Lt, tačiau
jos negalime imti - ji uždarytų mažą ciklą E, A, C. E, o
tai neleistina! Kad neužmirštume, jog briauna EA jau
patikrinta ir atmesta, ištrinkime arba išbraukime ją.
Dabar pigiausia briauna iš likusių yra ED, tačiau ji taip
pat netinka, nes sukuria ciklą E, D, A, C, E. Briauną
ED ištriname ir bandome BC - tai pigiausia briauna,
kurios vert÷ yra 305 Lt. Jei pasirinktume BC ir
pažym÷tume ją raudonai, iš viršūn÷s C išeitų trys
skirtingos briaunos, o taip Hamiltono cikle būti negali.
Tad BC taip pat netinka.
54
Toliau bandome 320 Lt vert÷s briauną DC, tačiau ir jos
tenka atsisakyti, nes ji uždaro ciklą D, C, A, D. Toliau
bandome briauną EB, kuri tinka -ją pažymime
raudonai. Paskutin÷ pasirenkama briauna BD. kuri ir
užbaigia Hamiltono ciklą. Dabar galime parašyti
sprendinį, imdami bet kurią pradinę viršūnę. Prekybos
agentui reikalingas Hamiltono ciklas yra A, D, B, E, C,
A (arba A. C, E, B, D, A), kainuojantis 1250 Lt.
55
Pigiausiosios jungties algoritmas
1 žingsnis. Pirmiausia imti mažiausio svorio briauną
(jei tokių yra daugiau nei viena, rinkis bet kurią).
Pažym÷ti šią briauną.
2 žingsnis. Imti kitą pigiausią nepažym÷tą briauną ir
pažym÷ti ją, išskyrus atvejus, kai
a) ji uždaro mažesnį ciklą;
b) ji yra trečia pažym÷ta briauna, išeinanti iš
vienos viršūn÷s.
Jei tokių briaunų yra daugiau nei viena, rinktis bet
kurią.
3, 4, ... žingsniai. Kartoti 2 žingsnį, kol susidarys
visas Hamiltono ciklas.
56
Medžiai
1
Dažnai susiduriama su tokiomis problemomis:
Optimaliai suprojektuoti telefonų tinklą,
Optimaliai suprojektuoti kompiuterių tinklą,
Nutiesti geležinkelį ir pan.
Tokio tipo uždaviniai yra vadinami minimalaus tinklo
uždaviniais.
2
Reikia rasti pradinio grafo pografį, kuris tenkintų šias
sąlygas:
1. Jis turi būti jungusis. (Tai akivaizdu, nes kiekviena
viršūn÷ turi junktis su kita).
2. Jame neturi būti ciklų. (Turi būti neįmanoma apeiti
sprendinio pografio ar jo dalies ir surgįžti į pradinę
viršūnę).
3
Apibr÷ž
÷žimas.
Jungusis grafas, neturintis ciklų, vadinamas
medžiu.
4
Apibr÷ž
÷žimas.
Grafas yra jungusis, jei bet kurias dvi
viršūnes galima sujungti keliu (iš esm÷s tai reiškia, kad
galima nukeliauti iš vienos viršūn÷s į bet kurią kitą) grafo
briaunomis.
Apibr÷ž
÷žimas.
Grafas, kuriame n÷ra ciklų, vadinamas
acikliniu arba mišku.
5
Medžiai yra paprasčiausia grafų k1as÷. Juos tenkina
daugelis savybių, tačiau jos ne visada tinka bendru grafų
atveju. Taikant medžiams daugumą įrodymų ir
pamąstymų, jie iš tikrųjų yra daug paprastesni nei atrodo.
Medžiai yra pati populiariausia grafų klas÷, kuri yra
taikoma programavime įvairiausioms situacijoms
realizuoti.
6
Medžių savyb÷s s (1)
Jei grafas yra medis, tai bent dvi jo viršūn÷s jungia vienas
ir tik vienas kelias. Atvirkščiai, grafas, kurio bet kurias dvi
viršūnes jungia tik vienas kelias, yra medis.
7
Medžių savyb÷s s (2)
Visos medžio briaunos yra tiltai. Atvirkščiai, jungusis
grafas, kurio briaunos – tiltai, yra medis.
8
Medžių savyb÷s s (3)
N viršūnių medis turi N-1 briauną.
Pastaba. 3 savyb÷ turi ir atvirkščią teiginį, tačiau ne
visada galima teigti, kad grafas, kurio briaunų skaičius yra
vienetu mažesnis už viršūnių skaičių, yra medis.
Svarbu , kad būtų jungusis grafas.
9
Medžių savyb÷s s (4)
Jungusis N viršūnių ir N-1 briaunos grafas yra medis.
10
Apibr÷ž
÷žimas.
G yra bet koks jungusis grafas. Tada G turi
bent vieną ( dažniausiai daugiau nei vieną) jungiantįjį
medį. Grafo G pografis vadinamas grafo G jungiančiuoju
medžiu, jei:
a) jo viršūn÷s sutampa su grafo G viršūn÷mis;
b) jo briaunos yra grafo G briaunos;
c) jis yra medis.
11
12
G yra jungusis svorinis grafas. Tarp visų grafo G
jungiančiųjų medžių yra vienas ( gali būti keli), kurio
bendrasis svoris yra mažiausias.
Toks medis vadinamas grafo G minimaliuoju
jungiančiuoju medžiu.
13
A
B
A
B
A
B
1
1
1
1
1
1
2
C
2
D
C
D
C
D
14
Uždaviniai, kuriuos pavadinome minimalaus tinklo
uždaviniais, naudojant grafų teorijos terminus
vadinami minimaliojo jungiančiojo (MJM)
uždaviniais.
15
Kruskalo algoritmas
1 žingsnis. Rasti pigiausią grafo briauną (jei tokių yra ne
viena, pasirinkti bet kurią). Pažym÷ti tą briauną.
2 žingsnis. Rasti grafe pigiausią dar nepažym÷tą briauną,
kurią pažym÷jus, nesusi darytų ciklo (negali būti ciklų). Jei
tokių yra ne viena, pasirinkti bet kurią. Ją pažym÷ti.
3,4 ir t.t. Žingsniai. Kartoti 2 žingsnį tol, kol bus
panaudotos visos grafo viršūn÷s. Pažym÷tos briaunos ir
sudaro minimalųjį jungiantįjį medį.
16
Išvada. Kruskalo algoritmu visada gaunamas pigiausias
jungiantysis medis.
Grafo jungiantysis medis gali būti vadinamas tinklu.
Tinklo viršūn÷s vadinamos mazgais.
Trumpiausias iš visų tinklų, jungiančių taškų aibę,
vadinamas trumpiausiuoju tinklu.
Bet kuris tinklo mazgas, kuriame trys atšakos susieina
120 0 kampu, vadinamas tinklo Šteinerio tašku.
17
Trumpiausio tinklo, jungiančio tris taškus radimo
algoritmas
1. Jei vienas iš trikampio ABC kampų yra 120 0 arba
didesnis, tai trumpiausias tinklas sutampa su
minimaliuoju jungiančiuoju medžiu. Rasti tokį tinklą
labai paprasta, nes reikia paimti dvi trumpesnes
trikampio kraštines.
2. Jei visi trikampio kampai mažesni už 120 0 , tai
trumpiausiasis tinklas ir minimalusis jungiantysis medis
nesutampa. Trumpiausiąjį tinklą galima gauti tik
suradus Šteinerio mazgo tašką S ir sujungus S su
visomis viršūn÷mis A,B ir C.
18
Toričelio procedūra (Šteinerio taško trikampio viduje
radimas)
Tarkime, kad trikampio ABC visi kampai mažesni už 120 0 ir
kad kraštin÷ BC yra ilgiausia.
1 žingsnis. Sudaryti lygiakraštį trikampį BCX (BC ilgiausia
trikampio kraštin÷).
2 žingsnis. Aplink lygiakraštį trikampį BCX apibr÷žti
apskritimą.
3 žingsnis. Tašką X sujungti su tašku A. Taškas, kuriame
atkarpa XA kerta apskritimą, yra ieškomasis Šteinerio taškas
S.
19
A
B
C
A
B
C
X
20
A
B
C
X
21
A
S
B
X
22
A
S
B
C
X
23
Medžio tipo tinklai, kurių visi vidiniai mazgai yra Šteinerio
taškai, vadinami Šteinerio medžiais.
Išvada. Trumpiausias tinklas, jungiantis mazgus, yra arba
Minimalus jungiantysis medis (n÷ra vidinių mazgų),
arba
Šteinerio medis (yra vidinių mazgų).
24
Orientuotieji grafai ir kritiniai
keliai
1
Matematinė tvarkaraščių sudarymo teorija
ARBA
Kaip efektyviau organizuoti veiklą?
Tvarkaraščių sudarymo pagrindiniai elementai:
Vykdytojai;
Užduotys;
Vykdymo trukmės;
Nuoseklumo sąryšiai.
2
Vykdytojai
Vykdytojas gali būti:
Robotas;
Kompiuteris;
Žmogus;
Bet koks daiktas.
Vykdytojai žymimi V 1 , V 2 , ..., V n .
Vykdytojų aibė gali būti tiek baigtinė, tiek begalinė.
Tvarkaraščių sudarymas pradedamas, kai n>2.
3
Užduotys
Užduotis- tai nedalomas veiklos vienetas, kuris negali būti
padalintas į mažesnius vienetus.
Tvarkaraščių sudarymo uždaviniuose visada vieną užduotį atlieka
vienas vykdytojas.
Užduotys žymimos A, B, C, ..., KT, TT ir pan.
Užduotis gali būti:
Neparengta;
Parengta;
Vykdoma;
Įvykdyta.
4
Vykdymo trukmė
Kiekvienai užduočiai yra skirtas laikas, kuris vadinamas užduoties
vykdymo trukme.
Vykdymo trukmė- tai nepertraukiamas laiko intervalas, per kurį
vienas vykdytojas atlieką vieną užduotį.
Užduoties trukmė –tai laiko intervalas be trūkių bei pauzių.
Užduoties trukmė – tai teigiamas skaičius.
Užduoties trukmė žymima po užduoties pavadinimo skliausteliuose.
PVZ.: A(10) – tai reiškia, kad užduoties A vykdymas trunka 10 laiko
vienetų, nepriklausomai nuo vykdytojo.
5
Nuoseklumo sąryšiai
Nuoseklumo sąryšiai – tai apribojimai užduočių vykdymo tvarkai.
Nuoseklumas žymimas taip X→Y.
Tai reiškia, kad užduotis X turi būti įvykdyta prieš užduotį Y
arba
užduotis Y negali būti pradėta vykdyti tol, kol neįvykdyta užduotis X.
Tvarkaraščių sudarymo uždaviniuose naudojama daug nuoseklumo
sąryšių, kurie komplikuoja tvarkaraščio sudarymą.
Jei dvi užduotys nepriklauso nei vienam nuoseklumo sąryšiui, tai
tokios užduotys vadinamos nepriklausomomis.
6
Nuoseklumo sąryšių savybės
1. Tranzityvumas, t.y. jei X →Y ir Y →Z, tai turi būti teisinga, kad
X →Z.
2. Nuoseklumo sąryšis negali sudaryti ciklo.
7
Grafas, kurio briaunos turi kryptį, vadinamas orientuotu grafu arba
orgrafu.
Orgrafai aprašo sąryšius tarp objektų, tačiau šie sąryšiai neprivalo
būti abipusiai.
Orgrafo briauna vadinama lanku.
Jei X ir Y yra orgrafo gretimos viršūnės, tai sakoma:
kad X eina prieš Y, jei lanko rodylė nukreipta į Y;
kad X eina po Y, jei lanko rodyklė nukreipta į X.
Orgrafo viršūnės laipsnis susideda iš:
įeičių laipsnio;
išeičių laipsnio.
8
Kelias iš viršūnės X į viršūnę Y orgrafe yra kryptinių lankų seka, kuri
prasideda viršūnėje X ir pasibaigia viršūnėje Y.
Orgrafai taikomi tokio tipo situacijoms aprašyti:
Pervežimai. Viršūnės reiškia miestus arba mieste esančias vietas, o
lankai gali reikšti kelius arba gatves bei kryptį keliuose bei gatvėse.
Komunikacijos. Viršūnės reiškia informacijos centrus, o lankai –
galimas informacijos perdavimo kryptis.
Tiekimo sistemos. Viršūnės reiškia žaliavos centrus, o lankai –
žaliavos tekėjimo kryptis.
Komandų grandinė. Viršūnės reiškia žmones, o lankai – pavaldumą.
Asimetriniai sąryšiai. Asimetriniai sąryšiai – tai sąryšiai, kurie ne
visada yra abipusiai arba apgręžiami.
9
Tvarkaraščių sudarymo pagrindinės priemonės
1. Pradžia –tai fiktyvi užduotis, kurios trukmė lygi nuliui.
2. Pabaiga –tai fiktyvi užduotis, kurios trukmė lygi nuliui.
3. Prioritetų sąrašas. Prioritetų sąrašas – tai užduotys, surašytos tam
tikra jų atlikimo tvarka.
Pastaba. M užduočių projekto galimų prioritetų sąrašų skaičius yra
lygus: M!=1⋅2 ⋅3 ⋅… ⋅M.
10
Pagrindinės taisyklės, pagal kurias, remiantis prioritetų sąrašu,
skiriamos užduotys vykdytojams. Galimos trys skirtingos
situacijos:
1. Visi vykdytojai užimti.
Reikia laukti, kol atsiras laisvų vykdytojų.
2. Vienas vykdytojas yra laisvas.
Peržiūrėti prioritetų sąrašą nuo pradžios, ieškant pirmos
parengtos užduoties, ir ją radus, skirti tam vykdytojui.
Užduotis parengta, jei visos užduotys, kurios orgrafe
nukreiptos į ją, yra užbaigtos.
Jei tokių užduočių nėra, tai vykdytojas turi laukti.
11
3. Daugiau kaip vienas vykdytojas yra laisvas.
Šiuo atveju pirma parengta užduotis, esanti prioritetų
sąraše, skiriama pirmam laisvam vykdytojui, antra
parengta užduotis skiriama antram laisvam vykdytojui ir
t.t. Jei laisvų vykdytojų yra daugiau negu parengtų
užduočių, tai kai kurie vėliau atsilaisvinę vykdytojai turi
laukti.
12
Kritinių kelių algoritmas
Sudaromas prioritetų sąrašas atsižvelgiant į kritinių kelių laikus, t.y.
sudaromas prioritetų sąrašas, į kurį pirmąja rašoma užduotis, kurios
kritinis kelias ilgiausias, antrąja- užduotis, kurios kritinis kelias yra
antras pagal ilgį ir t.t.
Toks prioritetų sąrašas vadinamas kritinių kelių sąrašu.
Tvarkaraščio sudarymo procesas, kuris paremtas tokiu sąrašu,
vadinamas kritinių kelių algoritmu.
13
Užduotys turi būti išdėstytos jų vykdymo trukmių mažėjimo tvarka.
Toks sąrašas vadinamas mažėjančių trukmių sąrašu.
Mažėjančių trukmių sąrašo pagrindu tvarkaraščio sudarymo procesas
vadinamas mažėjančių trukmių algoritmu.
Visų kelių, einančių iš viršūnės X į viršūnę PABAIGA vykdymo
trukmių suma yra vadinama kelio suma.
Didžiausią sumą turintis kelias yra vadinamas viršūnės X kritiniu
keliu.
Kritinio kelio visų užduočių vykdymo trukmių suma yra vadinama
projekto kritiniu laiku.
14
Pavyzdžiai
Sudaryti tvarkaraštį, kai yra du vykdytojai V 1 ir V 2 , keturios užduotys
A, B, C, D, užduočių trukmė A(4), B(5), C(7), D(3) bei nuoseklumo
sąryšis A →C.
Galimi įvairūs tvarkaraščiai:
1)
Laikas
0 1 2 3 4 5 6 7 8 9 10 11 12 13
V 1 A(4) D(3) Prastova
V 2 B(5) C(7)
Tai blogas tvarkaraštis, nes visos trumpalaikės užduotys buvo
paskirtos pirmam vykdytojui, o visos ilgalaikės užduotys -antram
vykdytojui. Darbo trukmė šiame tvarkaraštyje 12.
15
2) Tvarkaraštis, kuriame pažeistas sąryšis A →C
Laikas
0 1 2 3 4 5 6 7 8 9 10 11 12 13
V 1 A(4) B(5)
Prastova
V 2 D(3) C(7)
Užduotis C negali būti pradėta po trijų laiko vienetų. Darbo trukmė
šiame tvarkaraštyje 10.
16
3)
Laikas
0 1 2 3 4 5 6 7 8 9 10 11 12 13
V 1 A(4) B(5)
Prastova
V 2
D(3)
Prastova
C(7)
Darbo trukmė šiame tvarkaraštyje 11.
17
4)
Laikas
0 1 2 3 4 5 6 7 8 9 10 11 12 13
V 1 A(4) C(7)
V 2 B(5) D(3) Prastova
Darbo trukmė šiame tvarkaraštyje 11.
3 ir 4 tvarkaraščiai yra optimalūs.
18
K
Karkasinio namo statybą sudaro 15 užduočių, kurios turi tam tikrą
trukmę bei nuoseklumo sąryšius. Sudaryti orgrafą.
Užduotis
Vykdymo Nuoseklumo sąryšiai
trukmė
Pamatų surinkimas PS (7) PS→GT
Grindų surinkimas GS(5) GS→GT
Sienų surinkimas SS(6) GT→ST
Stogo surinkimas KS(8) SS→ST
Grindų tvirtinimas GT(5) KS→KT
Vidinių sienų tvirtinimas ST(7) ST→KT
Stogo tvirtinimas KT(5) GT→VT
Vandentiekio tiesimas VT(4) ST→EI
Elektros įrengimas EI(4) EI→AS
Apšildymo sistemos įrengimas AS(3) KT→AS
Katininės įrengimas KI(4) EI→KI
Kanalizacijos įrengimas KO(1) VT→KO
Vidinės apdailos darbai VA(6) KI→KO
Sandarinimas SK(3) AS→SV
Komunikacijų įrengimas SV(2) KI→SV
KO→VA
KI→SK
19
PS(7)
GS(5) GT(5) VT(4) KO(1) VA(6)
SS(6)
ST(7) EI(4) KI(4) SK(3)
KS(8)
KT(5) AS(3) SV(2)
20
Sudaryti orgrafą, jei:
Viršūnės Įeičių Išeičių Bendrasis
laipsniai laipsniai laipsnis
A 2 2 4
B 1 1 2
C 1 3 4
D 3 0 3
E 1 2 3
21
1) Kruskalo algoritmas taikomas, norint rasti:
Minimalųjį jungiantį medį
2) Grafas yra figūra, sudaryta iš:
Briaunų ir viršūnių
3) Oilerio kelią sudaro:
Grafo briaunos lygiai po vieną kartą.
4) Koks grafas neturi Oilerio ciklų:
Nerandom tikslaus atsakymo žymėsiu ,kad c) orientuotas grafas
5) Šteinerio taškų vadinamas:
Bet kuris tinklo mazgas, kuriame trys atšakos suseina 120 laipsniu kampu
6) Dvi viršūnės vadinamos gretimomis, jei:
Jas jungia bent viena briauna
7) Briauna vadinama tiltu, jeigu:
Ją pašalinus grafas tampa nejungusis
8) Flerio algoritmas naudojamas:
Oilerio keliui arba ciklui rasti
9) Grafas turi Hamiltono ciklą, jei:
Jo kiekviena viršūnė yra gretima bent pusei grafo viršūnių
10) Briauna vadinama fiktyvia, jei:??
Jeigų tokią briauna papildomas grafas, atliekant grafo oilerizavimą.
11) Jei grafas turi nelyginio laipsnio viršūnę, tai:
Jis neturi Oilerio ciklų
12) Viršūnė laipsnis, tai:
Išeinančių briaunų skaičius
13) Pigiausios jungties algoritmas taikomas, norint rasti:
Hamiltono ciklą?
14) Svorinis grafas, tai toks grafas kurio:
Briaunos turi svorius
15) Orientuoti grafai aprašo sąryšius tarp objektų, kurie turi būti:
Nebūtinai abipusiai
16) Toričelio procedūra taikoma, norint rasti:
Šteinerio tašką
17) Grafo keliu vadinama:
Gretimų viršūnių seka
18) Kelias vadinamas ciklu, jei jis:
Prasideda ir baigiasi toje pačioje viršūnėje
19) Oilerio ciklas, tai:
Kelias, kuris prasideda ir baigiasi toje pačioje viršūnėje
20) Grafo oilerizavimas, tai procesas, kai:
Grafas papildomas fiktyviomis briaunomis
21) Grafo jungiantysis medis, tai:
Pografis, jungiantis visas pradinio grafo viršūnes
22) Kilpa, tai toks grafo elementas, kuri yra:
Briauna, jungianti viršūnę su ja pačia
23) nerasta
24) Viršūnė vadinama izoliuota, jei:
Viršūnės laipsnis lygus nuliui
25) Hamiltono ciklas – tai ciklas, kuris:
Prasideda kurioje nors grafo viršūnėje ir patekęs į kiekvieną kitą grafo viršūnę lygiai vieną kartą,
sugrįžta į pradinę viršunę
26) Medžiu vadinamas:
Jungus grafas, neturintis ciklų
27) N viršūnių medis turi:
N-1 briauną
28) Grafą galima paversti svoriniu grafu, jei jis:
????
29) Nejungusis grafas, tai toks grafas, kurį sudaro:
Kelios jungios dalys, kurios vadinamos grafo komponentėmis
30) Grafas vadinamas jungiuoju, jei:
Bet kurias dvi viršūnes galima sujungti keliu
31) Missin
32) Orientuotas grafas, tai toks grafas:
Kuris turi lankus ir viršūnes
33) Jei grafas yra medis, tai:
Bent dvi jo viršūnės jungia vienintelis kelias
34) Orientuotas grafas turi viršūnes, kurių laipnsiai skirstomi į:
Įėjimo ir išėjimo