Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmi e Strutture DatI: Java e Data Structures, Panieri di Matematica Generale

Domande e risposte relative a vari argomenti di base di Algoritmi e Strutture DatI, con particolare riferimento al linguaggio Java. Si tratta di concetti come BubbleSort, Java, interfacce, incapsulamento, tipi di dato astratti, alberi binari, programma, algoritmo, Java classes, private access, LIFO e FIFO, 8 regine, grafo, albero di copertura di costo minimo, ricerca in un albero binario, MergeSort, QuickSort, algoritmi di ordinamento, algoritmi di programmazione dinamica, radice e altezza di un albero, visita di un albero per livelli, algoritmi di Kruskal e Prim, complessità computazionale, algoritmi di ordinamento basati su confronti, divide et impera, albero, algoritmi golosi, connesso, matrice di adiacenza, albero di copertura di costo minimo, algoritmi stabili, albero binario di ricerca e hash table.

Tipologia: Panieri

2020/2021

Caricato il 29/06/2021

SergioGnomoCampi
SergioGnomoCampi 🇮🇹

4.7

(9)

8 documenti

1 / 9

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
-A cosa serve l’analisi algoritmica?
Per caratterizzare un algoritmo in termini di ben specifici indici di performance
-BubbleSort nel caso peggiore ha complessi
𝑂(𝑛2)
-Che differenza c’è tra un linguaggio di programmazione interpretato e uno compilato?
Un linguaggio compilato viene prima tradotto in linguaggio macchina
-Cosa si intende per linguaggio intermedio?
Un processo in cui il codice sorgente è trasformato in un linguaggio molto vicino al linguaggio macchina,
in modo da poter essere eseguito da una macchina virtuale
-Cosa è la Java Virtual Machine
Nessuna di queste risposte
-Che tipo di linguaggio è Java?
E’ un linguaggio semi-compilato (o anche semi interpretato)
- Cosa è un oggetto?
Un oggetto è la realizzazione (istanza) di una classe
- Cosa è una classe?
Una classe è la descrizione astratta di un tipo di dato.
- Che differenza c’è tra una classe ed un oggetto?
Una classe è la descrizione astratta di un tipo di dato; un oggetto è la realizzazione (istanza) di una
classe.
-Come si importano i package in Java?
Utilizzando la direttiva import.
- Cosa è un package in Java?
Un package è uno strumento per raggruppare tipi in qualche modo legati tra di loro. Si tenga presente
che i package raggruppano classi ma le classi si possono pensare come definizione di tipi con proprietà
e metodi.
- Cosa si intende per incapsulamento dei dati?
Si definisce incapsulamento la tecnica di nascondere il funzionamento interno (deciso in fase di progetto)
di una parte di programma, in modo di proteggere le altre parti del programma dai cambiamenti che si
produrrebbero in esse nel caso che questo funzionamento fosse difettoso, oppure si decidesse di
implementarlo in modo diverso.
-Cosa si intende per ereditarietà?
E’ un meccanismo che permette la definizione di classi (dette classi derivate) a partire da altre classi già
definite (dette classi base)
pf3
pf4
pf5
pf8
pf9

Anteprima parziale del testo

Scarica Algoritmi e Strutture DatI: Java e Data Structures e più Panieri in PDF di Matematica Generale solo su Docsity!

  • A cosa serve l’analisi algoritmica? Per caratterizzare un algoritmo in termini di ben specifici indici di performance

-BubbleSort nel caso peggiore ha complessità 𝑂(𝑛2)

  • Che differenza c’è tra un linguaggio di programmazione interpretato e uno compilato? Un linguaggio compilato viene prima tradotto in linguaggio macchina

-Cosa si intende per linguaggio intermedio? Un processo in cui il codice sorgente è trasformato in un linguaggio molto vicino al linguaggio macchina, in modo da poter essere eseguito da una macchina virtuale

-Cosa è la Java Virtual Machine Nessuna di queste risposte

-Che tipo di linguaggio è Java? E’ un linguaggio semi-compilato (o anche semi interpretato)

  • Cosa è un oggetto? Un oggetto è la realizzazione (istanza) di una classe
  • Cosa è una classe?

Una classe è la descrizione astratta di un tipo di dato.

  • Che differenza c’è tra una classe ed un oggetto? Una classe è la descrizione astratta di un tipo di dato; un oggetto è la realizzazione (istanza) di una classe.

