Algoritmi di Ricerca

Похожие документы
Intelligenza Artificiale

Il problema del commesso viaggiatore

Note per la Lezione 4 Ugo Vaccaro

Algoritmi e Strutture Dati

Algoritmi e giochi combinatori

PROVETTE D ESAME. Algoritmi e Strutture Dati

2.2 Alberi di supporto di costo ottimo

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Algoritmi Greedy. Tecniche Algoritmiche: tecnica greedy (o golosa) Un esempio

I giochi con avversario. I giochi con avversario. Introduzione. Giochi come problemi di ricerca. Il gioco del NIM.

TABELLE AD INDIRIZZAMENTO DIRETTO

2.2 Alberi di supporto di costo ottimo

Problemi di ordinamento

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

Esercizi su Python. 14 maggio Scrivere una procedura che generi una stringa di 100 interi casuali tra 1 e 1000 e che:

In questa lezione Alberi binari di ricerca: la cancellazione

Fondamenti di Informatica

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Alberi binari di ricerca

Alberi Binari di Ricerca

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Il Branch & Bound. Definizione 1. Sia S R n. La famiglia S = {S 1, S 2,..., S k S} tale che S 1 S 2 S k = S viene detta suddivisione di S.

Esercizi su alberi binari

Intelligenza Artificiale. Problem Solving -Agenti risolutori di problemi

Intelligenza Artificiale. Ricerca euristica Algoritmo A*

Algoritmi e Strutture Dati Esercizi Svolti. Giuseppe Persiano Dipartimento di Informatica ed Appl. Renato M. Capocelli Università di Salerno

Esercizi proposti 10

Problema. Equazioni non lineari. Metodo grafico. Teorema. Cercare la soluzione di

Alberi binari. Esercizi su alberi binari

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Algoritmi di Ricerca

Ricerca non informata in uno spazio di stati

ESERCIZIO MIN-MAX Si consideri il seguente albero di gioco dove i punteggi sono tutti dal punto di vista del primo giocatore.

RISOLUZIONE IN LOGICA PROPOSIZIONALE. Giovanna D Agostino Dipartimento di Matemaica e Informatica, Università di Udine

Esercizi di Algoritmi e Strutture Dati

Codifica binaria. Rappresentazioni medianti basi diverse

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Informatica Generale Homework di Recupero 2016

trovare un percorso senza collisioni per passare da una configurazione ad un altra del sistema robotico

Corso di Architettura degli Elaboratori

Algoritmi di ordinamento: Array e ricorsione

L algoritmo di Dijkstra

Tempo e spazio di calcolo (continua)

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)

Visite in Grafi BFS e DFS

Un secondo problema : Quadrato Magico

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Strutture dati per insiemi disgiunti

1) Codici convoluzionali. 2) Circuito codificatore. 3) Diagramma a stati e a traliccio. 4) Distanza libera. 5) Algoritmo di Viterbi

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

3.4 Metodo di Branch and Bound

Транскрипт:

Algoritmi di Ricerca

Contenuto Algoritmi non informati Nessuna conoscenza sul problema in esame Algoritmi euristici Sfruttano conoscenze specifiche sul problema Giochi Quando la ricerca è ostacolata da un agente ostile (l avversario)

Algoritmi non informati Non richiedono nessuna conoscenza specifica relativa al problema (approccio brute-force) Vantaggio: generalità Noi vedremo: Ricerca in ampiezza Ricerca in profondità Iterative deepening

Problemi di ricerca I problemi di ricerca sono spesso formulati in termini di alberi. I d=0 I = nodo iniziale G = nodo goal d = profondità d=1 d=2 d=3 G d=4 Obiettivo: cercare un percorso che, partendo dal nodo iniziale I, arrivi al nodo finale G.

Algoritmi di ricerca Lo spazio di ricerca (albero) è raramente memorizzato completamente in memoria ma, in genere, è disponibile una procedura che, dato in input un nodo qualsiasi, restituisce la lista dei suoi successori: succ(n) n 1,...,n k Un algoritmo di ricerca si caratteriza da: Input: descrizione dei nodi I, e test per G Output: sequenza (legale) di nodi a partire da quello iniziale fino ad un nodo goal

Esempio Trovare un percorso che partendo dal nodo S arrivi al nodo G. A B C S G D E F

L albero di ricerca Il problema si può trasformare in uno di ricerca su albero. A S D Denota il percorso S-D-E B D A E C E E B B F D F B F D E A C G G C G F Denota il percorso S-D-A-B-E-F-G G

