Fondamenti dell Informatica

Documenti analoghi
Fondamenti di Informatica. Algoritmi per giochi. Il gioco dell undici. Prof.V.L.Plantamura Informatica e Comunicazione Digitale a.a.

Algoritmi e giochi combinatori

INTRODUZIONE ALLA TEORIA DEI GIOCHI

Teoria dell Informazione

ThreeChess. Ovvero, come giocare a scacchi in tre

ThreeChess. Ovvero, come giocare a scacchi in tre.

Esercitazione gennaio 2015

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

INFORMATICA GENERALE Prof. Alberto Postiglione. Università degli Studi di Salerno. UD 3.1a: Gli Algoritmi

REGOLE DI BASE. Quando orientiamo la scacchiera la casa posta nell'angolo a destra di ogni giocatore deve essere di colore chiaro.

MATEMATICA PER LO STUDIO DELLE INTERAZIONI STRATEGICHE: TEORIA DEI GIOCHI. Anna TORRE

Una prima distinzione nell ambito della teoria dei giochi è quella tra: Giochi cooperativi (si possono fare accordi vincolanti)

In Action With Math. Competizione e Strategia - Teoria dei Giochi. Roberto Lucchetti - Giulia Bernardi. Politecnico di Milano

Elementi di Teoria dei giochi

REGOLE DI BASE DEL GIOCO DEGLI SCACCHI

Roberto Messa e Maria Teresa Mearini. Il Gioco degli Scacchi

Algoritmi e loro proprietà. Che cos è un algoritmo? Un esempio di algoritmo

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Progetto: Dama. 1 - Descrizione. 2 - Regole del gioco. Appello di febbraio 2003

Giochi e dilemmi Parte I Giochi ad informazione completa

Teoria dei Giochi Prova del 30 Novembre 2012

Concetti Introduttivi. Il Computer

Alfa. Il GO tra gioco, matematica ed economia. Alla ricerca della strategia ottimale

Teoria dei Giochi. Anna Torre

WIND RIVER. Introduzione

In Action with Math. Competizione e Strategia: Teoria dei Giochi. Giulia Bernardi, Roberto Lucchetti. 3 dicembre Giochi in forma strategica

Kangourou della Matematica 2009 finale nazionale italiana Mirabilandia, 11 maggio 2009

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

Gara Matematica. Dipartimento di Matematica Ulisse Dini. Viale Morgagni 67/a Firenze. Soluzioni edizione 2011

Esercizi per il corso di. Logistica I. a.a Daniela Favaretto. Dipartimento di Matematica Applicata Università Ca Foscari di Venezia

Economia Industriale

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

1 Fattorizzazione di polinomi

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

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Insiemistica. Capitolo 1. Prerequisiti. Obiettivi. Gli insiemi numerici di base Divisibilità e fattorizzazione nei numeri interi

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

SOLUZIONI. u u In un quadrato magico sommando gli elementi di una riga, di una

Moltiplicazione. Divisione. Multipli e divisori

Modulo 10. Teoria dei giochi

Sviluppo di programmi

Intelligenza Artificiale. Lezione 6bis. Sommario. Problemi di soddisfacimento di vincoli: CSP. Vincoli CSP RN 3.8, 4.3, 4.5.

Teoria dei Giochi Prova del 9 Settembre se tutti i giocatori scelgono lo stesso numero, il payoff è zero per ciascun giocatore;

Algoritmi e Strutture Dati

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Burg appenzell. ( Traduzione a cura di Andrea Turing70 Casarino della Tana dei Goblin )

Sistemi di numerazioni e metodi di trasformazione

Introduzione teoria dei giochi pt. 2. Corso di Scienza Politica 10/11 Luca Pinto

In molte applicazioni sorge il problema di sapere in quanti modi possibili si può presentare un certo fenomeno.

Cosa è l Informatica?

= < < < < < Matematica 1

Informatica, Algoritmi, Linguaggi

La codifica. dell informazione

La codifica digitale

Problemi, istanze, soluzioni

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

Concentriamo la nostra attenzione sull insieme dei numeri razionali Q. In Q sono definite

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

Il problema del commesso viaggiatore

Kangourou della Matematica 2012 Coppa a squadre Kangourou Semifinale turno A Cervia, 5 maggio Quesiti

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Lezione 1. Fondamentali

