Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Witas Nr albumu:178860



Podobne dokumenty
INSTRUKCJA INSTALACJI I URUCHOMIENIA PROGRAMÓW FINKA DOS W SYSTEMACH 64 bit

Najkrótsza droga Maksymalny przepływ Najtańszy przepływ Analiza czynności (zdarzeń)

Tworzenie prezentacji w MS PowerPoint

Temat: Algorytmy zachłanne

Zasada indukcji matematycznej

Kolory elementów. Kolory elementów

FUNKCJE. (odwzorowania) Funkcje 1

Algorytm. a programowanie -

Sortowanie i filtrowanie list

Dodawanie grafiki i obiektów

Instrukcja użytkownika

Rozszerzenia sieci Petriego

Pokaz slajdów na stronie internetowej

Podręcznik użytkownika programu. Ceremonia 3.1

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Platforma szkoleniowa krok po kroku. Poradnik Kursanta

Rozszerzenia sieci Petriego

Techniki wstawiania tabel

Metody numeryczne Wykład 4

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Obliczenia iteracyjne

dokumentacja Edytor Bazy Zmiennych Edytor Bazy Zmiennych Podręcznik użytkownika

Backend Administratora

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

1 Działania na zbiorach

Pracownia internetowa w każdej szkole (edycja jesień 2005)

UNIFON podręcznik użytkownika

SysML rozpoczynanie projektu SysML001

Skanowanie OCR w aplikacji Kancelaria Komornika. Instrukcja dla użytkownika

Rysunek 8. Rysunek 9.

Edytor tekstu OpenOffice Writer Podstawy

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Wykład z modelowania matematycznego. Zagadnienie transportowe.

1. Instalacja Programu

Karta TV PVR-TV 713X

Instrukcja obsługi programu SWWS autorstwa Michała Krzemińskiego

Podstawowe informacje potrzebne do szybkiego uruchomienia e-sklepu

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

Przypisy i przypisy końcowe

Site Installer v2.4.xx

Baza danych. Program: Access 2007

Opis programu EKSoft Rezerwacje

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Wykład VII. Kryptografia Kierunek Informatyka - semestr V. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

WYRAŻENIA ALGEBRAICZNE

ODPOWIEDNIKI PRZETARGOWE - INSTRUKCJA

PORADNIK KORZYSTANIA Z SERWERA FTP ftp.architekturaibiznes.com.pl

System obsługi wag suwnicowych

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

Wymagania edukacyjne z informatyki dla klasy szóstej szkoły podstawowej.

KURIER XL BY CTI DLA SIÓDEMKA

Projekt 4: Programowanie w logice

Program PortaScan wersja Instrukcja obsługi

METODA SYMPLEKS. Maciej Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

5. Rozwiązywanie układów równań liniowych

Podstawy technologii WWW

Konfiguracja podglądu obrazu z kamery IP / rejestratora BCS przez sieć LAN.

Tworzenie szablonów użytkownika

Wykład 8: klasy cz. 4

Wymagania systemowe oraz sposób instalacji systemu Lokale Spis treści

Definicja sieci. Sieć Petriego jest czwórką C = ( P, T, I, O ), gdzie: P = { p 1, p 2,, p n } T = { t 1, t 2,, t m }

SIECI PETRIEGO WYŻSZEGO RZEDU Kolorowane sieci Petriego. Kolorowane sieci Petriego 1

Instrukcje dla zawodników

Platforma szkoleniowa krok po kroku

Rozdział 1 PROGRAMOWANIE LINIOWE

I. Program II. Opis głównych funkcji programu... 19

Program EWIDENCJA ODZIEŻY ROBOCZEJ INSTRUKCJA UŻYTKOWNIKA Przejdź do strony producenta programu

O MACIERZACH I UKŁADACH RÓWNAŃ

Wiadomości i umiejętności

Układy VLSI Bramki 1.0

Instrukcja użytkownika. Aplikacja dla Comarch ERP XL

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Rozdział 2. Konfiguracja środowiska pracy uŝytkownika

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Układy równań i nierówności liniowych

INSTRUKCJA INSTALACJI APLIKACJI PROF- EAN 2

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Teraz przechodzimy do zakładki Zarządzanie kolorami.

2. Układy równań liniowych

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Aplikacja do podpisu cyfrowego npodpis

Budowa argumentacji bezpieczeństwa z użyciem NOR-STA Instrukcja krok po kroku

Podstawy konfiguracji środowiska graficznego. Umieszczamy kursor na pustym obszarze na pulpicie i naciskamy prawy guzik:

UONET+ - moduł Sekretariat. Jak wykorzystać wydruki list w formacie XLS do analizy danych uczniów?

Elementy logiki matematycznej

Instrukcja instalacji i obsługi programu Szpieg 3

Algorytmy i struktury danych.

Prezentacje multimedialne w Powerpoint

Nawigacja po długim dokumencie może być męcząca, dlatego warto poznać następujące skróty klawiszowe

Rozwiązanie ćwiczenia 8a

Instrukcja instalacji Asystenta Hotline

Instalacja protokołu PPPoE

biegle i poprawnie posługuje się terminologią informatyczną,

1. SFC W PAKIECIE ISAGRAF 2. EDYCJA PROGRAMU W JĘZYKU SFC. ISaGRAF WERSJE 3.4 LUB 3.5 1

Praktyczne wykorzystanie arkusza kalkulacyjnego w pracy nauczyciela część 1

Rozdział 5. Administracja kontami użytkowników

Transkrypt:

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki Paweł Witas Nr albumu:178860 Symulator sieci Petriego ze znacznikami indywidualnymi Praca Magisterska na kierunku INFORMATYKA Praca wykonana pod kierunkiem dra Piotra Chrząstowskiego Instytut Informatyki Wrzesień 2003

Streszczenie Rosnąca złożoność systemów informatycznych i telekomunikacyjnych oraz automatyzacja produkcji przemysłowej powodują konieczność modelowania działania systemów składających się z wielu współbieżnie działających podzespołów. Jednym z najpopularniejszych używanych w tym celu modeli są sieci Petriego, w tym sieci kolorowe. Celem tej pracy jest zaprezentowanie sposobów modelowania i analizy problemów z powyższej dziedziny za pomocą opracowanego przeze mnie programu Symulator sieci Petriego ze znacznikami indywidualnymi. Projektując ten program położyłem nacisk na intuicyjność polskojęzycznego interfejsu użytkownika, niezawodność działania oraz integrację z analizatorem sieci Petriego INA. Słowa kluczowe coloured Petri nets, individual tokens, design tools, Integrated Net Analyzer, INA, concurrency, simulator Klasyfikacja tematyczna D.2.2 Design Tools and Techniques Petri Nets

Pracę przedkładam do oceny Data Podpis autora pracy: Praca jest gotowa do oceny przez recenzenta. Data Podpis kierującego pracą:

SPIS TREŚCI: 1 Wstęp... 6 2 Wprowadzenie do sieci Petriego ze znacznikami indywidualnymi... 7 2.1 Sieci miejsc i tranzycji... 7 2.2 Sieci ze znacznikami indywidualnymi i stałymi etykietami łuków... 8 2.3 Sieci ze znacznikami indywidualnymi i zmiennymi etykietami łuków... 10 2.4 Słabe odpalenie tranzycji w sieci kolorowej ze zmiennymi etykietami łuków... 12 2.5 Silne odpalenie tranzycji w sieci kolorowej ze zmiennymi etykietami łuków:... 14 3 Formalne definicje sieci Petriego wykorzystywanych w programie... 15 3.1 Definicja sieci miejsc i tranzycji (P/T sieci)... 15 3.2 Reguła odpalania dla P/T sieci... 15 3.3 Definicja wielozbioru (ang. multiset)... 16 3.4 Definicja sieci kolorowej ze stałymi etykietami łuków... 17 3.5 Reguła odpalania dla sieci kolorowej ze stałymi etykietami łuków... 17 3.6 Definicja funkcji substytucji R i funktora uzgadniania Q dla sieci kolorowej ze zmiennymi etykietami łuków... 18 3.7 Definicja sieci kolorowej ze zmiennymi etykietami łuków... 20 3.8 Reguła słabego odpalenia dla sieci kolorowej ze zmiennymi etykietami łuków... 21 3.9 Reguła silnego odpalenia dla sieci kolorowej ze zmiennymi etykietami łuków... 22 3.10 Dowód NP-zupełności problemu uzgadniania zmiennych-etykiet łuków z kolorami znaczników... 23 3.11 Dowód wielomianowej złożoności zmodyfikowanego decyzyjnego problemu plecakowego... 25 3.12 Opis algorytmu uzgadniania zmiennych-etykiet łuków z kolorami znaczników... 27 4 Porównanie sieci kolorowych ze zmiennymi etykietami łuków z sieciami relacji... 28 5 Instrukcja obsługi... 30 5.1 Wprowadzenie... 30 5.2 Instalacja programu... 30 5.3 Opis głównego okna programu... 32 5.3.1 Menu główne programu... 33 5.3.2 Obszar rysowania... 33 5.3.3 Pasek informacyjny.... 33 5.3.4 Pasek narzędziowy... 34 5.4 Okno edycji miejsca... 36 5.5 Okno edycji tranzycji... 37 5.6 Okno edycji łuku... 38 5.7 Okno zmiany ustawień sieci... 39 5.7.1 Strona Symulator...39 5.7.2 Strona Edytor... 40 5.7.3 Strona Analizator...41 5.7.4 Strona Kolory... 42 5.7.5 Strona Czcionki... 43 5.7.6 Strona Opisy... 44 5.8 Analizator sieci Petriego INA (Integrated Net Analyzer)... 45

