.. | ||
21.tcl | ||
Graf_pelny.png | ||
konsola.txt | ||
krok1.png | ||
krok2.png | ||
krok3.png | ||
krok4.png | ||
krok5.png | ||
README.md |
Zadanie 21
Opis dzialania
Wstep
Tworze graf pelny o 8 wierzcholkach.
Glowna idea - kazdy wierzcholek probuje dodac do swojego zbioru jak najwieksza ilosc innych wierzcholkow.
Wierzcholek probujacy dodac inny porownuje najpierw czy jego zbior jest wiekszy niz wierzcholka ktorego probuje przejac. Tylko w takim wypadu moze to zrobic. Liderem zostaje ten o najwiekszym zbiorze.
Wysylane komunikaty
-
Collect - dolacz sie do mnie
-
Join - dolaczam sie do ciebie
-
Ack - moj zbior jest wiekszy od twojego
-
Ref - moj zbior jest mniejszy od twojego
-
Check - sprawdź ten zbior czy jest wiekszy od twojego
Dzialanie wierzcholka
Na poczatku wysylam sygnal collect do dowolnego sasiada. System odbioru komunikatow:
-
Jesli dostane collect i moj zbior jest pusty lub mniejszy od wierzcholka wysylajacego to wysylam do niego komunikat join, w przeciwnym wypadku wyslij check do "posiadacza zbioru"
-
Jesli dostane check i moj zbior jest wiekszy niz wierzcholka wysylajacego to wysylam do niego ack, w przeciwnym wypadku wysylam ref
-
Jesli dostane ack to wysylam join do wierzcholka wysylajacego.
-
Jesli dostane ref to nie robie nic.
-
Jesli dostane join to powiekszam swoj zbior i wysylam collect do innego losowego wierzcholka.
Program
Kroki:
- Startuje od check = 0.
- Wykonuje procedure egzekucja.
- Wierzcholek 0 uruchomi swoje dzialanie jako pierwszy.
- Ustawiam check = 1. Uruchamiam wizualizacje.
- Wykonuje procedure egzekucja.
- Uruchomi sie dzialanie losowo wybranego wierzcholka.
- Wracam do kroku 4. Program dziala az nie znajde lidera.