Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Chi è Jen-Hsun 'Jensen' Huang, una vita a fare Nvidia
Chi è Jen-Hsun 'Jensen' Huang, una vita a fare Nvidia
Scopriamo chi è Jen-Hsun 'Jensen' Huang, il CEO di Nvidia, in un racconto non solo della sua vita ma anche legato ai quasi 30 anni di attività ai vertici di un'azienda che ha costruito il mercato dei videogiochi come lo conosciamo per concretizzare una visione che nei primi anni '90 pochi riuscivano a capire.
Google Fuchsia usa un microkernel. Qual è la differenza e perché è rilevante
Google Fuchsia usa un microkernel. Qual è la differenza e perché è rilevante
Google Fuchsia è un nuovo sistema operativo in sviluppo con una particolarità: utilizza Zircon, un microkernel. L'approccio progettuale è piuttosto differente rispetto ai sistemi operativi più diffusi, che usano perlopiù modelli ibridi. Vediamo come un approccio a microkernel potrebbe garantire a Google maggiore controllo sulle sue piattaforme come Android e Chrome OS
Lenovo ThinkVision T34w, ultrawide 34 pollici per la produttività
Lenovo ThinkVision T34w, ultrawide 34 pollici per la produttività
I monitor con formato ultrawide non sono solamente un capriccio per videogiocatori: in ambito professionale e lavorativo permettono di incrementare produttività ed efficienza. Lenovo ThinkVision T34w offre un formato 21:9 e un pannello curvo R1500
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-05-2021, 18:28   #1
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Da struttura albero binario di ricerca a matrice/tabella. Come

Qualcuno sa spiegarmi come un albero binario di ricerca puo essere stampato in forma di tabella quindi a matrice a array multidimensionale.
Premetto che secondo me sono concetti diversi. Ma nei database esiste una rappresentazione tabellare dei dati e una in albero binario di ricerca.

Non trovo e capisco la corrispondenza tra i due.

Ultima modifica di zabnicola : 12-05-2021 alle 16:51.
zabnicola è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 10:39   #2
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Ho un array di 15 elements che lo suddivido in 3 righe * 5 colonne inizializzato cosi:
array[0] = 0
array[1] = 1
array[2] = 2
.
.
.
array[13] = 13
array[14] = 14

aggiungo tutti gli elementi nel BST, albero binario di ricerca. Come si stampa un BST affinchè mi stampi le celle in ordine se queste sono inserite nell'albero in modo sparso?
quale visita dovrei usare: in ordine, pre ordine o post ordine?
zabnicola è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 11:23   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2660
Se visualizzi mentalmente (o su carta) un albero binario di ricerca, ogni nodo contiene nel ramo sinistro tutti i valori minori del nodo corrente e nel ramo destro tutti quelli maggiori.

Se devi stampare i valori in ordine quindi devi stampare prima il ramo sinistro, poi il nodo stesso e infine il ramo destro.

La domanda del tuo primo post non mi è chiara, provo a rispondere sulla questione dei database. Cerco di farla semplice per rendere tutto più comprensibile, in realtà ci sarebbero molti dettagli in più da considerare ma la sostanza di fondo non cambia.

Nei database i dati sono salvati in forma tabellare, record dopo record.
Senza meccanismi aggiuntivi, per cercare un record dovresti scorrerli tutti uno a uno e verificare se il record che stai controllando ti interessa o meno.
Per rendere più efficienti le operazioni di ricerca si possono costruire degli indici che sono appunto alberi di ricerca in cui ogni nodo contiene il valore indicizzato e un riferimento al record.
Ad esempio se tu hai una tabella anagrafica di persone con all'interno nome, cognome, indirizzo, eccetera, potresti creare un indice sul campo cognome. Allora il tuo albero di ricerca conterrà un nodo per ogni cognome e all'interno dello stesso nodo ci sarà il riferimento al record corrispondente. Quando esegui una ricerca per cognome, invece di scorrerti tutti i record uno a uno, esegui una ricerca sull'albero e quando trovi una corrispondenza hai subito il riferimento al record completo.
wingman87 è online   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 12:41   #4
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Se visualizzi mentalmente (o su carta) un albero binario di ricerca, ogni nodo contiene nel ramo sinistro tutti i valori minori del nodo corrente e nel ramo destro tutti quelli maggiori.

Se devi stampare i valori in ordine quindi devi stampare prima il ramo sinistro, poi il nodo stesso e infine il ramo destro.

La domanda del tuo primo post non mi è chiara, provo a rispondere sulla questione dei database. Cerco di farla semplice per rendere tutto più comprensibile, in realtà ci sarebbero molti dettagli in più da considerare ma la sostanza di fondo non cambia.

Nei database i dati sono salvati in forma tabellare, record dopo record.
Senza meccanismi aggiuntivi, per cercare un record dovresti scorrerli tutti uno a uno e verificare se il record che stai controllando ti interessa o meno.
Per rendere più efficienti le operazioni di ricerca si possono costruire degli indici che sono appunto alberi di ricerca in cui ogni nodo contiene il valore indicizzato e un riferimento al record.
Ad esempio se tu hai una tabella anagrafica di persone con all'interno nome, cognome, indirizzo, eccetera, potresti creare un indice sul campo cognome. Allora il tuo albero di ricerca conterrà un nodo per ogni cognome e all'interno dello stesso nodo ci sarà il riferimento al record corrispondente. Quando esegui una ricerca per cognome, invece di scorrerti tutti i record uno a uno, esegui una ricerca sull'albero e quando trovi una corrispondenza hai subito il riferimento al record completo.
grazie per la risposta. In parte mi hai risposto. Quindi utilizzeresti il BST solo per creare degli indici sui campi della tabella anagrafica. Ma serve anche a qualcuno altro questo discorso? comunque.