Come ragiona il computer. Problemi e algoritmi

Algoritmi. Pagina 1 di 5

giochi sulla persistenza

TEORIA DEI GIOCHI. Progetto Lauree Scientifiche : Liceo Gabriele D Annunzio di Fidenza Università degli Studi di Parma

Lunghezza media. Teorema Codice D-ario prefisso per v.c. X soddisfa. L H D (X). Uguaglianza vale sse D l i. = p i. . p.1/27

1 L estrazione di radice

- Ball handling senza scambiarsi la palla (gara 1c1 a tempo)

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

La tabella è completa perché l'addizione è un'operazione sempre possibile.

Teoria dei giochi e comportamento strategico

PROBLEMI ALGORITMI E PROGRAMMAZIONE

ESERCITAZIONE MICROECONOMIA (CORSO B) ESEMPI DI ESERCIZI DI TEORIA DEI GIOCHI

per un altro; le più importanti sono quelle di seguito elencate.

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Informatica Generale Homework di Recupero 2016

Corso di Informatica di Base

Esempio 1 Si consideri il seguente gioco in forma estesa:

Il teorema di Rouché-Capelli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

La Teoria dei Giochi. (Game Theory)

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Il Sistema di numerazione decimale

MATEMATICA PER LO STUDIO DELLE INTERAZIONI STRATEGICHE: TEORIA DEI GIOCHI. Anna TORRE

Informatica/ Ing. Meccanica/ Edile/ Prof. Verdicchio/ 30/06/2016/ Foglio delle domande / VERSIONE 1

Fondamenti di programmazione!! Parte 2!

Errori di misura Teoria

Modulo 1 Concetti di base della Tecnologia dell Informazione

Per la terza classe della scuola secondaria di I grado. Numeri e rettangoli

Il metodo dei Piani di Taglio (Cutting Planes Method)

1 Giochi a somma costante, a somma zero e antagonistici

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

FINALE 30 agosto 2008

Teoria dei giochi. 2. Forma estesa (struttura ad albero e matrice dei pagamenti) Slides di Teoria dei Giochi, Vincenzo Cutello 1

CONVERSIONE DA DECIMALE A BINARIO

CERCACI SU FACEBOOK WORLDCUBEASSOCIATION.ORG CUBINGITALY.ORG GUIDA VERSIONE 3.0

Calcolatori: Sistemi di Numerazione

Il Dilemma del Prigioniero

Kangourou Italia Gara del 15 marzo 2007 Categoria Student Per studenti di quarta o quinta della secondaria di secondo grado

Transcript:

Fondamenti dell Informatica Prof.ssa E. Gentile Informatica e Comunicazione Digitale - sede di Taranto a.a. 2015-2016

Etimologia della parola: Algoritmo La parola algoritmo ha origine nel Medio Oriente. Proviene dall ultima parte del nome dello studioso persiano Abu Jàfar Mohammed Ibn Musa Al-Knowarizmi Il suo testo di aritmetica (825 DC circa) esercitò una grande influenza nei secoli successivi Fondamenti dell'informatica 2

Definizione di Algoritmo Def.: Per Algoritmo si intende un elenco di istruzioni che specificano una serie di operazioni con le quali è possibile risolvere ogni problema di un dato tipo. Fondamenti dell'informatica 3

Algoritmo Euclideo Dati due numeri positivi a e b, trovare il loro massimo comune divisore. Il Massimo Comune Divisore di due (o più) numeri è il numero naturale più grande per il quale possono entrambi essere divisi. Fondamenti dell'informatica 4

Istruzioni 1. Considerare la coppia di numeri a, b. 2. Confrontare i due numeri considerati (determinare se il primo è uguale, maggiore o minore del secondo). 3. Se i due numeri sono uguali, ognuno di essi fornisce il risultato richiesto; il calcolo si arresta. Altrimenti continua. 4. Se il primo numero è minore del secondo, scambiare i due numeri. 5. Sottrarre il secondo numero dal primo e rimpiazzare i due numeri considerati rispettivamente col sottraendo e con la differenza. Ritornare alla istruzione 2. Fondamenti dell'informatica 5

