background image

 

1 / 2 

Zestawienie tematów objętych zakresem egzaminu z budowy i analizy algorytmów 

Nr 
zad. 

Tematy 

Przykładowe zadania egz. 

1.

 

 

 

Schematy blokowe podstawowych struktur sterujących: 
wyboru warunkowego, pętli „dopóki”, pętli „aż do”, pętli 
ograniczonej. 

 

Przerabianie schematu algorytmu opartego na pętli 
„dopóki” na schemat oparty na pętli „aż do” i odwrotnie. 

 

Budowanie pętli ograniczonej w oparciu o pętlę 
warunkową i zmienną licznikową. 

 

Podstawowe struktur danych: tablice jedno- i 
wielowymiarowe, rekordy, wskaźnikowe listy rekordów, 
ukorzenione drzewa rekordów (rozróżnianie struktur 
statycznych i dynamicznych). 

 

Budowa prostych algorytmów wykorzystujących 
podstawowe struktury sterujące i struktury danych –
organizowanie współpracy pomiędzy strukturą danych a 
strukturą sterującą, np. budowa algorytmów wyszuki-
wania wartości ekstremalnych (wielkości lub położenia), 
sumowania, mnożenia i normalizacji liczbowych 
elementów zbioru danych wejściowych umieszczonych w 
różnych strukturach danych. 

 

Opisywanie algorytmu za pomocą schematu blokowego i 
pseudojęzyka programowania – przechodzenie z jednego 
sposobu opisu na drugi. 

Utworzono jednokierunkową listę wskaźnikową z 
rekordów o trzech polach: A1A2 i NST.  
Pola A1 i A2 są typu liczbowego, a pole NST jest 
wskaźnikiem na kolejny rekord. We wszystkich 
rekordach listy pola A1 i A2 wypełniono liczbami.  
W oparciu o pętlę (iterację) warunkową typu „dopóki” 
narysuj schemat blokowy algorytmu do wyznaczenia 
najmniejszej spośród takich liczb zapamiętanych w 
polach A1, które są większe lub równe liczbie z pola A2 
tego samego rekordu. 
Odwołanie do zawartości pola A w rekordzie 
wskazanym przez wskaźnik np. X oznacz A[X]. 
Przyjmij, że zmienna wskazująca na pierwszy rekord 
nazywa się GA a pole wskaźnikowe NST w ostatnim 
rekordzie na liście zawiera wartość NIL.  
Wprowadź odpowiednie zmienne pomocnicze i 
zapewnij poprawne działanie algorytmu dla pustej listy. 

2.

 

 

 

Schemat działania stosu i kolejki, które zbudowano w 
oparciu o listę wskaźnikową (realizacja operacji 
wstawiania i usuwania rekordów z tych struktur). 

 

Zasada działania algorytmów rekurencyjnych.  

 

Schematy algorytmów przeszukiwania podstawowych 
struktur danych (współpraca struktur sterujących ze 
strukturami danych): pętle zagnieżdżone dla tablic 
wielowymiarowych, iteracyjne algorytmy przeglądu 
drzewa w głąb i wszerz, rekurencyjny algorytm przeglądu 
drzewa binarnego. 

 

Budowa drzewa BST. 

 

Podstawowe algorytmy sortowania: bąbelkowego, ze 
scalaniem i drzewiastego (szczegóły działania). 

 

Algorytm binarnego wyszukiwania (przez połowienie) 
elementu z listy uporządkowanej (szczegóły działania). 

 

Przybliżony algorytm wyznaczania upakowania plecaka 
oparty na metodzie zachłannej (szczegóły działania). 

a)

 

Z jakich obiektów i jak powiązanych może być 
zbudowana struktura danych zwana ukorzenionym 
drzewem binarnym? Jaka specyficzna struktura 
sterująca w algorytmie jest często powiązana z 
drzewiastą strukturą danych? Jaka cecha drzewa 
narzuca to pokrewieństwo? Zbuduj drzewo BST dla 
ciągu liczb: 7, 4, 6, 2, 11, 5, 8, 12, 9. Podaj ile liści 
będzie zawierało to drzewo. 

b)

 

Opisz, w jaki sposób w oparciu o wskaźnikową listę 
jednokierunkową można by zbudować strukturę 
danych zwaną kolejką. Opisz realizację podstawo-
wych operacji, które pozwalałyby modyfikować tę 
strukturę zgodnie z przyjętymi w kolejce zasadami. 
Jakie są te zasady? Przyjmij w opisie, że lista 
jednokierunkowa utworzona jest z rekordów 
posiadających tylko dwa pola: kluczowe i 
wskaźnikowe. 

3.

 

 

 

Cztery metody budowania algorytmów: „wędruj i 
sprawdzaj”, „dziel i zwyciężaj”, „zachłanna”, 
„programowanie dynamiczne” – schemat działania i 
przykładowe realizacje wśród algorytmów omówionych 
na wykładach (zapis w pseudojęzyku). 

 

