АСП1/Август 2021 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
м (Замена начина истицања милокода.)
 
(Није приказано 6 међуизмена 4 корисника)
Ред 1: Ред 1:
{{tocright}}
{{tocright}}
{{nerešeno}}
Ovaj članak je rekreacija avgustovskog roka koji nije objavljen.
Ovaj članak je rekreacija septembarskog roka koji nije objavljen.


== 1. zadatak ==
== 1. zadatak ==
{{delimično rešeno}}
=== Postavka ===
=== Postavka ===
Data je retka matrica koja je prikazana na slici. (Data je matrica npr. 5*6 sa 5 ili 6 random nenultih elemenata).
Data je retka matrica koja je prikazana na slici. (Data je matrica npr. 5*6 sa 5 ili 6 random nenultih elemenata).
a) Nacrtati izgled delova memorije u kojima se čuva ova retka matrica, ako se primenjuje ''Compressed Sparse Row'' način čuvanja.
<div class="abc-list">
b) Napisati funkciju u pseudokodu koja na osnovu sačuvane ''Compressed Sparse Row'' reprezentacije matrice M i unetog broja ''i'' štampa sve nenulte elemente ''i''-te vrste.
# Nacrtati izgled delova memorije u kojima se čuva ova retka matrica, ako se primenjuje ''Compressed Sparse Row'' način čuvanja.
# Napisati funkciju u pseudokodu koja na osnovu sačuvane ''Compressed Sparse Row'' reprezentacije matrice M i unetog broja ''i'' štampa sve nenulte elemente ''i''-te vrste.
</div>
=== Rešenje ===
=== Rešenje ===
== 2. zadatak ==
== 2. zadatak ==
Ред 13: Ред 15:
Navedite načine reprezentacije grafova i njihove prednosti i mane.
Navedite načine reprezentacije grafova i njihove prednosti i mane.
=== Rešenje ===
=== Rešenje ===
potrebno je samo napisati i prokomentarisati tabelu 7.1 sa strane 161 iz udžbenika
Potrebno je samo napisati i prokomentarisati tabelu 7.1 sa strane 161 iz udžbenika.
== 3. zadatak ==
== 3. zadatak ==
=== Postavka ===
=== Postavka ===
Zadato je binarno stablo S i date su adrese dva čvora ''x'' i ''y''. Napisati funkciju u pseudokodu koja pronalazi najnižeg zajedničkog pretka zadata dva čvora.
Zadato je binarno stablo S i date su adrese dva čvora ''x'' i ''y''. Napisati funkciju u pseudokodu koja pronalazi najnižeg zajedničkog pretka zadata dva čvora.
=== Rešenje ===
=== Rešenje ===
{{Милокод|<nowiki>
LOWEST_COMMON_ANCESTOR(S,x,y)
return FIND(S,x,y)
</nowiki>}}
{{Милокод|<nowiki>
FIND(S,x,y)
if S == null
  return null
end_if
if S == x || S == y
  return S
end_if
left = FIND(S.left,x,y)
right = FIND(S.right,x,y)
if left ≠ null && right ≠ null
  return S
else if left ≠ null
  return left
else if right ≠ null
  return right
else
  return null
end_if
</nowiki>}}
== 4. zadatak ==
== 4. zadatak ==
=== Postavka ===
=== Postavka ===
Potpuno formalno izvesti međusobnu zavisnost interne i eksterne dužine puta u binarnom stablu i kratko obrazložiti.
Potpuno formalno izvesti međusobnu zavisnost interne i eksterne dužine puta u binarnom stablu i kratko obrazložiti.
=== Rešenje ===
=== Rešenje ===
PE = PI + 2n, gde je n broj čvorova u stablu
<math> PE = PI + 2n </math>, gde je <math>n</math> broj čvorova u stablu
izvođenje indukcijom, kao u knjizi/na predavanju
izvođenje indukcijom, kao u knjizi/na predavanju.
== 5. zadatak ==
== 5. zadatak ==
=== Postavka ===
=== Postavka ===
Potrebno je realizovati aplikaciju za obradu slika. Korisniku je potrebno da za uneti set slika i unet set operacija omogućiti da se sve operacije izvrše nad svim unetim slikama. Navesti koje strukture je pogodno koristiti za čuvanje seta slika i seta operacija i objasniti zašto. Napisati fuknciju u pesudokodu koja obrađuje uneti set slika unetim setom operacija, u skladu sa odabranim strukturama podataka.
Potrebno je realizovati aplikaciju za obradu slika. Korisniku je potrebno da za uneti set slika i unet set operacija omogućiti da se sve operacije izvrše nad svim unetim slikama. Navesti koje strukture je pogodno koristiti za čuvanje seta slika i seta operacija i objasniti zašto. Napisati funkciju u pseudokodu koja obrađuje uneti set slika unetim setom operacija, u skladu sa odabranim strukturama podataka.
=== Rešenje ===
=== Rešenje ===
//''Rešenje je krajnje trivijalno i ovde je navedeno jedno koje je bodovano maksimalnim brojem poena''
''Rešenje je krajnje trivijalno i ovde je navedeno jedno koje je bodovano maksimalnim brojem poena.''
Za oba se može koristiti jednostruko ulančana lista (jer nije bitan redosled kojim će se operacije izvršavati jer će se svakako sve izvršiti na svim slikama), a ulančane liste su pogodno za lako dodavanje i brisanje elemenata.
Za oba se može koristiti jednostruko ulančana lista (jer nije bitan redosled kojim će se operacije izvršavati jer će se svakako sve izvršiti na svim slikama), a ulančane liste su pogodno za lako dodavanje i brisanje elemenata.
<syntaxhighlight lang="milo">
{{Милокод|<nowiki>
OBRADI_SLIKE(slike, operacije)
PROCESS_IMAGES(images, operations)
s = slike.head;
S = head(images)
o = operacije.head;
O = head(operations)
while (s != NULL)
while s ≠ NIL do
     while (o != NULL)
     while o ≠ NIL do
         s.info = o.operacija(s.info);
         data(S) = (operation(O))(data(S))
</syntaxhighlight>
    end_while
end_while
</nowiki>}}
== 6. zadatak ==
== 6. zadatak ==
=== Postavka ===
=== Postavka ===
Ред 46: Ред 75:
== 7. zadatak ==
== 7. zadatak ==
=== Postavka ===
=== Postavka ===
Dat je grad koji je mnodelovan usmerenim grafom, tako što su čvorovi lokacije u gradu (pekara, apoteka, biblioteka itd), a težine grana između čvorova vreme u minutima koje je potrebno da se peške dođe od izvorišne do odredišne lokacije. Dete želi da stigne od škole (čvor X) do kuće (čvor Y) najbrže moguće. Međutim, postoji opasan deo grada (čvor Z), koji nije bezbedan za decu i koji ona treba da izbegavaju. Napisati funkciju u pseudokodu koja na osnovu zadatog grafa G (nije data reprezentacija, nego treba apstraktno da se piše), zadatih lokacija kuće i škole, Y i X, i opasnog dela grada Z, pronalazi najkraće vreme koje je detetu potrebno od škole do kuće.
Dat je grad koji je modelovan usmerenim grafom, tako što su čvorovi lokacije u gradu (pekara, apoteka, biblioteka itd), a težine grana između čvorova vreme u minutima koje je potrebno da se peške dođe od izvorišne do odredišne lokacije. Dete želi da stigne od škole (čvor ''X'') do kuće (čvor ''Y'') najbrže moguće. Međutim, postoji opasan deo grada (čvor Z), koji nije bezbedan za decu i koji ona treba da izbegavaju. Napisati funkciju u pseudokodu koja na osnovu zadatog grafa ''G'' (nije data reprezentacija, rešenje treba da bude konceptualno), zadatih lokacija kuće i škole, ''Y'' i ''X'', i opasnog dela grada ''Z'', pronalazi najkraće vreme koje je detetu potrebno od škole do kuće.
=== Rešenje ===
=== Rešenje ===
Zadatak se rešava implementacijom Dijkstrinog algortima, tako što kada se u uzimanju čvorova redom po težinskoj udaljenosti od početnog dođe do "opasnog" čvora z, za njega se upise tezina beskonačno i ta petlja preskoči sa continue. Na kraju se samo proveri dostižnost ciljnog čvora.
Zadatak se rešava implementacijom Dijkstrinog algortima, tako što kada se u uzimanju čvorova redom po težinskoj udaljenosti od početnog dođe do "opasnog" čvora ''Z'', za njega se upiše težina beskonačno i ta petlja preskoči sa '''continue'''. Na kraju se samo proveri dostižnost ciljnog čvora.
== 8. zadatak ==
== 8. zadatak ==
=== Postavka ===
=== Postavka ===
Dat je graf na slici (ima nekih 7-8 čvorova). Za dati graf uraditi topološko sortiranje i prikazati graf dobijen tako.
Dat je graf na slici (ima nekih 7-8 čvorova). Za dati graf uraditi topološko sortiranje i prikazati graf dobijen tako.
=== Rešenje ===
=== Rešenje ===
== 9. zadatak ==
{{delimično rešeno}}
== 9. zadatak==
=== Postavka ===
=== Postavka ===
a) Detaljno opisati postupak za pronalaženje jako povezanih komponenti u grafu.
<div class="abc-list">
b) Za graf sa slike (nekih 7-8 čvorova) po koracima primeniti algoritam za pronalaženje jako povezanih komponenti i rezultujući graf.
# Detaljno opisati postupak za pronalaženje jako povezanih komponenti u grafu.
# Za graf sa slike (nekih 7-8 čvorova) po koracima primeniti algoritam za pronalaženje jako povezanih komponenti i rezultujući graf.
</div>
=== Rešenje ===
=== Rešenje ===
Videti zadatak iz [[АСП1/Јул 2020#2. zadatak 3|julskog roka 2020.]]
== 10. zadatak ==
== 10. zadatak ==
=== Postavka ===
=== Postavka ===
Potrebno je čuvati neki skup brojeva koji će biti u opsegu između 1 i 100.
Potrebno je čuvati neki skup brojeva koji će biti u opsegu između 1 i 100.
a) Uporediti sekvencijalnu i ulančanu reprezentaciju skupa i uprediti složenost operacija dodavanja elementa, brisanja elementa i provere pripadnosi elementa skupu za ove dve reprezentacije.
<div class="abc-list">
b) Neka je dat skup (npr. 5, 14, 44, 45, 78, 98) prikazati jednu i drugu reprezenatciju nakon operacija (npr. dodavanje 7, dodavanje 46, dodavanje 97, brisanje 78).
# Uporediti sekvencijalnu i ulančanu reprezentaciju skupa i uporediti složenost operacija dodavanja elementa, brisanja elementa i provere pripadnosti elementa skupu za ove dve reprezentacije.
# Neka je dat skup (npr. 5, 14, 44, 45, 78, 98) prikazati jednu i drugu reprezenatciju nakon operacija (npr. dodavanje 7, dodavanje 46, dodavanje 97, brisanje 78).
</div>
=== Rešenje ===
Kod sekvencijalne se alocira vektor S[1:100] i ukoliko je element ''X'' u skupu, u polje ''S''[''X''] se upisuje 1, inače 0. Kod ulančane reprezentacije je najefikasnije čuvati ulančanu listu u rastućem ili opadajućem poretku. Dodavanje/brisanje u sekvencijalnoj se radi u O(1) tako što se samo proveri ili izmeni indeks u nizu. Kod ulančane reprezentacije je potrebno proći kroz listu do lokacije na koju treba umetnuti/obrisati element (po rastućem ili opadajućem poretku).


=== Rešenje ===
Kod sekvencijalne se alocira vektor S[1:100] i ukoliko je element X u skupu, u polje S[X] se upisuje 1, inače 0. Kod ulančane reprezentacije je najefikasnije čuvati ulančanu listu u rastućem ili opadajućem poretku. Dodavanje/brisanje u sekvencijalnoj se radi u O(1) tako što se samo proveri ili izmeni indeks u nizu. Kod ulančane reprezentacije je potrebno proći kroz listu do lokacije na koju treba umetnuti/obrisati element (po rastućem ili opadajućem poretku).
[[Категорија:АСП1]]
[[Категорија:АСП1]]
[[Категорија:Рокови]]
[[Категорија:Рокови]]

Тренутна верзија на датум 13. септембар 2024. у 02:08

Ovaj članak je rekreacija avgustovskog roka koji nije objavljen.

1. zadatak

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

Postavka

Data je retka matrica koja je prikazana na slici. (Data je matrica npr. 5*6 sa 5 ili 6 random nenultih elemenata).

  1. Nacrtati izgled delova memorije u kojima se čuva ova retka matrica, ako se primenjuje Compressed Sparse Row način čuvanja.
  2. Napisati funkciju u pseudokodu koja na osnovu sačuvane Compressed Sparse Row reprezentacije matrice M i unetog broja i štampa sve nenulte elemente i-te vrste.