Algoritmo numerico Un algoritmo per risolvere un sistema di equazioni lineari in due incognite: a a 1 2 x x b 1 b 2 y y c 1 c 2 Fondamenti dell'informatica 6

Soluzioni x c b 1 2 c 2 b 1 a b 1 2 a 2 b 1 y a c 1 2 a 2 c 1 a b 1 2 a 2 b 1 Fondamenti dell'informatica 7

Soluzioni possibili Per qualsiasi scelta dei coefficienti: a,,,, 1 2 1 2 1, a b b c c 2 Ammesso che: a b a b 1 2 2 1 0 Fondamenti dell'informatica 8

Algoritmo come funzione Un algoritmo definisce implicitamente una funzione dall insieme dei dati di ingresso all insieme dei dati di uscita. Al tempo stesso indica un procedimento effettivo che permette di determinare, per ogni possibile configurazione in ingresso, i corrispondenti valori in uscita. Def.: Dato un algoritmo A, indichiamo con la funzione che associa ad ogni valore in ingresso il corrispondente valore in uscita. f A x f A Fondamenti dell'informatica 9

Problema Def.: Un Problema è una funzione P : definita su un insieme D I di elementi che chiamiamo istanze, ed a valori su un insieme di soluzioni. D S D I D S Diciamo che un algoritmo A risolve un problema P se P x f x, per ogni A istanza. x Fondamenti dell'informatica 10

Programma «Un programma è l esposizione di un algoritmo in un linguaggio accuratamente definito. Quindi, il programma di un calcolatore rappresenta un algoritmo, per quanto l algoritmo stesso sia un costrutto intelligente che esiste indipendentemente da qualsiasi rappresentazione. Allo stesso modo, il concetto di numero 2 esiste nella nostra mente anche quando non sia espresso graficamente.» (D.E. Knuth Fundamental Algorithms vol I, The Art of Computer Programming, 1968) Fondamenti dell'informatica 11

Costo di calcolo Def.: Il costo relativo all esecuzione di un programma viene definito come la quantità di risorse di calcolo che il programma utilizza durante l esecuzione. Fondamenti dell'informatica 12

Risorse di calcolo Le risorse di calcolo a disposizione del programma sono: 1. Il Tempo utilizzato per eseguire l algoritmo; 2. Lo Spazio di lavoro utilizzato per memorizzare i risultati intermedi; (memoria) 3. Il Numero degli esecutori, se più esecutori collaborano per risolvere lo stesso problema (processori). Fondamenti dell'informatica 13

Efficienza dell algoritmo Def.: Un algoritmo è efficiente se fa un uso contenuto delle risorse di calcolo a sua disposizione. Fondamenti dell'informatica 14

Modelli di calcolo Def.: Un modello di calcolo è semplicemente una astrazione di un esecutore reale, in cui si omettono dettagli irrilevanti allo studio di un algoritmo per risolvere un problema. Fondamenti dell'informatica 15

Scelta del modello di calcolo 1. Capacità espressiva del modello in relazione al problema assegnato; 2. Livello di astrazione; 3. Generalità. Fondamenti dell'informatica 16

Irrisolubilità Def.: Un problema è non risolubile algoritmicamente se nessun procedimento di calcolo è in grado di fornire la soluzione in tempo finito. Fondamenti dell'informatica 17

Problemi risolubili Si considera risolti una classe di problemi quando si è trovato un algoritmo per risolverli. In alcuni casi se non è possibile risolvere problemi di un dato tipo è possibile individuare dei casi particolari nei quali ciò invece è possibile. Fondamenti dell'informatica 18

Intrattabilità Def.: Un problema è intrattabile se qualunque algoritmo che lo risolva richieda una quantità molto elevata di risorse. Per esempio, alcuni giochi sono considerati intrattabili Fondamenti dell'informatica 19

Algoritmi Deterministici Un algoritmo deve essere dato sotto forma di una lista finita di istruzioni che specificano il procedimento esatto da eseguire in ogni passo del calcolo. In altri termini, il calcolo non dipende da chi lo esegue; esso è un processo deterministico che può essere ripetuto con successo da chiunque in qualunque momento. Fondamenti dell'informatica 20

