Qual è la differenza tra un'euristica e un algoritmo?
Qual è la differenza tra un'euristica e un algoritmo?
Risposte:
Un algoritmo è la descrizione di una soluzione automatizzata a un problema . Quello che fa l'algoritmo è definito con precisione. La soluzione potrebbe o non potrebbe essere la migliore possibile ma sai fin dall'inizio che tipo di risultato otterrai. Si implementa l' algoritmo utilizzando un linguaggio di programmazione per ottenere (una parte di) un programma .
Ora, alcuni problemi sono difficili e potresti non essere in grado di ottenere una soluzione accettabile in un tempo accettabile. In questi casi spesso è possibile ottenere una soluzione non troppo negativa molto più velocemente, applicando alcune scelte arbitrarie (ipotesi plausibili): questa è un'euristica .
Un'euristica è ancora una sorta di algoritmo, ma che non esplorerà tutti i possibili stati del problema o inizierà esplorando quelli più probabili.
Esempi tipici provengono dai giochi. Quando si scrive un programma di gioco di scacchi, si potrebbe immaginare di provare ogni possibile mossa a un certo livello di profondità e di applicare alcune funzioni di valutazione alla scacchiera. Un'euristica escluderebbe rami completi che iniziano con mosse ovviamente sbagliate.
In alcuni casi non stai cercando la soluzione migliore, ma qualsiasi soluzione che soddisfi qualche vincolo. Una buona euristica aiuterebbe a trovare una soluzione in breve tempo, ma potrebbe anche non riuscire a trovarne alcuna se le uniche soluzioni sono negli stati che ha scelto di non provare.
Molti problemi per i quali non è noto un algoritmo efficiente per trovare una soluzione ottimale hanno approcci euristici che producono risultati quasi ottimali molto rapidamente.
Ci sono alcune sovrapposizioni: "algoritmi genetici" è un termine accettato, ma in senso stretto si tratta di euristiche, non algoritmi.
Euristico, in poche parole è una "supposizione istruita". Wikipedia lo spiega bene. Alla fine, un metodo di "accettazione generale" viene considerato come una soluzione ottimale al problema specificato.
Euristico è un aggettivo per tecniche basate sull'esperienza che aiutano nella risoluzione dei problemi, nell'apprendimento e nella scoperta. Un metodo euristico viene utilizzato per giungere rapidamente a una soluzione che si spera sia vicina alla migliore risposta possibile, o "soluzione ottimale". Le euristiche sono "regole pratiche", ipotesi plausibili, giudizi intuitivi o semplicemente buon senso. Un'euristica è un modo generale per risolvere un problema. Euristica come sostantivo è un altro nome per metodi euristici.
In termini più precisi, l'euristica sta per strategie che utilizzano informazioni facilmente accessibili, anche se liberamente applicabili, per controllare la risoluzione dei problemi negli esseri umani e nelle macchine.
Mentre un algoritmo è un metodo contenente un insieme finito di istruzioni utilizzate per risolvere un problema. Il metodo ha dimostrato matematicamente o scientificamente di funzionare per il problema. Esistono metodi e prove formali.
L'algoritmo euristico è un algoritmo in grado di produrre una soluzione accettabile a un problema in molti scenari pratici, alla maniera di un'euristica generale, ma per il quale non esiste una prova formale della sua correttezza.
Un algoritmo è un insieme autonomo di operazioni passo passo da eseguire 4 , tipicamente interpretato come una sequenza finita di istruzioni (computer o umane) per determinare una soluzione a un problema come: esiste un percorso da A a B, o qual è il percorso più piccolo tra A e B. In quest'ultimo caso, potresti anche accontentarti di una soluzione alternativa "ragionevolmente vicina".
Esistono alcune categorie di algoritmi, di cui uno è l'algoritmo euristico. A seconda delle proprietà (comprovate) dell'algoritmo in questo caso, rientra in una di queste tre categorie (nota 1):
Si noti che un algoritmo di approssimazione è anche un euristico, ma con la proprietà più forte che esiste un vincolo provato alla soluzione (valore) che produce.
Per alcuni problemi, nessuno ha mai trovato un algoritmo "efficiente" per calcolare le soluzioni ottimali (nota 2). Uno di questi problemi è il noto problema del venditore ambulante. L'algoritmo di Christophides per il problema del venditore ambulante, ad esempio, era chiamato euristico , poiché non era dimostrato che fosse entro il 50% della soluzione ottimale. Poiché è stato dimostrato, tuttavia, l'algoritmo di Christophides viene definito più accuratamente come algoritmo di approssimazione.
A causa delle restrizioni su ciò che i computer possono fare, non è sempre possibile trovare in modo efficiente la migliore soluzione possibile. Se c'è abbastanza struttura in un problema, potrebbe esserci un modo efficiente per attraversare lo spazio della soluzione, anche se lo spazio della soluzione è enorme (cioè nel problema del percorso più breve).
L'euristica viene tipicamente applicata per migliorare il tempo di esecuzione degli algoritmi, aggiungendo "informazioni di esperti" o "ipotesi plausibili" per guidare la direzione della ricerca. In pratica, un'euristica può anche essere una routine secondaria per un algoritmo ottimale, per determinare dove cercare per primo .
(nota 1) : Inoltre, gli algoritmi sono caratterizzati dal fatto che includono elementi casuali o non deterministici. Un algoritmo che viene eseguito sempre allo stesso modo e produce la stessa risposta, è chiamato deterministico.
(nota 2) : questo è chiamato problema P vs NP, ed è improbabile che i problemi classificati come NP-completo e NP-hard abbiano un algoritmo "efficiente". Nota; come @Kriss ha menzionato nei commenti, ci sono anche tipi "peggiori" di problemi, che potrebbero richiedere tempo o spazio esponenziali per il calcolo.
Ci sono diverse risposte che rispondono a una parte della domanda. Li ho ritenuti meno completi e non abbastanza accurati, e ho deciso di non modificare la risposta accettata fatta da @Kriss
In realtà non credo che ci sia molto in comune tra loro. Alcuni algoritmi utilizzano l'euristica nella loro logica (spesso per eseguire meno calcoli o ottenere risultati più rapidi). Di solito le euristiche vengono utilizzate nei cosiddetti algoritmi greedy.
L'euristica è un po 'di "conoscenza" che supponiamo sia utile per ottenere la scelta migliore nel nostro algoritmo (quando una scelta dovrebbe essere presa). Ad esempio ... un'euristica negli scacchi potrebbe essere (prendi sempre la regina degli avversari se puoi, poiché sai che questa è la figura più forte). L'euristica non ti garantisce che ti condurrà alla risposta corretta, ma (se i presupposti sono corretti) spesso ottengono risposte che si avvicinano alla migliore in tempi molto più brevi.
Le euristiche sono algoritmi, quindi in questo senso non ce ne sono, tuttavia, le euristiche adottano un approccio "ipotetico" alla risoluzione dei problemi, fornendo una risposta "sufficientemente buona", piuttosto che trovare una soluzione "migliore possibile".
Un buon esempio è quando hai un problema molto difficile (leggi NP-completo) per il quale vuoi una soluzione ma non hai il tempo di arrivarci, quindi devi usare una soluzione abbastanza buona basata su un algoritmo euristico, come trovare una soluzione a un problema di venditore ambulante utilizzando un algoritmo genetico.
L'algoritmo è una sequenza di alcune operazioni che, dato un input, calcola qualcosa (una funzione) e restituisce un risultato.
L'algoritmo può produrre valori esatti o approssimativi.
Può anche calcolare un valore casuale con alta probabilità vicino al valore esatto.
Un algoritmo euristico utilizza alcune informazioni sui valori di input e calcola un valore non esatto (ma potrebbe essere vicino all'ottimale). In alcuni casi speciali, l'euristica può trovare la soluzione esatta.
Un algoritmo è un insieme di istruzioni chiaramente definito per risolvere un problema, l'euristica implica l'utilizzo di un approccio di apprendimento e scoperta per raggiungere una soluzione.
Quindi, se sai come risolvere un problema, usa un algoritmo. Se hai bisogno di sviluppare una soluzione, allora è l'euristica.
Un'euristica è solitamente un'ottimizzazione o una strategia che di solito fornisce una risposta sufficientemente buona, ma non sempre e raramente la risposta migliore. Ad esempio, se dovessi risolvere il problema del venditore ambulante con la forza bruta, scartare una soluzione parziale una volta che il suo costo supera quello della migliore soluzione attuale è un'euristica: a volte aiuta, altre volte no, e sicuramente no ' t migliorare il tempo di esecuzione teorico (notazione big-oh) dell'algoritmo
Penso che l'euristica sia più un vincolo utilizzato nel modello basato sull'apprendimento nell'intelligenza artificiale poiché gli stati della soluzione futura sono difficili da prevedere.
Ma poi il mio dubbio dopo aver letto le risposte di cui sopra è "In che modo l'euristica può essere applicata con successo utilizzando le tecniche di ottimizzazione stocastica? O possono funzionare come algoritmi a tutti gli effetti se usati con l'ottimizzazione stocastica?"
Una delle migliori spiegazioni che ho letto viene dal fantastico libro Code Complete , che ora cito:
Un'euristica è una tecnica che ti aiuta a cercare una risposta. I suoi risultati sono soggetti al caso perché un'euristica ti dice solo come guardare, non cosa trovare. Non ti dice come andare direttamente dal punto A al punto B; potrebbe anche non sapere dove si trovano il punto A e il punto B. In effetti, un'euristica è un algoritmo in un costume da clown. È meno prevedibile, è più divertente e viene fornito senza una garanzia di rimborso di 30 giorni.
Ecco un algoritmo per guidare a casa di qualcuno: prendi l'autostrada 167 sud fino a Puy-allup. Prendi l'uscita South Hill Mall e guida per 4,5 miglia su per la collina. Girare a destra al semaforo vicino al negozio di alimentari e poi prendere la prima a sinistra. Svoltare nel vialetto della grande casa marrone chiaro sulla sinistra, 714 North Cedar.
Ecco un'euristica per raggiungere la casa di qualcuno: trova l'ultima lettera che ti abbiamo inviato. Guida in città nell'indirizzo del mittente. Quando arrivi in città, chiedi a qualcuno dov'è la nostra casa. Tutti ci conoscono, qualcuno sarà felice di aiutarti. Se non trovi nessuno, chiamaci da un telefono pubblico e verremo a prenderti.
La differenza tra un algoritmo e un'euristica è sottile ei due termini si sovrappongono in qualche modo. Ai fini di questo libro, la differenza principale tra i due è il livello di riferimento indiretto dalla soluzione. Un algoritmo ti dà le istruzioni direttamente. Un'euristica ti dice come scoprire le istruzioni per te stesso, o almeno dove cercarle.
Trovano una soluzione subottimale senza alcuna garanzia circa la qualità della soluzione trovata, è ovvio che ha senso per lo sviluppo dell'euristica solo polinomiale. L'applicazione di questi metodi è adatta a risolvere problemi del mondo reale o problemi di grandi dimensioni così scomodi dal punto di vista computazionale che per loro non esiste nemmeno un algoritmo in grado di trovare una soluzione approssimativa in tempo polinomiale.