Skip to content

Commit

Permalink
Quick refactoring della struttura degli appunti
Browse files Browse the repository at this point in the history
  • Loading branch information
Darakuu committed Dec 15, 2023
1 parent 687dad4 commit 7a44b55
Show file tree
Hide file tree
Showing 11 changed files with 56 additions and 37 deletions.
3 changes: 3 additions & 0 deletions content/Funzione di Ackermann.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
tags:
- Algoritmi/PrimaProva
---
# Funzione di Ackermann

Usiamo la [[Notazione di Knuth|Notazione 'uparrow' di Knuth:]] $\uparrow$ 
1 change: 1 addition & 0 deletions content/Heap Binomiali.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
tags:
- Algoritmi/PrimaProva
- Algoritmi/StruttureDati
- Algoritmi/MergeableHeap
---
1 change: 1 addition & 0 deletions content/Heap di Fibonacci.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@
tags:
- Algoritmi/PrimaProva
- Algoritmi/StruttureDati
- Algoritmi/MergeableHeap
draft: false
---
3 changes: 2 additions & 1 deletion content/Mergeable Heaps.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
tags:
- Algoritmi/PrimaProva
- Algoritmi
- Algoritmi/StruttureDati
- Algoritmi/MergeableHeap
---

[[Algoritmi/Heap Binomiali|Heap Binomiali]]
Expand Down
36 changes: 21 additions & 15 deletions content/Metodo degli Accantonamenti.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,30 @@ tags:
---
# Metodo degli Accantonamenti

Nel metodo degli accantonamenti assegnamo costi variabili a operazioni differenti: cioè qualche operazione potrebbe avere costo maggiore o minore del suo effettivo costo reale. Quando il costo assegnato di un'operazione supera il costo effettivo, la differenza viene assegnata a specifici oggetti della struttura dati sotto forma di _credito_. (concetto logico, assolutamente virtuale). <br>
Questo credito, sempre **non negativo**, viene depositato o prelevato a seconda delle esigenze.
In questo caso, le operazioni hanno costo variabile (e quindi non è lo stesso per tutte le operazioni), per cui, la scelta dei costi ammortizzati è di fondamentale importanza. <br>
Siano $op_{1},op_{2},\dots,op_{n}$ le nostre operazioni, e <br>
$c_{i}=_{def}\text{costo-reale}(op_{i})$ <br>
$\hat{c}_{i}=_{def}\text{costo-ammortizzato}(op_{i}) \qquad$ <ins>Definito da noi</ins>.
Nel metodo degli accantonamenti assegnamo costi variabili a operazioni differenti: cioè qualche operazione potrebbe avere costo maggiore o minore del suo effettivo costo reale. Quando il costo assegnato di un'operazione supera il costo effettivo, la differenza viene assegnata a specifici oggetti della struttura dati sotto forma di _credito_. (concetto logico, assolutamente virtuale). 

Obiettivo: definire i costi ammortizzati in modo tale che valga:
Questo credito, sempre **non negativo**, viene depositato o prelevato a seconda delle esigenze. 

$T(n) = \displaystyle\sum^n_{i=1}c_{i}\leq \sum^n_{i=1}\hat{c}_{i}$
In questo caso, le operazioni hanno costo variabile (e quindi non è lo stesso per tutte le operazioni), per cui, la scelta dei costi ammortizzati è di fondamentale importanza.  
Siano $op_{1},op_{2},\dots,op_{n}$ le nostre operazioni, e 

Se $\hat{c}_{i}>c_{i}, \text{ allora } c_{i}$ unità di costo sono utilizzate per pagare il costo della i-esima operazione $op_{i}$. <br>
Se $\hat{c}_{i}<c_{i},$ la differenza $c_{i}-\hat{c}_{i}$ viene recuperata da crediti immagazzinati nella struttura dati.
$c_{i}=_{def}\text{costo-reale}(op_{i})$ 

In altre parole: paghiamo prima delle operazioni future. Quando il costo reale supera il costo ammortizzato, usiamo il credito per pagare.
$\hat{c}_{i}=_{def}\text{costo-ammortizzato}(op_{i}) \qquad$ <ins>Definito da noi</ins>. 

A questo punto, viene raggiunto l'obiettivo prefissato pocanzi.
Obiettivo: definire i costi ammortizzati in modo tale che valga: 

$T(n) = \displaystyle\sum^n_{i=1}c_{i}\leq \sum^n_{i=1}\hat{c}_{i}$ 

