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 (Sintesi), Schemi e mappe concettuali di Algoritmi E Strutture Di Dati

Sintesi delle strutture dati in informatica affrontate negli esami di Algoritmi e Strutture dati. La sintesi è una sintesi generale, non legata a nessun ateneo. Utile per ripassare rapidamente i concetti base dell'esame e le complessità dei relativi algoritmi.

Tipologia: Schemi e mappe concettuali

2023/2024

In vendita dal 02/06/2024

giulio_russo
giulio_russo 🇮🇹

4.8

(42)

111 documenti

1 / 27

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
ALGORITHM CHEAT SHEET
>>> Fondamenti di Informatica / Tecniche di
Programmazione / Intelligenza Artificiale <<<
Complessità temporale = numero complessivo dei passi di calcolo, a loro volta
funzione della dimensione dei dati in ingresso. Per approssimare possiamo
assumere il costo temporale unitario per ogni operazione
Complessità spaziale = utilizzo delle risorse
Esistono 3 casi. Istanza I del problema P:
Best = tempo sulle istanze che comportano meno lavoro all’algoritmo
Worst = tempo sulle istanze che comportano più lavoro all’algoritmo
Medium = tempo sulle istanze tipiche del problema
O: f(n) c • g(n)
Ω: f(n) c • g(n)
θ: c1 • g(n) f(n) c2 • g(n)
O(g1 + … + gn) = O(max{g1 … gn})
O(g1 • … • gn) = O(O(g1) • … • O(gn))
Algoritmi Ricorsivi
Identifichiamo l’equazione di ricorrenza che descrive la successione dei termini
dell’algoritmo: T(n) = c + T(n/2) se n>1 oppure 1 se n = 1
Teorema Master = fornisce una soluzione asintotica ad una famiglia di relazioni
di ricorrenza
Algoritmi e strutture dati (Sintesi)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b

Anteprima parziale del testo

Scarica Algoritmi e strutture dati (Sintesi) e più Schemi e mappe concettuali in PDF di Algoritmi E Strutture Di Dati solo su Docsity!

ALGORITHM CHEAT SHEET

>>> Fondamenti di Informatica / Tecniche di Programmazione / Intelligenza Artificiale <<< Complessità temporale = numero complessivo dei passi di calcolo, a loro volta funzione della dimensione dei dati in ingresso. Per approssimare possiamo assumere il costo temporale unitario per ogni operazione Complessità spaziale = utilizzo delle risorse Esistono 3 casi. Istanza I del problema P: Best = tempo sulle istanze che comportano meno lavoro all’algoritmo Worst = tempo sulle istanze che comportano più lavoro all’algoritmo Medium = tempo sulle istanze tipiche del problema O: f(n) ≤ c • g(n) Ω: f(n) ≥ c • g(n) θ: c1 • g(n) ≤ f(n) ≤ c2 • g(n) O(g1 + … + gn) = O(max{g1 … gn}) O(g1 • … • gn) = O(O(g1) • … • O(gn)) Algoritmi Ricorsivi Identifichiamo l’equazione di ricorrenza che descrive la successione dei termini dell’algoritmo: T(n) = c + T(n/2) se n>1 oppure 1 se n = 1 Teorema Master = fornisce una soluzione asintotica ad una famiglia di relazioni di ricorrenza

  • – – – ○ ○ Tipologie di Tecniche algoritmiche: Divide et impera = DIVIDERE il problema in sottoproblemi, RISOLVERE ricorsivamente tutti i sottoproblemi (anche in parallelo), COMBINARE la soluzione dei sottoproblemi (e.g. Merge Sort algoritmo di ordinamento vettori) Programmazione dinamica = DEFINISCO operazioni elementari e le uso per RISOLVERE il problema principale (e.g. distanza tra stringhe usando solo inserisci, cancella e sostituisci) Tecnica greedy = ricerca di una soluzione ottimale avviene seguendo una strategia euristica (l’algoritmo opta per la soluzione ottimale a livello locale) Vettori Ricerca: verificare se nell’array è presente un’istanza di un certo valore (e.g. occorrenze, massimo, minimo …) Array NON ordinato: Ricerca Sequenziale/Lineare Array ordinato: Ricerca Binaria

○ (^) Select Sort

○ ○ ○ Merge Sort Quick Sort Heap Sort Creation of the Heap from the Vector

Algorithm:

