KDP

Слични документи
KDP

Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

NIZOVI

Inženjering informacionih sistema

Електротехнички факултет Универзитета у Београду Катедра за рачунарску технику и информатику Kолоквијум из Интелигентних система Колоквију

Microsoft Word - 11 Pokazivaci

PASCAL UVOD 2 II razred gimnazije

PowerPoint Presentation

PROMENLJIVE, TIPOVI PROMENLJIVIH

Algoritmi

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

Microsoft PowerPoint - PRI2014 KORIGOVANO [Compatibility Mode]

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Računarske mreže Čas 2 Ivana Tanasijević Matematički fakultet, Beograd 1

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

Microsoft PowerPoint - C-4-1

Postavka 12: Uzročnost 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

Dijagrami sekvenci

Microsoft Word - 02 Elementi programskog jezika Pascal

UNIVERZITET U NIŠU PRIRODNO MATEMATIČKI FAKULTET DEPARTMAN ZA RAČUNARSKE NAUKE Algoritmi za determinizaciju i minimizaciju nedeterminističkih automata

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Програмирај!

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

Tutoring System for Distance Learning of Java Programming Language

Algoritmi SŠ P1

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

Повезивање са интернетом

Microsoft PowerPoint - 06 Uvod u racunarske mreze.ppt

Slide 1

(Microsoft Word - Dr\236avna matura - studeni osnovna razina - rje\232enja)

Kombinatorno testiranje

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp

Microsoft PowerPoint - Ekoloska (city) logistika 8.3

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ НА КРАЈУ ОСНОВН

POSLOVNI INFORMACIONI SISTEMI I RA^UNARSKE

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

P9.1 Dodela resursa, Bojenje grafa

Rad u mrežnom okruženju Osnove informatike s primjenom računala

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

Funkcije predavač: Nadežda Jakšić

Microsoft Word - LelasMarko_routing in ad hoc networks.doc

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

Uvod u Python

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

P11.3 Analiza zivotnog veka, Graf smetnji

Рачунарска интелигенција

ggmap

Matematka 1 Zadaci za vežbe Oktobar Uvod 1.1. Izračunati vrednost izraza (bez upotrebe pomoćnih sredstava): ( ) [ a) : b) 3 3

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Slide 1

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ и технолошког развоја ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ЗАВРШНИ ИСПИТ НА КРАЈУ ОСНОВН

Uvod u PHP

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Logičke izjave i logičke funkcije

KATUŠIĆ ANTONIO.pdf

ПРЕДЛОГ

ТЕОРИЈА УЗОРАКА 2

Algoritmi SŠ P1

Vjezbe

Grananje u programu predavač: Nadežda Jakšić

Slide 1

РЕПУБЛИКА СРПСКА МИНИСТАРСТВО ПРОСВЈЕТЕ И КУЛТУРЕ РЕПУБЛИЧКИ ПЕДАГОШКИ ЗАВОД Милоша Обилића 39 Бањалука, Тел/факс 051/ , 051/ ; p

Испитни задаци - Задатак 1 Задатак 1 (23. септембар 2012.) а) Статичком методом конструисати утицајне линије за силе у штаповима V b и D 4. б) Одредит

Београд, МАТРИЧНА АНАЛИЗА КОНСТРУКЦИЈА ЗАДАТАК 1 За носач приказан на слици: а) одредити дужине извијања свих штапова носача, ако на носач

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft PowerPoint - 12a PEK EMT VHDL 1 od 4 - Uvod (2011).ppt [Compatibility Mode]

DIGITALNA OBRADA SLIKE

PowerPoint Presentation

Classroom Expectations

SPR , IV godina, VHDL – Ispitna pitanja

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ТЕСТ МАТЕМАТИКА школска 2015/

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

Microsoft Word - 14Celobrojno.doc

ЖИРОКЛИРИНГ И БРУТО ПОРАВНАЊЕ У РЕАЛНОМ ВРЕМЕНУ (БПРВ) ОПИС РАДА СИСТЕМА На основу Закона о Централној банци БиХ у којем стоји: Основни задаци Централ

Microsoft Word - eg_plan_mart2007.doc

PowerPoint Presentation

UNIVERZITET U NOVOM SADU TEHNIČKI FAKULTET MIHAJLO PUPIN ZRENJANIN TEHNOLOGIJE DISTRIBUIRANIH INFORMACIONIH SISTEMA - Skripta za teorijski deo (RADNA

The real problem is that programmers have spent far too much time worrying about efficiency in the wrong places and at the wrong times; premature opti

Tutoring System for Distance Learning of Java Programming Language

LAB PRAKTIKUM OR1 _ETR_

Uvod u računarstvo 2+2

SKRIPTE EKOF 2019/20 skripteekof.com Lekcija 1: Brojevni izrazi Lekcija 1: Brojevni izrazi Pregled lekcije U okviru ove lekcije imaćete priliku da nau

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Microsoft Word - PLC na Ethernet mrezi.doc

Microsoft Word - DNS_DHCP.doc

Rjesenja pripremnih zadataka za provjeru znanja-petlje II 1,2 //1. a) S=1^3+2^3+3^ ^3 program Untitled; var i,s:integer; begin //for

PowerPoint Presentation

ПРИРОДА И ЗНАК РЕШЕЊА 2 b ax bx c 0 x1 x2 2 D b 4ac a ( сви задаци су решени) c b D xx 1 2 x1/2 a 2a УСЛОВИ Решења реална и различита D>0 Решења реалн

No Slide Title

UPUTSTVO ZA PODEŠAVANJE MOBILNIH UREĐAJA ZA MMS

P2.1 Projektovanje paralelnih algoritama 1

Korisničko uputstvo mobilne aplikacije Digitalni Kiosk 1

Zadaci s rješenjima, a ujedno i s postupkom rada biti će nadopunjavani tokom čitave školske godine

Адреса: Maršala Tita 9a/I Телефон: (033) Факс: (033) Е-маил: Wеб: Датум и вријеме слања

My_P_Red_Bin_Zbir_Free

Dinamičko programiranje Primer 1: Za dati niz naći njegov najduži neopadajući podniz. Defnicija: podniz nekog niza je niz koji se dobija izbacivanjem

Microsoft PowerPoint - Strukturni dijagrami, Gantogram - Planiranje [Compatibility Mode]

Транскрипт:

Дистрибуирано програмирање

Прослеђивање порука Комуникациони сервиси у једном дистрибуираном систему реализовани су на бази сандучића типа mbx за пренос порука типа msg. Претпоставићемо да тип msg обухвата целе бројеве и специјални симбол ack за потврђивање пријема. Основне операције на сандучићима су следеће: mbx_put(m: msg, box: mbx) смешта поруку m у сандуче box mbx_get(var m: msg, box: mbx, t: time, var status: boolean) узима прву поруку из сандучета box и њену вредност додељује променљивој m, постављајући статус на true; ако је сандуче празно током интервала t, статус постаје false, а вредност m је недефинисана. Време t је у опсегу 0..maxtime или је INF. Размотримо једноставан систем који садржи само два процеса, S и R. 2/38

Прослеђивање порука (а) S асинхроно шаље целобројну вредност i, а R извршава обичан пријем (basic receive). Procedure send(i:integer); var m: msg; m := i; mbx_put(m,a); procedure receive(var i:integer); var m: msg; st: boolean; mbx_get(m,a,inf,st); i := m; 3/38

Прослеђивање порука (б) Асинхроно слање, условни пријем: Procedure send(i:integer); var m: msg; m := i; mbx_put(m,a); function receive(var i: integer):boolean var m: msg; st: boolean; mbx_get(m,a,0,st); if st then i := m; receive := st; 4/38

Прослеђивање порука (в) Асинхроно слање, временски условљен пријем: procedure send(i:integer); var m: msg; m := i; mbx_put(m,a); function receive(var i:integer,d:time): boolean; var m: msg; st: boolean; mbx_get(m,a,d,st); if st then i := m; receive := st; 5/38

Прослеђивање порука (г) Синхроно слање, обичан пријем: function send(i: integer):boolean; var m: msg; st: boolean; m := i; mbx_put(m,a); mbx_get(m,b,inf,st); send := (m = ack); procedure receive(var i:integer) var m: msg; st: boolean; mbx_get(m,a,inf,st); i := m; m := ack; mbx_put(m,b); 6/38

Прослеђивање порука (д) Бидирекциона трансакција типа 'захтеводговор': procedure rq(i:integer; var x:integer,d:time); var m: msg; st: boolean; m := i; mbx_put(m,a); mbx_get(m,b,d,st); if st then x := m else x := 0; procedure reply; var m: msg; i: integer; st: boolean; mbx_get(m,a,inf,st); i := m; m := f(i); mbx_put(m,b); 7/38

Задаци

The roller coaster problem 9/38

The roller coaster problem Претпоставити да постоји N путника и једно возило на тобогану (The roller coaster problem). Путници се наизменично шетају по луна парку и возе на тобогану. Тобоган може да прими највише K путника при чему је K < N. Вожња тобоганом може да почне само уколико се сакупило тачно K путника. Написати програм користећи асинхрону комуникацију користећи сандучиће који симулира описани систем. 10/38

The roller coaster problem program RollerCoaster; const K =...; N =...; type msg = record ID : integer; var coasterin, coasterout : mbx; passengerbox : array [1..N] of mbx; 11/38

The roller coaster problem procedure Passenger(ID : integer); while true do walking(id); boardcar (ID); riding(id); leavecar (ID); 12/38

The roller coaster problem procedure boardcar (ID : integer); var m : msg; status : boolean; m.id := ID; mbx_put(m, coasterin); mbx_get(m, passengerbox[id], INF, status); procedure leavecar (ID : integer); var m : msg; status : boolean; mbx_get(m, passengerbox[id], INF, status); m.id := ID; mbx_put(m, coasterout); 13/38

The roller coaster problem procedure Coaster; var i : integer; boarded : array[1..k] of msg; while true do boardingcar; riding; leaveingcar; 14/38

The roller coaster problem procedure boardingcar; var i : integer; m : msg; status : boolean; for i := 1 to K do mbx_get(m, coasterin, INF, status); boarded[i] := m; for i := 1 to K do mbx_put(m, passengerbox[boarded[i].id]); 15/38

The roller coaster problem procedure leavingcar; var i : integer; m : msg; status : boolean; for i := 1 to K do mbx_put(m, passengerbox[boarded[i].id]); for i := 1 to K do mbx_get(m, coasterout, INF, status); 16/38

Readers Writers Problem 17/38

Readers Writers Problem Решити проблем читалаца и писаца (Readers Writers Problem) користећи поштанске сандучиће. Дозвољено је да само један процес чита поруке из једног сандучета. 18/38

Readers Writers Problem program ReadersWriters; const STARTREAD = 0; const STARTWRITE = 1; var operationstart : mbx; operationend : mbx; confirm : array [0..N-1] of mbx; 19/38

Readers Writers Problem procedure Reader(i : integer); var m: msg; status : boolean; procedure read; while (true) do m.id := i; m.operation := STARTREAD; mbx_put(m, operationstart); mbx_get(m, confirm[i], INF, status); read; m.id := i; mbx_put(m, operationend); end 20/38

Readers Writers Problem procedure Writer(i : integer); var m: msg; status : boolean; procedure write; while (true) do m.id := i; m.operation := STARTWRITE; mbx_put(m, operationstart); mbx_get(m, confirm[i], INF, status); write; m.id := i; mbx_put(m, operationend); end 21/38

Readers Writers Problem program ReadersWriters; const STARTREAD = 0; const STARTWRITE = 1; var operationstart : mbx; operationend : mbx; confirm : array [0..N-1] of mbx; 22/38

Readers Writers Problem procedure Coordinator; var numreaders: integer; numwriters: integer; m, n : msg; status : boolean; while (true) do mbx_get(m, operationstart, INF, status); if(m.operation = STARTREAD) then numreaders := numreaders + 1; mbx_put(m, confirm[m.id]); end 23/38

Readers Writers Problem end else if(m.operation = STARTWRITE) then while(numreaders > 0) do mbx_get(n, operationend, INF, status); numreaders := numreaders - 1; mbx_put(m, confirm[m.id]); mbx_get(m, operationend, INF, status); status := true; while(status) do mbx_get(m, operationend, 0, status); if(status) then numreaders := numreaders - 1; 24/38

Game of Life 25/38

Game of Life Постоји матрица димензија nxn таква да свака њена ћелија представља један организама који може да буде жив или мртав. Организми могу да комуницирају само са својим суседима (горе, доле, лево, десно и укосо). Организми у средини ће имати 8 суседа, док ће они у угловима имати само 3. Правила која важе за сваки организам су следећа: Жив организам који има мање од два жива суседа умире од усамљености Жив организам који има више од три жива суседа умире од пренатрпаности Жив организам са два или три жива суседа преживљава и формира следећу генерацију Мртав организам са три жива суседа оживљава Користећи сандучиће написати програм који симулира организам. 26/38

Game of Life program GameOfLIfe; const numgenerations =...; n =...; var box : array [0..n-1, 0..n-1] of mbx; function xstart(i : integer) : integer; i := i - 1; if(i < 0) then xstart := 0; else xstart := i;... function numofneighbours(i, j : integer) : integer; numofneighbours := (xend(i) - xstart(i) + 1)*(yEnd(i) - ystart(i) + 1) - 1; 27/38

Game of Life procedure Node(i : 1..n, j : 1..n); var p, q, k : integer; status, st : boolean; neighbours : array[0..1, 0..7] of msg; num : array[0..1] of integer; m : msg; num [0] := 0; num [1] := 0; for k := 1 to numgenerations do m.status := status; m.i := i; m.j := j; m.index := k; 28/38

Game of Life for p := xstart(i) to xend(i) do for q := ystart(j) to yend(j) do if((p <> i) or (q <> j)) then mbx_put(m, box[p, g]); while (num [k mod 2] < numofneighbours(i, j)) do mbx_get(m, box[i, j], INF, st); neighbours[m.index mod 2, num[m.index mod 2]] := m; num[m.index mod 2] := num[m.index mod 2] + 1; num[k mod 2] := 0; calculatestate(i, j, k, neighbours, status); 29/38

Broadcast 30/38

Broadcast Постоји повезан граф који се састоји из n чворова. Чворови могу да комуницирају само са суседним чворовима. Користећи сандучиће написати програм који поруку коју шаље један чвор прослеђује свим осталим чворовима у графу. Сваки чвор има информације само о својим суседима. 31/38

Broadcast program Broadcast; const n =...; var probe : array [1..n] of mbx; procedure Node(p : 1..n); var links : array [1..n] of boolean; //neighbors of node p; m : msg; num : integer; //number of neighbors; q : integer; st : boolean; 32/38

Broadcast init(p); mbx_get(m, probe[p], IN, st) ; //send m to all neighbors for q := 1 to n do if(links[q]) then mbx_put(m, probe[q]); //receive num-1 redundant copies of m for q = 1 to num-1 do mbx_get(m, probe[p], INF, st) ; procedure Initiator; //executed on source node S var m : msg; //message to broadcast; S : integer; mbx_put(m, probe[s]); 33/38

Broadcast Постоји повезан граф који се састоји из n чворова. Чворови могу да комуницирају само са суседним чворовима. Користећи сандучиће написати програм који поруку коју шаље један чвор прослеђује свим осталим чворовима у графу. У овом решењу претпоставите да почетни чвор има информације о комплетној топологији графа. 34/38

Broadcast program BroadcastTree; const n =...; type graph = array [1..n, 1..n] of boolean; type msg = record data : message; spanningtree : graph; var probe : array [1..n] of mbx; 35/38

Broadcast procedure Node(p : 1..n); var t : graph; m : msg; q : integer; st : boolean; init(p); mbx_get(m, probe[p], INF, st) ; t := m.spanningtree; //send m to all children for q := 1 to n do if(t[p, q]) then mbx_put(m, probe[q]); //q is a child of p in t 36/38

Broadcast procedure Initiator; //executed on source node S var m : msg; //message to broadcast; S : integer; topology : graph; //network topology; t : graph; //spanning tree of topology; inittopology(topology, t); m.spanningtree := t; mbx_put(m, probe[s]); 37/38

Питања? Захарије Радивојевић Електротехнички Факултет Универзитет у Београду zaki@etf.rs