Qual è la differenza tra un albero e un grafico?

Migliore risposta

Differenza tra grafico e struttura dati ad albero:

Grafico

  1. In graph ci può essere più di un percorso, cioè il graph può avere percorsi unidirezionali o bidirezionali tra i nodi.
  2. In graph non esiste un tale concetto di root nodo.
  3. Graph può avere loop, circuiti e anche self-loop.
  4. In Graph non esiste relazione genitore-figlio.
  5. I grafici sono più complessi rispetto agli alberi in quanto possono avere cicli, loop ecc.
  6. Il grafico è attraversato da DFS : Depth First Search e in BFS : Breadth First Search.
  7. Il grafico può essere ciclico o aciclico.
  8. Esistono principalmente due tipi di grafici: grafici diretti e non orientati.
  9. App per grafici lications: Colorazione di mappe, algoritmi, colorazione di grafici, pianificazione dei lavori, ecc.
  10. In Graph, no. dei bordi dipendono dal grafico.
  11. Graph è un modello di rete.

Alberi

  1. Lalbero è una forma speciale di grafo, cioè un grafo connesso in modo minimo e con un solo percorso tra due vertici.
  2. Lalbero è un caso speciale di grafo che non ha loop, circuiti e auto-loop.
  3. Nellalbero cè esattamente una root nodo e ogni figlio hanno un solo genitore.
  4. Negli alberi esiste una relazione genitore-figlio, quindi il flusso può essere lì con la direzione dallalto verso il basso o viceversa.
  5. Gli alberi sono meno complessi dei grafici in quanto non hanno cicli, cicli automatici e sono comunque connessi.
  6. Lattraversamento dellalbero è una specie di caso speciale di attraversamento del grafico. Lalbero è attraversato in Pre-ordine , In ordine e Post-ordine (tutti e tre in DFS o in BFS algoritmo)
  7. Gli alberi rientrano nella categoria del gruppo di disponibilità del database: Grafici aciclici diretti è un tipo di grafico diretto che non ha cicli.
  8. Diversi tipi di alberi sono: Albero binario , Albero di ricerca binario, albero AVL, heap.
  9. Applicazioni albero : ordinamento e ricerca come Traversal albero e ricerca binaria.
  10. Lalbero ha sempre n-1 bordi.
  11. Albero è un modello gerarchico.

Risposta

Quindi, a prima vista, gli alberi kd potrebbero sembrare più teorici che pratici in natura. Ma in realtà non è così.

Gli alberi kd contengono una varietà di applicazioni importanti, alcune delle quali includono:

1 . Ricerca vicino più vicino

Supponiamo che tu intenda creare un Social Cop nel tuo smartphone. Social Cop aiuta le persone a denunciare i crimini alla stazione di polizia più vicina in tempo reale.

Quindi quale sembra essere un problema qui?

Sì, hai indovinato. Dobbiamo cercare la stazione di polizia più vicina al luogo del crimine prima di tentare di denunciare qualsiasi cosa.

Come potremmo farlo rapidamente ?

Sembra che gli alberi k-d possano aiutarti a trovare il vicino più vicino a un punto su una mappa bidimensionale della tua città. Tutto quello che devi fare è costruire un albero kd bidimensionale dalle posizioni di tutte le stazioni di polizia della tua città, quindi interrogare lalbero kd per trovare la stazione di polizia più vicina a un dato luogo della città.

Ok, ho capito cosa possono fare. Ma come fanno?

Se sai già come funzionano gli alberi di ricerca binari , capire come funzionano gli alberi kd non essere niente di nuovo. Gli alberi k-d aiutano a partizionare lo spazio proprio come gli alberi di ricerca binari aiutano a partizionare la linea reale . Gli alberi k-d partizionano ricorsivamente una regione di spazio, creando una partizione di spazio binaria ad ogni livello dellalbero.

Questo è laspetto di una regione di spazio tridimensionale partizionata da un albero kd tridimensionale [1]:

Un albero kd tridimensionale. La prima divisione (rossa) taglia la cellula radice (bianca) in due sottocelle, ciascuna delle quali viene poi divisa (verde) in due sottocelle. Infine, ognuna di queste quattro è divisa (blu) in due sottocelle. Poiché non cè più divisione, le ultime otto sono chiamate celle foglia.

E come viene costruito lalbero?

Per cominciare hai un insieme di punti in uno spazio k-dimensionale.Facciamo un esempio di albero kd bidimensionale:

Input: (2,3), (5,4), (9,6), (4,7), (8, 1), (7,2)

Risultato: un albero kd bidimensionale [2]:

In caso di alberi di ricerca binari, la partizione binaria della linea reale in ogni nodo interno è rappresentata da un punto sulla linea reale. Allo stesso modo, nel caso di un albero kd bidimensionale, la partizione binaria del piano cartesiano bidimensionale in ogni nodo interno è rappresentata da un linea nellaereo.

Quindi, nel caso degli alberi di ricerca binari, il punto rappresentato dal nodo interno serve come punto utilizzato per partizionare la linea reale. Come scegliere una linea di partizionamento in caso di alberi kd bidimensionali?