● ● ● ● – – Preordine / Ordine / Postordine Alberi pesati = gli archi hanno un costo Completezza: se la soluzione (non è detto debba essere ottima) esiste e viene trovata sicuramente Ottimalità: trovo sempre la soluzione ottima OPEN = lista nodi da visitare CLOSED = lista nodi visitati b (branching factor) = massimo numero di figli che un nodo può avere d (depth) = livello al quale trovo la soluzione m (massima profondità) = profondità massima dell’albero Algoritmi di ricerca: Brute Force = ricerca esaustiva su tutte le possibili soluzioni Ricerca NON informata = basati sulla sola conoscenza del problema BFS = Completa se lo spazio di ricerca è finito. Ottima se il costo di ogni arco è lo stesso. Tempo e Spazio O(b^d) Ricerca a costo uniforme = espando prima il nodo con il costo del cammino minimo. Completa se il costo di un arco è ≥ di un epsilon

  • – – – – ● ○ ○ (se avessi arco a costo 0 rimarrei bloccato in un ciclo). Ottima. Tempo e Spazio O(b^C/epsilon): il costo ottimale C lo posso raggiungere o con un arco dal costo C* oppure con tanti archi di costo minimo epsilon) DFS = Completa se lo spazio di ricerca è finito. Ottima se ho un albero (con un grafo esisterebbero diversi percorsi). Tempo O(b^m). Spazio O(b•m) con Backtracking = genero un figlio alla volta. Se arrivo alla fine dell’albero e non ho trovato la soluzione, torno al fratello dell’ultimo figlio generato. Se finiscono i figli, vado al fratello del padre e così via risalgo tutto l’albero. Spazio O(m) Limitata = m = l limite di espansione. Ottima solo se la soluzione si trova entro il limite l ID (Iterative deepening) = l è crescente fino a che non trovo la soluzione (al massimo l = d) Ricerca informata = conosco altre informazioni oltre al problema (e.g. Commesso viaggiatore: so le distanze tra le città, Problema della bisaccia: so il peso massimo dello zaino) f(n) = g(n) + h(n) h(n) = stima euristica: stima per difetto del costo del cammino. 0 ≤ h(n) ≤ h*(n) costo effettivo. È Ammissibile: non deve mai sopravvalutare la distanza. In caso contrario, l'algoritmo verrà interrotto e potrebbe restituire percorsi non ottimali Consistente: quando seleziono il nodo successivo, sono sicuro che sia l’ottimo
  • ● – – – – –

MBA* (Memory Bounded A*) = quando la memoria è satura, cancella la soluzione con f(n) maggiore. Completa se la soluzione può essere contenuta in memoria (se il cammino è troppo piccolo). Ottima se è raggiungibile Ricerca locale = consulto un intorno. Posso usare una funzione di costo (da minimizzare) o obiettivo (da massimizzare) Hill climbing = mi muovo nella direzione del gradiente così da trovare lo stato che massimizza la funzione obiettivo Stocastico = tra tutte le mosse che seguono il gradiente, scelgo a caso con Riavvio Casuale = tanti Hill Climbing con stati iniziali casuali. Ricerche statisticamente indipendenti Simulated Annealing = Hill Climbing che accetta mosse peggiorative per poter uscire da eventuali massimi lovali Beam Search = genero casualmente K stati e K successori. Se la soluzione è tra questi allora ho finito, altrimenti continuo a generare Alberi binari Il sottoalbero sinistro di un nodo contiene solo nodi con chiavi inferiori alla chiave del nodo. Il sottoalbero destro di un nodo contiene solo nodi con chiavi maggiori della chiave del nodo. Anche il sottoalbero sinistro e quello destro devono essere un albero di ricerca binario. Inserimento O(n) = se l’elemento da inserire è maggiore del nodo in

  • esame, vado a destra, altrimenti a sinistra Ricerca O(h) = se l’elemento da cercare è maggiore del nodo in esame, vado a destra, altrimenti a sinistra Best case: Albero perfetto con h = log2 n Worst case: Albero lista con h = n Eliminazione O(h) = Ricerca dell’elemento. Se è foglia lo elimino

Alberi da gioco Rappresentare gli stati di un gioco a interazione strategica. I nodi dell'albero identificano i diversi stati del gioco mentre gli archi le possibili scelte/decisioni (mosse) che gli agenti possono effettuare a partire da un determinato nodo

(situazione di gioco). Algoritmo min-max = algoritmo ricorsivo per la ricerca della mossa migliore in un gioco a somma zero che si svolge tra due giocatori

  • nell'interrompere l'esplorazione in profondità dei nodi quando non sarebbero comunque selezionati dai giocatori perché peggiori rispetto alle alternative possibili. Ciò consente di effettuare una potatura logica dell'albero di gioco e ridurre la complessità dell’algoritmo Alpha = miglior valore trovato per max Beta = miglior valore trovato per min Best case: O(b^d/2) scarto subito metà albero Medium case: O(b^3d/4) Worst case: O(b^d) calcolo altezza albero Grafi = configurazione formata da un insieme di punti (vertici o nodi) e un insieme di linee (archi) che uniscono coppie di nodi. Il percorso da un nodo ad un altro NON è unico. n = nodi m = archi NON orientato Orientato
  • ● ● Pesato Completo = esiste un arco per ogni coppia di nodi Rappresentazioni: Lista archi = lista di tutti gli archi Lista incidenza = lista con tutti i nodi, per ogni nodo la lista dei suoi