Skip to content

Commit

Permalink
Algoritmo Ungherese
Browse files Browse the repository at this point in the history
  • Loading branch information
Darakuu committed Feb 14, 2024
1 parent 099f853 commit 9d45d37
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 1 deletion.
17 changes: 17 additions & 0 deletions content/Algoritmo Ungherese.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,20 @@ tags:
- Ottimizzazione
- Ottimizzazione/PLI
---
Opera sulla matrice dei costi $c_{ij}$ e trasforma la matrice dei costi in una serie di matrici equivalenti fino a determinare l'assegnamento di costo minimo che corrisponderà al ricoprimento degli zeri della matrice.

## Operazioni

1. Si sottrae ad ogni riga il suo elemento minimo: $c_{ij}=c_{ij}-\underset{j}min\ c_{ij}$ (generiamo zeri sulle righe)
2. Si sottrae ad ogni colonna il suo elemento minimo: $c_{ij}=c_{ij}-\underset{i}min\ c_{ij}$ (generiamo zeri su colonne)
3. Si cerca l'assegnamento di costo minimo, cercando il ricoprimento degli zeri della matrice. Se il numero di righe e colonne che ricoprono gli zeri è minore del numero di righe della matrice, l'assegnamento non è completo e si deve ridurre ancora la matrice. Altrimenti, si è trovato l'assegnamento completo di costo minimo
4. Si barrano le righe e le colonne che ricoprono gli zeri. Sia $\delta$ l'elemento minimo non barrato. Si aggiunge $\delta$ agli elementi barrati 2 volte (cioè l'incrocio tra riga e colonna) e si sottrae agli elementi non barrati.

Si ripetono $3$ e $4$ fino a trovare l'assegnamento completo

## Regola generale per trovare il ricoprimento minimo degli zeri

- Si etichettano le righe lasciate fuori dall'assegnamento;
- Si etichettano le colonne che hanno degli zeri in corrispondenza delle righe etichettate;
- Si etichettano le righe abbinate alle colonne etichettate dall'assegnamento ottenuto;
- Si barrano le righe non etichettate e le colonne etichettate.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 13 additions & 1 deletion content/Problema dell'assegnamento.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,17 @@ La matrice dei coefficienti è **Totalmente Unimodulare**

> [!tldr] Proposizione
> Dato il poliedro
> Dato il poliedro $\{ x \in \mathbb{R}^n: Ax=b, x\geq 0 \}$ con A matrice tot. unimodulare, e b intero $\implies$ poliedro ha solo vertici interi
Possiamo quindi risolvere il problema rilassato con il vincolo $x_{ij} \in [0,1]$ (insieme agli altri vincoli diventa poi solo) $x_{ij}\geq 0$)

Non è utile usare il simplesso perché il poliedro ha vertici fortemente degeneri, si usa infatti un algoritmo specifico:

![[Algoritmo Ungherese]]


## Assegnamento su Grafo Bipartito

Il problema dell'assegnamento si può vedere su un grafo bipartito completo. Siano noti i costi $c_{ij}$ su tutti gl iarchi e si cerca un abbinamento tra gli elementi dei due insiemi di costo minimo.

![[Pasted image 20240214183550.png]]

0 comments on commit 9d45d37

Please sign in to comment.