Generalità degli Algoritmi Un algoritmo è un unica lista di istruzioni le quali definiscono il calcolo che può essere eseguito su un insieme qualunque di dati iniziali, e che in ogni caso fornisce il risultato corretto. In altre parole, un algoritmo indica come risolvere non un solo problema particolare, ma un intera classe di problemi simili. Fondamenti dell'informatica 21

Definizione di Knuth L Algoritmo è un insieme di regole (o istruzioni) avente le seguenti caratteristiche: Finito Non Ambiguo Dati di ingresso precisi Fornisce un risultato Eseguibile Fondamenti dell'informatica 22

Algoritmi dei giochi

Algoritmi per giochi Un gioco è la descrizione di una situazione in cui un certo numero di giocatori ha bisogno di prendere decisioni che si influenzano vicendevolmente. Una soluzione è la descrizione formale delle azioni che i giocatori possono o devono intraprendere e delle situazioni in cui si vengono a trovare dopo aver eseguito una particolare azione. Fondamenti dell'informatica 24

Il gioco dell undici Undici oggetti sono su una tavola. I due giocatori si alternano nel raccogliere 1, 2 o 3 oggetti finché non restano più oggetti sul tavolo. Il giocatore costretto a raccogliere l ultimo oggetto perde. Fondamenti dell'informatica 25

Strategia vincente 1. A raccoglie 2 oggetti. 2. B raccoglie K oggetti (k 3) 3. A raccoglie 4 K oggetti Fondamenti dell'informatica 26

Gioco del pari Il gioco comincia con 27 oggetti su una tavola. Alternandosi, i giocatori raccolgono ogni volta da 1 a 4 fiammiferi. Vince chi ha in mano un numero pari di oggetti quando questi sono stati tutti raccolti. Fondamenti dell'informatica 27

Strategia vincente 1. A raccoglie 2 oggetti 2. Sia r il resto ottenuto dividendo per 6 il numero di oggetti ancora da raccogliere. 3. Se B ha un numero pari di oggetti: 1. Se r = 2, 3, 4 o 5 allora A raccoglie, rispettivamente 1, 2, 3 o 4 oggetti 4. Se B ha un numero dispari di oggetti: 1. Se r = 0, 1, 2 o 3 e se sulla tavola restano ancora almeno 4 oggetti, allora A raccoglie, rispettivamente 1, 2, 3 o 4 oggetti 2. Se r = 4 allora A raccoglie 4 oggetti 3. Se sulla tavola restano 1 o 3 oggetti allora A li raccoglie tutti Fondamenti dell'informatica 28

La Dama Unidimensionale Regole di gioco: I due giocatori dispongono di una pedina (bianca o nera) ciascuno, che sono collocate nelle caselle estreme della scacchiera (una sola riga di sei caselle). I giocatori muovono i pezzi alternativamente. Inizia il bianco. Con la prima mossa il giocatore può spostare la sua pedina di una o due caselle; in tutte le mosse che seguono può spostarla di una sola casella. Se la casella successiva è occupata dalla pedina dell avversario, il giocatore deve scavalcarla. Vince chi riesce a collocare per primo la sua pedina all altra estremità della scacchiera, purché il suo avversario non lo faccia alla mossa successiva. In quest ultimo caso infatti la partita termina con un pareggio. Fondamenti dell'informatica 29

Albero della dama unidimensionale Fondamenti dell'informatica 30

Esapedina L esapedina si gioca su una scacchiera 3x3 con tre pedine da entrambe le parti disposte sulla prima e sull ultima fila della scacchiera. Sono permessi solamente due tipi di mossa: 1. Una pedina può avanzare di un quadrato fino a un quadrato vuoto. 2. Una pedina può catturare una pedina nemica muovendosi diagonalmente di un quadrato, a destra o a sinistra. Il pezzo catturato viene tolto dalla scacchiera. Si vince la partita in uno dei seguenti modi: 1. facendo avanzare una pedina fino alla terza riga; 2. catturando tutti i pezzi avversari; 3. arrivando ad una situazione in cui l avversario non può muovere (negli scacchi si avrebbe patta per stallo). Le mosse dei giocatori si alternano e ognuno muove un pezzo alla volta. Il primo a muovere è il nero. Fondamenti dell'informatica 31

Primo caso Fondamenti dell'informatica 32

