Data una mappa a punti risulta spesso necessaria una semplificazione atta a rendere
più rapide le operazioni da svolgere sulla mappa stessa. L'obiettivo primario
è quello ottenere un sottoinsieme
di
punti da un insieme
formato da
punti di partenza (con
). In [16] vengono proposte diverse soluzioni
che operano su mappe a punti, partizionabili in due classi principali:
Algoritmi iterativi:
Questa classe di algoritmi procede in modo iterativo trovando diverse soluzioni al problema della
semplificazione e scegliendo la migliore. La differenza primaria tra le diverse tecniche risiede
nel modo in cui il sottoinsieme
viene generato.
Scelta del miglior elemento tra
sottoinsiemi generati in modo casuale:
Consideriamo
sottoinsiemi generati in modo casuale
dall'insieme
, calcoliamo l'errore
di approssimazione per ognuno [16] e scegliamo il sottoinsieme che genera l'errore di approssimazione minore. In questo approccio, maggiore è il numero
dei sottoinsiemi generati in modo casuale, migliore risulta l'approssimazione dell'insieme di partenza.
Simulated annealing:
Questa tecnica di semplificazione [32]
inizia con una soluzione casuale e cerca di convergere alla soluzione ottima introducendo
dei cambiamenti nel sottoinsieme in esame, anch'essi generati in modo casuale. Un cambiamento viene mantenuto se migliora la soluzione (il sottoinsieme
)
corrente oppure se viene incontrata una condizione di fine. Un cambiamento casuale
consiste, ad esempio, nello scegliere un punto in
e sostituirlo con un punto in
, generando
il sottoinsieme
.
La generazione casuale della sostituzione avviene nel modo seguente: durante la
-esima iterazione, il
sottoinsieme
viene rimpiazzato con il sottoinsieme
con la probabilità
, espressa in (2.1):
dove
è un parametro di valore
,
è il numero totale di iterazioni
dell'algoritmo e
e
rappresentano gli errori di approssimazione
di
e
rispetto a
, definiti in [16] nel modo seguente:
con
, famiglia di range considerati (porzioni dell'insieme considerato) e
, particolare range in esame.
e
sono rispettivamente il numero di punti degli insiemi
e
.
Swapping:
Dapprima otteniamo un'approssimazione di
considerando un sottoinsieme
di grandezza
generato in modo casuale e quindi tentiamo di migliorarlo nel seguente modo: calcoliamo un range
con il maggiore
errore casuale positivo e un range
con il maggiore errore casuale negativo.
Il calcolo degli errori casuali positivo e negativo si ottiene a partire da (2.2)
senza applicare il valore assoluto alla differenza. In questo modo un errore positivo indicherà
che il valore di
è superiore a quello di
e viceversa in caso di errore negativo.
Da
togliamo un insieme casuale di punti in
e aggiungiamo un insieme
casuale di punti in
. Questa euristica è fortemente dipendente
dall'avere una buona configurazione di partenza. Se ciò non accade si rischia di ottenere
un minimo locale senza speranza di ulteriori miglioramenti.
Swapping con restart:
Questa è una variante della tecnica precedente che ricomincia
con un insieme
random se 10 iterazioni consecutive della tecnica di Swapping falliscono nel
migliorare la soluzione.
Swapping con il 10% di perturbazione:
Se 10 iterazioni consecutive di Swapping non migliorano
la soluzione, vengono rimossi
punti in modo casuale e vengono sostituiti
con
punti di
.
Algoritmi di Clustering:
Le tecniche di clustering agiscono partizionando (implicitamente o esplicitamente) l'insieme
di partenza in
gruppi e scegliendo per ogni gruppo uno o più campioni rappresentativi.
Righe e Colonne:
Questa euristica produce un sottoinsieme
con
elementi
ordinando gli
punti dell'insieme di partenza secondo valori crescenti delle ascisse e raggruppandoli in colonne, ognuna contenente
punti. I punti all'interno di ogni colonna vengono quindi ordinati e raggruppati in righe
di
elementi. Otterremo quindi un partizionamento del piano in
celle rettangolari,
ognuna contenente
punti. Per formare l'insieme
viene preso un campione per ogni cella.
Quadtree:
Questa tecnica è basata sulla struttura dati a quadtree. Sia
un quadrato
orientato secondo gli assi contenente l'insieme
di partenza. Partizioniamo
in modo ricorsivo nella
maniera seguente: se
contiene meno di
punti (con
, rapporto tra il numero di punti dell'insieme di partenza e dell'insieme semplificato) non viene fatto nulla, altrimenti
viene partizionato in 4 quadrati e ogni quadrato viene ripartizionato in modo ricorsivo.
Una volta calcolata questa partizione, scegliamo un campione per ogni quadrato. Se il quadrato
contiene
punti di P, allora scegliamo un insieme di elementi pari a
da quel particolare quadrato.
Dobkin-Tal:
Il metodo, originariamente proposto da Dobkin e Tal in [18] funziona nel modo seguente: