Esercizi Marco Anisetti Labirinto • Dato un labirinto generico senza alcuna restrizione, scrive un algoritmo per percorrerlo trovando l’uscita. • Mano sinistra o destra funziona se non ho incastri ciclici • Ricorsione prevede di tentare ogni strada per ogni alternative ritornando sempre sui propri passi smontando le scelte che non danno vantaggio • Variante del così detto metodo di Ore che esplora a profondità successive. • Permette anche di trovare la via più breve • Algoritmo di Tremaux. Procede a caso, lascia briciole dove sei passato, non passare mai più di 2 volte sullo stesso tratto. Privilegia gli inesplorati. Tende a coprire tutto il labirinto 2 volte. Esercizi • Valutare la profilazione dell’algoritmo di Euclide nella esecuzione di MCD(132,42) • L'algoritmo A gira nel caso peggiore in un tempo pari a klogn, mentre l'algoritmo B gira nel caso peggiore in un tempo pari a nlogk, cosa possiamo affermare sui due algoritmi? Se B girasse nel caso peggiore in un tempo pari a nk cosa si potrebbe dire? • L'algoritmo A gira nel caso peggiore in un tempo pari a n2, mentre l'algoritmo B gira nel caso peggiore in un tempo pari a 1000n, cosa possiamo affermare sui due algoritmi? Se B girasse nel caso peggiore in un tempo pari a logn cosa si potrebbe dire? Problema dei secchi generalizzato • E’ possibile generalizzare il problema dei secchi considerando un secchio di capacità x e uno di capacità y, chiedendo di ottenere una capacità z<x+y? • Che assunzioni si debbono fare? Eliminazione dei doppi non consecutivi • Considerate il problema di eliminare doppi anche non consecutive • Considerate di ricevere una cifra alla volta e di stamparla se non è mai stata letta nel passato oppure non stamparla. • Dare la soluzione più efficiente possibile usando solo tipi semplici e istruzioni matematiche. Esercizi • Dire cosa fa il seguente programma 1: Leggi(a); 2: Leggi(b); 3: if (a<b) then goto 7 4: c:=a; 5: a:=b; 6: b:=c; 7: end; • Calcolare in minimo comune multiplo tra 2 numeri a e b utilizzando i goto • Scrivere un programma che riceva in ingresso un numero positivo N e determini il massimo intero K tale che la somma dei primi K interi sia minore o uguale a N. Esempio, se N=20 allora K risulta 5, infatti 1 + 2 + 3 + 4 + 5 = 15 mentre 1 + 2 + 3 + 4 + 5 + 6 = 21 • Data l’equazione ax+b=0 con a e b presi come input, scrivere il programma che calcola il valore di x che risolve l’equazione, se esiste.