• Nie Znaleziono Wyników

Kolokwium ze wstępu do informatyki, I rok Mat

Dequeue ( &s );

realizuje algorytm sumowania parami, z dokładnością do kolejności składników.

5. a) Rozwiąż równanie różnicowe Nk= Nk−1+ Nk−2+ 1z warunkiem początkowym N0= 0, N1= 1.

b) Ciąg o długości Nk(dla pewnego k ∈ N) został posortowany algorytmem QuickSort, przy czym okazało się, że za każdym razem procedura Partition była wywołana dla podciągu o długości Nl (gdzie l ∈ {2, . . . , k}) i wskutek działania tej procedury element dzielący znalazł się Nl−2pozycje za początkiem podciągu (a więc dalej trzeba było sortować rekurencyjnie podciągi

o długościach Nl−2i Nl−1). Napisz równanie różnicowe z odpowiednim warunkiem początkowym, którego rozwiązanie opisuje koszt (liczbę porównań kluczy wykonanych przez algorytm podczas) sortowania takiego ciągu dla każdego k.

Kolokwium ze wstępu do informatyki, I rok Mat.

(Ściśle tajne przed godz. 14 : 15 24 kwietnia 2006.)

Proszę bardzo uważnie przeczytać treść zadań. Na ocenę bardzo duży wpływ będzie miała czytelność rozwiązań i poprawność uzasadnienia każdej odpowiedzi.

1. Do początkowo pustego drzewa AVL zostały wstawione kolejno wierzchołki z kluczami 1, 9, 2, 8, 3, 7, 4, 6, 5. Narysuj obrazy drzewa przed wykonaniem każdej rotacji oraz zaznacz wyraźnie na każdym obrazie, lub napisz obok, w którym wierzchołku i w którą stronę ta rotacja ma być wykonana.

2. Długi tekst składa się z liter „a”, . . . , „h”, przy czym prawdopodobieństwa ich wystąpienia są podane w tabelce:

a b c d e f g h

0,45 0,2 0,1 0,09 0,08 0,05 0,02 0,01

Znajdź kod binarny optymalny do zakodowania tego tekstu.

Uzasadnij, dlaczego jest on optymalny.

3. Dany jest graf, którego krawędzie mają przyporządkowane wagi, przedstawione na rysunku.

v1 v2 v3

v4 v5 v6 v7

v8 v9 v10

1 2 3 3

3 4 4

4 6

5 5

6 6

7 8

8 9 9 9

Narysuj minimalne drzewo rozpinające ten graf i podaj kolejność, w jakiej algorytm Kruskala znajdzie krawędzie tego drzewa.

Czy istnieje tylko jedno minimalne drzewo rozpinające ten graf? Odpowiedź uzasadnij.

4. Dany jest graf skierowany, którego krawędzie mają przyporządkowane wagi, przedstawione na rysunku.

v1 v2 v3

v4 v5 v6 v7

v8 v9 v10

1 2 3 3

3 4 4

4 6

5 5

6 6

7 8

8 9 9 9

Narysuj drzewo składające się z najkrótszych ścieżek prowadzących

z wierzchołka v5do pozostałych wierzchołków tego grafu skierowanego. Podaj kolejność, w jakiej algorytm Dijkstry znajdzie krawędzie tego drzewa.

Kolokwium ze wstępu do informatyki, I rok Mat.

(Ściśle tajne przed godz. 14 : 15 23 kwietnia 2007.)

Proszę bardzo uważnie przeczytać treść zadań. Na ocenę bardzo duży wpływ będzie miała czytelność rozwiązań i poprawność uzasadnienia każdej odpowiedzi.

1. Do początkowo pustego drzewa AVL zostały wstawione kolejno wierzchołki z kluczami 5, 6, 4, 7, 3, 8, 2, 9, 1, 10. Narysuj obrazy drzewa przed wykonaniem każdej rotacji oraz zaznacz wyraźnie na każdym obrazie, lub napisz obok, w którym wierzchołku i w którą stronę ta rotacja ma być wykonana.

2. Długi tekst składa się z liter „a”, . . . , „h”, przy czym prawdopodobieństwa ich wystąpienia są podane w tabelce:

a b c d e f g h

0,48 0,15 0,12 0,1 0,09 0,03 0,02 0,01

Znajdź kod binarny optymalny do zakodowania tego tekstu.

Uzasadnij, dlaczego jest on optymalny.

3. Dany jest graf, którego krawędzie mają przyporządkowane wagi, przedstawione na rysunku.

v1 v2 v3

v4 v5 v6 v7

v8 v9 v10

9 8 7 7

7 6 6

6 4

5 5

