infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Nicolae Titus din Mai 27, 2009, 00:39:07



Titlul: k-lea minim
Scris de: Nicolae Titus din Mai 27, 2009, 00:39:07
Salut,
exista o structura asemanatoare unui heap dar in care sa se poata sterge/modifica al k-lea minim?
multumesc!


Titlul: Răspuns: k-lea minim
Scris de: Stefan Istrate din Mai 27, 2009, 08:13:19
Iti trebuie sa afli rapid doar al k-lea minim sau faci mai multe query-uri de forma asta?


Titlul: Răspuns: k-lea minim
Scris de: Mircea Dima din Mai 27, 2009, 11:13:04
Poti folosi un arbore binar de cautare echilibrat (avl, treap, splay tree). In fiecare nod mentii

o variabila ce iti spune cate noduri sunt in subarbore. Folosind aceasta informatie poti raspunde in O(logn)

la un query pt al k-lea minim. Daca vrei neaparat heap cred ca merge pe Fibonnaci Heaps...


Titlul: Răspuns: k-lea minim
Scris de: Andrei Grigorean din Mai 27, 2009, 11:25:29
K este constant?

Daca da, nu ai nevoie de un BST, poti sa iti mentii un max heap de marime K pentru cele mai mici elemente si un min heap pentru elementele mai mari decat a K-a valoare.


Titlul: Răspuns: k-lea minim
Scris de: Paul-Dan Baltescu din Mai 27, 2009, 11:32:13
Poti tine un trie cu numerele reprezentate pe biti. Ce nu suporta aceasta structura sunt intrebari: care este al K-lea minim pe un interval (x,y), dar pentru tot sirul merge.


Titlul: Răspuns: k-lea minim
Scris de: Nicolae Titus din Mai 27, 2009, 15:52:12
Cautam o solutie pentru mai multe query-uri unde k e variabil. Interesanta ideea cu 2 heapuri pentru k constant.
Trie-ul desi cred ca merge mai incet in O(log(nr de biti)) pare mai usor de implementat.
Pe arborele binar de cautare echilibrat se pot face query-uri pe intervale?
Multumesc!


Titlul: Răspuns: k-lea minim
Scris de: Marius Stroe din Mai 27, 2009, 18:01:34
Cautam o solutie pentru mai multe query-uri unde k e variabil.

Dacă K e variabil atunci poţi face cu Treapuri (http://www.infoarena.ro/treapuri). :)

Pe arborele binar de cautare echilibrat se pot face query-uri pe intervale?

Se poate face, dar nu sunt sigur de complexitate. Însă, prin analogie cu arborii de intervale, intuitiv, se păstrează O(log(N)) pe query.


Titlul: Răspuns: k-lea minim
Scris de: Andrei Grigorean din Mai 27, 2009, 18:27:55
Trieurile ocupa foarte multa memorie, si merg in 32 * O(N), ceea ce de multe ori e mai prost decat O(N log N). Pe de alta parte, sunt mai usor de imlementat :).