Risposte
domande sulla ricorsione, i suoi limiti e le alternative, come potrei fare per risolvere il problema di indipendenza dei sottoproblemi.
ricorrere a criteri di pruning per ridurre al minimo il numero di chiamate ricorsive
programmazione dinamica e memoritation
paradigma greedy
Per ridurre la complessità spaziale, un'alternativa è l'utilizzo della ricorsione tail-call, che consente di evitare l'accumulo di chiamate sullo stack.
Come implementare una coda a priorità quando il dato immagazzinato è troppo grande?
A partire da un grafo G e da un insieme di vertici T che formano un sottografo completo, come verificare se i vertici di T formano una clique (sottografo completo massimale )
cosa è la np completa !!!!!!!!!!
Prim e Kruskal, mst tramite calcolo combinatorio, complessità operazioni sui grafi (visite)!!!!
Colorare un grafo, Problema della colorazione di una mappa (grafo planare) come adattamento del problema di partizione di un grafo
Numero di vertici e a quale algoritmo del calcolo combinatorio è possibile associare il numero di questi vertici (grafo completamente connesso)
union find e quick find, Weighted Quick Union , Differenza con la quick union, qual è il vantaggio, Complessità!!!!!
Union-find è una struttura dati che viene utilizzata per gestire insiemi disgiunti. L'obiettivo principale è quello di unire (union) due insiemi e determinare se due elementi appartengono allo stesso insieme (find). Ci sono diversi algoritmi per implementare questa struttura dati, tra cui Quick Find, Quick Union e Weighted Quick Union.
Quick Find è un algoritmo che utilizza un array per rappresentare gli insiemi e tiene traccia di quale elemento appartiene a quale insieme. L'operazione union richiede di scorrere l'intero array per trovare tutti gli elementi dell'insieme e cambiarne il valore. L'operazione find è invece semplice, poiché richiede solo di verificare se due elementi hanno lo stesso valore nell'array.
Quick Union, invece, utilizza una struttura a albero per rappresentare gli insiemi. Ogni elemento è rappresentato da un nodo e ogni insieme è rappresentato da un albero. L'operazione union richiede di trovare le radici degli alberi degli elementi da unire e farne figli di un nuovo nodo radice. L'operazione find richiede di seguire il percorso dall'elemento fino alla radice per verificare se due elementi appartengono allo stesso insieme.
Weighted Quick Union è un'ottimizzazione di Quick Union che tiene traccia della dimensione di ogni albero e unisce sempre il sottoalbero più piccolo all'albero radice del sottoalbero più grande. Questo aiuta a mantenere un'altezza dell'albero più piccola e quindi un'operazione find più veloce.
Il vantaggio di utilizzare Weighted Quick Union invece di Quick Find o Quick Union è che l'operazione union richiede meno tempo e l'albero risultante è più bilanciato, il che significa che l'operazione find richiede meno tempo. La complessità temporale di Weighted Quick Union è O(N + M log N), dove N è il numero di elementi e M è il numero di operazioni union e find.
In generale, Weighted Quick Union è l'algoritmo union-find più efficiente e viene utilizzato in molte applicazioni in cui è necessario gestire insiemi disgiunti.
Modelli di calcolo combinatorio per il problema delle 8 regine
Componente fortemente connessa, componente connessa, cammino di Hamilton
Horner
Cammino di Hamilton, ciclo di Hamilton, come risolvere il problema del commesso viaggiatore
differenza tra Dijstrak e visita in ampiezza