Essenzialmente , puoi scegliere qualsiasi linea passante per il punto rappresentato dal nodo interno per partizionare il piano cartesiano bidimensionale.

Loutput dellalbero kd sopra è stato costruito usando un metodo semplice per scegliere la linea di partizionamento in ogni nodo interno dellalbero: –

Livello 0 : – Scegli la linea di partizione perpendicolare alla prima dimensione ( X in questo caso) e passando per il punto rappresentato dal nodo in questione.

Livello 1 : – Scegli la linea di partizionamento perpendicolare alla seconda dimensione ( Y in questo caso) e passando per il punto rappresentato da il nodo in questione.

: : :

Livello k-1 : – Scegli la linea di partizionamento perpendicolare al kth dimensione e passando per il punto rappresentato dal nodo in questione. Livello k : – Scegli la linea di partizione perpendicolare alla prima dimensione ( X in questo caso) e passando per il punto rappresentato dal nodo in questione.

Quindi, in pratica, ad ogni livello alterniamo tra le dimensioni X e Y per scegliere una linea di partizionamento in ogni nodo interno dellalbero kd.

Le etichette che vedi accanto a ciascuno dei nodi dellalbero kd [2] rappresentano la scelta della dimensione per la linea di partizionamento ai nodi di quel livello.

Let ” Ora vediamo come il nostro albero kd bidimensionale partiziona il piano bidimensionale [3]:

Bene, come eseguo la ricerca?

Non dirò che lo lascerò a te, ma a te ” Dovrò farmi aiutare da altre risorse per capirlo completamente. Posso, tuttavia, dirti che questo partizionamento dello spazio da parte di un albero kd può aiutarti a trovare il vicino più vicino a un punto specifico nello spazio senza la necessità di esplorare tutte le partizioni che è ciò di cui avevamo bisogno, per fare report in in tempo reale per Social Cop.

Per comprendere lalgoritmo del vicino più vicino sugli alberi kd, ecco una buona risorsa: http://www.stanford.edu/class/cs106l/handouts/assignment-3-kdtree.pdf

Lasciate che vi guidi rapidamente attraverso alcune delle altre applicazioni di kd tree, poiché la maggior parte dello sfondo di kd trees è già stata trattata nella discussione della prima applicazione.

2. Query di database che coinvolgono una chiave di ricerca multidimensionale

Una query che richiede tutti i dipendenti nella fascia di età (40, 50) e guadagna uno stipendio compreso tra (15000, 20000) al mese può essere trasformata in un problema geometrico in cui letà è tracciata lungo lasse x e lo stipendio viene tracciato lungo lasse y [4]

[4] Lasse x indica letà di il dipendente tra anni e lasse y indica lo stipendio mensile in migliaia di rupie .

Un albero kd bidimensionale sullindice composito di (età, stipendio) potrebbe aiutarti a cercare in modo efficiente tutti i dipendenti che rientrano nella regione di spazio rettangolare definita dalla query sopra descritta.

3. Problema n-body [5]

Come possiamo simulare in modo efficiente i movimenti di un insieme di oggetti che si muovono sotto lattrazione gravazionale reciproca?

Il metodo ingenuo implicherebbe il calcolo della forza gravitazionale tra un oggetto dovuta a ogni altro oggetto per simulare il suo movimento sotto lattrazione gravitazionale. Inoltre, dovremmo farlo per ogni oggetto che impiegherebbe O (n ^ 2) tempo.

Usando gli alberi k-d, tuttavia, possiamo partizionare lo spazio e per ogni suddivisione dello spazio, calcolare il suo effetto totale sul resto dello spazio. Di seguito è riportato lo pseudo codice [6] dellalgoritmo.

Metti gli oggetti in un albero. Inizia dal livello inferiore dellalbero, per ogni regione a una profondità d nellalbero: se i figli sono foglie, calcola direttamente linterazione Calcola il ” Espansione multipolare “Converti questa espansione in unespansione locale per il nodo padre e passala. Passa al livello d-1. Quando raggiungiamo la cima dellalbero, torna indietro lungo lalbero, sommando le espansioni locali.

4. Riduzione del colore [7]

Che cosè un modo intelligente per scegliere 256 colori per rappresentare unimmagine a colori?

Il metodo ingenuo potrebbe essere quello di raccogliere i colori che vengono utilizzati più spesso.

Un metodo più efficiente, tuttavia, potrebbe rappresentare i colori in termini di RGB e costruisci un albero kd tridimensionale per dividere lo spazio contenente tutti i colori dellimmagine. La costruzione dellalbero k-d si interromperà quando il conteggio dei nodi foglia diventa uguale a 256. La media del valore RGB di ciascuna delle 256 partizioni potrebbe quindi essere utilizzata per ottenere una tavolozza di 256 colori per limmagine a colori.

Riferimenti: [1], [2], [3]: http://en.wikipedia.org/wiki/Kd-tree [4]: ​​ Classificazione utilizzando Nearest Neighbors [5], [6], [7] : kD Trees

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *