Afişează mesaje
|
Pagini: [1] 2 3 4
|
2
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 227 Geometrie
|
: Iulie 04, 2010, 22:25:39
|
Te referi, probabil, la caracterul in functie de care te opresti din recursivitate, iar asta e un detaliu strict legat de implementarea algoritmului tau. Trebuie sa te uiti mai atent peste notiunile de null-terminated string si line break si vei vedea ca iti vei putea face sursa, cu cateva modificari minore de indici, sa functioneze si cu '\n'
|
|
|
3
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 034 Ciclu Eulerian
|
: Martie 08, 2009, 01:20:04
|
Eu cred ca enuntul problemei ar trebui revizuit.
Un graf se numeste eulerian daca si numai daca este conex si gradul fiecarei nod este par.
Se poate discuta mult pe marginea definitiei; fiecare autor al unei lucrari de teoria grafurilor are particularitatile sale in definitii sau notatii. In cazul de fata, imi pare irelevanta orice obiectie, existand o corespondenta biunivoca intre multimea grafurilor care admit un ciclu eulerian si multimea grafurilor conexe ale caror noduri au toate gradele pare (este una dintre teoremele lui Euler). Din considerente practice, mi se pare ca a defini grafurile euleriene ca fiind acele grafuri cu proprietatea P1, si a demonstra apoi ca ele au (necesar si suficient) proprietatea P2, este acelasi lucru cu a interschimba P1 si P2 in fraza anterioara. Din considerente teoretice, diferenta aceasta poate deveni importanta, insa, asa cum am spus, lucrarile de specialitate jongleaza prea mult cu termenii pentru a putea avea pretentia unei singure notatii corecte; in final, ramane doar o problema de terminologie.
|
|
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 034 Ciclu Eulerian
|
: Februarie 21, 2009, 00:23:33
|
fac un dfs prin tot graful si am un vector de vizitat pe muchii(nu pe noduri), In data ce nu mai pot merge nicaieri tiparesc nodul.
Algoritmul este practic acelasi: construiesc un ciclu si ma intorc pe el, intercaland toate ciclurile suplimentare. Implementarea este putin diferita (marcajele pe muchii) si merita mentionata intr-adevar ca si alternativa; ar fi ideal insa daca ai implementa si o varianta nerecursiva folosind aceeasi idee, pentru a avea o sursa de 100p, care se poate incadra in articolul de solutii.
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 028 Sortare prin comparare
|
: Ianuarie 24, 2009, 23:13:09
|
Am incercat vreo 5-6 sortari pana acuma si cum era de asteptat nu prea merg. Una ia 100 - Introsortul din STL. restul in cel mai bun caz 40.
Depinde mult de ce algoritmi ai incercat. Daca sunt neoptimi (Bubble Sort, Insertion Sort, Selection Sort etc) este normal sa nu ia punctaj maxim. Introsort, pe de alta parte, este unul dintre cei mai eficienti algoritmi de sortare cunoscuti si ar trebui sa se comporte cel mai bine. Quicksort`urile pe care le-am incercat se apropie insa tot depasesc timpul la cateva teste.
Quicksort-urile trebuie implementate atent pentru punctaj maxim. Cu toate acestea, varianta din libraria standard C (functia qsort) obtine 100 de puncte, chiar daca nu este din cate stiu eu (aici s-ar putea sa gresec) cea mai fericita varianta de quicksort. Incearca sa te uiti la prezentarile de care vorbeam in rubrica 'Solutii' si sa imbunatatesti versiunile tale de quicksort. Am o mica mare nelamurire. Algoritmul din articol (Merge Sort) da raspuns gresit pe testele "aproape sortate". De ce?
Merge Sort-ul din articol ia 100 de puncte daca e implementat atent. O sursa gasesti aici. Cum se poate rezolva problema?
Cu orice algoritm de aici care are O(n log n) pe coloana "Worst"
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: CLRS online
|
: Mai 11, 2008, 19:27:05
|
Asta e, din nou, prima versiune. Incearca aici http://gigapedia.org/items/408/introduction-to-algorithms--2nd-editionCa sa downloadezi de pe gigapedia, ai nevoie de cont. Dupa ce esti inregistrat, pentru fiecare item vei avea un tab "Links", unde apar linkuri pentru download @Stefan: Intr-adevar, nu apar diferente semnificative de continut. Cateva capitole sunt, totusi, aduse mai la zi (de exemplu, este descris Hopcroft-Karp pentru cuplaj; in CLR e doar amintit la sfarsitul unui capitol)
|
|
|
12
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Arbore de drumuri
|
: Aprilie 26, 2008, 10:19:56
|
Cu Dijkstra cum se poate face?
Poti determina cu Dijkstra asa cum a spus Cotizo: odata gasita distanta minima pana la fiecare nod, DAG-ul drumurilor minime va fi format din toate muchiile (u,v) pentru care dist[ u ] + cost(u,v) = dist[ v ]. Apoi, din cate am inteles din citatul tau, ai deja un arbore (graf) pe muchiile caruia daca mergi, ajungi in cost minim de la sursa la orice nod Din cate am inteles eu, e un fel de labirint in care sa treci dintr-o celula in alta ai cost 1, si sa spargi un zid ai cost p. Deci nu poti face o parcurgere in graful original pentru a gasi un drum minim. Intr-adevar, dupa ce ai obtinut DAG-ul drumurilor minime, faci o parcurgere si cauti drumul cu cat mai putine muchii de cost p.
|
|
|
13
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Flux cu numar minim de muchii
|
: Aprilie 25, 2008, 23:42:05
|
In cazul in care capacitatile sunt 0/1, numarul de muchii folosite e intotdeauna acelasi (o unitate de flux satureaza muchia).
Nu orice flux maxim intr-o retea de capacitati 0/1 foloseste acelasi numar de muchii (din nou, conteaza numarul de muchii saturate de pe taietura, in rest poti transporta oricum fluxul). Un exemplu ar fi reteaua V={1,2,3,4}, E={(1,2),(2,3),(3,4),(1,3)}, S=1, T=4. Fluxul maxim este 1 si poate fi trimis pe drumul P1={(1,2),(2,3),(3,4)} sau P2={(1,3),(3,4)}. Ramane de vazut (de fapt asta era problema mea initiala) daca, in cazul in care fiecare cautare a drumului de ameliorare foloseste un BFS (deci drumul cu numar minim de muchii), atunci se garanteaza minimul global de muchii la incheierea algoritmului...
|
|
|
15
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Răspuns: Flux cu numar minim de muchii
|
: Aprilie 25, 2008, 23:16:12
|
Defapt, desenul arata o contradictie. Textul de deasupra si de sub el trebuie citit.
Desenul mi se pare in concordanta cu ce scrie in articol: arata ca daca inmultesti toate capacitatile cu o valoare T si aduni 1, taietura minima din graful original nu este neaparat taietura minima in graful nou obtinut. Eu am inteles articolul la fel ca Tiberiu, ar trebui sa inmultesti fiecare muchie cu |E| (de fapt e destul sa inmultesti cu numarul maxim de muchii ce pot aparea intr-o taietura minima a grafului original) si apoi sa aduni 1, ca sa te asiguri de minimalitatea numarului de muchii din taietura. Notice what happens if we multiply each edge capacity with a constant T [...] to generalize, we take T = 10, one more than the number of edges in the original network, and one more than the number of edges that could possibly be in a minimum-cut. @Alina: Eu ma gandeam cu capacitati arbitrare, dar as fi curios si de o analiza pe cazul particular 0/1
|
|
|
17
|
infoarena - concursuri, probleme, evaluator, articole / Informatica / Flux cu numar minim de muchii
|
: Aprilie 25, 2008, 22:14:32
|
Fiind data o retea de transport, se pune problema gasirii fluxului maxim de la S la T, iar dintre toate variantele, aceea care foloseste un numar cat mai mic de muchii pentru transport. Ma gandeam de ceva timp daca algoritmul Edmonds-Karp, alegand de fiecare data drumul de ameliorare cu numarul minim de muchii, garanteaza in final o solutie corecta a problemei
|
|
|
20
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 185 SETI
|
: Aprilie 25, 2008, 10:32:48
|
Daca un sir P apare intr-un sir S, atunci P trebuie sa fie prefix al unuia sau mai multor sufixe ale lui S. Astfel, avand sirul sortat al sufixelor lui S, toate pozitiile i din acest sir care indeplinesc conditia ca sufixul ce corespunde acestei pozitii sa aiba ca prefix sirul P sunt deplasamente corecte ale lui P in S. Vei observa ca toate aceste pozitii i sunt consecutive in sirul de sufixe, si poti gasi un "upper bound" si un "lower bound" cu doua cautari binare. Fiecare cautare binara are nevoie de log|S| pasi, iar fiecare pas are nevoie de cel mult |P| comparatii. De aici O( |P|*log|S| ).
Datorita conditiei suplimentare ca niciun pattern nu va fi mai lung de 64 de caractere, poti sorta sufixele in asa fel incat prefixele lor de lungime 64 sa fie in ordinea corecta (asta reduce din timpul constructiei suffix array-ului).
|
|
|
24
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 006 Evaluarea unei expresii
|
: Aprilie 24, 2008, 19:43:35
|
Am adaugat si cateva comentarii; sper sa fie usor de inteles - mie mi s-a parut ideea super si cred ca ar merita pusa in pagina cu problema (Sima, editeaza linkul din postul anterior, are de doua ori "http") Referitor la arbori de expresii, eu ii foloseam cand apareau multe schimbari de variabile in expresii, cand trebuia sa transform in forma pre/postfixata expresia (cu arborele construit, asta devine o simpla parcurgere). Se mai pot face dinamici pe arborii de expresie (cate atribuiri valide a variabilelor exista pentru ca o anumita expresie logica sa fie tot timpul adevarata etc). Sigur ca toate problemele astea se pot rezolva si cu evaluari de genul recursivitate indirecta, insa algoritmii mi se par mult mai intuitivi pe arborii de expresie. Poate e doar o chestiune subiectiva... Oricum, am comentat si sursa cu arborii - poate va fi utila cuiva
|
|
|
|