Salve ragazzi sono nuovo del forum spero mi possiate aiutare. Sono un po di giorni che cerco di capire il fattore di bilanciamento ma proprio non ci riesco. Per esempio vi mostro un'albero preso da wikipedia che vi ho allegato.
Da quanto ho capito i figli inesistenti dovrebbero avere altezza -1 mentre le foglie altezza 0. Tenendo conto di ciò e facendo altezza sottoAlbero sinistro - altezza sottoAlbero destro a me il nodo con chiave 9 esce con un Fdb=−2 perchè a sinistra non ha figli quindi -1 e gli sottraggo -1 che dovrebbe essere il FdB del nodo con chiave 14
mentre il Fdb di 9 dovrebbe essere +2. Potete aiutarmi a capire i procedimenti
Grazie in anticipo
Fattore di bilanciamento AVL
-
matteo1095
- Prode Principiante
- Messaggi: 24
- Iscrizione: giovedì 4 giugno 2015, 15:53
- Sesso: Maschile
Fattore di bilanciamento AVL
- Allegati
-
- Non-AVLtree.png (6.19 KiB) Visualizzato 197 volte
- cortinico
- Scoppiettante Seguace

- Messaggi: 477
- Iscrizione: venerdì 15 maggio 2015, 16:49
- Desktop: Unity
- Distribuzione: Ubuntu 15.04 amd64
- Sesso: Maschile
- Località: Pisa
- Contatti:
Re: Fattore di bilanciamento AVL
Ciao.
Allora le questioni sono 2:
1) Secondo me la didascalia dell'immagine di wikipedia è sbagliata. I valore del fattore di bilanciamento sono tutti in segno sbagliati. Ho lasciato un messaggio per segnalare il problema nella pagina di discussione: https://it.wikipedia.org/wiki/Discussione:Albero_AVL Fra qualche giorno modifico
2) Il fattore di bilanciamento si calcola come la differenza fra l'altezza del sottoalbero sx e dx. Per esempio nel caso del nodo (9), non ha figli nel sottoalbero sx (quindi 0), ed ha un sottoalbero a destra alto 2. Quindi il risultato fa -2. Il nodo (76) ha coefficiente di bilanciamento 3.
In realtà la questione del segno importa poco in quanto a te interessa il modulo del fattore di bilanciamento; in particolare il fattore di bilanciamento di ogni nodo deve essere al più 1. Questo sta a dire che, se prendi ogni nodo, l'altezza dei suoi sottoalberi sx e dx deve differire al più di 1.
Allora le questioni sono 2:
1) Secondo me la didascalia dell'immagine di wikipedia è sbagliata. I valore del fattore di bilanciamento sono tutti in segno sbagliati. Ho lasciato un messaggio per segnalare il problema nella pagina di discussione: https://it.wikipedia.org/wiki/Discussione:Albero_AVL Fra qualche giorno modifico
2) Il fattore di bilanciamento si calcola come la differenza fra l'altezza del sottoalbero sx e dx. Per esempio nel caso del nodo (9), non ha figli nel sottoalbero sx (quindi 0), ed ha un sottoalbero a destra alto 2. Quindi il risultato fa -2. Il nodo (76) ha coefficiente di bilanciamento 3.
In realtà la questione del segno importa poco in quanto a te interessa il modulo del fattore di bilanciamento; in particolare il fattore di bilanciamento di ogni nodo deve essere al più 1. Questo sta a dire che, se prendi ogni nodo, l'altezza dei suoi sottoalberi sx e dx deve differire al più di 1.
"Look wide, and even when you think you are looking wide – look wider still!"
http://ncorti.com
http://ncorti.com
-
matteo1095
- Prode Principiante
- Messaggi: 24
- Iscrizione: giovedì 4 giugno 2015, 15:53
- Sesso: Maschile
Re: Fattore di bilanciamento AVL
Grazie cortinico per i chiarimenti, si in effetti anche io alla fine mi ero convinto di un loro errore 
- M_A_W_ 1968
- Scoppiettante Seguace

- Messaggi: 856
- Iscrizione: venerdì 15 febbraio 2013, 3:57
- Desktop: KDE
- Distribuzione: SuSE
- Sesso: Maschile
- Località: Un luogo geometrico
- Contatti:
Re: Fattore di bilanciamento AVL
Personalmente consiglio di evitare del tutto wikipedia (in special modo quella italiana) quando si tratta di argomenti del genere, meravigliosamente spiegati nei testi sacri dell'algoritmica come pure in centinaia di dispense universitarie (che normalmente si rifanno più o meno esplicitamente a tali testi), tutte pubblicamente disponibili - talora anche in lingua italiana.
Tra l'altro, trattandosi di strutture dati piuttosto ordinarie, c'è chi ha pensato bene di chiudere il cerchio: esistono apposite librerie opensource che, cogliendo appieno la magistrale lezione di Knuth sull'idea di literate programming, sono anche documentate in modo sufficientemente ampio e sostanzialmente corretto, tale quindi da consentire almeno un primo approccio teorico all'argomento da parte di studenti e practitioners, i quali poi eventualmente approfondiranno grazie alla vastissima letteratura esistente.
Tra l'altro, trattandosi di strutture dati piuttosto ordinarie, c'è chi ha pensato bene di chiudere il cerchio: esistono apposite librerie opensource che, cogliendo appieno la magistrale lezione di Knuth sull'idea di literate programming, sono anche documentate in modo sufficientemente ampio e sostanzialmente corretto, tale quindi da consentire almeno un primo approccio teorico all'argomento da parte di studenti e practitioners, i quali poi eventualmente approfondiranno grazie alla vastissima letteratura esistente.
Sì, un blog ce l'ho perfino io: gli è che mi manca il tempo...
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
"...in una società che sembra sempre più spaventata dai problemi troppo articolati e che rigetta come un corpo estraneo ogni elemento di complessità, sapremo ancora come utilizzare il parere degli esperti?"
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti