Paralēlu sistēmu modelēšanas valoda – Petri tīkli
description
Transcript of Paralēlu sistēmu modelēšanas valoda – Petri tīkli
Paralēlu sistēmu modelēšanas valoda – Petri tīkli
Datorzinātnes pamati
Petri tīkli: definīcijas
Petri tīkls: bipartīts grafs. Virsotnes – pozīcijas un pārejas.
Šķautnes – tikai no pozīcijas uz pāreju un no pārejas uz pozīciju.
Tradicionāls definīcijas veids (var definēt arī citādi):
Petri tīkls: C = < P, T, I, O >P = {p1, p2, …, pn} – galīga pozīciju kopaT = {t1, t2, …, tm} – galīga pāreju kopaI: T P, pāreju ieejas funkcija, katrai pārejai piekārto to pozīciju multikopu, no kurām ir šķautnes uz šo pārejuO: T P, pāreju izejas funkcija, katrai pārejai piekārto to pozīciju multikopu, uz kurām ir šķautnes no šīs pārejas
I, O – apraksta šķautnes grafā.
#(pi, I(tj)) – cik šķautnes iet no pozīcijas pi uz pāreju tj
#(pi, O(tj)) – cik šķautnes iet no pārejas tj uz pozīciju pi
Petri tīkli: piemērs
Petri tīkls: C = < P, T, I, O >P = {p1, p2, …, pn} – galīga pozīciju kopaT = {t1, t2, …, tm} – galīga pāreju kopaI: T P, pāreju ieejas funkcija, O: T P, pāreju izejas funkcija,
#(pi, I(tj)) – šķautnes no pi uz tj
#(pi, O(tj)) – šķautnes no tj uz pi
Piemērā: I(t1) = { p1 }I(t4) = { p2, p4 }O(t4) = { p1, p1, p2 }#(p1, O(t4)) = 2#(p2, O(t4)) = 1#(p3, O(t4)) = 0
p1
p2
p3p
4p5
t5
t1
t2
t3
t4
Petri tīkli: marķējums
Petri tīkls: C = < P, T, I, O > - spēļu galdiņš, uz kura var tikt izvietoti kauliņi.
Kauliņi izvietojami pozīcijās – vienā pozīcijā 0, 1 vai vairāki kauliņi, potenciāli neierobežots skaits.
Kauliņu izvietojums: tīkla marķējums.
Marķējums: : P N
Marķēts tīkls: < C, >
Piemērs:
(p1) = 1, (p2) = 0, (p3) = 1, (p4) = 2, (p5) = 0
Saīsināti rakstīsim:
= < 1, 0, 1, 2, 0 >
Tālāk – kauliņu pārvietošana pa galdiņu.
p1p2
p3p4
p5
t5
t1
t2
t3
t4
Petri tīkli: pāreju izpilde
Petri tīkls: C = < P, T, I, O >
Marķējums: : P N
Marķēts tīkls: < C, >
Piemērs: 1 = < 1, 0, 1, 2, 0 >
Definīcija: Pāreja tj ir iespējama marķējumā , ja katrai pozīcijai pi:
(pi) #(pi,I(tj)).
Piemērā iespējamas pārejas:t1, t3, t5.
Iespējamas pārejas tj izpilde no marķējuma - jauns marķējums ’, kuram katram pi:
’(pi) = (pi) - #(pi,I(tj)) + #(pi,O(tj)).
Kauliņi “aiziet” pa šķautnēm uz pāreju, un tad “atnāk” pa šķautnēm no pārejas. Rakstam -(tj) ’.
p1p2
p3p4
p5
t5
t1
t2
t3
t4
Piemērs: pēc pārejas t5 izpildes jaunais marķējums: <2,0,1,1,0>
Pēc pārejas t3 izpildes (no sākuma marķējuma): <1,0,0,1,1>
Petri tīkli sistēmu modelēšanā
Programma (blokshēma) kā Petri tīkls: pozīcijas – iezīmes programmā, pārejas – programmas veicamās darbības starp iezīmēm.
Kādas darbības – to Petri tīkls nespēj modelēt. Abstrakcija no konkrēto darbību satura, līdzīgi kā galīgos automātos.
Petri tīkli ar konkrētajām darbībām – krāsainie Petri tīkli (katram kauliņam sava identitāte, sava “krāsa”, attiecīgi komplicētākas attiecības pārejas notikšanas situācijā).
Programmas izpilde – viena kauliņa pārvietošanās pa blokshēmu.
Petri tīkli – nav nekādu grūtību veidot paralēlas aktivitātes: ieliekam vairākus kauliņus, kas pārvietojas katrs pa savu, vai arī abi pa vienu blokshēmu.
Petri tīkli – spēcīgāka valoda, nekā galīgie automāti: dabiskas iespējas aprakstīt paralēlu izpildi, resursu piesaisti, u.c. Arī matemātiski – potenciāli neierobežota stāvokļu kopa.
Petri tīkli sistēmu modelēšanā (2)
Piemērs: uzdevumu apstrādes sistēma:
t0 – uzdevums ienāk
p1 – uzdevums gaida
p4 – procesors gaida
t1 – apstrāde tiek uzsākta
p2 – apstrāde notiek (procesors strādā)
t2 – apstrāde tiek pabeigta
p3 – uzdevums izpildīts
t3 – izpildīts uzdevums atstāj sistēmu
Iespējams, ka pārejas t3 izpildes gaitā iegūtie rezultāti tiek nodoti nākamajam apstrādes etapam – nākamajām veicamajām darbībām.
p1
p4 p2
t0
p3
t1
t2
t3
Petri tīkli sistēmu modelēšanā (3)
Uzdevumu izpilde uz diviem paralēli strādājošiem procesoriem:
t0 – uzdevums ienāk
p1 – uzdevums gaida
p4, p6 – procesors gaida
t1, t4 – apstrāde tiek uzsākta
p2, p5 – apstrāde notiek (procesors strādā)
t2, t5 – apstrāde tiek pabeigta
p3 – uzdevums izpildīts
t3 – izpildīts uzdevums atstāj sistēmu
Katru uzdevumu apstrādā viens no abiem procesoriem.
p1
p4
p2
t0
p3
t1
t2
t3
p5
t4
t5
p6
Petri tīkli: procesu sinhronizācija
Kā panākt, lai pāreja t2 pirmajā procesā un pāreja t5 otrajā procesā tiktu izpildītas tikai vienlaicīgi?
p1
p2
p3
t1
t2
t3
p4
p5
p6
t4
t5
t6
Ideja: savienot šīs pārejas vienā pārejā (apvienot abu pāreju ieejas pozīciju multikopas un abu pāreju izejas pozīciju multikopas).
Petri tīkli: kopēja resursa izmantošanaJa divi procesi abi pretendē uz vienu resursu, ko tie var izmantot tikai
atsevišķi, kā šo izmantošanas disciplīnu attēlot ar Petri tīklu?
Ideja: attēlot šo resursu kā atsevišķu pozīciju ar kauliņu tajā. Katrs no procesiem resursu piesaistot kauliņu paņem, un resursu atbrīvojot, kauliņu noliek atpakaļ.
Ja resursi vairāki – svarīga resursu piesaistes secība.
Iespējami arī citi modelēšanas piemēri.
p4
p5
p6
t4
t5
t6
p1
p2
p3
t1
t2
t3
Petri tīkli: analīzes jautājumi
Petri tīkls: C = < P, T, I, O >
Marķējums: : P N
Marķēts tīkls: < C, >
Marķējums ’ ir sasniedzams tīklā C no marķējuma , ja eksistē tāda pāreju virkne, kuru izpildot no iegūstams ’.
Rakstam ’ Re(C, ).
Jautājums (sasniedzamības problēma): vai eksistē algoritms, kas pēc dotiem C, , ’ nosaka, vai ’ Re(C, ).
Ievērojam: Katrā Petri tīkla pozīcijā var tikt uzglabāts potenciāli neierobežots kauliņu skaits, tādēļ visa Petri tīkla marķējumu kopa var būt potenciāli bezgalīga.
Fakts. Eksistē algoritms, kas risina marķējuma sasniedzamības problēmu Petri tīkliem.
Pierādījums: ārpus šī kursa iespējām. Bija neatrisināta matemātiska problēma vairāk, nekā 15 gadus.
Petri tīklu sasniedzamības problēma ir ekvivalenta ar sasniedzamības problēmu t.s. vektoru saskaitīšanas sistēmās.
Petri tīkli: marķējuma pārklājamība
Petri tīkls: C = < P, T, I, O > Marķējums: : P N Marķēts tīkls: < C, >
Marķējums ’ ir sasniedzams tīklā C no marķējuma , ja eksistē tāda pāreju virkne, kuru izpildot no iegūstams ’.
Rakstam ’ Re(C, ).
Jautājums (sasniedzamības problēma): vai eksistē algoritms, kas pēc dotiem C, , ’ nosaka, vai ’ Re(C, ).
Saistīta problēma, vienkāršāks risinājums: marķējuma pārklājamības problēma.
Marķējums ’ ir pārklājams tīklā C ar sākuma marķējumu , ja eksistē tāds ’’ Re(C, ), kuram ’ ’’.
(Definējam ’ ’’, ja ’(pi) ’’(pi) katrai tīkla pozīcijai pi).
Teorēma. Eksistē algoritms, kas pēc dota tīkla C un dotiem sākuma un beigu marķējumiem un ’, nosaka, vai ’ ir pārklājams tīklā C ar sākuma marķējumu .
Pierādījuma ideja: veidojam tīklam C marķējumu pārklājamības koku – analoģisku marķējumu sasniedzamības kokam (kurš var būt bezgalīgs), pielietojot papildus metodes koka “apgriešanai” – ja redzam, ka pa konkrēto zaru mēs neko jaunu vairs pārklāt nevarēsim.
Petri tīkli: marķējumu pārklājamības grafs
p1p2
p3p4
p5
t5
t1
t2
t3
t4
- varam iegūt šajā pozīcijā cik patīk daudz (atkārtojot kokā redzamās pārejas no ’ uz ).
Tālāk -a = , +a = .
Uzmanību – cits piemērs!Koka “nogriešana” – ja sastopam
, par kuru lielāks jau sastapts- Ja sastopam , par kuru mazāks
’ ir kokā virs viņa (rakstam attiecīgajās pozīcijās .
…
<0,0,1,3,0>
<1,0,1,2,0>
<1,0,0,1,1><0,1,1,2,0>
t3t5t1
<2,1,1,1,0>
<1,1,1,2,0>
t4
t5
<1,,1,2,0>
<1,,2,2,0>t2
<1,,,2,0>…
………
…
Par marķējuma pārklājamības algoritmu
A. Algoritma korektība: algoritms tiešām risina marķējuma pārklājamības problēmu: marķējums ’ ir pārklājams grafā tad un tikai tad, ja tas ir pārklājams Petri tīklā.
Pierādījums: Pēc marķējuma pārklājamības grafa konstrukcijas, ievērojot (1) monotonitātes principu: ja -(tj) ’ un 1 ’, tad eksistē 1’ ’, kam 1 -(tj) 1’ (un 1’ - ’ = 1 - , atņemšana tiek veikta pa pozīcijām), un(2) iespēju tīklā atkārtot marķējumu pārklājamības grafā ietvertās “palielinošās” pāreju virknes.
B. Algoritma apstāšanās. Dažādo iespējamo marķējumu pārklājamības grafā vienalga, ir bezgalīgs skaits.
Lemma. Katram n, katrai naturālu skaitļu kortežu garumā n virknei x1, x2, …, xi, … (katrs no xi – kortežs garumā n) eksistē tādi i un j, ka i < j un xi xj (salīdzināšana tiek veikta pa komponentēm).
Secinājums: Marķējumu pārklājamības kokā neviens zars nav bezgalīgs (agri vai vēlu tiks palielināts skaits kārtējā marķējumā).
Tā kā kokā katrai virsotnei ir ne vairāk kā galīgs skaits “bērnu”, tad arī pats koks ir galīgs (pierādījums - ?)
Lemmas pierādījums - ?