Problema di ricerca
Nella teoria della complessità computazionale e nella teoria della computabilità, un problema di ricerca è un problema computazionale di ricerca di una risposta ammissibile per un dato valore di input, a condizione che tale risposta esista. Infatti, un problema di ricerca è specificato da una relazione binaria dove se e solo se " è una risposta ammissibile dato ".
Si dice che un algoritmo risolve un problema di ricerca se, per ogni valore di input , esso restituisce una risposta ammissibile per quando tale risposta esiste o, altrimenti, esso restituisce un output appropriato al caso, ad es. "non trovato", per gli senza risposta.
I problemi di ricerca sono tipici nella teoria dei grafi e nell'ottimizzazione combinatoria, ad esempio la ricerca di corrispondenze, cricche e insiemi stabili in un dato grafo non orientato.
Intuitivamente, il problema consiste nel trovare una struttura in un oggetto . Si dice che un algoritmo risolve il problema se quando esiste almeno una struttura corrispondente, allora viene emessa un'occorrenza di tale struttura, altrimenti esso si interrompe con un output appropriato.
Definizione
Una definizione formale è la seguente:[1]
Date una relazione binaria con campo (elementi del dominio o codominio) e una macchina di Turing , si dice che calcola se:
- Se è tale che esiste un tale che allora accetta con output tale che (potrebbero esserci più , basta che trovi solo uno di essi).
- Se è tale che non esiste tale che allora rifiuta .
Si noti che il grafico di una funzione parziale è una relazione binaria, e se calcola una funzione parziale, allora esiste al più un output possibile.
La relazione può essere considerata come un problema di ricerca e una macchina di Turing che calcola si dice anche che lo risolva. A ogni problema di ricerca corrisponde un problema decisionale, ossia
Tale definizione può essere generalizzata a relazioni n -arie mediante un'opportuna codifica che consenta di comprimere più stringhe in un'unica stringa (ad esempio elencandole consecutivamente usando un delimitatore).
Ricerca su grafo
Un problema di ricerca è definito da:[2][3][4]
- Un insieme di stati
- Uno stato iniziale
- Uno stato obiettivo o test di obiettivo, ossia una funzione booleana che dice se un determinato stato sia uno stato obiettivo
- Una funzione successore, ossia una mappatura da uno stato a un insieme di nuovi stati
Obiettivo: trovare una soluzione quando non si disponga di un algoritmo per risolvere un tale problema, ma solo una specifica di come dovrebbe essere fatta una soluzione.
Metodo di ricerca
- algoritmo di ricerca generico: dato un grafo, un insieme di nodi di partenza e nodi di arrivo, si esplorano in modo incrementale i percorsi del grafo a partire dai nodi di partenza.
- Si gestisce un elenco di percorsi “di confine” dai nodi di partenza che sono già stati esplorati.
- Man mano che si procede, il confine si estende verso i nodi non esplorati fino a quando non viene trovato uno stato-obiettivo.
- Il modo in cui si estende il confine dipende dalla scelta della strategia di ricerca[4].
Input: un grafo, un insieme di nodi iniziali,
Boolean procedure goal(n) che testa se n sia un nodo obiettivo.
frontiera := {s : s è un nodo iniziale};
while frontiera non vuota:
seleziona e rimuovi il percorso <n0, ..., nk> dalla frontiera;
if goal(nk)
return <n0, ..., nk>;
for each n vicino di nk
aggiungi <n0, ..., nk, n> alla frontiera;
end while
Note
- ↑ search problem, su planetmath.org. URL consultato il 3 agosto 2025.
- ↑ (EN) Weixiong Zhang, State-Space Search, Springer New York, 1999, DOI:10.1007/978-1-4612-1538-7, ISBN 978-1-4612-7183-3. URL consultato il 3 agosto 2025.
- ↑ (EN) Theoretical Aspects of Local Search, collana Monographs in Theoretical Computer Science, An EATCS Series, Springer Berlin Heidelberg, 2007, DOI:10.1007/978-3-540-35854-1, ISBN 978-3-540-35853-4. URL consultato il 3 agosto 2025.
- 1 2 Leyton-Brown, Kevin., Graph Search (PDF), su cs.ubc.ca.
Voci correlate
- Operatore di ricerca illimitato
- Problema decisionale
- Problema di ottimizzazione
- Problema funzionale
- Problema di conteggio (complessità)
- Gioco di ricerca
Collegamenti esterni
- (EN) Eric W. Weisstein, Searching, su MathWorld, Wolfram Research.