Il gioco dell 8 Spostare le tessere numerate in modo da passare dalla configurazione iniziale a quella finale 6 2 8 1 2 3 3 5 8 4 4 7 1 7 6 5 Configurazione iniziale Configurazione finale

L albero di ricerca 6 2 8 3 5 4 7 1 2 8 6 3 5 4 7 1 6 2 8 3 5 4 7 1 6 2 8 4 3 5 7 1 2 8 6 8 6 2 8 6 2 8 6 2 8 6 3 5 3 2 5 3 7 5 3 5 4 3 5 4 7 1 4 7 1 4 1 4 7 1 7 1

Cruciverba Ci sono 26 19 modi possibili per riempire le caselle del cruciverba, ma soltanto una piccolissima parte è legale, cioè costituite da parole di senso compiuto R I S C O F D O M C R M T O P U S P E

L albero degli stati (1)... D I S C R I S C D A T... I... D I S C P U...

L albero degli stati (2) A B C... Z B A B B B C...

Il problema delle n regine Disporre n regine su una scacchiera n x n in modo che nessuna possa attaccare le altre. Questa è una soluzione?

Valutazione Ci sono 4 criteri per valutare un algoritmo di ricerca: Completezza: l algoritmo troverà una soluzione, se esiste? Ottimalità: l algoritmo troverà la soluzione migliore, quando ve n è più d una? Complessità temporale: quanto tempo richiederà il trovare una soluzione? Complessità spaziale: quanta memoria richiederà l algoritmo?

Una procedura di ricerca 1)Sia L la lista dei nodi iniziali. In ogni istante di tempo L conterrà tutti i nodi che non sono ancora stati esaminati dal programma 2)Se L è vuota, ESCI con FALLIMENTO. Altrimenti, prendi un nodo n da L 3)Se n è un nodo goal, allora ESCI e restituisci in output n ed il percorso dal nodo iniziale fino a n 4) Altrimenti, cancella n da L ed aggiungi a L tutti i nodi discendenti di n, etichettando ciascuno di essi con il percorso dal nodo iniziale 5) Ritorna al passo 2)

Ricerca in ampiezza Esempio A S D B D A E C E E B B F D F B F D E A C G

Ricerca in ampiezza (FIFO) 1)Sia L la lista dei nodi iniziali 2)Sia n il primo nodo di L. Se L è vuota, ESCI 3)Se n è un nodo goal, allora ESCI e restituisci in output n ed il percorso dal nodo iniziale fino a n 4) Altrimenti, cancella n da L ed aggiungi alla fine di L tutti i nodi discendenti di n, etichettando ciascuno di essi con il percorso dal nodo iniziale 5) Ritorna al passo 2)

Ricerca in ampiezza Completezza e Ottimalità Poiché l algoritmo procede livello dopo livello, è: Completo (troverà sempre una soluzione se ce n è almeno una) Ottimale (troverà sempre la soluzione migliore, cioè meno profonda)

Ricerca in ampiezza Ipotesi semplificative: Complessità temporale l albero ha un fattore di ramificazione uniforme (b) profondità dell albero d esiste un solo nodo goal, ed è a livello d Esempio: b=2 I d=0 d=1 d=3 d=2 G d=3

Ricerca in ampiezza Complessità temporale Il tempo di ricerca verrà misurato in termini del numero di nodi esaminati dall algoritmo Osservazione: il numero di nodi a livello d è b d 2 0 =1 2 1 =2 2 2 =4 I d=0 d=1 d=2 2 3 =8 G d=3

Ricerca in ampiezza Complessità temporale Il numero di nodi non-terminali da esaminare per raggiungere il nodo goal al livello d è: 1 + b +b 2 +...+b d 1 = bd 1 b 1 Il numero medio di nodi terminali (a livello d) da esaminare è: Sommando: 1 +b d 2 b d+1 + b d + b 3 2(b 1)

Ricerca in ampiezza Complessità temporale Per d molto grande, il tempo medio di ricerca diventa circa b d /2, ovvero: O(b d ) che è circa il tempo speso per esaminare le foglie dell albero. spazio di ricerca fino al livello d-1 b d 1 nodi foglie b d 2

Ricerca in ampiezza Complessità spaziale Prima di esaminare il primo nodo a livello k+1, l algoritmo deve memorizzare tutti i nodi a livello k (ovvero b k ). Di conseguenza, la quantità di memoria richiesta per raggiungere il nodo goal a livello d, sarà almeno: cioè: b d-1 O(b d )