Se $\hat{c}_{i}>c_{i}, \text{ allora } c_{i}$ unità di costo sono utilizzate per pagare il costo della i-esima operazione $op_{i}$. 

Se $\hat{c}_{i}<c_{i},$ la differenza $c_{i}-\hat{c}_{i}$ viene recuperata da crediti immagazzinati nella struttura dati. 

In altre parole: paghiamo prima delle operazioni future. Quando il costo reale supera il costo ammortizzato, usiamo il credito per pagare. 

A questo punto, viene raggiunto l'obiettivo prefissato pocanzi. 

>[!example] Esempi:
>- [[Stack Multipop#Multipop con Metodo degli Accantonamenti Accantonamenti|Stack Multipop]]
>- [[Contatore binario#Contatore Binario con Metodo degli Accantonamenti Accantonamenti|Contatore Binario]]
Esempi:
- [[Stack Multipop#Multipop con Metodo degli Accantonamenti Accantonamenti|Stack Multipop]]
- [[Contatore binario#Contatore Binario con Metodo degli Accantonamenti Accantonamenti|Contatore Binario]]
6 changes: 6 additions & 0 deletions content/Metodo del Potenziale.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
tags:
- Algoritmi/PrimaProva
- Algoritmi/AnalisiAmmortizzata
---
Anziché rappresentare il lavoro prepagato come credito memorizzato su specifici oggetti nella struttura dati
9 changes: 5 additions & 4 deletions content/Metodo dell'Aggregazione.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
---
tags:
- Algoritmi
- Algoritmi/PrimaProva
- Algoritmi/AnalisiAmmortizzata
draft: false
---
Consiste nello stimare il costo $\mathbf{T}(n)$ di $n$ operazioni e di equidistribuire tale costo tra le $n$ operazioni $\left( \dfrac{\mathbf{T}(n)}{n} \right)$
Tutte le operazioni hanno lo stesso costo ammortizzato.
Esempi:
- [[Stack Multipop#Multipop con Metodo dell'Aggregazione Aggregazione|Stack Multipop]]
- [[Contatore binario#Contatore Binario con Metodo dell'Aggregazione Aggregazione|Contatore Binario]]

>[!example] Esempi:
> - [[Stack Multipop#Multipop con Metodo dell'Aggregazione Aggregazione|Stack Multipop]]
> - [[Contatore binario#Contatore Binario con Metodo dell'Aggregazione Aggregazione|Contatore Binario]]

1 change: 1 addition & 0 deletions content/Notazione di Knuth.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ tags:
- Algoritmi/PrimaProva
draft: true
---
# Notazione $\uparrow$ di Knuth
2 changes: 1 addition & 1 deletion content/Splay Tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
tags:
- Algoritmi/StruttureDati
- Algoritmi/PrimaProva
draft: true
draft: false
---
3 changes: 2 additions & 1 deletion content/Union-Find.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ tags:
- Algoritmi
- Algoritmi/PrimaProva
- Algoritmi/StruttureDati
draft: true
draft: false
---
# Strutture dati per insiemi disgiunti
28 changes: 13 additions & 15 deletions content/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,21 @@ Questa pagina funge da indice.

_<sub><sup><sub><sup>(esiste solo perché quartz🪴 lo richiede)</sub></sup></sub></sup>_

Currently working on: [[Prima Itinere]]
Currently working on: [[Prima Itinere]]
## Prima Parte
- [[Alberi Binomiali]]
- [[Analisi Ammortizzata]]
- [[B-Tree]]
- [[Contatore binario]]
- [[Funzione di Ackermann]]
- [[Heap Binomiali]]
- [[Heap di Fibonacci]]
- [[Union-Find]]
- [[Kruskal's Algorithm]]
- [[Mergeable Heaps]]
- [[Move To Front]]

- [[Analisi Ammortizzata]]:
- [[Metodo dell'Aggregazione]]
- [[Metodo degli Accantonamenti]]
- [[Metodo del Potenziale]]
- Strutture Dati:
- [[Splay Tree]]
- [[B-Tree]]
- [[Alberi Binomiali]]
- [[Mergeable Heaps]]
- [[Union-Find]]
- [[Notazione di Knuth]]
- [[Prim's Algorithm]]
- [[Splay Tree]]
- [[Stack Multipop]]
- [[Funzione di Ackermann]]

## Seconda Parte
- TBD

0 comments on commit 7a44b55

Please sign in to comment.