Secondo caso Fondamenti dell'informatica 33

Proprietà dei giochi 1. Il gioco è condotto da due giocatori che eseguono alternativamente una mossa 2. Il gioco termina con esattamente uno di due possibili risultati: 1. O vince A il giocatore che gioca per primo 2. O vince B l avversario 3. Ogni mossa consiste in una scelta da parte del giocatore di una mossa tra un insieme di mosse possibili Fondamenti dell'informatica 34

Proprietà dei giochi 4. Ad ogni istante del gioco, i giocatori sono informati completamente su tutte le mosse già compiute e su tutte quelle che potranno venir fatte 5. Esiste un limite superiore per il numero di mosse in una partita Fondamenti dell'informatica 35

Teorema: Strategia vincente In ogni gioco che soddisfi le proprietà da 1 a 5 già definite, esiste una strategia vincente per uno dei giocatori. Fondamenti dell'informatica 36

Classificazione dei giochi Cooperazione Giochi non cooperativi Giochi cooperativi Informazione Giochi ad informazione perfetta Giochi ad informazione imperfetta Tempo Giochi strategici normali Giochi strategici a conoscenza successiva Fondamenti dell'informatica 37

Giochi combinatori Sono giochi a 2 giocatori I giocatori alternano le proprie mosse Somma zero: un giocatore vince nella misura in cui l altro perde Informazione perfetta: i due giocatori conoscono completamente lo stato del gioco ogni volta che muovono; nessuna informazione è nascosta ad uno dei due giocatori Deterministici: nessun elemento di casualità Finiti: il numero di scelte possibili ad ogni mossa è finito, e il gioco dura un numero finito di mosse Fondamenti dell'informatica 38

Come giocare Un possibile approccio ad un gioco combinatorio: Considera tutte le mosse ammissibili nello stato iniziale Calcola la nuova posizione risultante da ogni mossa Valuta ogni posizione risultante e determina la migliore Gioca la mossa corrispondente Attendi la mossa dell avversario e ricomincia Difficoltà Rappresentazione della base di gioco Generazione di tutte le posizioni risultanti Valutazione di una posizione Fondamenti dell'informatica 39

Funzione di valutazione Una funzione di valutazione viene usata per stimare la bontà di una situazione di gioco Per l assunzione di somma nulla, una singola funzione è sufficiente a valutare la situazione di entrambi i giocatori f(s)>0: la posizione s è buona per il primo giocatore e cattiva per il secondo f(s)<0: la posizione s è cattiva per il primo giocatore e buona per il secondo f(s)=0: la posizione s è neutra Fondamenti dell'informatica 40

Albero di un gioco x x x x x x x x x x O x O x O x O x x O x O x x x O O O x x x O O O x x x x x O x x x O O f(s) =+1 se la posizione è vincente per X f(s) =-1 se la posizione è vincente per O f(s) = 0 se la posizione è patta Fondamenti dell'informatica 41

Albero del gioco I vertici rappresentano le diverse situazioni che si possono presentare in una partita I rami rappresentano le possibili scelte che un giocatore può fare Fondamenti dell'informatica 42

Potatura alfa-beta Possiamo migliorare l efficienza dell albero con una potatura Idea di base: Se hai un idea che di certo non è buona non perdere tempo per capire quanto sia cattiva Non valutiamo dei nodi che non è necessario valutare Fondamenti dell'informatica 43

Gioco del sei Su una tavola ci sono 6 oggetti Ogni giocatore, a turno, ne sceglie uno o due. Perde il giocatore che raccoglie l ultimo oggetto Fondamenti dell'informatica 44

Albero del gioco del sei 6 A B B B B B 5 6 6 6 6 6 4 3 2 A A A 6 6 6 5 5 5 5 4 4 5 4 5 5 6 A 1 2 A A 3 3 4 6 6 6 B A B A B A B A Fondamenti dell'informatica 45

Regole Il massimo livello in un albero viene detto ordine. È uguale alla massima lunghezza di una partita. I vertici di livello dispari corrispondono alle mosse di A, quelli di livello pari alle mosse di B. Fondamenti dell'informatica 46

