2. Деякі загальні приклади мереж Петрі:
Задача: Треба помити посуд.
На кухні існує брудний посуд. Його може помити тільки людина яка присутня на кухні. Тобто наявні два паралельно-асинхронні процеси:
1-брудний посуд;
2-перебування людини на кухні
Варіант вирішення цієї задачі зображений на рис 2.1
Рис. 2. SEQ Рис. \* ARABIC 1 Задача про брудний посуд на кухні
p1-посуд брудний p2- людина на кухні p3- людина миє посуд p4-немає людини на кухні p5-немає брудного посуду s1-посуд залишається чистий s2-посуд стає брудний s3-людина приходить на кухню s4-людини усе ще немає на кухні s5,s6-якщо людина на кухні і є брудний посуд, то віна його миє s7=s5+s6 s8-людина йде з кухні s9-посуд стає чистий s10-якщо людина помила посуд, то він йде з кухні і посуд стає чистий
Задача: Дві команди мусять зіграти футбольний матч одна з одною
Оскільки кожна з команд може бути в декількох станах то виникає питання про синхронізацію їхніх дій. Стани команд:
1 – підготовка до матчу
2 – гра з якоюсь командою
Після гри команда не може відразу грати, без підготовки.
Варіант рішення цієї задачі показаний на рисунку 2.2
Рис. SEQ Рис. \* ARABIC 2.2 Задача про футбольний матч між командами
P11, P21 – дві команди готові грати одна з одною P31 – гра двох команд P12, P22 – гра закінчена P13 – тренування другої команди P23 - тренування першої команди
P24 – гра першої команди з іншою
P14 - гра другої команди з іншою
Задача про п’ять філософів
П'ять філософів гуляють у саду і міркують. Коли філософ почуває голод, він заходить у їдальню, де стоїть круглий стіл з п'ятьма стільцями і мискою спагетті посередині столу. На столі - п'ять вилок, по одній ліворуч і праворуч від кожного стільця. Філософ бере вилки (якщо вони на місці) і їсть спагетті (для цього обов'язково потрібно дві вилки: у ліву й у праву руки). Угамувавши голод, філософ кладе вилки на стіл і виходить у сад міркувати, поки знову не відчує голод. Задача: потрібно запропонувати таку модель, що дозволила б синхронізувати незалежні дії філософів і не допускала взаємного блокування, коли усі філософи сидять за столом, кожний з них узяв по одній вилці і ніхто не може почати їсти спагетті .
Представимо набір дій усіх філософів матрицею PH розмірністю 5x7, у якій i-ий рядок PH [i, ] відповідає діям i-го філософа. Кожний з філософів виконує 7 дій:
PH [i,] = PH [ i,1 ] - філософ i входить у їдальню;
PH [ i,2 ] - філософ i бере ліву вилку;
PH [ i,3 ] - філософ i бере праву вилку;
PH [ i,4 ] - філософ i їсть спагетті;
PH [ i,5 ] - філософ i кладе ліву вилку;
PH [ i,6 ] - філософ i кладе праву вилку;
PH [ i,7 ] - філософ i виходить з їдальні.
Дії одного філософа показані на рисунку 2.3
Рис. 2. SEQ Рис. \* ARABIC 3 Дії і-го філософа
Очевидно, що рішенням проблеми забезпечення відсутності блокувань може стати заборона на одночасну присутність у їдальні більш, ніж чотирьох філософів. У моделі це рішення забезпечується веденням ще одного додаткового місця, кількість маркерів у який дорівнює чотирьом. Це місце зв'язане вхідними дугами з першим переходом моделі дій кожного з п'яти філософів. Коли філософ входить у їдальню, у моделі це відображається появою маркера у вхідному місці переходу t(і,1). Якщо в додатковому місці мається маркер, то обід буде дозволений, у противному випадку (якщо в їдальні вже обідають чотири чоловіки) філософ буде чекати, поки один з тих, хто обідає не звільнить йому місце.
Результуюча мережа показана на малюнку 2.4.
Рис. 2. SEQ Рис. \* ARABIC 4 Варіант рішення задачі про трьох філософів