2. Деякі загальні приклади мереж Петрі: Задача: Треба помити посуд. На кухні існує брудний посуд. Його може помити тільки людина яка присутня на кухні. Тобто наявні два паралельно-асинхронні процеси: 1-брудний посуд; 2-перебування людини на кухні Варіант вирішення цієї задачі зображений на рис 2.1
Рис. 2.1 Задача про брудний посуд на кухні p1-посуд брудний p2- людина на кухні p3- людина миє посуд p4-немає людини на кухні p5-немає брудного посуду s1-посуд залишається чистий s2-посуд стає брудний s3-людина приходить на кухню s4-людини усе ще немає на кухні s5,s6-якщо людина на кухні і є брудний посуд, то віна його миє s7=s5+s6 s8-людина йде з кухні s9-посуд стає чистий s10-якщо людина помила посуд, то він йде з кухні і посуд стає чистий Задача: Дві команди мусять зіграти футбольний матч одна з одною Оскільки кожна з команд може бути в декількох станах то виникає питання про синхронізацію їхніх дій. Стани команд: 1 – підготовка до матчу 2 – гра з якоюсь командою Після гри команда не може відразу грати, без підготовки. Варіант рішення цієї задачі показаний на рисунку 2.2
Рис. 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.3 Дії і-го філософа Очевидно, що рішенням проблеми забезпечення відсутності блокувань може стати заборона на одночасну присутність у їдальні більш, ніж чотирьох філософів. У моделі це рішення забезпечується веденням ще одного додаткового місця, кількість маркерів у який дорівнює чотирьом. Це місце зв'язане вхідними дугами з першим переходом моделі дій кожного з п'яти філософів. Коли філософ входить у їдальню, у моделі це відображається появою маркера у вхідному місці переходу t(і,1). Якщо в додатковому місці мається маркер, то обід буде дозволений, у противному випадку (якщо в їдальні вже обідають чотири чоловіки) філософ буде чекати, поки один з тих, хто обідає не звільнить йому місце. Результуюча мережа показана на малюнку 2.4.
Рис. 2.4 Варіант рішення задачі про трьох філософів