Dimostrazione L algoritmo è costruito per induzione sulla lunghezza v della più lunga partita possibile nel gioco (v è l ordine dell albero) v=0: nessuna mossa. Se è vero per gli ordini v dimostriamo che è vero per v+1 Fondamenti dell'informatica 47

Storia della Teoria dei Giochi 1912 Bermelo - gioco degli scacchi 1921 Borel poker 1928 Von Neumann giochi combinatori 1950 Nash equilibrio nei giochi non a somma zero 1966 Rapoport giochi a 2 giocatori Fondamenti dell'informatica 48

Dilemma del prigioniero Due prigionieri accusati dello stesso crimine hanno queste possibilità: Se solo uno dei due confessa, chi ha confessato evita la pena; l altro però viene condannato a 7 anni di carcere; Se entrambi confessano, vengono entrambi condannati a 6 anni di carcere; Se nessuno dei due confessa, vengono entrambi condannati a 1 anno di carcere. Fondamenti dell'informatica 49

Dilemma del prigioniero confessa non confessa confessa (6,6) (0,7) non confessa (7,0) (1,1) Se Confessa: Caso migliore 0 anni Caso peggiore 6 anni Se Non Confessa: Caso migliore 1 anno Casso peggiore 7 anni Fondamenti dell'informatica 50

Gioco del pollo Basato sulla sfida automobilistica del film Gioventù Bruciata. se entrambi sterzano fanno entrambi una magra figura con gli amici Se uno sterza per primo e l altro continua per un tratto di strada: uno fa la figura del pollo e l altro guadagna il rispetto degli amici Se entrambi continuano, moriranno Fondamenti dell'informatica 51

Gioco del pollo sterza continua sterza (pari,pari) (pollo,vince) continua (vince,pollo) (muore,muore) Il problema sta nel convincere l altro che non si è disposti a sterzare nonostante l alto rischio implicito di questa scelta. La cooperazione in questo gioco è la soluzione migliore Fondamenti dell'informatica 52

Gioco dell eroe L eroe cerca il gesto eclatante Nessun altro deve compiere lo stesso gesto coopera defeziona coopera (1,1) (3,4) defeziona (4,3) (2,2) La cooperazione ha il minimo vantaggio Fondamenti dell'informatica 53

Gioco del leader Uno sceglie il conflitto, l altro si allea coopera defeziona coopera (2,2) (3,4) defeziona (4,3) (1,1) Uno deve imporre la propria volontà all altro La cooperazione è ottimale Fondamenti dell'informatica 54

Teorema di Nash Estendeva la teoria dei giochi ad un numero arbitrario di partecipanti e dimostrava che, in certe condizioni, esiste sempre una situazione di equilibrio che si ottiene quando ciascun individuo sceglie la sua mossa strategica in modo da massimizzare la sua funzione di retribuzione. Tutti i giocatori possono così operare una scelta dalla quale ciascuno trae un vantaggio o limita il suo svantaggio al minimo Fondamenti dell'informatica 55

Equilibrio Equilibrio in Strategia dominante Io faccio meglio che posso indipendentemente da ciò che fai tu Tu fai meglio che puoi indipendentemente da ciò che faccio io Equilibrio di Nash Io faccio meglio che posso dato ciò che fai tu Tu fai meglio che puoi dato ciò che faccio io Fondamenti dell'informatica 56

Dilemma del viaggiatore Una compagnia aerea ha danneggiato due oggetti preziosi identici che due viaggiatori avevano acquistato durante un viaggio di piacere. Il comandante chiede ad ognuno di loro di indicare il valore dell oggetto compreso tra 2,00 e 100,00 precisando che: Rimborserà ad entrambi la cifra più bassa Premierà con 2,00 chi ha espresso il valore più basso Ridurrà il rimborso di 2,00 all altro viaggiatore Fondamenti dell'informatica 57

Problema del commesso viaggiatore Un rappresentante deve consegnare della merce in diversi paesi Attraverso il navigatore satellitare conosce esattamente le distanze effettive presenti tra i paesi Si vuole minimizzare la distanza totale che occorre percorrere per effettuare il giro completo dei clienti, senza passare due volte per lo stesso paese e ritornare alla località di partenza Fondamenti dell'informatica 58