-Come si importano i package in Java? Utilizzando la direttiva import.

  • Cosa è un package in Java? Un package è uno strumento per raggruppare tipi in qualche modo legati tra di loro. Si tenga presente che i package raggruppano classi ma le classi si possono pensare come definizione di tipi con proprietà e metodi.
  • Cosa si intende per incapsulamento dei dati? Si definisce incapsulamento la tecnica di nascondere il funzionamento interno (deciso in fase di progetto) di una parte di programma, in modo di proteggere le altre parti del programma dai cambiamenti che si produrrebbero in esse nel caso che questo funzionamento fosse difettoso, oppure si decidesse di implementarlo in modo diverso.

-Cosa si intende per ereditarietà? E’ un meccanismo che permette la definizione di classi (dette classi derivate) a partire da altre classi già definite (dette classi base)

-Cosa si intende per polimorfismo? E’ un meccanismo che permette ad uno stesso oggetto di esibire comportamenti (e quindi funzionalità) di volta in volta differenti a run-time

-Cosa sono le interfacce in Java (costrutto interface)? Le interfacce definiscono un tipo

-Cosa si intende per metodi generici in Java?

Metodi in cui il tipo dell’argomento di ritorno non è univoco.

-Condizione necessaria per avere un grafo G=(V,E) connesso è Nessuna di queste risposte

-Con riferimento al linguaggio di programmazione Java, quale delle seguenti affermazioni è corretta? il tipo di dato astratto è indipendente dalla specifica implementazione

  • Cosa si intende per tipo di dato astratto? Un tipo di dato astratto è un modello di struttura dati che specifica le caratteristiche che gli oggetti di quel tipo avranno, più le operazioni che possono essere eseguite su tali tipi
  • Come si accede all’elemento i-esimo di un array vec in Java? a = vec [i]
  • Come si crea un nuovo array di 5 elementi in Java? vec = new int[5];
  • Cosa è un array? Un contenitore di elementi omogenei

-Cosa è una lista concatenata semplice (o collegata o semplicemente concatenata)? Nessuna di queste risposte

-Come avviene la ricerca di un elemento in una lista? Con un accesso sequenziale alla struttura

  • Che somiglianze ci sono tra una pila ed una coda? Entrambi i tipi di dato astratto possono essere realizzati con la stessa struttura dati
  • Che differenze ci sono tra una pila e una coda? La pila realizza una politica LIFO, la coda una politica FIFO

-Cosa è una pila (stack)? Un tipo di dato astratto

-Cosa è una coda (queue)? Un tipo di dato astratto

-In Java, se una variabile di istanza x viene dichiarata private all’interno di una classe Prova, allora: Solo i metodi appartenenti alla classe Prova possono accedere a x.

-In una pila (stack) gli elementi vengono estratti utilizzando una politica LIFO

-In una coda (queue) gli elementi vengono estratti utilizzando una politica FIFO

  • Il termine “algoritmo” Designa una procedura che esegue una sequenza finita di operazioni

-In quanto tempo è possibile selezionare contemporaneamente il minimo, il mediano ed il massimo di una sequenza di n elementi? O(n)

-Il problema dell 8 regine Nessuna di queste risposte

  • Il grado di un vertice v di un grafo G è Nessuna di queste risposte

-In un grafi G=(V,E) un ciclo è un qualsiasi cammino che parte e rientra nello stesso nodo

-In quanto tempo è possibile ricercare una chiave in un albero binario di ricerca di n elementi? O(log n)

-Il caso migliore di Insertion Sort si verifica quando nessuna di queste risposte

-Il caso migliore di insertion sort si verifica quando l' array è già ordinato

  • Il caso migliore di Bubblesort Sort si verifica quando L'array è già ordinato
  • Il caso migliore di Bubblesort Sort si verifica quando Nessuna di queste risposte
  • InsertionSort nel caso peggiore ha complessità 𝑂(𝑛2)
  • In java se una stringa S è istanziata tramite lo statement: String S=”123”; allora il risultato di System.out.printls(S.lenght); produce 3 stampato a console
  • La ricerca in una lista? Richiede in media tempo lineare

-La ricerca in una lista Richiede in media tempo lineare

  • La struttura dati coda o queue Realizza una politica FIFO

-La struttura di dati Pila o stack Può essere realizzata facilmente con un array

  • L’indirizzamento aperto (open addressing) E’ una tecnica di gestione delle tabelle HASH
  • Le tecniche di hash hanno prestazioni che dipendono dal rapporto tra numero delle posizioni occupate e numero delle posizioni disponibili