4 4

3 2

2 1 1 1

Narysuj minimalne drzewo rozpinające ten graf i podaj kolejność, w jakiej algorytm Prima znajdzie krawędzie tego drzewa.

Czy istnieje tylko jedno minimalne drzewo rozpinające ten graf? Odpowiedź uzasadnij.

4. Dany jest graf skierowany G, przedstawiony na rysunku.

v1 v2

v3 v4 v5

v6 v7

a) Znajdź kolejność, w jakiej algorytm DFS nada wierzchołkom tego grafu kolory szary i czarny (tj. wartości atrybutów b i f wierzchołków).

b) Dla każdej krawędzi grafu G określ, jak ją algorytm DFS zaklasyfikuje (drzewowa, powrotna, skierowana w przód, boczna).

c) Znajdź składowe silnie spójne i narysuj graf zredukowany grafu G.

Kolokwium ze wstępu do informatyki, I rok Mat.

(Ściśle tajne przed godz. 8:30 21 kwietnia 2008.)

Proszę bardzo uważnie przeczytać treść zadań. Na ocenę bardzo duży wpływ będzie miała czytelność rozwiązań i poprawność uzasadnienia każdej odpowiedzi.

1. Napisz procedurę, której parametrem jest wskaźnik początku listy złożonej z elementów typu opisanego w taki sposób:

typedef struct lista { int klucz, tresc;

struct lista *nast;

} lista;

Zadaniem procedury jest utworzenie drugiej listy, zawierającej kopie tych elementów, których klucze są liczbami parzystymi. Elementy tej listy należy tworzyć przy użyciu procedury malloc. Wskaźnik początku utworzonej listy ma być zwrócony jako wartość procedury.

Kolejność elementów w utworzonej liście może być zgodna z ich uporządkowaniem w liście danej, lub odwrotna; napisz, jaka jest ta kolejność w napisanej przez siebie procedurze.

2. Do początkowo pustego drzewa AVL zostały wstawione kolejno wierzchołki z kluczami 10, 1, 9, 2, 8, 3, 7, 4, 5, 6. Narysuj obrazy drzewa przed wykonaniem każdej rotacji oraz zaznacz wyraźnie na każdym obrazie, lub napisz obok, w którym wierzchołku i w którą stronę ta rotacja ma być wykonana.

3. Długi tekst składa się z liter „a”, . . . , „i”, przy czym prawdopodobieństwa ich wystąpienia są podane w tabelce:

a b c d e f g h i

0,42 0,2 0,12 0,1 0,06 0,04 0,03 0,02 0,01 Znajdź kod binarny optymalny do zakodowania tego tekstu.

Zakoduj przy jego użyciu tekst „cichabababadaecha”.

4. Dany jest graf, którego krawędzie mają przyporządkowane wagi, przedstawione na rysunku.

v1 v2 v3

v4 v5 v6 v7

v8 v9 v10

1 8 7 7

7 6 9

6 4

5 5

4 4

3 2

2 1 1 1

Narysuj minimalne drzewo rozpinające ten graf i podaj kolejność, w jakiej algorytm Kruskala znajdzie krawędzie tego drzewa. Jeśli kolejność nie jest jednoznacznie określona przez dany graf, to należy podać jedną z poprawnych możliwości.

Czy istnieje tylko jedno minimalne drzewo rozpinające ten graf? Odpowiedź uzasadnij.

Kolokwium ze wstępu do informatyki, I rok Mat.

(Ściśle tajne przed godz. 10:15 20 kwietnia 2009.)

Proszę bardzo uważnie przeczytać treść zadań. Na ocenę bardzo duży wpływ będzie miała czytelność rozwiązań i poprawność uzasadnienia każdej odpowiedzi.

1. Napisz procedurę, której parametrem jest wskaźnik pierwszego elementu listy złożonej ze zmiennych typu opisanego w taki sposób:

typedef struct lista { int klucz;

struct lista *nast;

} lista;

Zadaniem procedury jest znalezienie i zwrócenie jako wyniku liczby par kolejnych elementów tej listy, takich że klucze elementów należących do pary różnią się o liczbę parzystą (uwaga: każdy element listy oprócz pierwszego i ostatniego należy do dwóch par, które trzeba zbadać).

2. Do początkowo pustego drzewa AVL zostały wstawione kolejno wierzchołki z kluczami 1, 2, 3, 4, 5, 10, 9, 8, 7, 6. Narysuj obrazy drzewa przed wykonaniem każdej rotacji oraz zaznacz wyraźnie na każdym obrazie, lub napisz obok, w którym wierzchołku i w którą stronę ta rotacja ma być wykonana. Narysuj także drzewo otrzymane na końcu.

