200 likes | 301 Views
Koordinace integrovan ého záchranného systému. Použité datové struktury. Mapa města. R eprezentace jako graf křižovatky jsou uzly, ulice jsou hrany Uzel – rekord seznam sousedů U každého i vzdálenost v BČJ seznam bloků. Blok. ukazatelé na křižovatky, Každé centrum svou informaci
E N D
Mapa města • Reprezentace jako graf • křižovatky jsou uzly, ulice jsou hrany • Uzel – rekord • seznam sousedů • U každého i vzdálenost v BČJ • seznam bloků
Blok • ukazatelé na křižovatky, • Každé centrum svou informaci • čas na uhašení, čas na zachránění živých, poslední aktualizace (policisté mají něco jiného)
Událost • V klasickém slova smyslu • Co vše je událost • Centrum vydá nebo přijme příkaz • Jednotka se hodlá přesunout, provádí akci, mluví s centrem.
Datová reprezentace kalendáře • Kalendář je seznam událostí • Globální proměnná čas – integer • Seznam • Položka obsahuje: • Kdy – integer • Kdo – pointer na aktéra • Co – událost
Aktér • Akter je abstraktnítřída jak nad centrem tak nad jednotkami • Kvůli ukazování na jednotlivé Aktéry v kalendáři. • Obsahuje virtuální metodyZpracujUdalost a NaplanujUdalost
Datová reprezentace centra • Vysílačka (integer) – čas, kdy je vysílačka volná • Seznam událostí k vyřízení • Obsahuje náročnost problému, pointer na místo, kde je problém • Seznam jednotek • Ukazatele na jednotky • Specializovaná mapa města
Datová reprezentace komanda • Komando je skupina záchranářů, hasičů nebo policistů. • Pozice • Počet členů • Stav • Kdy budu volné – integer
Jdeme na algoritmizaci Počítač pouze řeší problémy, které by bez něj vůbec neexistovaly.
Nejkratší cesta • Pokud centrum někomu zadá kam a kudy má jít. • Dijkstrův algoritmus
Co dělá skupina, když nemá co dělat? • Jednotku kompletně řídí centrum. • Nastane jen když centrum nemá nahlášený problém (např. na počátku akce). • V takovém případě jednotka prohledává dosud neprozkoumanou oblast a centru hlásí výsledky zkoumání.
Jak jednotka prohledává? Jednotky se snaží napodobit prohledávání do šířky: Centrum najde nejbližší neprozkoumanou křižovatku (blok) a přidělí ji jednotce k prozkoumání. Po prozkoumání se jednotka naplánuje na vysílání centru.
Pascal Kolik jazyků znáš tolikrát jsi počítačem
Mapa PUzel = ^ TUzel; TUzel = record; SeznamSousedu : PSeznam1; SeznamBloku : PSeznam2; end; TMapa = PUzel;
Blok PBlok = ^ TBlok; TBlok = record SeznamKrizovatek : PSeznam1; PozadovanaHodnota: Integer; {Lisi se dle centra} PosledniAktualizace: Integer; end;
Kalendář PPolozka = ^TPolozka TPolozka = record Kdo : TAkter; /CHCIP Kdy : Integer; Co : TUdalost end; PKalendar = PPolozka;
Některé procedury pro kalendář Procedure NaplanujUdalost(Udalost:TUdalost, Akter:PAkter; Cas:Integer) Zatridi do seznamu udalost ... Kdo:=Akter;Kdy:=Cas;Co:=Udalost ... Procedure VykonejUdalosti; begin while TKalendar.kdy= CAS do begin Kdo^.ZpracujUdalost(Udalost); OdeberCeloKalendare; end; end;
Centrum PCentrum = ^TCentrum TCentrum = Object(TAkter) Mapa:TMapa; VolnaVysilacka:Integer; Seznam Jednotek Seznam Problemu; SeznamCekajicichNaHovor ReagujNaUdalost, NajdiNejkratsiCestu end;
Procedury pro Centrum Procedure ReagujnaUdalost; case Udalost of PrijemNebezpeci: PrijemKontrola: PrijemKonecUkolu; PrijemNajdiNovouCestu Zadani: end;