5.8.1 Macierz sieci P/T... 45 5.8.2 Macierz sieci kolorowej... 46 5.8.3 Właściwości sieci... 47 5.8.4 Graf osiągalności... 49 5.8.5 Niezmienniki sieci... 50 5.8.6 Przykład analizy właściwości wybranej sieci stacja benzynowa... 51 6 Dokumentacja techniczna programu... 55 6.1 Opis struktury programu... 55 6.2 Formaty plików używanych przez program... 57 6.2.1 Format pliku o rozszerzeniu.trn zawierającego zbiór tranzycji... 58 6.2.2 Format pliku o rozszerzeniu.mie zawierającego zbiór miejsc... 59 6.2.3 Format pliku o rozszerzeniu.luk zawierającego zbiór łuków... 60 6.2.4 Format pliku o rozszerzeniu.knf zawierającego konfigurację sieci Petriego... 61 6.3 Wydruki nagłówków najważniejszych klas programu... 63 6.3.1 Nagłówek klasy TForm1 zadeklarowanej w pliku petri.h... 63 6.3.2 Nagłówek klasy TAnalizator zadeklarowanej w pliku analiza.h... 67 6.3.3 Nagłówek klasy Tranzycja... 68 6.3.4 Nagłówek klasy Miejsce... 69 6.3.5 Nagłówek klasy Strzalka... 70 6.3.6 Nagłówek klasy Tranzycje... 71 6.3.7 Nagłówek klasy Miejsca... 71 6.3.8 Nagłówek klasy Strzałki... 72 6.3.9 Nagłówek klasy Symbole... 72 6.3.10 Nagłówek klasy Arr... 73 6.3.11 Nagłówek klasy Geometria... 74 7 Bibliografia:... 75 5

1 Wstęp Rosnąca złożoność systemów informatycznych i telekomunikacyjnych oraz automatyzacja produkcji przemysłowej powodują konieczność modelowania działania systemów składających się z wielu współbieżnie działających podzespołów. Jednym z najpopularniejszych używanych w tym celu modeli są sieci Petriego, w tym sieci kolorowe. Celem tej pracy jest zaprezentowanie sposobów modelowania i analizy problemów z powyższej dziedziny za pomocą opracowanego przeze mnie programu Symulator sieci Petriego ze znacznikami indywidualnymi. Projektując ten program położyłem nacisk na intuicyjność polskojęzycznego interfejsu użytkownika, niezawodność działania oraz integrację z analizatorem sieci Petriego INA. Program działa pod kontrolą systemu operacyjnego Microsoft Windows, dzięki czemu można go zainstalować na większości komputerów osobistych. Zalecane wersje systemu operacyjnego to NT4, 2000 i XP. Sposób obsługi mojego programu jest podobny do sposobu obsługi popularnych programów graficznych służących do tworzenia diagramów blokowych (np. MS Visio), co ułatwia jego opanowanie przez użytkownika w krótkim czasie. Program modeluje trzy rodzaje sieci Petriego: sieci miejsc i tranzycji, sieci ze znacznikami indywidualnymi i stałymi etykietami łuków oraz sieci ze znacznikami indywidualnymi i zmiennymi etykietami łuków. Powyższe rodzaje sieci można ze sobą łączyć w obrębie tworzonej sieci, co może dawać dodatkowe możliwości modelowania różnych zagadnień. Największą zaletą programu jest jego integracja z analizatorem sieci Petriego INA (Integrated Net Analyzer) 1 umożliwiająca szybkie określenie własności sieci bez potrzeby poznawania przez użytkownika poleceń analizatora i formatów jego plików wejściowych. Analizator INA został stworzony na Uniwersytecie Humboldta w Berlinie. Autorami programu są Stephan Roch i Peter H. Starke. INA jest uważana za jeden z najlepszych analizatorów sieci Petriego dostępnych bezpłatnie. Strona domowa programu INA to http://www.informatik.hu-berlin.de/~starke/ina.html 1 [6] Stephan Roch, Prof. Peter H. Starke, INA Integrated Net Analyzer Version 2.2 Manual, Humbold-Universität zu Berlin, Institut für Informatik, Lehrstuhl für Automaten und Systemtheorie 6

2 Wprowadzenie do sieci Petriego ze znacznikami indywidualnymi 2 2.1 Sieci miejsc i tranzycji Rozważmy prosty system producenta-konsumenta modelujący zawieranie transakcji handlowych pomiędzy sprzedawcą i dwoma klientami. W tej sieci miejsc i tranzycji klienci są nierozróżnialni. Aby być w stanie rozróżniać klientów (lub sprzedawców) między sobą, musimy przekształcić sieć miejsc i tranzycji w odpowiadającą jej sieć warunków i zdarzeń, w której wszystkie miejsca mają pojemność 1 i wszystkie łuki mają wagę 1. Zauważmy że ilość tranzycji i miejsc po stronie pętli obsługujących klientów się podwoiła w porównaniu z siecią miejsc i tranzycji. Przy większej ilości klientów lub sprzedawców rysunek sieci stałby się nieczytelny. 2 [2]Wolfgang Reisig, A Primer in Petri Net Design (rozdział 4), Springer-Verlag, Berlin 1992 7

2.2 Sieci ze znacznikami indywidualnymi i stałymi etykietami łuków W sieciach ze znacznikami indywidualnymi możliwe jest nadanie znacznikom własności umownie zwanej kolorem, co umożliwia rozróżnianie między sobą znaczników znajdujących się na tym samym miejscu. Kolor znacznika zwykle jest opisywany symbolem składającym się z jednej lub wielu liter. W powyższej sieci sprzedawca i klienci są reprezentowani przez znaczniki indywidualne C, B i A. Zauważmy, że znacznik danego koloru może przemieszczać się tylko po łuku, który jest etykietowany tym samym kolorem. W wyniku odpalenia tranzycji B z C została zawarta transakcja pomiędzy sprzedawcą C i klientem B. Najważniejszą zaletą powyższej sieci w porównaniu z odpowiadającą jej siecią warunków i zdarzeń jest zredukowana ilość miejsc, bez utraty informacji zawartej w sieci warunków i zdarzeń. Ponadto łatwiej jest obserwować przemieszczanie się znaczników indywidualnych w obrębie sieci niż znaczników nierozróżnialnych. Wadą tej sieci jest brak redukcji ilości tranzycji w porównaniu z odpowiadającą jej siecią warunków i zdarzeń. 8

Odpalenie tranzycji w sieci ze znacznikami indywidualnymi i stałymi etykietami łuków. Podsumowując, sieć ze znacznikami indywidualnymi i stałymi etykietami łuków składa się z: - miejsc, tranzycji i łuków tak jak w P/T sieci; - indywidualnych, rozróżnialnych znaczników; - znakowania początkowego; - etykiet łuków określających kolory znaczników. Miejsce p jest w presecie tranzycji t, jeśli istnieje łuk z p do t. Miejsce p jest w postsecie tranzycji t, jeśli istnieje łuk z t do p. W sieci ze znacznikami indywidualnymi i stałymi etykietami łuków: - konfiguracja jest to rozmieszczenie znaczników na miejscach; - tranzycja t jest gotowa do odpalenia, jeżeli każde miejsce p w presecie tranzycji t zawiera znaczniki wyznaczane przez etykietę łuku z p do t; - odpalenie gotowej do odpalenia tranzycji t zachodzi w następujący sposób: 1. Usuwane są znaczniki wyznaczone przez etykiety łuków prowadzących z każdego miejsca w presecie odpalanej tranzycji do tej tranzycji. 2. Do każdego miejsca w postsecie odpalanej tranzycji dodawane są znaczniki wyznaczone przez etykiety łuków z tej tranzycji do jej postsetu. 9