3. Pewien tekst składa się z liter „a”, . . . , „j”, przy czym litery „a” i „b” występują po jednym razie, a liczba wystąpień każdej następnej litery alfabetu jest sumą liczb wystąpień dwóch poprzednich liter (np. „c” występuje dwa razy, a „d” trzy razy).

Znajdź kod binarny optymalny do zakodowania tego tekstu.

Co można powiedzieć o optymalnym kodzie utworzonym dla alfabetu składającego się z dowolnej liczby n znaków, jeśli liczby wystąpień poszczególnych liter w tekście spełniają analogiczną regułę?

Odpowiedź uzasadnij.

4. Drzewa binarne w programie są zbudowane ze zmiennych typu podanego niżej:

typedef struct drzewo { int klucz;

struct drzewo *lewe, *prawe;

} drzewo, *pdrzewo;

Mając do dyspozycji procedury obsługi stosu i kolejki, mogących przechowywać wskaźniki wierzchołków drzewa, o nagłówkach

void InitStack ( void );

void Push ( pdrzewo el );

void Pop ( pdrzewo *el );

char StackEmpty ( void );

void InitQueue ( void );

void Enqueue ( pdrzewo el );

void Dequeue ( pdrzewo *el );

char QueueEmpty ( void );

oraz procedurę o nagłówku void Wyprowadz ( pdrzewo el );

napisz procedurę, która otrzymuje parametr będący wskaźnikiem do korzenia drzewa i której zadaniem jest wywołanie procedury Wyprowadz kolejno dla wszystkich wierzchołków drzewa (wskaźnik wierzchołka należy przekazać jako parametr), przy czym pierwszy ma być wskaźnik korzenia, następnie wskaźniki korzeni jego poddrzew itd. — wierzchołki drzewa położone bliżej korzenia mają być wyprowadzone wcześniej od bardziej oddalonych.

Napisz, jaki ogólny algorytm został użyty do wyprowadzenia wierzchołków drzewa w tej kolejności.

Kolokwium ze wstępu do informatyki, I rok Mat.

(Ściśle tajne przed godz. 10:15 26 kwietnia 2010.)

Proszę bardzo uważnie przeczytać treść zadań. Na ocenę bardzo duży wpływ będzie miała czytelność rozwiązań i poprawność uzasadnienia każdej odpowiedzi.

1. Program w C zawiera deklarację typedef struct lista {

int klucz;

struct lista *poprz, *nast;

} lista;

Ze zmiennych typu lista została utworzona zamknięta lista jednokierunkowa, w której pole nast każdego elementu wskazuje element następny w liście. Pole poprzkażdego elementu w liście ma nieokreśloną wartość.

Napisz w języku C podprogram z jednym parametrem wskaźnikowym, którego wartością jest adres dowolnego elementu takiej listy lub NULL. Zadaniem podprogramu jest nadanie takich wartości polom poprz wszystkich elementów listy, aby pole poprz każdego elementu wskazywało element poprzedni (zatem ma powstać zamknięta lista dwukierunkowa). Podprogram ma ponadto zwrócić wartość będącą liczbą elementów listy.

2. Do początkowo pustego drzewa AVL zostały wstawione kolejno wierzchołki z kluczami 1, 2, 3, 4, 10, 9, 8, 5, 6, 7. Narysuj obrazy drzewa przed wykonaniem każdej rotacji oraz zaznacz wyraźnie na każdym obrazie, lub napisz obok, w którym wierzchołku i w którą stronę ta rotacja ma być wykonana. Narysuj także drzewo otrzymane na końcu.

3. Znajdź kod binarny optymalny do zakodowania tekstu ABRAKADABRAALIBABIESIĘBABRA

i użyj tego kodu do zakodowania tego tekstu.

4. Dany jest graf, którego krawędzie mają przyporządkowane wagi przedstawione na rysunku.

v1 v2 v3

v4 v5 v6

v7 v8 v9

1 1

2

2 4

3 5

6 7

7

8 8

9

3 4 4

9

9

Narysuj minimalne drzewo rozpinające ten graf i podaj kolejność, w jakiej algorytm Prima znajdzie krawędzie tego drzewa. Jeśli kolejność nie jest jednoznacznie określona przez dany graf, to należy podać jedną z poprawnych możliwości.

Czy istnieje tylko jedno minimalne drzewo rozpinające ten graf? Odpowiedź uzasadnij.

Kolokwium ze wstępu do informatyki, I rok Mat.

(Ściśle tajne przed godz. 8:30 18 kwietnia 2011.)

