Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Intrebari srl nou

Amenintat cu moartea de un numar ...

La multi ani @AndReW99!

Alegere masina £15000 uk
 TVR vrea sa lanseze o platforma d...

Strategie investie pe termen lung...

Modulator FM ptr auto alimentat p...

orange cablu f.o. - internet fara...
 Robinet care comuta traseul

A fost lansata Fedora 40

Samsung S24 plus

Imi iau un Dell? (Vostro vs others)
 Abonati Qobuz?

transport -tren

Platforma electronica de eviden&#...

Cot cu talpa montat stramb in per...
 

Subarbori multipli – metode mai eficiente de stocare?

- - - - -
  • Please log in to reply
13 replies to this topic

#1
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
Fie un arbore binar (balansat) ce contine multe (sute de mii de) elemente in memorie (pointeri la structuri mai complexe), sortate dupa un anumit criteriu.

O parte din acele elemente am nevoie sa le pot cauta (si itera in ordine crescatoare prin ele) in seturi mai mici. As putea crea un nou arbore, independent de primul, care sa contina, de exemplu, doar 50 din elementele primului, sortate in aceeasi ordine. Operatii de modificare a arborilor pot avea loc, acestia nefiind constanti pe termen lung.

Exista vreo metoda mai rapida/putin consumatoare de memorie decat sa pastrez arborele mare + n arbori mici independenti (fiecare cu doar un subset din elementele celui mare, nici un element in plus)?

Edited by dani.user, 07 June 2017 - 21:53.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Foarte abstracta descrierea problemei, nu am inteles cu exactitate ce cauti.

Dar problema suna de ca si cum ai face lucruri ca o baza de date. Deci RB-Tree sau similar?

O nota aditionala, acum cateva zile citeam un articol paper despre cum skiplists pot fi folosite ca alternativa la RB-Tree in baze de date, fiind mai usor paralelizabile (lock-free, cu niste SIMD), dar si consumand mai mult RAM.

Edited by OriginalCopy, 07 June 2017 - 22:21.


#3
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
Nu cred ca ai dat suficiente amanunte,dar daca in arborele mare sunt deja ordonate cum vrei tu, poti sa tii doar n multiple puncte de intrare in arborele mare fara sa mai creezi cei n arbori independenti.

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
Un exemplu mai concret: Intr-un RB-Tree am (pointeri spre) toate articolele, ordonate dupa nume. So far, so good.

Dar, vreau sa pot itera usor si doar prin articolele scrise de un anumit user. In prezent, entitatiile userilor contin cate un alt RB-Tree avand doar un subset din articolele initiale (doar cele scrise de userul in cauza), ordonate la fel.

Intrebarea: As putea retine mai eficient subsetul de articole al fiecarui user, fara sa scada (seminificativ) performanta la editare/cautare/iterare in ordine? Nu ma limiteaza solutia curenta, doar incerc sa ma gandesc la solutii alternative

Edited by dani.user, 08 June 2017 - 06:55.


#5
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
Arborii in general sunt un bun compromis la editare/cautare/iterare, deci as zice ca solutia aleasa e greu de imbunatatit fara sa speculezi ceva specific in setul tau de date.

#6
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
Inca o intrebare totusi, ce face programul respectiv ?

#7
RedDev

RedDev

    Active Member

  • Grup: Members
  • Posts: 1,935
  • Înscris: 29.10.2014
Întotdeauna vei avea de ales între a consuma mai multă memorie și a avea datele la îndemână, sau a consuma mai puțină memorie și a trebui să parcurgi un set mai mare de date.

Nu am mai lucrat de ceva vreme cu arbori, dar un arbore binar balansat era in O(log(n)) ca timp de căutare, ceea ce e mai puțin decât un O(n) pentru o parcurgere clasică.

Ah, căutare după alte criterii decât cel după care a fost sortat arborele. Well, înafară de a construi un nou arbore după criteriul dat, no idea. De obicei responsabilitatea aranjării datelor e delegată bazei de date.

Edited by RedDev, 08 June 2017 - 10:09.


#8
andreim77

andreim77

    Senior Member

  • Grup: Senior Members
  • Posts: 4,235
  • Înscris: 11.04.2006

View Postdani.user, on 08 iunie 2017 - 06:54, said:

Un exemplu mai concret: Intr-un RB-Tree am (pointeri spre) toate articolele, ordonate dupa nume. So far, so good.

Dar, vreau sa pot itera usor si doar prin articolele scrise de un anumit user. In prezent, entitatiile userilor contin cate un alt RB-Tree avand doar un subset din articolele initiale (doar cele scrise de userul in cauza), ordonate la fel.

Intrebarea: As putea retine mai eficient subsetul de articole al fiecarui user, fara sa scada (seminificativ) performanta la editare/cautare/iterare in ordine? Nu ma limiteaza solutia curenta, doar incerc sa ma gandesc la solutii alternative

daca am inteles bine: prin subsetul de articole inseamna ca ai copiat articolele in alt mini-arbore sa le poti accesa repede? daca da, ai toate articolele de doua ori stocate. Alternativa ar fi sa pastrezi pointerii catre articole in mini arbori, dar enuntul e putin cam sumar, poate nu pricepem complet.
la hash-maps te-ai gandit? cu o distribuire eficienta accesul amortizat parca e o(1).

#9
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
https://www.google.a...esktop.amp.html

Eu aș merge deci pe mai mult paralelism.

#10
andreim77

andreim77

    Senior Member

  • Grup: Senior Members
  • Posts: 4,235
  • Înscris: 11.04.2006
toti am merge, dar asta e un subiect interminabil. nu am vazut inca O singura aplicatie/sistem stabil dpdv multithreading.

#11
lightpoint

lightpoint

    Member

  • Grup: Members
  • Posts: 785
  • Înscris: 16.02.2017

View Postandreim77, on 09 iunie 2017 - 09:49, said:

nu am vazut inca O singura aplicatie/sistem stabil dpdv multithreading.
OS X Mountain Lion, distributiile de linux , Windows NT 6.x , Windows NT 6.x Server

#12
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
Hashmap nu ma ajuta. E mai rapida la cautari, dar cand caut ceva, vreau adesea sa iau si urmatoarele n elemente (in ordinea sortarii).

Aplicatia din semnatura e stabila/gandita pentru multithreading. Partea de retelistica/http e paralelizata "cat se poate", iar partea de date e protejata de un multi-reader/single-writer lock. Cat timp doar se citesc date, cate core-uri atatea cereri procesate in paralel.

#13
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Multi reader single writer funcționează perfect pentru aplicații unde write nu e atât de intensiv, adică majoritatea aplicațiilor.

Iar dacă vrei la un moment dat să îl faci distribuit, trebuie să coordonezi doar writers.

Cât despre problemă, definește-o mai bine, altfel alergi după fata morgana.

#14
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,235
  • Înscris: 24.02.2007
To be continued

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate