Differenza tra algoritmo euristico e di approssimazione?


9

ho un problema relativo alla seguente situazione.

Ho due matrici di numeri come questo:

index/pos     0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15 
Array 1(i):   1   2   3   4   7   5   4   3   7   6   5   1   2   3   4   2
Array 2(j):   4   4   8  10  10   7   7  10  10  11   7   4   7   7   4

supponiamo ora che il secondo array sia molto difficile da calcolare ma ho notato che se lo aggiungo

A [i] + A [i + 1]

nell'array 1 ottengo il numero molto vicino al numero A [j] nell'array 2.

  1. La mia soluzione è euristica o approssimativa?

  2. Se avessi un motivo per credere che non supererò mai il valore di A [j] di + -x con questo algoritmo e posso dimostrarlo, allora la mia soluzione sarebbe un'euristica o un'approssimazione?

C'è qualche letteratura che affronta questioni euristiche o di approssimazione per problemi di classe P in cui la soluzione può essere raggiunta in tempi polinomiali ma l'input è troppo grande per un algoritmo poli-tempo per essere pratico.

grazie


Devi prima definire ciò che vuoi approssimare per giudicare se il tuo approccio è un'approssimazione.
Dan

Qual è esattamente il problema di ottimizzazione che stai cercando di risolvere? Una volta che questo è noto, se si dimostrano limiti, l'euristica diventa un'approssimazione. Inoltre, gli unici problemi (classici, cioè non streaming) in P che hanno algoritmi di approssimazione (di cui sono a conoscenza) sono algoritmi a flusso massimo.
Nicholas Mancuso

ok quindi la cosa che desidero calcolare sono i numeri all'interno del secondo array. ma questo richiede troppo tempo, tuttavia ho capito che se aggiungo due valori consecutivi di array 1 insieme ottengo qualcosa di ok e posso dimostrare che la stima sarà sempre entro + -x. l'alg iniziale per il calcolo di A [j] è O (n ^ 100)
user6697

Capisco che si desidera calcolare i numeri nel secondo array, ma qual è la formulazione del problema di ottimizzazione. Dato X calcola Y sotto i vincoli di Z. Dire che vuoi calcolare qualche funzione arbitraria non aiuta.
Nicholas Mancuso

La tua soluzione è un perfetto esempio di euristica!
Björn Lindqvist,

Risposte:


11

Un euristico è essenzialmente un sospetto, cioè il caso che descrivi ("Ho notato che è vicino", non hai una prova che sia così) è un euristico. Come sta risolvendo il problema del commesso viaggiatore iniziando da un vertice casuale e andando al più vicino non ancora visitato ogni passaggio. È un'idea plausibile , che non dovrebbe dare una soluzione troppo negativa. In questo caso, si può dimostrare che non fornirà sempre una buona soluzione.

Un algoritmo di approssimazione di solito è inteso a fornire una soluzione approssimativa, con una sorta di garanzia di prestazione (ad esempio, risolve TSP e il costo totale non è mai inferiore di un fattore 2; o meglio ancora, risolve TSP e, a seconda di <alcuni parametri che possono essere variati> la soluzione non è mai peggiore di quella ottimale di più di un fattore1+ϵ, dove ϵ dipende da <parametri>).


1
Hai usato un campione errato, TSP è difficile da approssimare, quindi non c'è PTAS per TSP, inoltre non c'è 2 approssimazione per TSP è facile da mostrare se c'è tempo polinomiale 2-approssimazione per TSP c'è algoritmo di tempo polinomiale per risolvere il problema del ciclo hamiltoniano , Penso che intendi TSP metrico che è un caso speciale, ma in questo caso non esiste alcun PTAS (e dimostrato che è impossibile avere PTAS tranne P = NP). Vorrei suggerire di scegliere l'imballaggio del cestino per parlarne. (o qualsiasi altro problema più semplice).

@SaeedAmiri, era solo a scopo illustrativo. Forse non è il miglior esempio (come dici tu), ma il problema è facile da capire. Grazie per il commento.
vonbrand

Quindi se capisci che questo è un esempio sbagliato perché non lo risolvi?

@SaeedAmiri Penso che vada benissimo. Ricorda che non sappiamo se per esempioP=NP, per cui si può basare la durezza di approssimazione.
Juho

@Juho, per mia conoscenza è totalmente sbagliato anche sapendo che non lo sappiamo P=NP, il punto principale è potrebbe essere nella direzione di riverbero (PNP), Quindi non dovremmo usare campioni errati, dovremmo usare campioni che sappiamo che sono corretti indipendentemente da cose che non conosciamo.

6

Puoi vedere questa risposta molto interessante sull'euristica in Wikipedia:

"un euristico è una tecnica progettata per risolvere un problema più rapidamente quando i metodi classici sono troppo lenti. L'obiettivo di un euristico è quello di produrre abbastanza rapidamente una soluzione che sia abbastanza buona per risolvere il problema in questione".

L'euristica potrebbe derivare dalla teoria o dall'esperienza sperimentale, ma gli algoritmi di approssimazione hanno solide basi teoriche (soluzione dimostrabile).


4

Per quanto riguarda la tua ultima domanda, non esiste una teoria separata per gli algoritmi di approssimazione per i problemi che sono risolvibili in tempi polinomiali. In effetti, potrebbe essere quelloP=NP. Alcuni esempi di algoritmi di approssimazione per problemi inPinclude algoritmi per l'algebra lineare numerica e la geometria computazionale. Vedi la domanda Algoritmi di approssimazione per problemi in P per ulteriori informazioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.