Ricerca in ampiezza Esempio Supponiamo di dover effettuare una ricerca su un albero con b=10, il programma elabora 1000 nodi al secondo, e richiede 100 byte per nodo. Livello Nodi Tempo Memoria 2 111 0.1 sec 11 Kb 6 10 6 18 min 111 Mb 10 10 10 128 giorni 11 Gb 14 10 14 3500 anni 11.111 Tb NB: 1 Tb - 1000 miliardi di byte

Ricerca in profondità Esempio S B A D... C E D F G

Ricerca in profondità (LIFO) 1)Sia L la lista dei nodi iniziali 2)Sia n il primo nodo di L. Se L è vuota, ESCI 3)Se n è un nodo goal, allora ESCI e restituisci in output n ed il percorso dal nodo iniziale fino a n 4) Altrimenti, cancella n da L ed aggiungi all inizio di L tutti i nodi discendenti di n, etichettando ciascuno di essi con il percorso dal nodo iniziale 5) Ritorna al passo 2)

Ricerca in profondità Completezza Se l albero di ricerca ha una profondità infinita, l algoritmo non è detto che trovi una soluzione (se ne esiste una). In altri termini: L algoritmo non è completo Esempio: (albero per provare che 2 è un intero) 2 3 1 4 2 2 0 nodo goal...

Ricerca in profondità Ottimalità Se il problema ammette più di una soluzione, l algoritmo non è detto che trovi quella a profondità minima. In altri termini L algoritmo non è ottimale Esempio: I G G

Ricerca in profondità Complessità temporale Nel caso migliore, il nodo goal si trova alla estrema sinistra dell albero. Qundi il numero di nodi da esaminare è: d+1 Nel caso peggiore è alla estrema destra. In questo caso il numero di nodi è Mediando: 1+...+b d = bd +1 1 b 1 b d+1 + bd + b d 2 2(b 1)

Osservazione E lecito fare la media? Sia B il caso migliore, e W il caso peggiore. B B+1 B+3 B+4 W-4 W-3 W-1 W

Ricerca in profondità Complessità temporale Per d molto grande, il tempo medio di ricerca diventa circa b d /2, ovvero: O(b d ) che è circa il tempo speso per esaminare metà albero. b d 2

Ricerca in profondità Complessità spaziale La massima quantità di memoria richiesta è d(b-1)+1 e quindi: O(db) Esempio

Iterative deepening Esempio 1, 2, 5, 12 3, 6, 13 4, 9, 19 7, 14 8, 17 10, 20 11, 22 15 16 18 21 23 24 NB: I numeri rappresentano l ordine di espansione dei nodi

Iterative deepening 1)Poni C=0; C rappresenta il livello massimo 2)Sia L la lista dei nodi iniziali 3)Sia n il primo nodo di L. Se L è vuota, incrementa C e ritorna al passo 2) 4)Se n è un nodo goal, allora ESCI e restituisci in output n ed il percorso dal nodo iniziale fino a n 5) Altrimenti, cancella n da L. Se il livello di n è minore di C, aggiungi all inizio di L tutti i nodi discendenti di n, etichettando ciascuno di essi con il percorso dal nodo iniziale 6) Ritorna al passo 3)

Iterative deepening Completezza e Ottimalità Poiché l algoritmo procede livello dopo livello, è: Completo (troverà sempre una soluzione se ce n è almeno una) Ottimale (troverà sempre la soluzione migliore, cioè meno profonda)

Iterative deepening Complessità temporale Nell iterazione finale (a livello d), il numero medio di nodi da esaminare è b d+1 + bd + b d 2 2(b 1) In ciascuna iterazione precedente si saranno esaminati (b j+1-1)/(b-1), dove j è la profondità dell albero. In totale: d 1 b j +1 1 = 1 d 1 d 1 j =0 b 1 b 1 b b j 1 = 1 j = 0 j =0 b 1 b b d 1 b 1 d = b d+1 bd b + d (b 1) 2

Iterative deepening Sommando, si ottiene Complessità temporale b d+ 2 + b d+1 + b 2 d + b 2 4bd 5b + 3d + 2 2(b 1) 2 che, per d grande, è dominato da: che è (b +1) b d +1 2(b 1) 2 O(b d )

Iterative deepening Complessità spaziale Poiché ad ogni livello l algoritmo effettua una ricerca in profondità, la quantità massima di memoria richiesta è: d(b-1)+1 che è O(db)

Tabella riassuntiva Ampiezza Profondità It. Deep. Completo? Sì No Sì Ottimale? Sì No Sì Tempo b d b d b d Spazio b d bd bd