Labirinto Possiamo immaginare un labirinto come un sistema finito di nodi dai quali si dipartono dei corridoi. Ogni corridoio congiunge due nodi che vengono detti adiacenti. I nodi morti sono quelli da cui si diparte un solo corridoio. Fondamenti dell'informatica 59

Rappresentazione grafica H C E I M B D N L A F K Fondamenti dell'informatica 60

Regola Diciamo che un nodo Y è accessibile da un nodo X se esiste un cammino che conduce da X a Y attraverso qualche successione di corridoi intermedi. Se Y è accessibile da X allora esiste un cammino semplice tra i due nodi, cioè un cammino che non attraversa più di una volta ciascun nodo. Fondamenti dell'informatica 61

Algoritmo del labirinto Corridoio: Verde: non è mai passato Giallo: è passato una volta Rosso: è passato due volte Modalità di passaggio: Svolgendo il filo (passa da verde a giallo) Riavvolgendo il filo (passa da giallo a rosso) Non è possibile passare in un corridoio rosso Fondamenti dell'informatica 62

Condizione dei Nodi Arrivo: si è raggiunta la meta Ciclo: esistono almeno due altri corridoi gialli che si dipartono dal nodo Verde: Esiste almeno un corridoio verde che si diparte dal nodo Partenza: Ci troviamo nel nodo iniziale Quinto caso: Non si verifica nessuna delle condizioni precedenti Fondamenti dell'informatica 63

Metodo di ricerca Condizione 1. Arrivo 2. Ciclo 3. Verde 4. Partenza 5. Quinto caso Mossa 1. Stop 2. Riavvolgere il filo 3. Svolgere il filo 4. Stop 5. Riavvolgere il filo Fondamenti dell'informatica 64

Motivazioni del metodo 1. Qualunque sia la posizione di Partenza e di Arrivo nel labirinto, alla fine, dopo un numero finito di mosse, si deve raggiungere un ordine di Stop. 2. Se l ordine di Stop giunge in Arrivo, il punto è accessibile. Inoltre, siamo giunti attraverso un cammino semplice e riavvolgendo il filo possiamo tornare alla Partenza. 3. Se l ordine di Stop giunge in Partenza, vuol dire che l Arrivo è inaccessibile. Fondamenti dell'informatica 65

Esempio 1 Numero della mossa Condizione trovata Mossa Corridoio scelto Stato dopo la mossa 1 Verde Svolge AB Giallo 2 Verde Svolge BC Giallo 3 Verde Svolge CD Giallo 4 Verde Svolge DH Giallo 5 Verde Svolge HI Giallo 6 Quinto caso Riavvolge IH Rosso 7 Quinto caso Riavvolge HD Rosso 8 Verde Svolge DB Giallo 9 Ciclo Riavvolge BD Rosso 10 Verde Svolge DF Giallo 11 Arrivo Stop Stop Stop Fondamenti dell'informatica 66

Esempio 2 Numero della mossa Condizione trovata Mossa Corridoio scelto Stato dopo la mossa 1 Verde Svolge KN Giallo 2 Verde Svolge NL Giallo 3 Verde Svolge LM Giallo 4 Verde Svolge MN Giallo 5 Ciclo Riavvolge NM Rosso 6 Quinto caso Riavvolge ML Rosso 7 Quinto caso Riavvolge LN Rosso 8 Quinto caso Riavvolge NK Rosso 9 Partenza Stop Stop Stop Fondamenti dell'informatica 67

La regola della destra Entra nel labirinto. Quando ti trovi a un nodo prendi il ramo più a destra. Se arrivi a un vicolo cieco, ritorna sui tuoi passi fino all'ultimo nodo e prendi il ramo più a destra tra quelli ancora inesplorati. Il modo migliore per visualizzare questo algoritmo è toccare con la mano destra il muro alla propria destra per tutto il labirinto, senza saltare mai un ramo situato alla propria destra. Naturalmente la "regola della sinistra" funziona altrettanto bene. È solo necessario essere coerenti una volta entrati nel labirinto. Fondamenti dell'informatica 68