Ho di recente creato in C una tabella che si puo ridimensionare a piacere in righe e colonne di diversi tipi: char*, int, float.
Se volessi proseguire con l'esperimento del database scritto in C devo fare delle JOIN Prendiamo come esempio persona e libro: persona[3][5]; libro[6][5];

N libri sono di una persona.
Faccio un operazione di JOIN tra persona e libri cercando due titoli di libri per vedere chi li ha.
Quindi se seleziono i nomi "linguaggio c fondamenti" e "il piccolo principe" mi restituisce
rispettivamente gli utenti zabit e bigendian.

1 | zabit | linguaggio c fondamenti
2 | bigendian | il piccolo principe

Come si realizza il prodotto cartesiano tra persona e libro utilizzando la matrice?

come vedi queste operazioni se rappresento tutto con le matrici cioè vettori non risultano semplici o comode. Ce un altro modo?
zabnicola è offline   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 15:24   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2660
Secondo me non è semplice e comodo perché è intrinsecamente un'operazione abbastanza complessa e inoltre farlo in C lo è ancora di più perché il linguaggio non ha molti costrutti per semplificare il codice.

Potresti definire il risultato del join di 2 tabelle A e B con una matrice di 2 colonne: la prima colonna contiene il puntatore al record della tabella A e la seconda colonna contiene il puntatore al record di B.
Poi quando vuoi selezionare particolari colonne delle due tabelle lo fai tramite i puntatori.

Ma tu stai usando gli array per le colonne perché vuoi che la struttura sia dinamica? Perché se la struttura è ben definita puoi usare delle struct che sono molto più comode e leggibili.
wingman87 è online   Rispondi citando il messaggio o parte di esso
Old 13-05-2021, 16:46   #6
zabnicola
Junior Member
 
Iscritto dal: Nov 2020
Messaggi: 24
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Ma tu stai usando gli array per le colonne perché vuoi che la struttura sia dinamica? Perché se la struttura è ben definita puoi usare delle struct che sono molto più comode e leggibili.
Per la struttura della tabella dinamica non è un problema.
Ho implementato il codice per avere una tabella in C che puo essere ridimensionata a piacere. Alla fine si accede come "se fosse statica" ossia table[2][4].

Cosi ho una tabella A accessibile con tableA[2][4] e un'altra tabella B accessibile anch'essa con tableB[0][1]. tabella A ha 3 righe e 5 colonne, la tabella B ha 6 righe e 7 colonne. Mettere in Join senza alcuna selezione significa fare prima riga per tutte le righe dell'altra tabella, seconda riga per tutte le righe dell'altra tabella e mostrare le colonne della tabella sia di A,B. Quindi dovrei creare una terza tabella che ha 18 righe e 12 colonne, copiando tutte le colonne della prima riga di A con la prima riga di B, della prima riga di A con la seconda di B, con la prima riga di A con la terza di B fino alla sesta di B.
zabnicola è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Chi è Jen-Hsun 'Jensen' Huang, una vita a fare Nvidia Chi è Jen-Hsun 'Jensen' Huang, una vita a...
Google Fuchsia usa un microkernel. Qual è la differenza e perché è rilevante Google Fuchsia usa un microkernel. Qual è...
Lenovo ThinkVision T34w, ultrawide 34 pollici per la produttività Lenovo ThinkVision T34w, ultrawide 34 pollici pe...
realme GT: prestazioni ed esperienza da top di gamma a 399 euro! La recensione realme GT: prestazioni ed esperienza da top di g...
OPPO Find X3 Pro: la prova su ''strada'' con Lamborghini OPPO Find X3 Pro: la prova su ''strada'' con Lam...
Detriti spaziali: dai razzi e booster ci...
Honeywell Quantum Systems e Cambrige Qua...
Leica Leitz Phone 1: un nuovo smartphone...
Un notebook con AMD Ryzen 5 4600H a soli...
Nikon ZFC: una fotocamera mirrorless APS...
DS 4 abbina tecnologia ed eleganza ad un...
La Cina sta pianificando le missioni con...
Xbox Design Lab: ora potete personalizza...
Vigilante è il malware innocuo ma...
Baidu: presto i robotaxi di Livello 4 ar...
Euro Strike 2020, smantellata rete IPTV ...
Cina, in cinque mesi prodotti 140 miliar...
OnePlus e OPPO, maggiore sinergia softwa...
Senua's Saga: Hellblade 2 non è a...
Amazon, non solo RAVPower: anche TaoTron...
K-Lite Codec Pack Update
K-Lite Mega Codec Pack
K-Lite Codec Pack Full
K-Lite Codec Pack Standard
K-Lite Codec Pack Basic
Firefox Portable
CCleaner Portable
CCleaner Standard
Opera 77
SmartFTP
PCMark 10 Basic Edition
AVG Antivirus Free
Avast! Free Antivirus
Firefox 89
Process Lasso
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 21:41.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Served by www1v