12.07.2015 Views

Spis treœci - Patrz

Spis treœci - Patrz

Spis treœci - Patrz

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.4.10 Obliczanie współczynników rozwinięcia dwumianu Newtona (n + b)nObliczanie wykonuje się „falami". Każda fala rozpoczyna się w P(l) i dociera o jedenproces dalej niż poprzednia. Liczba fal przechodzących przez dany proces jest o jedenmniejsza od liczby fal przechodzących przez proces poprzedni. Po przejściu odpowiedniejliczby fal procesy wysyłają obliczone współczynniki do procesu U. Zmienna n w procesie P(i),i = l,...,K, oznacza liczbę fal, które jeszcze mają przejść przez proces, natomiast x jestwartością i-tego elementu obliczanego właśnie wiersza trójkąta Pascala.Przejście kolejnej fali polega na tym, że każdy proces dodaje do swojej starej wartości xstarą wartość otrzymaną od procesu o numerze o jeden niższym, czyli y. W efekcie nowewartości w poszczególnych procesach tworzą kolejny wiersz trójkąta Pascala. Zauważmy, żejeśli proces U wyśle do P(l) liczbę ujemną, to instrukcja alternatywy w procesie P(l) zakończysię z błędem, w rezultacie cały proces zakończy się z błędem. Procesy P(i), i = 2,...,K,wówczas zakończą się (poprawnie) jeden po drugim, ponieważ instrukcje wejścia w dozorzezwrócą wartość false.Schemat komunikacji między procesami przedstawia rys. 5.25.comment K - liczba procesów liczących;[U:: i, n: integer; w: (1..K) integer;P(l)!n;i := 1;*[(j:l..K) j = i; i i :- i + 1]||P(1):: n: integer;*[ U?n ->C n = O -> skip[] n > O -> P(2)!n-l;*[n > l -> P(2)!l; n := n - 1]];U!l]l |P(i:2..K):: n: integer; x, y: integer;*[P(i-l)?n -> x := 1;[n = O -> y := O[] n > O -> P(i+l)!n-l; P(i-l)?y];*[n>l -> x := x + y; P(i+l)!x; n := n - 1; P(i-l)?y];U!x+y]]143

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!