Rešenje

2. zadatak

Postavka

Navedite načine reprezentacije grafova i njihove prednosti i mane.

Rešenje

Potrebno je samo napisati i prokomentarisati tabelu 7.1 sa strane 161 iz udžbenika.

3. zadatak

Postavka

Zadato je binarno stablo S i date su adrese dva čvora x i y. Napisati funkciju u pseudokodu koja pronalazi najnižeg zajedničkog pretka zadata dva čvora.

Rešenje

LOWEST_COMMON_ANCESTOR(S, x, y)
return FIND(S,x,y)
FIND(S, x, y)
if S == null
   return null
end_if
if S == x || S == y
   return S
end_if
left = FIND(S.left,x,y)
right = FIND(S.right,x,y)
if leftnull && rightnull
   return S
else if leftnull
   return left
else if rightnull
   return right
else
   return null
end_if

4. zadatak

Postavka

Potpuno formalno izvesti međusobnu zavisnost interne i eksterne dužine puta u binarnom stablu i kratko obrazložiti.

Rešenje

, gde je broj čvorova u stablu izvođenje indukcijom, kao u knjizi/na predavanju.

5. zadatak

Postavka

Potrebno je realizovati aplikaciju za obradu slika. Korisniku je potrebno da za uneti set slika i unet set operacija omogućiti da se sve operacije izvrše nad svim unetim slikama. Navesti koje strukture je pogodno koristiti za čuvanje seta slika i seta operacija i objasniti zašto. Napisati funkciju u pseudokodu koja obrađuje uneti set slika unetim setom operacija, u skladu sa odabranim strukturama podataka.

