|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
|
Costo algoritmo di attraversamento particolare
Un algoritmo di attraversamento in qualunque ordine di un albero quaternario definito come segue, come lo calcolo?
Codice:
typedef struct qtnode {
int cx;
int cy;
int tag;
struct qtnode *nord;
struct qtnode *sud;
struct qtnode *ovest;
struct qtnode *est;
}qtnode;
typedef struct qtnode* tree;
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Quote:
I casi medio e migliore dipendono da quanti figli ha in media ogni nodo e quanto l'abero è sparso... |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
|
E se si tratta di fare una ricerca? l'albero è ordinato su due chiavi
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Allora dipende da come è strutturato e da dove è ciò che cerchi, ma se prima di trovare ciò che ti serve devi visitare tutto l'albero allora O(4^l), anche se non avrebbe senso perchè di solito si usano B-tree e derivati.
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2788
|
Quando poi scrivi la complessità ricordati di specificare che in O(4^n) n è il numero di livelli. Perché nel corso di algoritmi che ho seguito abbiamo sempre specificato le complessità in base al numero di elementi, quindi anche in questo caso la complessità sarebbe stata O(n)
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Vero... la complessità come l'ho scritta io è in funzione del numero di livelli, l'ho calcolata così perchè poi viene facile anche calcolare la serie geometrica accollata che è funzione del numero di livelli... (ovviamente la serie converge e nel calcolo della complessità peggiore "vince" il 4^l)
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
|
Ho capito, però mi sorge un dubbio riguardo a "Allora dipende da come è strutturato e da dove è ciò che cerchi, ma se prima di trovare ciò che ti serve devi visitare tutto l'albero allora O(4^l), anche se non avrebbe senso perchè di solito si usano B-tree e derivati."
Probabilmente non mi sono spiegato, ma questo è un derivato da un bst. Si comporta esattamente come un albero di ricerca binario, ha 4 figli perché le chiavi di ordinamento sono 2.
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Allora sarà O(logn) dove n è il numero di nodi e il log è in base 4... i b-tree esistono proprio perchè l'accesso avviene con complessità log...
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
|
Vediamo se ho capito giusto:
Una ricerca mi costa O(log4 di n) con n numero di elementi, ma in caso migliore, peggiore o medio? e un attraversamento completo x una stampa x esempio, O(4^n). Giusto?
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Quote:
La ricerca costa log base 4 di n dove n è il numero di elementi in ogni caso perchè il caso migliore, peggiore o medio dipende dal numero di elementi che hai nell'albero. Puoi fare distinzione tra caso migliore, peggiore o medio se non consideri il numero di elementi ma il numero di livelli che descrivono quanto l'albero è più o meno sparso. |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:07.




















