i
i
{nie było żadnych podstawień}
{:=: oznacza zamianę}
ck.:bco!ean; begin ok.:=iruc; fGr i;=2 to n do if AfiJ<Afi-l | ok:~faise; if ok retum(A); for i:=l to n do for j:=i-K to n co i-Afj]<Afi] then A[i]:=:Ajj]; end;
9. Graf zapisano w postaci macierzy sąsiedztwa wierzchołków. Napisz algorytm rozpoznający, czy ten graf jest gwiazdą i oszacuj jego złożoność obliczeniową.
Aby graf był gwiazdą, musi mieć jeden wierzchołek stopnia n-1 i pozostałe stopnia 1. Tak wiec w macierzy sąsiedztwa wierzchołków musi być jeden wiersz z n-1 jedynkami i pozostałe z 1 jedynką.
Function is_star( G: graph): fccolean; i j,k. środek; integer; begin śroćek;=0; for i:=ł to n-1 do begin k:=0;
for j:=i+l to n do ^ Gfi j]=l then k:=fc+l; if k=n-l then środek:=środek-:T
else if kol retum(false);
end;
ifśroćekoi then retum(faise) else return (tnie);
end;
10. Oszacuj liczbę kroków' procedury zagadka : v n*-
^ V 'V 1 2. ei i “1 / 1 * ^
- u.* 4: .«.r,
procedurę zagadka(n:integer); begin K
(1) for i:=sqr(n) downto 1 do
(2) if odd(i) then
n
for j:=l to i do {S'4
(3) for k:=i+l to n do x:=x-rł;<sr'''^2 1~ end;
Należy rozpatrzyć dwa przypadki pętli głów nej (1) :
i<n, w* tym przypadku pętla (1) wykonuje się n razy*, pętla (3) średnio 0(n') razy dla jednego obiegu pętii (1). Tak więc łączna liczba kroków algorytmu dla tego przypadku wynosi 0(nJ).
i>n, w tym przypadku pętla (3) riie wykonuje się w ogóle. Pętla (1) wykonuje się średnio n3-n, czyli CXn3) razy. Pętla (2) wykonuje się średnio (n3-n)/2, czyrli 0(n3) razy. Tak więc łączna liczba kroków algorytmu dla tego przypadku wynosi O(rf). Ponieważ czynnik 0(n~) jest dominujący nad 0(rfj, liczba kroków algorytmu wynosi 0(n").
u n er i o n rek u ren cyj n y (m ,n: i n t eger): i n t ege r; begin
if m=0 then rctum(n)
J else begin
M;=n mod m; t=n; __;>£> v n=x'I7nJ*n+M;
| 11. Dany jest algorytm reku rencyjny ;
ret urn (rek u ren cyj ny(t ntod in,n));
<M^r A-
qyrJ- j ’ *0% W ) ^ /*fwv .
/