Proszę bardzo uważnie przeczytać treść zadań. Na ocenę bardzo duży wpływ będzie miała czytelność rozwiązań i poprawność uzasadnienia każdej odpowiedzi.

1. Napisz podprogram w C, którego parametrem jest wskaźnik do korzenia drzewa binarnych wyszukiwań. Procedura ma obliczyć (i przekazać jako wartość) liczbę wierzchołków drzewa, których odległość od korzenia jest podana jako drugi parametr.

Tekst procedury poprzedź odpowiednią definicją typu strukturalnego opisującego wierzchołek drzewa. Typy klucza i danych przechowywanych w wierzchołkach mogą być dowolne.

2. Do początkowo pustego drzewa AVL zostały wstawione kolejno wierzchołki z kluczami 7, 6, 8, 5, 9, 4, 10, 3, 2, 1. Narysuj obrazy drzewa przed wykonaniem każdej rotacji oraz zaznacz wyraźnie na każdym obrazie, lub napisz obok, w którym wierzchołku i w którą stronę ta rotacja ma być wykonana.

3. Długi tekst składa się z liter „a”, . . . , „j”, przy czym prawdopodobieństwa ich wystąpienia są podane w tabelce:

a b c d e f g h i j

0,37 0,17 0,12 0,1 0,09 0,08 0,03 0,02 0,01 0.01 Znajdź kod binarny optymalny do zakodowania tego tekstu.

Oblicz współczynnik kompresji, tj. iloraz liczby bitów tekstu zakodowanego do liczby bitów reprezentujących tekst oryginalny, jeśli znaki są dane w tablicy elementów typu char, w kodzie ASCII.

4. Dany jest graf, którego krawędzie mają przyporządkowane wagi, przedstawione na rysunku.

v1 v2 v3

v4 v5 v6 v7

v8 v9 v10 v11

1 4 7 4

7 6 9

6 5

5 6

4 4

3 2 2

6

Narysuj minimalne drzewo rozpinające ten graf i podaj kolejność, w jakiej algorytm Prima znajdzie krawędzie tego drzewa. Jeśli kolejność nie jest jednoznacznie określona przez dany graf, to należy podać jedną (dowolną) z poprawnych możliwości.

Czy istnieje tylko jedno minimalne drzewo rozpinające ten graf? Odpowiedź uzasadnij.

Kolokwium ze wstępu do informatyki, I rok Mat.

(Ściśle tajne przed godz. 8:30 8 maja 2017.)

Proszę bardzo uważnie przeczytać treść zadań. Na ocenę

bardzo duży

wpływ będzie miała czytelność rozwiązań i poprawność uzasadnienia każdej odpowiedzi.

1. Dana jest następująca deklaracja typu:

typedef struct ElemListy { int wartosc;

struct ElemListy *nast; /* następny */

} ElemListy;

Napisz funkcję o nagłówku

ElemListy* ListaRoznic ( ElemListy* pocz )

która tworzy nową listę krótszą o 1 element, zawierającą różnice między kolejnymi elementami listy podanej jako parametr i zwraca jako wartość wskaźnik początku tej nowej listy. Na przykład, jeśli lista wejściowa zawiera liczby 1, 3, 2, 6, 11, to lista wyściowa ma zawierać elementy −2, 1, −4, −5.

2. Opisz, jak wygląda drzewo AVL o wysokości h > 0, w którym lewe poddrzewo ma największą możliwą liczbę wierzchołków, a prawe poddrzewo najmniejszą. Znajdź maksymalną różnicę między liczbami wierzchołków lewego i prawego poddrzewa korzenia takiego drzewa w funkcji wysokości h.

3. Do początkowo pustego drzewa AVL zostały wstawione wierzchołki z kluczami — liczbami całkowitymi — w następującej kolejności: 1, 10, 3, 8, 5, 6, 7, 4, 9, 2.

Narysuj obraz drzewa przed każdą rotacją wykonaną podczas tych wstawień i zaznacz, w którym wierzchołku i w którą stronę rotacja została wykonana.

4. Znajdź kod optymalny do zakodowania fragmentu wiersza St. Barańczaka:

Reputację Papuy Psuły póły bibuły Puchła pod chałup pułap Pochłaniana co tchu, łap-Czywie przez Papuasa Półnielegalna prasa:

Pomiń spacje i znaki interpunkcyjne i zaniedbaj różnicę między wielkimi i małymi literami. Podaj długość (liczbę bitów) zakodowanego tekstu.

Wskazówka. W tekście występują tylko następujące litery:

A B C D E Ę G H I J L Ł N O Ó P R S T U W Y Z

Kolokwium poprawkowe ze wstępu do informatyki, I rok