Rešenje

Rešenje je krajnje trivijalno i ovde je navedeno jedno koje je bodovano maksimalnim brojem poena. Za oba se može koristiti jednostruko ulančana lista (jer nije bitan redosled kojim će se operacije izvršavati jer će se svakako sve izvršiti na svim slikama), a ulančane liste su pogodno za lako dodavanje i brisanje elemenata.

PROCESS_IMAGES(images, operations)
S = head(images)
O = head(operations)
while s ≠ NIL do
    while o ≠ NIL do
        data(S) = (operation(O))(data(S))
    end_while
end_while

6. zadatak

Postavka

Huffman-ov algoritam: Dat јe tekst sa 6 slova dužine 21 slovo. Odrediti izgled stabla dobijenog statičkim Huffman-om za ovaj tekst i uporediti prosečan broj bitova za čuvanje ovog teksta, kao i jednog slova u slučaju da se čuva podrazumevano i na osnovu ovog Huffman stabla. Frekvenciju slova zaključiti iz teksta.

Rešenje

Najobičniji statički Huffman za zadatim frekvencijama.

7. zadatak

Postavka

Dat je grad koji je modelovan usmerenim grafom, tako što su čvorovi lokacije u gradu (pekara, apoteka, biblioteka itd), a težine grana između čvorova vreme u minutima koje je potrebno da se peške dođe od izvorišne do odredišne lokacije. Dete želi da stigne od škole (čvor X) do kuće (čvor Y) najbrže moguće. Međutim, postoji opasan deo grada (čvor Z), koji nije bezbedan za decu i koji ona treba da izbegavaju. Napisati funkciju u pseudokodu koja na osnovu zadatog grafa G (nije data reprezentacija, rešenje treba da bude konceptualno), zadatih lokacija kuće i škole, Y i X, i opasnog dela grada Z, pronalazi najkraće vreme koje je detetu potrebno od škole do kuće.

Rešenje

Zadatak se rešava implementacijom Dijkstrinog algortima, tako što kada se u uzimanju čvorova redom po težinskoj udaljenosti od početnog dođe do "opasnog" čvora Z, za njega se upiše težina beskonačno i ta petlja preskoči sa continue. Na kraju se samo proveri dostižnost ciljnog čvora.

8. zadatak

Postavka

Dat je graf na slici (ima nekih 7-8 čvorova). Za dati graf uraditi topološko sortiranje i prikazati graf dobijen tako.

Rešenje

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

9. zadatak

Postavka

  1. Detaljno opisati postupak za pronalaženje jako povezanih komponenti u grafu.
  2. Za graf sa slike (nekih 7-8 čvorova) po koracima primeniti algoritam za pronalaženje jako povezanih komponenti i rezultujući graf.

Rešenje

Videti zadatak iz julskog roka 2020.

10. zadatak

Postavka

Potrebno je čuvati neki skup brojeva koji će biti u opsegu između 1 i 100.

  1. Uporediti sekvencijalnu i ulančanu reprezentaciju skupa i uporediti složenost operacija dodavanja elementa, brisanja elementa i provere pripadnosti elementa skupu za ove dve reprezentacije.
  2. Neka je dat skup (npr. 5, 14, 44, 45, 78, 98) prikazati jednu i drugu reprezenatciju nakon operacija (npr. dodavanje 7, dodavanje 46, dodavanje 97, brisanje 78).

Rešenje

Kod sekvencijalne se alocira vektor S[1:100] i ukoliko je element X u skupu, u polje S[X] se upisuje 1, inače 0. Kod ulančane reprezentacije je najefikasnije čuvati ulančanu listu u rastućem ili opadajućem poretku. Dodavanje/brisanje u sekvencijalnoj se radi u O(1) tako što se samo proveri ili izmeni indeks u nizu. Kod ulančane reprezentacije je potrebno proći kroz listu do lokacije na koju treba umetnuti/obrisati element (po rastućem ili opadajućem poretku).