Il metodo di Tremaux Entra nel labirinto. Dapprima vai dove ti pare, contrassegnando il sentiero con un filo, o con sassolini, o molliche di pane, o con qualsiasi cosa tu abbia a disposizione. Continua così finché arrivi: alla meta (se hai fortuna), oppure a un vicolo cieco, oppure a un nodo che avevi già attraversato in precedenza. Se arrivi a un vicolo cieco, ritorna al nodo precedente, assicurandoti di contrassegnare il percorso anche a ritroso: in tal modo, se entri ed esci da un vicolo cieco, questo avrà due piste di briciole di pane. Ciò ti permetterà di evitarlo in futuro. Nell'algoritmo di Tremaux non si esplora mai un ramo più di due volte. Fondamenti dell'informatica 69

Il metodo di Tremaux Se arrivi a un nodo già attraversato, fai così: se sei arrivato da un ramo fino ad allora inesplorato (una sola pista di briciole di pane dietro di te) ripercorri quello stesso ramo fino al nodo precedente, altrimenti se c'è un ramo ancora inesplorato a partire dal nodo, prendi questa direzione, altrimenti: prendi qualsiasi ramo che sia stato percorso una sola volta. Queste regole esauriscono l'algoritmo di Tremaux. Seguendole scrupolosamente farai un giro completo del labirinto, attraversando ogni ramo due volte, in ciascuna direzione. Ovviamente, puoi anche fermarti quando raggiungi la meta, se non è necessario percorrere l'intero labirinto. Fondamenti dell'informatica 70

Il metodo di Ore Entra nel labirinto. Se non sei già a un nodo, raggiungi quello più vicino. Se non sai quale direzione conduca a quello più vicino, vai a caso fino a incontrare un nodo. Poi contrassegna in qualche maniera questo nodo: sarà la tua casa base. Partendo dal nodo base, esplora ogni ramo che si diparte da questo. Metti un contrassegno (ad esempio un ciottolo) all'entrata di ciascun ramo quando cominci a percorrerlo. Esplora ciascun ramo solo fino al nodo successivo. Poi metti un ciottolo all'estremità lontana del ramo e ritorna sui tuoi passi fino alla casa base. Fondamenti dell'informatica 71

Il metodo di Ore Prima fase Identifica i vicoli ciechi (ad es. con un ciottolo rosso, o chiudendoli con uno spago). Una volta contrassegnato in questo modo, un ramo potrà essere ignorato in futuro. Se un ramo gira su se stesso e ritorna al nodo originario, contrassegnalo come un vicolo cieco: è altrettanto privo di utilità. A te interessa individuare quei rami che conducono a nodi con rami nuovi. Alla fine dell'esplorazione preliminare ciascun percorso potenziale verso la meta ha un ciottolo a ciascuna estremità, e tu ti trovi di nuovo al nodo base. Adesso esplora fino a una profondità di due nodi. Cammina lungo ciascun ramo che non sia un vicolo cieco fino al nuovo nodo, ed esplora allo stesso modo ciascun ramo che si diparte da questo. Fondamenti dell'informatica 72

Il metodo di Ore Seconda fase Aggiungi un ciottolo a ciascuna estremità dei rami primari, cosicché adesso avranno due ciottoli su ciascuna estremità, e metti un ciottolo su ciascuna estremità dei nuovi rami secondari. Ciò ti consentirà di ritrovare la strada fino al nodo base: il ramo che conduce a quest'ultimo ha un ciottolo in più rispetto agli altri. Come in precedenza, contrassegna le entrate dei vicoli ciechi e dei percorsi circolari. Se un ramo conduce a un nodo già esplorato (con almeno un ciottolo segnaletico) contrassegna anche questo sentiero a entrambe le estremità. Alla fine sarai tornato sui tuoi passi e ti ritroverai di nuovo al nodo base. Fondamenti dell'informatica 73

Il metodo di Ore Terza fase Nella terza fase di esplorazione, spingiti fino a una distanza di tre nodi dal nodo base, aggiungendo un ciottolo a ciascuna estremità di ogni ramo esplorato. Prosegui l'esplorazione sempre più in profondità, fino a raggiungere la meta. L'algoritmo di Ore ti permetterà di individuare la via più breve verso la meta. Ovviamente l'andamento dell'esplorazione non seguirà questa via più breve, ma se, ad es., la via più breve attraversa cinque nodi allora la troverai nella quinta fase dell'esplorazione, e saprai che quella è la via più breve. Fondamenti dell'informatica 74