Demonstracja działania przykładowych algorytmów na 
podanych zestawach danych wejściowych (krok po 
kroku). 

Podaj charakterystyczne cechy algorytmów opartych na 
metodzie „programowania dynamicznego”. Opisz krok 
po kroku (podając, co jest wyznaczane, zapamiętywane 
i z czym powiązane) jak przebiega realizacja algorytmu 
wykorzystującego tę metodę w celu znalezienia 
„najkrótszej drogi” z punktu A do punktu w podanej 
sieci połączeń: 

2

5

2

2

3

3

4

6

3

6

2

1

A

C

B

D

F

E

G

J

H

I

3

1

4

3

 

Podaj na koniec długość wyznaczonej drogi i jej 
przebieg. Wypunktuj te cechy użytego algorytmu, które 
wskazują na zastosowanie programowania 
dynamicznego. 

background image

 

2 / 2 

Nr 
zad. 

Tematy 

Przykładowe zadania egz. 

4.

 

 

 

Definicje podstawowe dla asymptotycznej analizy 
złożoności czasowej algorytmów prowadzonej w 
najgorszym przypadku. 

 

Formalne porównywanie asymptotycznych rzędów 
złożoności. 

 

Posługiwanie się rachunkiem O(

) w zakresie: mnożenia 

rzędu złożoności przez wartość niezależną od rozmiaru 
danych wejściowych, mnożenia go przez wartość funkcji 
zależnej od rozmiaru danych, dodawania i mnożenia 
rzędów złożoności przez siebie. 

 

Powiązanie elementów rachunku O(

) ze strukturami 

sterującymi analizowanych algorytmów. 

 

Wyznaczanie rzędu asymptotycznej złożoności algorytmu 
w notacji O(

) na podstawie podanego schematu 

blokowego lub opisu w pseudojęzyku (algorytm może 
zawierać podprogramy o podanych rzędach złożoności). 

Wyznacz rząd złożoność w najgorszym przypadku dla 
algorytmu o podanym schemacie: 

Q?

O(

lg )

N

N

2

O(

)

N

3

C

N

 lg  razy

N

N

 lg  razy

petla

petla

 

Przy pętlach podano liczbę ich powtórzeń. Przyjmij, że 
N oznacza rozmiar zadania a C pewną stałą niezależną 
od rozmiaru danych wejściowych. Przyjmij, że wybór 
warunkowy Q zależy od danych wejściowych. Posługuj 
się rachunkiem O(

), formalnie porównuj rzędy 

złożoności i uzasadniaj postępowanie. 

5.

 

 

 

Rozstrzyganie całkowitej i częściowej poprawności 
algorytmu: definicje i rozróżnienie, istota metody 
niezmienników i zbieżników. 

 

Relacja pomiędzy analizą złożoności algorytmu a analizą 
złożoności problemu algorytmicznego. 

 

Podział na problemy o złożoności wielomianowej i ponad 
wielomianowej: formalne określenie, teoretyczne i 
praktyczne znaczenie podziału. 

 

Podział na klasy problemów PNP i NP-zupełne: cechy 
charakterystyczne problemów z tych klas, relacje 
pomiędzy wymienionymi klasami, rozstrzyganie 
podstawowego problemu algorytmiki „P=NP”. 

 

Podział problemów algorytmicznych na rozstrzygalne 
(obliczalne) i nierozstrzygalne. Przykłady 
nierozstrzygalnych problemów algorytmicznych. 

 

Maszyna Turinga: czym jest, budowa i zastosowanie. 

 

Teza Churcha-Turinga i jej znaczenie dla analizy 
problemów algorytmicznych. 

 

Automaty skończenie stanowe: czym są, a czym nie są, 
budowa i zastosowanie. 

a)

 

Wyjaśnij, na czym polega problem algorytmiczny 
zwany problemem „stopu w algorytmie”. Podaj 
cechy charakterystyczne tego problemu i określ, do 
jakiej klasy problemów algorytmicznych on należy. 
Krótko przedstaw jakiś inny problem z tej samej 
klasy. 

b)

 

Wyjaśnij związki pomiędzy klasami problemów 
algorytmicznych: PNP, i NP-zupełne.  
Posługując się maszyną Turinga wyjaśnij pojęcie 
niedeterministycznej złożoności wielomianowej. 

c)

 

Skonstruuj diagram przejść dla automatu skończenie 
stanowego, który pracując nad alfabetem {x, y, z} 
potrafi stwierdzić w ciągu danych wejściowych 
wystąpienie przynajmniej raz sekwencji „zyyx”. 

 

Typowa punktacja zadań: 

Nr zad. 

Liczba punktów 

1.

 

 

20 

2.

 

 

15 

3.

 

 

15 

4.

 

 

15 

5.

 

 

10 

Suma: 

75 

 

J. Sikorski 

 

w roku akademickim 2011/2012