2.3 Sieci ze znacznikami indywidualnymi i zmiennymi etykietami łuków W sieci ze znacznikami indywidualnymi i stałymi etykietami łuków została zredukowana jedynie ilość miejsc w porównaniu z odpowiadającą jej siecią warunków i zdarzeń, natomiast ilość tranzycji pozostała bez zmian. Opisane w tym rozdziale sieci ze znacznikami indywidualnymi i zmiennymi etykietami łuków są pozbawione tej wady. W celu odpalenia tranzycji w poniższej sieci należy znaleźć takie przyporządkowanie stałych (kolorów znaczników) do zmiennych (etykiet łuków), aby tranzycja mogła odpalić. Procesowi znalezienia tego przyporządkowania nadamy nazwę uzgadniania, natomiast zastąpieniu zmiennych etykiet łuków przez stałe etykiety łuków nadamy nazwę substytucji. Przyjmijmy, że stałe będą oznaczane dużymi literami, natomiast zmienne małymi literami. Ponadto dla łatwego odróżnienia stałych od zmiennych, zmienne będą pisane czerwoną czcionką. Po uzgodnieniu x:=a; y:=c; z:=b nastąpi substytucja i odpalenie tranzycji, Rozważmy teraz trochę bardziej skomplikowany przykład: W powyższym przykładzie uzgodnienie było następujące: x:=c; y:=b; z:=a. 10

Poniższa sieć ze znacznikami indywidualnymi i zmiennymi etykietami łuków jest odpowiednikiem sieci ze stałymi etykietami łuków z rozdziału 2.2. W wyniku uzgodnienia x:=b; y:=c może zajść transakcja między sprzedawcą C a klientem B. Zaletą sieci ze zmiennymi etykietami łuków jest ich skalowalność. Bez zmiany struktury sieci można dodawać nowe znaczniki indywidualne w omawianym przykładzie będą to sprzedawcy i klienci. Kolejną zaletą jest łatwość przekształcenia sieci miejsc i tranzycji w sieć ze znacznikami indywidualnymi i zmiennymi etykietami łuków. W tym celu wystarczy zastąpić znaczniki nierozróżnialne przez znaczniki indywidualne i etykietować łuki zmiennymi określającymi znaczenie nadane kolorom znaczników indywidualnych. Przez znaczenie nadane kolorowi znacznika rozumiemy zmienną etykietującą łuk, po którym znaczniki tego koloru mogą się poruszać. W powyższym przykładzie zmienna x nadaje znaczenie x (tzn. klient ) znacznikom A i B poruszającym się łukach etykietowanych tą zmienną. Podobnie zmienna y nadaje znaczenie y (tzn. sprzedawca ) znacznikowi C. 11

Należy pamiętać, aby zbiory kolorów znaczników posiadających odmienne znaczenie były rozłączne nie wolno na przykład dodać znacznika D zarówno do miejsca sprzedawcy czekają na klientów, jak i do miejsca klienci chcą kupić towary. Jest to związane z NP-zupełnością problemu uzgadniania zmiennych-etykiet łuków z kolorami znaczników indywidualnych w ogólnym przypadku, opisanym w rozdziale 3.10. Aby uniknąć ponadwielomianowej złożoności problemu uzgadniania należy przyjąć założenie, że funkcja substytucji jest różnowartościowa na wszystkie zmienne muszą zostać przypisane różne stałe będące kolorami znaczników. Przy tym założeniu problem uzgadniania może zostać rozwiązany w czasie wielomianowym. Oznacza to jednak że uzgodnienie x:=d; y:=d jest błędne i niedopuszczalne. 2.4 Słabe odpalenie tranzycji w sieci kolorowej ze zmiennymi etykietami łuków Tranzycje o słabej regule odpalenia są oznaczane na rysunku sieci kolorem czarnym. Algorytm uzgadniania jest wywoływany tylko dla znaczników, które nie posiadają przypisanej im zmiennej-etykiety łuku określającej znaczenie koloru tego znacznika. Jeżeli znaczenie koloru pobieranego znacznika jest już ustalone, to nie może ono ulec zmianie podczas słabego odpalenia tranzycji. Znaczenie nadawane kolorom znaczników podczas odpalenia tranzycji jest zapamiętywane, aby podczas następnych odpaleń tranzycji nie uległo ono zmianie. Własność tą przedstawia poniższa sieć: Po odpaleniu tranzycji t1 w miejscu s3 poza znacznikami A i B znajdzie się informacja o znalezionych przez algorytm uzgadniania przypisaniach kolorów znaczników do zmiennych. Informacja ta zostanie następnie wykorzystana podczas odpalenia tranzycji t2 w celu zachowania znaczeń kolorów znaczników. Wynika z tego, że podczas odpalenia tranzycji t2 algorytm uzgadniania nie zostanie użyty, dokonana zostanie jedynie substytucja zmiennych etykiet łuków na stałe etykiety łuków na podstawie informacji zawartej w miejscu s3. W programie Symulator sieci Petriego ze znacznikami indywidualnymi informacja ta jest kodowana w następujący sposób: (kolor znacznika, zmienna)+(kolor znacznika, zmienna)+..+(kolor_znacznika,zmienna) Dla powyższego przykładu informacja ta będzie miała następującą postać: (A,x)+(B,y). 12

Dzięki temu nie jest możliwy następujący przebieg działania omawianej sieci: 13

2.5 Silne odpalenie tranzycji w sieci kolorowej ze zmiennymi etykietami łuków: Tranzycje o silnej regule odpalenia są oznaczane na rysunku sieci kolorem czerwonym. Algorytm uzgadniania jest wywoływany podczas każdego odpalenia takiej tranzycji. Wynika z tego że informacje o znaczeniu kolorów pobieranych znaczników nie są wykorzystywane ani zachowywane podczas silnego odpalenia tranzycji. W wyniku silnego odpalenia tranzycji na nowo nadawane są znaczenia kolorów wszystkich znaczników pobranych przez tą tranzycję. Rozważmy poniższą sieć, w której sprzedawcy i klienci zamieniają się rolami, a znaczniki krążą zataczając poziomą ósemkę: Po uzgodnieniu x:=b; y:=d i odpaleniu tranzycji transakcja sieć będzie wyglądać następująco: Ponieważ program zapamiętuje dokonane podczas odpalenia tranzycji przypisania kolorów znaczników do zmiennych, to po odpaleniu tranzycji transakcja w miejscu sprzedawcy dostali pieniądze znajdzie się informacja, że znacznik B jest przypisany do zmiennej x nadającej mu znaczenie x (tzn. klient ), a w miejscu klienci mają towary znajdzie się informacja, że znacznik D jest przypisany do zmiennej y nadającej mu znaczenie y (tzn. sprzedawca ). W związku z tym podczas odpalenia tranzycji y dostał towar musi zostać zmienione znaczenie znacznika B pobieranego z miejsca sprzedawcy dostali pieniądze. Odpowiada to zmianie roli znacznika B z klient na sprzedawca. Podobnie podczas odpalenia tranzycji x dostał pieniądze rola znacznika D musi ulec zmianie z sprzedawca na klient. 14

