Você está na página 1de 5

Analiza Algoritmilor

Tema 2
Tudor Berariu
tudor.berariu@gmail.com
Facultatea de Automatica s, i Calculatoare
5 decembrie 2014
In cadrul acestei teme trebuie sa rezolvat, i patru probleme ce sunt descrise
n sect, iunile 1, 2, 3, 4. Fiecare problema valoreaza 0.25 puncte. In Sect, iunea 5
gasit, i cateva indicat, ii legate de trimiterea temei.

[0.25p] Problema 1: Spionul

Descriere
Din acest moment nu mai es, ti un simplu student, ci un agent acoperit. Te
afli la o petrecere n Regie. Acolo sunt N persoane printre care se afla s, i
un spion. Acesta a fost trimis pentru a culege informat, ii. Nu s, tii cum arata
1

acesta, nsa s, tii ca nimeni de la petrecere nu l cunoas, te. Fiecare invitat are
un ecuson cu un numar de la 0 la N 1. Pot, i ntreba o persoana daca l
cunoas, te pe invitatul cu numarul x. Trebuie sa afli cat mai repede cine este
spionul.
Cerint, e
Se considera ca exista o funct, ie knows(i, j) care ntoarce n timp constant
true daca persoana i o cunoas, te pe persoana j s, i false altfel. Scriet, i un
algoritm determinist cat mai eficient care, primind numarul N s, i putand sa
apeleze de oricate ori funct, ia knows(i, j), ntoarce numarul corespunzator
spionului.
Scriet, i pseudocodul algoritmului ales, explicat, i n cateva cuvinte de ce
considerat, i ca este corect s, i precizat, i complexitatea acestuia. Nu se cere o
demonstrat, ie formala a corectitudinii algoritmului, ci o justificare intuitiva.

[0.25p] Problema 2: Subs, ir de sum


a zero

Descriere
Se da un s, ir de N numere ntregi. Gasit, i, daca exista, subs, irurile (secvent, e
continue) s, irului dat care au suma zero.
Cerint, e
Gasit, i un algoritm determinist care rezolva problema. Scriet, i pseudocodul
algoritmului ales pentru rezolvarea problemei s, i explicat, i de ce considerat, i
ca este corect (nu se cere demonstrat, ie formala). Precizat, i s, i complexitatea
acestuia.
Implementat, i n C un program care sa implementeze algoritmul propus.
Programul va primi un singur argument, numele unui fis, ier cu doua linii (pe
prima linie se gases, te numarul N , iar pe cea de-a doua, separate de spat, ii,
cele N numere), s, i va scrie la ies, ire (stdout) valorile indicilor ntre care se
gasesc subs, irurile de suma zero. Aceste perechi de indici vor fi scrise una pe
linie, n orice ordine.

Exemplu
Considerand un fis, ier de intrare numit date.in ce cont, ine urmatoarele informat, ii:
10
1 -2 4 5 -7 -4 8 3 -7
rezultatul as, teptat este:
$
1
1
4
5

./p2 date.in
4
8
7
8

[0.25p] Problema 3: Puzzle aritmetic

Descriere
Se considera urmatoarea problema:
Se da un s, ir ce cont, ine N +1 numere ntregi nenule. Exista vreo posiblitate
de a as, eza cate un operator +, - sau * ntre fiecare doua numere consecutive
din s, ir astfel ncat expresia rezultata sa se evalueze la zero?
Cerint, e
Scriet, i pseudocodul unui algoritm determinist care rezolva problema data
s, i afis, eaza 1 daca raspunsul este da s, i 0 daca raspunsul este nu. Precizat, i
complexitatea algoritmului.
Scriet, i n C un program care sa implementeze algoritmul determinist propus, dar care sa s, i afis, eze o astfel de secvent, a de operatori daca aceasta
exista. Programul va primi numele unui fis, ier cu datele de intrare s, i va scrie
la ecran 0 sau 1. Daca exista solut, ie, nainte de a se afis, a 1 se va scrie o
linie ce cont, ine cei N operatori. Nu conteaza care dintre solut, ii este afis, ata
daca exista mai multe. Daca nu exista nicio solut, ie, programul va afis, a doar
rezultatul 0.

Exemplu
Considerand un fis, ier de intrare numit date.in ce cont, ine urmatoarele informat, ii:
10
10 2 -1 2 -1 2 -1 2 -1 1 -2
un rezultat corect este:
$ ./p3 date1.in
+ * + * + * + * + *
1
Pentru datele:
4
7 3 5 11
rezultatul as, teptat este:
$ ./p3 date2.in
0

[0.25p] Problema 4: Tot problema 3

Cerint, e
Pentru aceeas, i problema descrisa n Sect, iunea 3 propunet, i un algoritm nedeterminist cat mai eficient. Precizat, i complexitatea acestuia.

Trimiterea temei

Complexitatea algoritmilor
Algoritmii care vor avea o complexitate prea mare vor fi depunctat, i. Cu cat
este mai put, in eficient algoritmul dat ca solut, ie la una din probleme cu atat
va fi s, i depunctarea mai mare.

Arhiva cu tema
Tema va fi trimisa sub forma unei arhive Nume Prenume Grupa.zip ce cont, ine
un singur director cu acelas, i nume (evident, fara extensia .zip). Acest director va cont, ine patru subdirectoare: p1, p2, p3 s, i p4 (cate unul pentru fiecare
problema). Fiecare dintre acestea va cont, ine fis, ierul pX.pdf s, i, pentru a doua
s, i a treia problema, fis, ierele pX.c s, i Makefile.
Fis, ierul Makefile va cont, ine ret, eta pentru compilarea fis, ierului pX.c. In
urma compilarii se va produce executabilul pX.
Verificat, i ca urmatoarea secvent, a de comenzi funct, ioneaza pentru arhiva
trimisa.
$
$
$
$
$

unzip Craciun_Mos_323CC.zip
cd Craciun_Mos_323CC
cd p3
make
./p3 <fisier_intrare>

Você também pode gostar