-La determinazione del massimo in un array di n elementi richiede n-1 confronti

  • Le chiamate ricorsive di procedure Vanno evitate ad ogni costo
  • Le tecniche greedy Trovano sempre una soluzione, che però può non essere affatto ottima

-La strategia algoritmica di forza bruta Nessuna di queste risposte

  • Le tecniche di programmazione dinamica Consentono in generale di risolvere problemi di ottimizzazione
    • L’approccio della programmazione dinamica ha il seguente costo computazionale Dipende dal problema
  • La radice di un albero è quel nodo che Non ha padre
  • L’altezza di un nodo n dell’albero (anche detta profondità del nodo) è data Dalla distanza tra il nodo n e la radice dell’albero

-La foglia di un albero è un nodo che Non ha figli

  • L’altezza di un albero è data da Dalla distanza massima tra la radice dell’albero ed una foglia - La visita di un albero per livelli Fornisce un algoritmo di visita sistematica
  • Per gestire la ricorsione in QuickSort Basta l’array di input e una quantità costante di memoria aggiuntiva

-Per QuickSort La complessità nel caso peggiore è 𝑂(𝑛2)

  • Per definire un tipo di dato astratto dobbiamo: definire l’insieme dei dati e le operazioni su di essi

-Quale dei seguenti è un principio fondamentale della programmazione ad oggetti? Il polimorfismo

  • Quali delle seguenti definizioni rappresenta un tipo di dato astratto? Un insieme di interi con l’operazione di estrazione del massimo valore
  • Qual è il tempo di esecuzione di una operazione search in una lista collegata di n elementi? 𝑂(𝑛)
  • Quale delle seguenti affermazioni è vera? In una pila, inserimenti e cancellazioni avvengono allo stesso estremo

-Quando si verifica una collisione un hash table? Quando a chiavi diverse corrisponde lo stesso valore della funzione di hash

  • Quale delle seguenti è una definizione di collisione? Si ha collisione quando a chiavi diverse corrisponde lo stesso valore della funzione di hash

-Quante foglie possono esserci al più in un albero binario di n nodi? (n+1)/

-Quale delle seguenti affermazioni è corretta? Per misurare la complessità di un algoritmo misuriamo Nessuna di queste risposte

  • Quanti confronti sono sufficienti nel caso peggiore per trovare l’elemento più piccolo in una sequenza di n elementi? n-
    • Qual è la complessità dell’algoritmo di ricerca binaria, in funzione del numero di elementi n? O(log n) nel caso peggiore
  • Qual è la complessità dell’algoritmo di ricerca sequenziale, in funzione del numero di elementi n? O(n) nel caso peggiore

-Quanti confronti esegue la ricerca sequenziale nel caso medio? (n+1)/2 se l’elemento è presenti nell’insieme, n se l’elemento non è presente nell' insieme

-Quali sono gli algoritmi più efficienti, quelli ricorsivi o quelli iterativi? Quelli iterativi

-Quanti confronti vengono eseguiti nella ricerca binaria nel caso migliore? 1

  • Quanti archi contiene un minimo albero ricoprente di un grafo connesso n-

-Quale dei seguenti algoritmi può essere visto come una applicazione della tecnica golosa? Sia l'algoritmo di Kruscal che l'algoritmo di Prim

-Quanti confronti vengono effettuati dall’algoritmo QuickSort? 𝑂(𝑛2) nel caso peggiore

-Quale delle seguenti affermazioni è vera Ogni algoritmo di ordinamento richiede almeno tempo 𝑂(𝑛log𝑛)

  • QuickSort nel caso atteso ha complessità 𝑂(𝑛*log(n))
  • QuickSort può avere un worst case dell’ordine di 𝑂(𝑛2)? Il caso peggiore è sempre dell’ordine 𝑂(𝑛2)
  • Quale dei seguenti algoritmi è basato sulla tecnica del divide et impera? MergeSort
  • Si faccia un esempio di creazione di un oggetto in Java utilizzando l’operatore appropriato Integer a = new Integer(3);

-Si facciano esempi di espressioni in Java a+b e (a-b*(1-4)) sono entrambe espressioni in Java

-Si definisca il tipo di dato astratto Albero

Per albero si intende un grafo non diretto, connesso e aciclico

  • Tutti gli algoritmi di ordinamento basato su confronti Nessuna di queste risposte

-Un algoritmo greedy ha il seguente costo computazionale Dipende dal problema

-Un algoritmo goloso (greedy) è sempre in grado di trovare la soluzione ottima del problema? Qualche volta