3 Formalne definicje sieci Petriego wykorzystywanych w programie 3.1 Definicja sieci miejsc i tranzycji (P/T sieci) 3 Szóstkę N=(S, T; F, K, M, W) nazywamy siecią miejsc i tranzycji (P/T siecią) wtedy i tylko wtedy, gdy: (a) (S, T; F) jest siecią skończoną; jej elementy S oraz T nazywamy odpowiednio miejscami i tranzycjami; (b) K: S N {ω} każdemu miejscu nadaje pojemność (być może nieograniczoną); (c) W: F N \ {0} każdemu łukowi sieci przyporządkowuje wagę; (d) M: S N jest znakowaniem początkowym zgodnym z pojemnościami, tj. M(s) K(s) dla wszystkich s S Składowe P/T sieci N oznacza się przez S N, T N, F N, K N, W N i M N. 3.2 Reguła odpalania dla P/T sieci Niech N będzie P/T siecią. (a) Odwzorowanie M: S N N {ω} nazywamy znakowaniem sieci N wtedy i tylko wtedy, gdy M(s) K N (s) dla wszystkich s S. Niech M będzie znakowaniem N. (b) Tranzycja t T N jest M-aktywna (gotowa do odpalenia) wtedy i tylko wtedy, gdy s t : M s W s, t oraz s t : M () ( ) N () s K () s W ( t, s) N N (c) M-aktywna tranzycja t T N w wyniku odpalenia daje takie znakowanie następnicze M dla M, że dla każdego s S N zachodzi M () s WN ( s, t) wtedy i tylko wtedy,gdy s t \ t M () s + WN ( t, s) wtedy i tylko wtedy,gdy s t \ t M () s M () s WN ( s, t) + WN ( t, s) wtedy i tylko wtedy,gdy s t t M () s w pozostalym przypadku (d) Mówimy wówczas, że t odpala od M do M, co oznaczamy przez M[t > M. Niech [M > będzie najmniejszym zbiorem takich znakowań, że M [M > oraz jeżeli M 1 [M > i dla pewnej tranzycji t T N : M 1 [t > M 2, to M 2 [M >. 3 [1] Wolfgang Reisig, Sieci Petriego (rozdział 5), Wydawnictwa Naukowo-Techniczne, Warszawa 1988, 15

3.3 Definicja wielozbioru (ang. multiset) Wielozbiory są to kolekcje obiektów nieuporządkowanych, ale posiadających liczbę wystąpień skojarzonych z każdym obiektem. Wielozbiór jest funkcją J: X N, gdzie X jest zbiorem a N to liczby naturalne. Podobnie jak funkcja, wielozbiór może być zdefiniowany jako zbiór uporządkowanych par składających się z elementu zbioru i z liczby naturalnej określającej krotność tego elementu. Jeżeli krotność elementu x wynosi 0, to przyjmujemy że para (x,0) nie występuje w wielozbiorze. Wielozbiór pusty oznaczamy jako 0. Dodawanie wielozbiorów polega na dodawaniu krotności odpowiadających sobie obiektów należących do składników sumy, a odejmowanie wielozbiorów polega na odejmowaniu krotności odpowiadających sobie obiektów należących do odjemnej i odjemnika. Za U przyjmujemy uniwersum wszystkich możliwych elementów należących do dziedziny (np. zbiór wszystkich kolorów znaczników w sieci kolorowej). J J J J 3 3 1 1 = J = J = J J 1 1 2 2 + J J 2 2 wtw gdy wtw gdy x U x U wtw gdy x U : J wtw gdy x U : J 1 1 : J 3 ( x) = J1( x) + J 2 ( x) : J 3 ( x) = J1( x) J 2 ( x) ( x) = J 2 ( x) ( x) J ( x) 2 W programie Symulator sieci Petriego ze znacznikami indywidualnymi wielozbiory znaczników są kodowane w następujący sposób: [ilość znaczników][kolor znacznika]+...+[ilość znaczników][kolor znacznika] Przykłady: 2A+B+4@ oznacza dwa znaczniki koloru A, jeden znacznik koloru B i cztery czarne znaczniki, używane w sieciach miejsc i tranzycji i w sieciach warunków i zdarzeń. Na rysunku sieci czarne znaczniki oznaczane są symbolem, który jednak nie jest dostępny z klawiatury, zatem podczas wpisywania zastępuje go symbol @. Wpisując wielozbiór można pominąć znak @, zatem zapis 2A+B+4 jest równoważny powyższemu. (2A+B+4) + (3B+2C+7) = (2A+4B+2C+11) (2A+4B+2C+11) (3B+2C+7) = (2A+B+4) (2A+B+4) (5A+3B+2C+7) Nieprawdą natomiast jest, że (2A+B+4) (3B+2C+7), ponieważ po lewej stronie nierówności występują dwa znaczniki koloru A, natomiast po prawej stronie ilość znaczników koloru A wynosi zero. Dla odróżnienia od wielozbioru znaczników J, wielozbiór zmiennych oznaczymy literą V. Wielozbiór zmiennych jest funkcją V: X N, gdzie X jest zbiorem a N to liczby naturalne. Wielozbiory zmiennych-etykiet łuków są zapisywane podobnie jak wielozbiory znaczników: [krotność zmiennej]symbol zmiennej +... + [krotność zmiennej]symbol zmiennej. Podanie symbolu zmiennej jest wymagane, symbol zmiennej musi zaczynać się od litery. Przykład: Zapis 2x+y oznacza, że po łuku etykietowanym tym wyrażeniem podczas odpalenia tranzycji przemieszczą się dwa znaczniki mające (przypisane im przez algorytm uzgadniania) znaczenie x i jeden znacznik mający znaczenie y. 16

3.4 Definicja sieci kolorowej ze stałymi etykietami łuków Niech J będzie wielozbiorem zawierającym znaczniki indywidualne występujące w danym miejscu sieci. Zatem J jest funkcją J: X Ν. Szóstkę C=(S, T; F, K, M, W) nazywamy siecią kolorową ze stałymi etykietami łuków wtedy i tylko wtedy, gdy: (a) (S, T; F) jest siecią skończoną; jej elementy S oraz T nazywamy odpowiednio miejscami i tranzycjami; (b) K: S N {ω} każdemu miejscu nadaje pojemność (być może nieograniczoną); (c) W: F J \ 0 każdemu łukowi sieci przyporządkowuje wielozbiór stałych-etykiet łuku; (d) M: S J jest znakowaniem początkowym zgodnym z pojemnościami, tj. s S : J ( x) K( s) x M ( s) Składowe sieci C oznacza się przez S C, T C, F C, K C, W C i M C. 3.5 Reguła odpalania dla sieci kolorowej ze stałymi etykietami łuków Niech C będzie siecią kolorową ze stałymi etykietami łuków (a) Odwzorowanie M: S C J nazywamy znakowaniem sieci C wtedy i tylko wtedy, gdy s S : J ( x ) K ( s C ). Niech M będzie znakowaniem sieci C. x M ( s) (b) Tranzycja t T C jest M-aktywna (gotowa do odpalenia) wtedy i tylko wtedy, gdy s t J M s J W s, t oraz s t ( ()) ( ( )) J( M () s ) K C ( s) J ( WC ( t, s) ) C (c) M-aktywna tranzycja t T C w wyniku odpalenia daje takie znakowanie następnicze M dla M, że dla każdego s S C zachodzi M () s WC ( s, t) wtedy i tylko wtedy,gdy s t \ t M () s + WC ( t, s) wtedy i tylko wtedy,gdy s t \ t M () s M () s WC ( s, t) + WC ( t, s) wtedy i tylko wtedy, gdy s t t M () s w pozostalym przypadku Mówimy wówczas, że t odpala od M do M, co oznaczamy przez M[t > M. (d) Niech [M > będzie najmniejszym zbiorem takich znakowań, że M [M > oraz jeżeli M 1 [M > i dla pewnej tranzycji t T C : M 1 [t > M 2, to M 2 [M >. 17

3.6 Definicja funkcji substytucji R i funktora uzgadniania Q dla sieci kolorowej ze zmiennymi etykietami łuków R jest funkcją różnowartościową: R: V J gdzie V jest wielozbiorem zmiennych będących etykietami łuków odpalanej tranzycji wraz z ich współczynnikami (krotnościami), a J jest wielozbiorem stałych (kolorów znaczników indywidualnych wraz z ich krotnościami), zastępujących te zmienne podczas odpalenia tranzycji. z1 V z2 V : z1 z2 wtw gdy R( z1 ) R( z2 ) Oznacza to, że podczas odpalenia tranzycji w modelu ze znacznikami indywidualnymi i zmiennymi etykietami łuków, do różnych zmiennych nie można przypisać tego samego koloru znaczników.. Funkcja R spełnia warunek: z V x J : ( x = R( z) ) ( V ( z) = J ( x) ) czyli zmienne i odpowiadające im stałe mają te same krotności. Funkcja R dokonuje substytucji, czyli zastąpienia zmiennych-etykiet łuków przez stałe etykiety łuków przed odpaleniem tranzycji. Przed dokonaniem substytucji musi zostać dokonane ustalenie, jakie stałe (kolory znaczników) należy przypisać zmiennym etykietującym łuki z presetu 4 i postsetu 5 tej tranzycji, aby mogła ona odpalić. Informacja ta może być zaczerpnięta z miejsc z presetu tej tranzycji (nazywamy to słabym odpaleniem) lub obliczona w wyniku działania algorytmu uzgadniania (nazywamy to silnym odpaleniem). Opisane powyżej ustalenie jest realizowane za pomocą funktora uzgadniania Q. Odwzorowanie Q : ( t, t, M ( t), W ( t, t), B ( t) ) ( R, R ) Z Z pre po nazywamy funktorem uzgadniania dla odpalenia, przy czym t T Z jest odpalaną tranzycją, t jest zbiorem miejsc z presetu odpalanej tranzycji, M( t) jest znakowaniem miejsc z presetu odpalanej tranzycji, W Z ( t,t) jest zbiorem etykiet łuków prowadzących z miejsc z presetu odpalanej tranzycji do tej tranzycji, B(t) oznacza siłę odpalenia. Funktor Q zwraca parę (R pre, R po ), przy czym R pre : V J jest funkcją substytucji dla znaczników pobieranych z presetu odpalanej tranzycji, a R po : V J jest funkcją substytucji dla znaczników umieszczanych w postsecie odpalanej tranzycji. Przypisanie koloru znacznika do zmiennej etykietującej łuki, po których znacznik tego koloru może się przemieszczać, nazywamy znaczeniem koloru tego znacznika. Funkcja R pre określa znaczenie kolorów znaczników pobieranych z miejsc z presetu tranzycji podczas jej odpalenia. Funkcja R po określa znaczenie kolorów znaczników umieszczanych na miejscach w postsecie tranzycji podczas jej odpalenia. 4 5 Miejsce p jest w presecie tranzycji t, jeśli istnieje łuk z p do t. Miejsce p jest w postsecie tranzycji t, jeśli istnieje łuk z t do p. 18

Funktor uzgadniania Q korzysta z algorytmu uzgadniania opisanego w rozdziale 3.12, wywołuje ten algorytm dla wszystkich kolorów znaczników pobieranych przez tranzycję podczas silnego odpalenia. Umożliwia to zmianę znaczenia nadanego kolorom znaczników podczas wcześniejszych odpaleń lub podczas tworzenia sieci. Podczas słabego odpalenia trazycji funktor Q wywołuje algorytm uzgadniania tylko dla kolorów znaczników bez przypisanego im znaczenia, w celu nadania go tym kolorom znaczników. Znaczenie kolorów pozostałych pobieranych znaczników nie ulega zmianie w wyniku słabego odpalenia. Zauważmy, że R pre =R po podczas słabego odpalenia, natomiast podczas silnego odpalenia R pre może (ale nie musi) być różne od R po. Wykażemy w rozdziale 3.10, że problem uzgadniania jest w ogólnym przypadku (tzn. gdy funkcja substytucji nie jest różnowartościowa) równoważny z problemem sumy wielu podzbiorów, zatem jest NP-trudny. Jednak gdy przyjmiemy, że funkcja substytucji jest różnowartościowa, to złożoność problemu uzgadniania jest wielomianowa, dzięki czemu program może działać sprawnie. Różnowartościowość funkcji substytucji ma także uzasadnienie praktyczne jeżeli w presecie tranzycji użytkownik programu umieści łuk etykietowany kilkoma zmiennymi, to może spodziewać się, że każdej z tych zmiennych będzie przydzielony inny kolor znaczników. W przeciwnym przypadku (gdyby funkcja substytucji nie była różnowartościowa), wystarczyłoby etykietować łuk jedną zmienną z odpowiednio zwiększoną krotnością. 19

3.7 Definicja sieci kolorowej ze zmiennymi etykietami łuków Niech J będzie wielozbiorem zawierającym kolory i krotności znaczników indywidualnych występujących w danym miejscu sieci, a V będzie wielozbiorem zawierającym zmienne będące etykietami łuków wraz z współczynnikami przy tych zmiennych (ich krotnościami). Zatem J jest funkcją J: X Ν a V jest funkcją V: X N. Znaczniki indywidualne w sieciach ze zmiennymi etykietami łuków są parami (x, z) takimi, że: x J ; x jest to element wielozbioru J; x to zbiór wszystkich znaczników określonego koloru znajdujących się w wybranym miejscu sieci, z V 0 ; z jest to element wielozbioru V; z określa zmienną (etykietę łuku po którym znacznik może się poruszać) wraz z krotnością tej zmiennej). Zapis V 0 oznacza, że znacznik może mieć lub nie mieć drugiego elementu pary niepustego. Jeżeli z = 0, to składowa zmienna znacznika zostanie mu przydzielona, gdy znacznik ten weźmie udział w odpaleniu tranzycji. Krotność zmiennej z jest równa liczności zbioru x lub jest równa 0, gdy znacznik x jeszcze nie ma przydzielonej mu zmiennej-etykiety łuku. Dostęp do elementów pary (x, z) jest możliwy za pomocą operatorów wyłuskania A 1 i A 2 : A 1 : (J, V) J jest funkcją zwracającą pierwszy argument jako wartość. A 2 : (J, V) V jest funkcją zwracającą drugi argument jako wartość. Siódemkę Z=(S, T, F, K, M, W, B) nazywamy siecią kolorową ze zmiennymi etykietami łuków wtedy i tylko wtedy, gdy: (a) (S, T, F) jest siecią skończoną; jej elementy S oraz T nazywamy odpowiednio miejscami i tranzycjami; (b) K: S N {ω} każdemu miejscu nadaje pojemność (być może nieograniczoną); (c) W: F V \ 0 każdemu łukowi sieci przyporządkowuje wielozbiór zmiennych-etykiet łuku; (d) M: S (J, V) jest znakowaniem początkowym zgodnym z pojemnościami, tj. s S : J A x K ( s x M ( s) ( ( )) 1 ) (e) B: T {0, 1} każdej tranzycji przyporządkowuje siłę odpalenia, przy czym 0 oznacza odpalenie słabe a 1 oznacza odpalenie silne. Składowe sieci Z oznacza się przez S Z, T Z, F Z, K Z, W Z, M Z,B Z. 20

3.8 Reguła słabego odpalenia dla sieci kolorowej ze zmiennymi etykietami łuków Podczas słabego odpalenia tranzycji algorytm uzgadniania jest wywoływany tylko dla znaczników, które nie posiadają przypisanej im zmiennych-etykiet łuków określających znaczenie kolorów tych znaczników. Jeżeli znaczenie koloru pobieranego znacznika jest już ustalone, to nie może ono ulec zmianie podczas słabego odpalenia tranzycji. Jeżeli uzgodnienie się nie powiedzie, algorytm uzgadniania zwróci informację o błędzie. W tym przypadku tranzycja nie będzie mogła odpalić. Podczas słabego odpalenia tranzycji, funktor uzgadniania Q uzyskuje informacje o dokonanym wcześniej uzgodnieniu ze znaczników z presetu odpalanej tranzycji. Informacje te są wykorzystywane do utworzenia funkcji substytucji R pre i R po przez funktor Q. Umożliwia to zachowanie znaczenia nadanego kolorom znaczników, które dzięki temu nie mogą przemieszczać się za pomocą innych etykiet łuków niż to zdefiniował użytkownik. Niech Z będzie siecią kolorową ze zmiennymi etykietami łuków. (f) Odwzorowanie M: S Z (J, V) nazywamy znakowaniem sieci Z wtedy i tylko wtedy, gdy s S : J A x K Z ( s. Niech M będzie znakowaniem sieci Z. ( ( )) 1 ) x M ( s) (g) Odwzorowanie Q : ( t, t, M ( t), W ( t, t), B ( t) ) ( R, R ) Z Z pre po nazywamy funktorem uzgadniania dla słabego odpalenia, przy czym t T Z jest odpalaną tranzycją, t jest zbiorem miejsc z presetu odpalanej tranzycji, M( t) jest zbiorem znakowań miejsc z presetu odpalanej tranzycji, W Z ( t, t) jest zbiorem etykiet łuków prowadzących z miejsc z presetu odpalanej tranzycji do tej tranzycji, B(t) = 0 oznacza słabe odpalenie. Funktor Q zwraca parę (R pre, R po ), przy czym R pre : V J jest funkcją substytucji dla znaczników pobieranych z miejsc presetu odpalanej tranzycji, a R po : V J jest funkcją substytucji dla znaczników umieszczanych na miejscach postsetu odpalanej tranzycji. (h) Tranzycja t T Z jest M-aktywna (gotowa do odpalenia) wtedy i tylko wtedy, gdy s t J A M s J R W s, t oraz s t ( ) ( ( ())) ( ( )) 1 pre Z ( ) J ( A1 ( M () s )) K Z ( s) J R po ( WZ ( t, s) ) (i) M-aktywna tranzycja t T Z w wyniku odpalenia daje takie znakowanie następnicze M dla M, że dla każdego s S Z zachodzi ( A1 ( M () s ) R pre ( WZ ( s, t) ), A2 ( M ( s) ) WZ ( s, t) ) wtedy i tylko wtedy, gdy s t \ t ( A1 ( M () s ) + R po ( WZ ( t, s) ), A2 ( M ( s) ) + WZ ( t, s) ) wtedy i tylko wtedy, gdy s t \ t M () s ( A1 ( M () s ) R pre ( WZ ( s, t) ) + R po ( WZ ( t, s) ), A2 ( M ( s) ) WZ ( s, t) + WZ ( t, s) ) wtw, gdy s M () s w pozostalym przypadku Mówimy wówczas, że t odpala od M do M, co oznaczamy przez M[t > M. (j) Niech [M > będzie najmniejszym zbiorem takich znakowań, że M [M > oraz jeżeli M 1 [M > i dla pewnej tranzycji t T Z : M 1 [t > M 2, to M 2 [M >. t t 21

3.9 Reguła silnego odpalenia dla sieci kolorowej ze zmiennymi etykietami łuków Podczas silnego odpalenia tranzycji, funktor uzgadniania Q tworzy funkcję substytucji R za pomocą algorytmu uzgadniania, opisanego w rozdziałach 3.10 i 3.12. Algorytm ten jest wywoływany dla wszystkich kolorów znaczników znajdujących się w presecie odpalanej tranzycji, także dla tych kolorów znaczników, które mają już nadane znaczenie. Umożliwia to zmianę znaczenia nadanego kolorom znaczników podczas wcześniejszych odpaleń lub podczas tworzenia sieci. Jeżeli uzgodnienie się nie powiedzie, algorytm uzgadniania zwróci informację o błędzie. W tym przypadku tranzycja nie będzie mogła odpalić. Niech Z będzie siecią kolorową ze zmiennymi etykietami łuków. (k) Odwzorowanie M: S Z (J, V) nazywamy znakowaniem sieci Z wtedy i tylko wtedy, gdy s S : J A x K Z ( s. Niech M będzie znakowaniem sieci Z. ( ( )) 1 ) x M ( s) (l) Odwzorowanie Q : ( t, t, M ( t), W ( t, t), B ( t) ) ( R, R ) Z Z pre po nazywamy funktorem uzgadniania dla silnego odpalenia, przy czym t T Z jest odpalaną tranzycją, t jest zbiorem miejsc z presetu odpalanej tranzycji, M( t) jest zbiorem znakowań miejsc z presetu odpalanej tranzycji, W Z ( t, t) jest zbiorem etykiet łuków prowadzących z miejsc z presetu odpalanej tranzycji do tej tranzycji, B(t) = 1 oznacza silne odpalenie. Funktor Q zwraca parę (R pre, R po ), przy czym R pre : V J jest funkcją substytucji dla znaczników pobieranych z miejsc presetu odpalanej tranzycji, a R po : V J jest funkcją substytucji dla znaczników umieszczanych na miejscach postsetu odpalanej tranzycji. (m) Tranzycja t T Z jest M-aktywna (gotowa do odpalenia) wtedy i tylko wtedy, gdy s t J A M s J R W s, t oraz s t ( ) ( ( ())) ( ( )) 1 pre Z ( ) J ( A1 ( M () s )) K Z ( s) J R po ( WZ ( t, s) ) (n) M-aktywna tranzycja t T Z w wyniku odpalenia daje takie znakowanie następnicze M dla M, że dla każdego s S Z zachodzi ( A1 ( M () s ) R pre ( WZ ( s, t) ), A2 ( M ( s) ) WZ ( s, t) ) wtedy i tylko wtedy, gdy s t \ t ( A1 ( M () s ) + R po ( WZ ( t, s) ), A2 ( M ( s) ) + WZ ( t, s) ) wtedy i tylko wtedy, gdy s t \ t M () s ( A1 ( M () s ) R pre ( WZ ( s, t) ) + R po ( WZ ( t, s) ), A2 ( M ( s) ) WZ ( s, t) + WZ ( t, s) ) wtw, gdy s M () s w pozostalym przypadku Mówimy wówczas, że t odpala od M do M, co oznaczamy przez M[t > M. (o) Niech [M > będzie najmniejszym zbiorem takich znakowań, że M [M > oraz jeżeli M 1 [M > i dla pewnej tranzycji t T Z : M 1 [t > M 2, to M 2 [M >. t t 22

3.10 Dowód NP-zupełności problemu uzgadniania zmiennych-etykiet łuków z kolorami znaczników Problem sumy wielu podzbiorów 6 (ang. Multiple Subset Sum Problem (MSSP)) jest uogólnieniem klasycznego problemu sumy podzbioru. Problem ten jest równoważny ze szczególnym przypadkiem problemu plecakowego, w którym występuje wiele plecaków a wartość każdego przedmiotu jest wprost proporcjonalna do jego wagi (tzn. do jego masy spoczynkowej). Zakładam na potrzeby dowodu, że pojemność plecaka jest to jego nośność, czyli masa przedmiotów, które można do niego włożyć, a nie jego objętość. Formalna definicja problemu sumy wielu podzbiorów (MSSP) jest następująca: Dany jest zbiór N:={1,...,n} przedmiotów, każdy przedmiot i posiada dodatnią wagę w i oraz zbiór M:={1,...,m} plecaków, każdy plecak j ma dodatnią pojemność c j. Celem jest wybór podzbioru przedmiotów o maksymalnej wadze całkowitej, który może zostać zapakowany do plecaków. Problem może zostać sformułowany w następujący sposób: maksymalizuj w j M i N iq ij przy czym w q c, j M, i N j M q ij q i ij ij 1, j i N, { 0,1 }, i N, j M. Niech c max i c min oznaczają maksymalną i minimalną pojemność plecaków. Zakładamy, że max i N w i c max, ponieważ w przeciwnym przypadku największy przedmiot może zostać usunięty z badanego problemu, i że cmin mini N wi, ponieważ w przeciwnym przypadku najmniejszy plecak może zostać usunięty. Ładunek plecaka j reprezentuje całkowitą wagę przedmiotów załadowanych do j, jest on oznaczany przez λ j. Problem sumy wielu podzbiorów jest NP-trudny. Rozważmy następujący problem decyzyjny oparty na problemie sumy wielu podzbiorów: Czy zbiór przedmiotów N można załadować do zbioru plecaków M? Wykażę, że problem ten jest równoważny z decyzyjną wersją opisanego w rozdziale 3.6 problemu uzgadniana: Czy istnieje takie przyporządkowanie kolorów znaczników do zmiennych etykietujących łuki z presetu badanej tranzycji, aby mogła ona odpalić? 6 [5] A. Caprara, H. Kellerer, U. Pferschy, A PTAS for the Multiple Subset Sum Problem with Different Knapsack Capacities, Information Processing Letters 73 (2000) 111-118 23

w 1 1,,,, z... z w 2 z 2 w 3 z 3 w 4 z 4 w 5 5 w n z n c 1 1,,,... x c 2 x 2 cx 3 3 cx 4 4 c m x m Decyzyjny problem sumy wielu podzbiorów: czy istnieje takie przyporządkowanie przedmiotów z 1...z n o wagach w 1...w n plecakom w kolorach x 1...x m o pojemnościach c 1...c m, aby zapakować wszystkie przedmioty? s c x +c x +...+c x 1 1 2 2 m m wz+ wz+...+ wz 1 1 2 2 n n t Decyzyjny problem uzgodnienia: Czy istnieje takie przyporządkowanie znaczników o kolorach x 1...x m i krotnościach c 1...c m zmiennym z 1...z n mających współczynniki (krotności) w 1...w n, że tranzycja t może odpalić? Aby przekształcić problem sumy wielu podzbiorów w problem uzgodnienia, należy przedmioty z 1...z n o wagach w 1...w n przekształcić w zmienne z 1...z n o krotnościach w 1...w n etykietujące łuk z miejsca s do tranzycji t. Plecaki w kolorach x 1...x m o pojemnościach c 1...c m należy przekształcić w kolorowe znaczniki x 1...x m o krotnościach c 1...c m. Powyższe problemy są równoważne, ponieważ włożenie przedmiotu z i o wadze w i do plecaka w kolorze x j o pojemności c j jest równoważne przyporządkowaniu koloru x j zmiennej z i a następnie pobraniu w i znaczników koloru x j z miejsca s za pomocą zmiennej-etykiety łuku z i podczas odpalenia tranzycji t. 24

Ilość pozostałego wolnego miejsca w plecaku w kolorze x j jest równa ilości znaczników koloru x j, które nie zostaną pobrane z miejsca s za pomocą zmiennej-etykiety łuku z i podczas odpalenia tranzycji t. Znaczniki te mogą zostać przyporządkowane do innych zmiennych, podobnie jak pozostałe wolne miejsce w plecaku może zostać zapełnione przez inne przedmioty. Włożenie wszystkich przedmiotów do plecaków jest równoważne ze znalezieniem przyporządkowania kolorów znaczników wszystkim zmiennym-etykietom łuku, co umożliwia odpalenie tranzycji. Ponieważ wykazałem, że problem uzgodnienia jest NP-trudny dla jednego miejsca w presecie tranzycji, zatem jest również NP-trudny, gdy w presecie tranzycji jest wiele miejsc. 3.11 Dowód wielomianowej złożoności zmodyfikowanego decyzyjnego problemu plecakowego Jeżeli założymy dla decyzyjnego problemu plecakowego, że do każdego plecaka należy włożyć dokładnie jeden przedmiot, to problem ten będzie można rozwiązać w czasie wielomianowym. Zmodyfikowany decyzyjny problem plecakowy: Czy istnieje takie przyporządkowanie przedmiotów z 1...z n o wagach w 1...w n plecakom w kolorach x 1...x m o pojemnościach c 1...c m, aby zapakować po jednym przedmiocie do każdego plecaka? W tym celu należy plecaki posortować rosnąco względem ich pojemności. Alternatywnym sposobem sortowania plecaków jest policzenie, ile spośród wszystkich przedmiotów można włożyć do każdego plecaka (jeden przedmiot naraz). Ponieważ do najmniejszego plecaka można włożyć najmniej ze wszystkich przedmiotów, a do największego plecaka najwięcej, to po posortowaniu plecaków wg ilości przedmiotów, które można do tych plecaków włożyć, otrzymamy taki sam wynik co w wyniku sortowania plecaków względem ich pojemności. Ten sposób sortowania został użyty w programie Symulator sieci Petriego. Po posortowaniu plecaków należy załadowywać je kolejno, zaczynając od najmniejszego plecaka, a kończąc na największym. Przedmioty wkładane do plecaków można wybierać w dowolny sposób, oczywiście uwzględniając ich wagę, która nie może przekraczać pojemności plecaka. Jeżeli istnieje przyporządkowanie przedmiotów do plecaków, to zostanie ono obliczone w wyniku powyższego postępowania. Nie istnieje lepszy sposób rozmieszczania przedmiotów w plecakach przy podanych założeniach. 25

Dowód: Załóżmy, że mamy dwa plecaki, większy plecak x 1 o pojemności c 1 i mniejszy plecak x 2 o pojemności c 2 oraz dwa przedmioty, cięższy przedmiot z 1 o wadze w 1 =c 1 i lżejszy przedmiot z 2 o wadze w 2 =c 2. Niech plecaki będą ładowane w kolejności wyznaczanej przez ich indeksy. Jeżeli załadunek rozpoczniemy od większego plecaka x 1, to będziemy mogli załadować do niego jeden z dwóch przedmiotów. Jeżeli do plecaka x 1 włożymy lżejszy przedmiot z 2,to nie zdołamy załadować plecaka x 2, ponieważ przedmiot z 1 będzie zbyt ciężki dla tego plecaka. Jeżeli jest m 2 plecaków, i nie są one posortowane rosnąco względem pojemności, to istnieją co najmniej dwa plecaki x a i x b takie, że większy plecak x b o pojemności c b jest ładowany przed mniejszym plecakiem x a o pojemności c a. Lista L plecaków do załadowania przedstawia się następująco: x 1...x b...x a...x m, gdzie 1 b<a m. Załóżmy, że w zbiorze przedmiotów jest b przedmiotów o wadze równej pojemności najmniejszego plecaka, a waga każdego z pozostałych przedmiotów jest równa pojemności najmniejszego plecaka o pojemności większej niż c a. Plecakiem tym może być x b, jeżeli spełnia on ten warunek. Przedmiotów jest tyle samo lub więcej niż plecaków gdy jest ich mniej to problem staje się trywialny. Mniejszego plecaka x a nie uda się załadować, jeżeli wszystkie lżejsze przedmioty zostaną załadowane do plecaków poprzedzających ten plecak na liście L, w tym do większego plecaka x b. Jeżeli jednak przywrócimy porządek częściowy plecaków względem ich pojemności, dla powyższego przykładu zamieniając miejscami plecaki x a i x b, to uda się je wszystkie załadować. Z powyższego dowodu wynika, że także problem uzgodnienia można rozwiązać w czasie wielomianowym przy założeniu różnowartościowości funkcji substytucji, ponieważ oba problemy są równoważne. Problem uzgodnienia można rozwiązać przy tym założeniu w czasie wielomianowym również w przypadku, gdy w presecie tranzycji jest wiele miejsc, ponieważ można go łatwo przekształcić w problem uzgodnienia dla jednego miejsca w presecie tranzycji, postępując zgodnie z algorytmem opisanym w rozdziale 3.12. 26

3.12 Opis algorytmu uzgadniania zmiennych-etykiet łuków z kolorami znaczników Ponieważ problem uzgadniania okazał się w ogólnym przypadku NP-trudny, zmodyfikowałem definicję funkcji substytucji R tak aby była ona różnowartościowa, co umożliwiło rozwiązanie problemu uzgadniania w czasie wielomianowym. Złożoność algorytmu jest O( V J ). W presecie tranzycji może znajdować się wiele miejsc, dlatego też pierwszą czynnością algorytmu jest ustalenie, jakie kolory znaczników z tych miejsc mogą zostać przypisane do każdej ze zmiennych etykietujących łuki z presetu tranzycji. W tym celu tworzona jest macierz rozmiaru V J będąca funkcją charakterystyczną q : ( V J ) { 0,1} możliwych przypisań kolorów znaczników do zmiennych, spełniającą warunki: s t j M () s i WZ ( s, t) : V ( i) qij J ( j), i V, j J, { 0,1 }, i V, j J. q ij gdzie: V jest wielozbiorem zmiennych, każda zmienna i posiada dodatni współczynnik (krotność) V(i), nazwy zmiennych są reprezentowane jako liczby z zakresu 1..V ; J jest wielozbiorem kolorów znaczników, każdy kolor j ma przypisaną mu ilość znaczników tego koloru J(j), kolory znaczników są reprezentowane jako liczby z zakresu 1.. J. Następnie dla każdej zmiennej liczona jest ilość kolorów znaczników, które można przypisać na tą zmienną, czyli ilość jedynek w odpowiadającym tej zmiennej wierszu macierzy q. i V : f i = () q ij j J Zmienne sortujemy rosnąco wg wartości funkcji f tworząc listę L. W ten sposób przekształciliśmy problem uzgodnienia dla wielu miejsc w presecie tranzycji w problem uzgodnienia dla jednego miejsca w presecie tranzycji. Dla potrzeb tego przekształcenia można przyjąć, że liczba znaczników koloru j jest równa ilości jedynek w kolumnie j macierzy q, a krotność zmiennej i jest równa ilości jedynek w wierszu i macierzy q. Przydzielanie kolorów znaczników do zmiennych następuje w sposób losowy, ale uwzględniający kolejność zmiennych na liście L. Najpierw losowane są kolory znaczników dla zmiennych o najmniejszej liczbie możliwych przypisań kolorów, a zmienne o największej liczbie możliwych przypisań kolorów są obsługiwane na końcu. Wylosowane kolory nie mogą się powtarzać i muszą spełniać warunek, że = 1, i V, j J. Ponieważ po przydzieleniu koloru j do zmiennej i zerujemy odpowiadającą temu kolorowi kolumnę w tablicy funchar odpowiadającej za funkcję charakterystyczną q, z wyjątkiem elementu q ij,do dyspozycji następnej zmiennej pozostaje o jeden mniej kolorów znaczników. Po przydzieleniu kolorów do wszystkich zmiennych, funkcja charakterystyczna q będzie spełniała warunek: i V = 1 : q ij j J Przydzielone do wszystkich zmiennych kolory znaczników są zapisywane w tablicy jednowymiarowej rozmiaru V. Tablica ta jest wynikiem działania algorytmu uzgadniania, jest ona wykorzystywana podczas tworzenia funkcji substytucji R pre i R po zdefiniowanych w rozdziale 3.6. 27 q ij

4 Porównanie sieci kolorowych ze zmiennymi etykietami łuków z sieciami relacji 7 Sieci relacji wykazują duże podobieństwo z sieciami kolorowymi ze zmiennymi etykietami łuków. Podstawową różnicą między tymi sieciami jest sposób interpretowania napisów etykietujących łuki. W sieci relacji każdy napis f przy łuku sieci R jest przekształcany w relację f D E, będącą funkcją charakterystyczną f : D E { 0,1}, gdzie D jest wielozbiorem znaczników, a E jest wielozbiorem etykiet łuków. Oznacza to, że w sieci relacji za pomocą pojedynczej etykiety łuku może się przemieścić wiele znaczników różnych kolorów, podczas gdy w sieci ze zmiennymi etykietami łuków za pomocą pojedynczej etykiety łuku (zmiennej o krotności n) może się przemieścić dokładnie n znaczników tego samego koloru. Ponadto w sieci relacji występuje pojęcie koloru odpalenia tranzycji, która może odpalić w jednym z wielu kolorów. Zależnie od koloru odpalenia tranzycja może pobrać różną, zdefiniowaną podczas tworzenia sieci liczbę znaczników każdego koloru. Odpalenie tranzycji w kolorze A w sieci relacji. Odpalenie tranzycji w kolorze B w sieci relacji. Relacje dla poszczególnych etykiet łuków w tej sieci są zdefiniowane następująco: q1: (2a+b, A) ; q1: (a+2b, B) ; q2: (a+b, A) ; q2: (2a+2b, B) ; q3: (b, A) ; q3: (2a+3b, B) ; q4: (2a+2b, A) ; q4: (2a+2b, B). 7 [1] Wolfgang Reisig, Sieci Petriego (rozdział 9), Wydawnictwa Naukowo-Techniczne, Warszawa 1988 28

Zaletami sieci relacji są: - statyczne, ustalone na etapie tworzenia sieci znaczenie etykiet łuków, co ułatwia analizę własności sieci i umożliwia uniknięcie opisanego wcześniej problemu uzgadniania, który jest kłopotliwy z matematycznego punktu widzenia z powodu jego NP-zupełności w ogólnym przypadku ; - duża ilość publikacji na temat tych sieci; - istnienie programów do tworzenia i analizy sieci relacji, np. Graf 8. Wadami sieci relacji są: - duży nakład pracy podczas tworzenia sieci dla każdej etykiety łuku trzeba wypełnić tabelę, w której dla każdego koloru odpalenia tranzycji należy zdefiniować wielozbiór znaczników biorących udział w odpaleniu; - konieczność wyboru koloru odpalenia tranzycji podczas symulacji działania sieci; - mała wizualność sieci bez znajomości relacji związanych z każdą etykietą łuku trudno jest domyślić się sposobu działania tej sieci. Zalety sieci kolorowych ze zmiennymi etykietami łuków są następujące: - dynamiczne, przydzielane w czasie działania sieci znaczenie etykiet łuków i znaczników, dzięki czemu nie ma potrzeby definiować relacji dla poszczególnych etykiet łuków - duża wizualność sieci na podstawie rysunku sieci można łatwo domyślić się jej sposobu działania, ponieważ każdej zmiennej jest przypisywany inny kolor znaczników, a krotności zmiennych i ilości przypisanych na te zmienne znaczników są sobie równe ; - działanie symulatora sieci nie wymaga ręcznego wyboru koloru odpalenia tranzycji ; - dwie definicje odpalenia: słaba i silna ; - możliwość łączenia zmiennych etykiet łuków ze stałymi etykietami łuków w obrębie jednej sieci, a nawet w obrębie jednego łuku. Wady sieci kolorowych ze zmiennymi etykietami łuków są następujące: - Analiza tych sieci jest możliwa dopiero po przypisaniu wszystkim znacznikom etykiet łuków, po których te znaczniki mogą się poruszać. Przypisania tego można dokonać ręcznie w trakcie tworzenia sieci, ale lepszym sposobem jest uruchomienie symulacji działania sieci. - W przypadku zastosowania silnej definicji odpalenia lub łączenia zmiennych etykiet łuków ze stałymi etykietami łuków w obrębie jednej sieci, analiza sieci będzie utrudniona. W sieciach kolorowych ze zmiennymi etykietami łuków różnym zmiennym muszą być przypisane odrębne kolory znaczników podczas odpalania tranzycji. Jest to konsekwencją ominięcia NP-zupełności problemu uzgodnienia przez założenie różnowartościowości funkcji substytucji R pre i R po. Różnowartościowość funkcji substytucji ma także uzasadnienie praktyczne jeżeli w presecie tranzycji użytkownik programu umieści łuk etykietowany kilkoma zmiennymi, to może spodziewać się, że każdej z tych zmiennych będzie przydzielony inny kolor znaczników. W przeciwnym przypadku (gdyby funkcja substytucji nie była różnowartościowa), wystarczyłoby etykietować łuk jedną zmienną z odpowiednio zwiększoną krotnością. 8 [9] Zbigniew Suraj, Bogumił Komarek Graf. System graficznej konstrukcji i analizy sieci Petriego, Akademicka Oficyna Wydawnicza PLJ, Warszawa 1994 29

5 Instrukcja obsługi 5.1 Wprowadzenie Program służy do tworzenia, analizy i symulacji działania sieci Petriego następujących typów: P/T sieci, sieci ze znacznikami indywidualnymi i stałymi etykietami łuków oraz sieci ze znacznikami indywidualnymi i zmiennymi etykietami łuków. Program do efektywnej pracy wymaga komputera z procesorem Pentium lub kompatybilnym, wyposażonego w 128 MB RAM, myszkę (zalecana jest myszka z rolką zgodna ze standardem MS-IntelliMouse), kolorowy monitor i kartę graficzną zgodną z VGA (zalecana jest rozdzielczość co najmniej 800x600 ale możliwa jest też praca w rozdzielczości 640x480). Program działa w systemach operacyjnych Microsoft Windows NT4, Windows 2000 i Windows XP. Program posiada intuicyjny graficzny interfejs użytkownika sterowany głównie za pomocą myszy. 5.2 Instalacja programu W celu zainstalowania programu należy uruchomić program instalacyjny setup.exe znajdujący się na płycie CD w katalogu setup. Pokaże się standardowe okno instalatora InstallShield. Należy potwierdzić domyślny wybór katalogu C:\Program files\witas\symulator sieci Petriego, lub wprowadzić własny katalog, do którego program ma zostać zainstalowany, a następnie wcisnąć przycisk ekranowy Next. Pojawi się następna strona, na której można wybrać nazwę folderu programu w menu Start. Po ponownym naciśnięciu przycisku ekranowego Next nastąpi instalacja programu. Po zakończeniu instalacji można od razu włączyć program klikając na pole wyboru Yes, Launch the program file i zamknąć program instalacyjny klikając na przycisk ekranowy Finish. Po zakończonej pomyślnie instalacji program będzie dostępny w podmenu Programy menu Start pod nazwą Symulator sieci Petriego. W celu usunięcia programu z komputera należy uruchomić Panel sterowania systemu MS Windows, a następnie opcję Dodaj lub usuń programy. Pojawi się lista zainstalowanych w systemie programów, z której należy wybrać Symulator sieci Petriego, a następnie wcisnąć 30